summaryrefslogtreecommitdiff
path: root/gfx/gl/shaders/shadowStencil.gs
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2024-09-03 01:37:03 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2024-09-03 01:37:03 +0100
commitf22f79330f9b8851cda76d1e11555877cbb72d80 (patch)
tree5d1934ff10a5be4a609791a8ab2327b39a4c0ae4 /gfx/gl/shaders/shadowStencil.gs
parentUpdate stencil texture to 2d array (diff)
downloadilt-f22f79330f9b8851cda76d1e11555877cbb72d80.tar.bz2
ilt-f22f79330f9b8851cda76d1e11555877cbb72d80.tar.xz
ilt-f22f79330f9b8851cda76d1e11555877cbb72d80.zip
Populate all layers of the stencil texture
Albeit with the same projection
Diffstat (limited to 'gfx/gl/shaders/shadowStencil.gs')
-rw-r--r--gfx/gl/shaders/shadowStencil.gs28
1 files changed, 28 insertions, 0 deletions
diff --git a/gfx/gl/shaders/shadowStencil.gs b/gfx/gl/shaders/shadowStencil.gs
new file mode 100644
index 0000000..eea4643
--- /dev/null
+++ b/gfx/gl/shaders/shadowStencil.gs
@@ -0,0 +1,28 @@
+#version 330 core
+#extension GL_ARB_viewport_array : enable
+
+include(`materialDetail.glsl')
+
+layout(triangles) in;
+layout(triangle_strip, max_vertices = 24) out;
+
+uniform mat4 viewProjection;
+in vec3 FragPos[];
+in vec2 TexCoords[];
+flat in MaterialDetail Material[];
+out vec2 gTexCoords;
+flat out MaterialDetail gMaterial;
+
+void
+main()
+{
+ for (gl_Layer = 0; gl_Layer < 8; ++gl_Layer) {
+ for (int v = 0; v < FragPos.length(); ++v) {
+ gl_Position = viewProjection * vec4(FragPos[v], 1);
+ gTexCoords = TexCoords[v];
+ gMaterial = Material[v];
+ EmitVertex();
+ }
+ EndPrimitive();
+ }
+}