Tonemap.hlsl 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #include "Uniforms.hlsl"
  2. #include "Transform.hlsl"
  3. #include "Samplers.hlsl"
  4. #include "ScreenPos.hlsl"
  5. #include "PostProcess.hlsl"
  6. uniform float cTonemapExposureBias;
  7. uniform float cTonemapMaxWhite;
  8. void VS(float4 iPos : POSITION,
  9. out float4 oPos : POSITION,
  10. out float2 oScreenPos : TEXCOORD0)
  11. {
  12. float4x3 modelMatrix = iModelMatrix;
  13. float3 worldPos = GetWorldPos(modelMatrix);
  14. oPos = GetClipPos(worldPos);
  15. oScreenPos = GetScreenPosPreDiv(oPos);
  16. }
  17. void PS(float2 iScreenPos : TEXCOORD0,
  18. out float4 oColor : COLOR0)
  19. {
  20. #ifdef REINHARDEQ3
  21. float3 color = ReinhardEq3Tonemap(max(tex2D(sDiffMap, iScreenPos).rgb * cTonemapExposureBias, 0.0));
  22. oColor = float4(color, 1.0);
  23. #endif
  24. #ifdef REINHARDEQ4
  25. float3 color = ReinhardEq4Tonemap(max(tex2D(sDiffMap, iScreenPos).rgb * cTonemapExposureBias, 0.0), cTonemapMaxWhite);
  26. oColor = float4(color, 1.0);
  27. #endif
  28. #ifdef UNCHARTED2
  29. float3 color = Uncharted2Tonemap(max(tex2D(sDiffMap, iScreenPos).rgb * cTonemapExposureBias, 0.0)) /
  30. Uncharted2Tonemap(float3(cTonemapMaxWhite, cTonemapMaxWhite, cTonemapMaxWhite));
  31. oColor = float4(color, 1.0);
  32. #endif
  33. }