Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2014
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. /***************************************************************************************/
  2. /*! DopeShader settings available in \file APB-DopeShader-Settings.usf
  3. ****************************************************************************************/
  4.  
  5. #include "Common.usf"
  6. #include "PostProcessCommon.usf"
  7. #include "APB-DopeShader-Settings.usf"
  8.  
  9. // Tone-mapping parameters.
  10. sampler2D AdaptedLuminance;
  11.  
  12. #if SET_BLOOM
  13. sampler2D BlurredImage;
  14. float BloomAlpha;
  15. float BloomPostScale;
  16. #endif
  17.  
  18. // Colour adjustment parameters.
  19. #if SET_ADJUSTMENT
  20. float Brightness;
  21. float Contrast;
  22. float Saturation;
  23. float3 DesaturatedColour;
  24. #endif
  25.  
  26. // The per-color weighting to be used for luminance calculations in RGB order.
  27. static const float3 LuminanceVector = float3(0.2126, 0.7152, 0.0722); // (0.2126, 0.7152, 0.0722) or (0.3, 0.59, 0.11)
  28. static const float WHITE = pow( 1, 2 );
  29.  
  30. // SJT: Perform tone mapping on a pixel.
  31. float3 ToneMap(float3 WorldColour)
  32. {
  33. float fAdaptedLuminance = tex2D(AdaptedLuminance, float2(0.5f, 0.5f)).r;
  34. float lum = dot(WorldColour, LuminanceVector);
  35. lum = ((lum * (lum / WHITE)) / lum) * (0.75f / fAdaptedLuminance) * 8;
  36. WorldColour *= lum;
  37. return saturate( WorldColour );
  38. }
  39.  
  40. // SJT: Basic colour adjustment.
  41. #if SET_ADJUSTMENT
  42. float3 ColourAdjust(float3 InColour)
  43. {
  44. float3 Result = InColour;
  45.  
  46. // Saturate before we do anything to prevent whackiness from values outside [0,1]
  47. Result = saturate(Result);
  48.  
  49. // (De)saturate.
  50. Result = lerp(dot(Result, LuminanceVector) * DesaturatedColour, Result, Saturation);
  51.  
  52. // Contrast adjustment (cubic).
  53. Result = Result - Contrast * (Result - 1) * Result * (Result - 0.5);
  54.  
  55. // Brightness adjustment (addition).
  56. Result = Result + Brightness;
  57.  
  58. return Result;
  59. }
  60. #endif
  61.  
  62. void Main(
  63. in float2 UV : TEXCOORD0,
  64. in float2 SceneUV : TEXCOORD1,
  65. out float4 OutColor : COLOR0
  66. )
  67. {
  68. float4 sceneColor=tex2D(SceneColorTexture,SceneUV);
  69.  
  70. #if SET_BLOOM
  71. float4 rawColor = tex2D(BlurredImage,UV);
  72. float3 filteredColor = MAX_SCENE_COLOR * rawColor.rgb * BloomPostScale;
  73. float3 RTWBloom = 1-(saturate(1-(filteredColor.rgb*BloomAlpha*0.5))*saturate(1-lerp(sceneColor.rgb, 0, BloomAlpha*saturate(rawColor.a*4)*0.5)));
  74. float3 ToneMappedColour = ToneMap(RTWBloom);
  75. #else
  76. float3 ToneMappedColour = ToneMap(sceneColor);
  77. #endif
  78.  
  79. #if SET_ADJUSTMENT
  80. float3 AdjustedColour = ColourAdjust(ToneMappedColour);
  81. OutColor = float4(AdjustedColour.rgb, sceneColor.a);
  82. #else
  83. OutColor = float4(ToneMappedColour.rgb, sceneColor.a);
  84. #endif
  85.  
  86. #if SET_DESATURATE
  87. float luminance = dot(OutColor, LuminanceVector);
  88. float4 eColor = lerp(luminance, OutColor, 0.9) ; // 1.0 no desaturation, while 0.0 is full desaturation
  89. OutColor = float4(eColor.rgb, OutColor.a);
  90. #endif
  91.  
  92. OutColor = pow( OutColor, 1/1.5f );
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement