summaryrefslogtreecommitdiff
path: root/tests/glsl/sascha-willems/offscreen
diff options
context:
space:
mode:
authorTim Foley <tfoley@nvidia.com>2017-06-09 11:34:21 -0700
committerTim Foley <tfoley@nvidia.com>2017-06-09 13:44:59 -0700
commitfcf83dbf9effab3bd98bad2b83b2468b7eb05cfd (patch)
tree41047c94883b86ec085a81597391ce3ef557cd43 /tests/glsl/sascha-willems/offscreen
parent52e8d4b9a27ab0060f874c3a63ab531847be35c0 (diff)
Initial import of code.
Diffstat (limited to 'tests/glsl/sascha-willems/offscreen')
-rw-r--r--tests/glsl/sascha-willems/offscreen/mirror.frag44
-rw-r--r--tests/glsl/sascha-willems/offscreen/mirror.vert29
-rw-r--r--tests/glsl/sascha-willems/offscreen/phong.frag30
-rw-r--r--tests/glsl/sascha-willems/offscreen/phong.vert40
-rw-r--r--tests/glsl/sascha-willems/offscreen/quad.frag16
-rw-r--r--tests/glsl/sascha-willems/offscreen/quad.vert27
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);
+}