trying to a add automatic exposure

This commit is contained in:
Dynamitos
2025-03-11 22:08:23 +01:00
parent a957b05615
commit 80f86ca95c
10 changed files with 254 additions and 112 deletions
+15 -14
View File
@@ -31,8 +31,9 @@ struct Parameters
float sat = 1.0;
Texture2D hdrInputTexture;
SamplerState hdrSampler;
StructuredBuffer<float> averageLuminance;
};
ParameterBlock<Parameters> pParams;
ParameterBlock<Parameters> pToneMappingParams;
// AgX
// ->
@@ -88,15 +89,15 @@ float3 agxEotf(float3 val) {
return val;
}
float3 agxLook(float3 val) {
float3 agxLook(float3 val, float avgLum) {
const float3 lw = float3(0.2126, 0.7152, 0.0722);
float luma = dot(val, lw);
float luma = dot(val, lw) / (9.6 * avgLum + 0.00001);
// Default
float3 offset = pParams.offset.xyz;
float3 slope = pParams.slope.xyz;
float3 power = pParams.power.xyz;
float sat = pParams.sat;
float3 offset = pToneMappingParams.offset.xyz;
float3 slope = pToneMappingParams.slope.xyz;
float3 power = pToneMappingParams.power.xyz;
float sat = pToneMappingParams.sat;
// ASC CDL
val = pow(val * slope + offset, power);
@@ -106,12 +107,12 @@ float3 agxLook(float3 val) {
[shader("pixel")]
float4 toneMapping(float2 uv : UV) : SV_Target
{
float3 hdrValue = pParams.hdrInputTexture.Sample(pParams.hdrSampler, uv).rgb;
//float3 value = agx(hdrValue);
//value = agxLook(value);
//value = agxEotf(value);
float3 value = hdrValue / (hdrValue + float3(10));
float3 hdrValue = pToneMappingParams.hdrInputTexture.Sample(pToneMappingParams.hdrSampler, uv).rgb;
float avgLum = pToneMappingParams.averageLuminance[0];
float3 value = agx(hdrValue);
value = agxLook(value, avgLum);
value = agxEotf(value);
return float4(value, 1);
}
}