/* * Copyright (c) Contributors to the Open 3D Engine Project. * For complete copyright and license terms please see the LICENSE at the root of this distribution. * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ #include #include #include #include #include ShaderResourceGroup PassSrg : SRG_PerPass { Texture2D m_color; Texture3D m_lut; Sampler LinearSampler { MinFilter = Linear; MagFilter = Linear; MipFilter = Linear; AddressU = Clamp; AddressV = Clamp; AddressW = Clamp; }; float m_shaperBias; float m_shaperScale; } PSOutput MainPS(VSOutput IN) { PSOutput OUT; float2 uvCoord = float2(IN.m_texCoord.x, IN.m_texCoord.y); float4 acescg = PassSrg::m_color.Sample(PassSrg::LinearSampler, uvCoord); float3 color = mul(XYZToSRGBMat, mul(D60ToD65Cat, mul(AP1ToXYZMat, acescg.rgb))); float3 lutCoordinate = log(color.rgb)/log(2.0) * PassSrg::m_shaperScale + PassSrg::m_shaperBias; OUT.m_color = PassSrg::m_lut.Sample(PassSrg::LinearSampler, lutCoordinate); OUT.m_color.a = 1.0f; return OUT; }