diff options
| author | Tim Foley <tfoley@nvidia.com> | 2017-06-09 11:34:21 -0700 |
|---|---|---|
| committer | Tim Foley <tfoley@nvidia.com> | 2017-06-09 13:44:59 -0700 |
| commit | fcf83dbf9effab3bd98bad2b83b2468b7eb05cfd (patch) | |
| tree | 41047c94883b86ec085a81597391ce3ef557cd43 /tests/glsl/sascha-willems/offscreen | |
| parent | 52e8d4b9a27ab0060f874c3a63ab531847be35c0 (diff) | |
Initial import of code.
Diffstat (limited to 'tests/glsl/sascha-willems/offscreen')
| -rw-r--r-- | tests/glsl/sascha-willems/offscreen/mirror.frag | 44 | ||||
| -rw-r--r-- | tests/glsl/sascha-willems/offscreen/mirror.vert | 29 | ||||
| -rw-r--r-- | tests/glsl/sascha-willems/offscreen/phong.frag | 30 | ||||
| -rw-r--r-- | tests/glsl/sascha-willems/offscreen/phong.vert | 40 | ||||
| -rw-r--r-- | tests/glsl/sascha-willems/offscreen/quad.frag | 16 | ||||
| -rw-r--r-- | tests/glsl/sascha-willems/offscreen/quad.vert | 27 |
6 files changed, 186 insertions, 0 deletions
diff --git a/tests/glsl/sascha-willems/offscreen/mirror.frag b/tests/glsl/sascha-willems/offscreen/mirror.frag new file mode 100644 index 000000000..c8b31bd2b --- /dev/null +++ b/tests/glsl/sascha-willems/offscreen/mirror.frag @@ -0,0 +1,44 @@ +#version 450 +//TEST:COMPARE_GLSL: + +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_420pack : enable + +layout (binding = 1) uniform sampler2D samplerColor; +layout (binding = 2) uniform sampler2D samplerColorMap; + +layout (location = 0) in vec2 inUV; +layout (location = 1) in vec4 inPos; + +layout (location = 0) out vec4 outFragColor; + +void main() +{ + vec4 tmp = vec4(1.0 / inPos.w); + vec4 projCoord = inPos * tmp; + + // Scale and bias + projCoord += vec4(1.0); + projCoord *= vec4(0.5); + + // Slow single pass blur + // For demonstration purposes only + const float blurSize = 1.0 / 512.0; + + vec4 color = texture(samplerColorMap, inUV); + outFragColor = color * 0.25; + + if (gl_FrontFacing) + { + // Only render mirrored scene on front facing (upper) side of mirror surface + vec4 reflection = vec4(0.0); + for (int x = -3; x <= 3; x++) + { + for (int y = -3; y <= 3; y++) + { + reflection += texture(samplerColor, vec2(projCoord.s + x * blurSize, projCoord.t + y * blurSize)) / 49.0; + } + } + outFragColor += reflection * 1.5 * (color.r); + }; +}
\ No newline at end of file diff --git a/tests/glsl/sascha-willems/offscreen/mirror.vert b/tests/glsl/sascha-willems/offscreen/mirror.vert new file mode 100644 index 000000000..a4c0cb7f5 --- /dev/null +++ b/tests/glsl/sascha-willems/offscreen/mirror.vert @@ -0,0 +1,29 @@ +#version 450 +//TEST:COMPARE_GLSL: + +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_420pack : enable + +layout (location = 0) in vec3 inPos; +layout (location = 1) in vec2 inUV; + +layout (binding = 0) uniform UBO +{ + mat4 projection; + mat4 model; +} ubo; + +layout (location = 0) out vec2 outUV; +layout (location = 1) out vec4 outPos; + +out gl_PerVertex +{ + vec4 gl_Position; +}; + +void main() +{ + outUV = inUV; + outPos = ubo.projection * ubo.model * vec4(inPos.xyz, 1.0); + gl_Position = outPos; +} diff --git a/tests/glsl/sascha-willems/offscreen/phong.frag b/tests/glsl/sascha-willems/offscreen/phong.frag new file mode 100644 index 000000000..43fc662a9 --- /dev/null +++ b/tests/glsl/sascha-willems/offscreen/phong.frag @@ -0,0 +1,30 @@ +#version 450 +//TEST:COMPARE_GLSL: + +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_420pack : enable + +layout (location = 0) in vec3 inNormal; +layout (location = 1) in vec3 inColor; +layout (location = 2) in vec3 inEyePos; +layout (location = 3) in vec3 inLightVec; + +layout (location = 0) out vec4 outFragColor; + +void main() +{ + vec3 Eye = normalize(-inEyePos); + vec3 Reflected = normalize(reflect(-inLightVec, inNormal)); + + vec4 IAmbient = vec4(0.1, 0.1, 0.1, 1.0); + vec4 IDiffuse = vec4(max(dot(inNormal, inLightVec), 0.0)); + float specular = 0.75; + vec4 ISpecular = vec4(0.0); + if (dot(inEyePos, inNormal) < 0.0) + { + ISpecular = vec4(0.5, 0.5, 0.5, 1.0) * pow(max(dot(Reflected, Eye), 0.0), 16.0) * specular; + } + + outFragColor = vec4((IAmbient + IDiffuse) * vec4(inColor, 1.0) + ISpecular); + +}
\ No newline at end of file diff --git a/tests/glsl/sascha-willems/offscreen/phong.vert b/tests/glsl/sascha-willems/offscreen/phong.vert new file mode 100644 index 000000000..5bef0fa1e --- /dev/null +++ b/tests/glsl/sascha-willems/offscreen/phong.vert @@ -0,0 +1,40 @@ +#version 450 +//TEST:COMPARE_GLSL: + +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_420pack : enable + +layout (location = 0) in vec4 inPos; +layout (location = 2) in vec3 inColor; +layout (location = 3) in vec3 inNormal; + +layout (binding = 0) uniform UBO +{ + mat4 projection; + mat4 model; + vec4 lightPos; +} ubo; + +layout (location = 0) out vec3 outNormal; +layout (location = 1) out vec3 outColor; +layout (location = 2) out vec3 outEyePos; +layout (location = 3) out vec3 outLightVec; + +out gl_PerVertex +{ + vec4 gl_Position; + float gl_ClipDistance[]; +}; + +void main() +{ + outNormal = inNormal; + outColor = inColor; + gl_Position = ubo.projection * ubo.model * inPos; + outEyePos = vec3(ubo.model * inPos); + outLightVec = normalize(ubo.lightPos.xyz - outEyePos); + + // Clip against reflection plane + vec4 clipPlane = vec4(0.0, -1.0, 0.0, 1.5); + gl_ClipDistance[0] = dot(inPos, clipPlane); +} diff --git a/tests/glsl/sascha-willems/offscreen/quad.frag b/tests/glsl/sascha-willems/offscreen/quad.frag new file mode 100644 index 000000000..6d54f2f33 --- /dev/null +++ b/tests/glsl/sascha-willems/offscreen/quad.frag @@ -0,0 +1,16 @@ +#version 450 +//TEST:COMPARE_GLSL: + +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_420pack : enable + +layout (binding = 1) uniform sampler2D samplerColor; + +layout (location = 0) in vec2 inUV; + +layout (location = 0) out vec4 outFragColor; + +void main() +{ + outFragColor = texture(samplerColor, inUV); +}
\ No newline at end of file diff --git a/tests/glsl/sascha-willems/offscreen/quad.vert b/tests/glsl/sascha-willems/offscreen/quad.vert new file mode 100644 index 000000000..c1ad3e070 --- /dev/null +++ b/tests/glsl/sascha-willems/offscreen/quad.vert @@ -0,0 +1,27 @@ +#version 450 +//TEST:COMPARE_GLSL: + +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_420pack : enable + +layout (location = 0) in vec3 inPos; +layout (location = 1) in vec2 inUV; + +layout (binding = 0) uniform UBO +{ + mat4 projection; + mat4 model; +} ubo; + +layout (location = 0) out vec2 outUV; + +out gl_PerVertex +{ + vec4 gl_Position; +}; + +void main() +{ + outUV = inUV; + gl_Position = ubo.projection * ubo.model * vec4(inPos.xyz, 1.0); +} |
