Re: [HLSL CODE] 3D LUT
Posted: 01 Nov 2016, 17:25
Sweet, thank you.
Code: Select all
texture2D texs5 < string ResourceName="enbpalette__.tga"; >; // ENB interior palette (Added.)
texture2D texs6 < string ResourceName="enbpalette_.tga"; >; // ENB night palette (Added.)
Code: Select all
sampler2D _s5 = sampler_state
{
Texture = <texs5>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
sampler2D _s6 = sampler_state
{
Texture = <texs6>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture = FALSE;
MaxMipLevel = 0;
MipMapLodBias = 0;
};
Code: Select all
#ifdef E_CC_PALETTE
float3 CLuTD1; // CLuT for Days
float3 CLuTD2;
float3 CLuTN1; // CLuT for Nights
float3 CLuTN2;
float3 CLuTI1; // CLuT for Interiors
float3 CLuTI2;
float3 CLuTA1; // CLuT Averages
float3 CLuTA2;
float2 CLut_pSize = float2(0.00390625, 0.0625); // 1 / float2(256, 16);
color.rgb = saturate(color.rgb);
color.b *= 15;
float4 CLut_UV = 0;
CLut_UV.w = floor(color.b);
CLut_UV.xy = color.rg * 15 * CLut_pSize + 0.5 * CLut_pSize ;
CLut_UV.x += CLut_UV.w * CLut_pSize.y;
CLuTD1.rgb = tex2Dlod(_s7, CLut_UV.xyzz).rgb;
CLuTD2.rgb = tex2Dlod(_s7, CLut_UV.xyzz + float4(CLut_pSize.y, 0, 0, 0)).rgb;
CLuTN1.rgb = tex2Dlod(_s6, CLut_UV.xyzz).rgb;
CLuTN2.rgb = tex2Dlod(_s6, CLut_UV.xyzz + float4(CLut_pSize.y, 0, 0, 0)).rgb;
CLuTI1.rgb = tex2Dlod(_s5, CLut_UV.xyzz).rgb;
CLuTI2.rgb = tex2Dlod(_s5, CLut_UV.xyzz + float4(CLut_pSize.y, 0, 0, 0)).rgb;
CLuTA1.rgb = lerp( lerp(CLuTN1.rgb, CLuTD1.rgb, ENightDayFactor), CLuTI1.rgb, EInteriorFactor);
CLuTA2.rgb = lerp( lerp(CLuTN2.rgb, CLuTD2.rgb, ENightDayFactor), CLuTI2.rgb, EInteriorFactor);
color.rgb = lerp(CLuTA1.rgb, CLuTA2.rgb, color.b - CLut_UV.w);
#endif //E_CC_PALETTE