| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- <!--
- Copyright (C) 2009-2018, Panagiotis Christopoulos Charitos and contributors.
- All rights reserved.
- Code licensed under the BSD License.
- http://www.anki3d.org/LICENSE
- -->
- <shaderProgram>
- <mutators>
- <mutator name="BLUE_NOISE" values="0 1"/>
- <mutator name="SHARPEN_ENABLED" values="0 1"/>
- <mutator name="BLOOM_ENABLED" values="0 1"/>
- <mutator name="DBG_ENABLED" values="0 1"/>
- </mutators>
- <shaders>
- <shader type="vert">
- <source><![CDATA[
- #include "shaders/QuadVert.glsl"
- ]]></source>
- </shader>
- <shader type="frag">
- <inputs>
- <input name="LUT_SIZE" type="uint" const="1"/>
- <input name="FB_SIZE" type="uvec2" const="1"/>
- </inputs>
- <source><![CDATA[
- #include "shaders/Common.glsl"
- #include "shaders/Tonemapping.glsl"
- #include "shaders/Functions.glsl"
- layout(ANKI_TEX_BINDING(0, 0)) uniform sampler2D u_isRt;
- layout(ANKI_TEX_BINDING(0, 1)) uniform sampler2D u_ppsBloomLfRt;
- layout(ANKI_TEX_BINDING(0, 2)) uniform sampler3D u_lut;
- layout(ANKI_TEX_BINDING(0, 3)) uniform sampler2DArray u_blueNoise;
- #if DBG_ENABLED
- layout(ANKI_TEX_BINDING(0, 5)) uniform sampler2D u_dbgRt;
- #endif
- layout(std140, ANKI_UBO_BINDING(0, 0)) uniform u0_
- {
- vec4 u_blueNoiseLayerPad3;
- };
- #define TONEMAPPING_BINDING 1
- #include "shaders/TonemappingResources.glsl"
- layout(location = 0) in vec2 in_uv;
- layout(location = 0) out vec3 out_color;
- vec3 colorGrading(in vec3 color)
- {
- const vec3 LUT_SCALE = vec3((float(LUT_SIZE) - 1.0) / float(LUT_SIZE));
- const vec3 LUT_OFFSET = vec3(1.0 / (2.0 * float(LUT_SIZE)));
- color = min(color, vec3(1.0));
- vec3 lutCoords = color * LUT_SCALE + LUT_OFFSET;
- return textureLod(u_lut, lutCoords, 0.0).rgb;
- }
- void main()
- {
- vec2 uv = in_uv.xy;
- #if SHARPEN_ENABLED
- out_color = readSharpen(u_isRt, uv, 0.15, true);
- #else
- out_color = textureLod(u_isRt, uv, 0.0).rgb;
- #endif
- out_color = tonemap(out_color, readFirstInvocationARB(u_exposureThreshold0));
- #if BLOOM_ENABLED
- vec3 bloom = textureLod(u_ppsBloomLfRt, uv, 0.0).rgb;
- out_color += bloom;
- #endif
- out_color = colorGrading(out_color);
- #if BLUE_NOISE
- vec3 blueNoise = textureLod(u_blueNoise, vec3(FB_SIZE / vec2(64.0) * uv, u_blueNoiseLayerPad3.x), 0.0).rgb;
- blueNoise = blueNoise * 2.0 - 1.0;
- blueNoise = sign(blueNoise) * (1.0 - sqrt(1.0 - abs(blueNoise)));
- out_color += blueNoise / 255.0;
- #endif
- #if 0
- {
- out_color = vec3(textureLod(u_isRt, uv, 0.0).rgb);
- }
- #endif
- #if DBG_ENABLED
- out_color += textureLod(u_dbgRt, uv, 0.0).rgb;
- #endif
- }
- ]]></source>
- </shader>
- </shaders>
- </shaderProgram>
|