| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- <!--
- Copyright (C) 2009-2018, Panagiotis Christopoulos Charitos and contributors.
- All rights reserved.
- Code licensed under the BSD License.
- http://www.anki3d.org/LICENSE
- -->
- <shaderProgram>
- <shaders>
- <shader type="vert">
- <source><![CDATA[
- #include "shaders/Common.glsl"
- out gl_PerVertex
- {
- vec4 gl_Position;
- };
- layout(ANKI_UBO_BINDING(0, 0)) uniform u_
- {
- vec4 u_nearFarPad2;
- vec4 u_uvScaleAndTranslation;
- };
- layout(location = 0) out vec2 out_uv;
- void main()
- {
- out_uv = vec2(gl_VertexID & 1, gl_VertexID >> 1) * 2.0;
- vec2 pos = out_uv * 2.0 - 1.0;
- out_uv = fma(out_uv, u_uvScaleAndTranslation.zw, u_uvScaleAndTranslation.xy);
- gl_Position = vec4(pos, 0.0, 1.0);
- }
- ]]></source>
- </shader>
- <shader type="frag">
- <inputs>
- <input name="INPUT_TEXTURE_SIZE" type="uvec2" const="1"/>
- </inputs>
- <source><![CDATA[
- #include "shaders/GaussianBlurCommon.glsl"
- #include "shaders/Functions.glsl"
- layout(location = 0) in vec2 in_uv;
- layout(ANKI_TEX_BINDING(0, 0)) uniform sampler2D u_inputTex;
- layout(ANKI_UBO_BINDING(0, 0)) uniform u_
- {
- vec4 u_nearFarPad2;
- vec4 u_uvScaleAndTranslation;
- };
- #define u_near u_nearFarPad2.x
- #define u_far u_nearFarPad2.y
- layout(location = 0) out float out_color;
- float sampleLinearDepth(vec2 uv)
- {
- return linearizeDepth(textureLod(u_inputTex, uv, 0.0).r, u_near, u_far);
- }
- void main()
- {
- const vec2 TEXEL_SIZE = 1.0 / vec2(INPUT_TEXTURE_SIZE);
- vec2 uvOffset = 1.1 * TEXEL_SIZE;
- out_color = sampleLinearDepth(in_uv) * BOX_WEIGHTS[0u];
- out_color += sampleLinearDepth(in_uv + vec2(uvOffset.x, 0.0)) * BOX_WEIGHTS[1u];
- out_color += sampleLinearDepth(in_uv + vec2(-uvOffset.x, 0.0)) * BOX_WEIGHTS[1u];
- out_color += sampleLinearDepth(in_uv + vec2(0.0, uvOffset.y)) * BOX_WEIGHTS[1u];
- out_color += sampleLinearDepth(in_uv + vec2(0.0, -uvOffset.y)) * BOX_WEIGHTS[1u];
- out_color += sampleLinearDepth(in_uv + vec2(uvOffset.x, uvOffset.y)) * BOX_WEIGHTS[2u];
- out_color += sampleLinearDepth(in_uv + vec2(-uvOffset.x, uvOffset.y)) * BOX_WEIGHTS[2u];
- out_color += sampleLinearDepth(in_uv + vec2(uvOffset.x, -uvOffset.y)) * BOX_WEIGHTS[2u];
- out_color += sampleLinearDepth(in_uv + vec2(-uvOffset.x, -uvOffset.y)) * BOX_WEIGHTS[2u];
- }
- ]]></source>
- </shader>
- </shaders>
- </shaderProgram>
|