summaryrefslogtreecommitdiff
path: root/gfx/gl/shaders/billboardPainter.geom
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2026-02-26 18:04:06 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2026-02-28 13:41:37 +0000
commit1e08193a1678675ac5869b76e8a2339f6de5b773 (patch)
treec9a47be9f06f69a06be2f43d371a88e1c507669e /gfx/gl/shaders/billboardPainter.geom
parentTidy the preFrame logic into a single function in SceneRenderer (diff)
downloadilt-1e08193a1678675ac5869b76e8a2339f6de5b773.tar.bz2
ilt-1e08193a1678675ac5869b76e8a2339f6de5b773.tar.xz
ilt-1e08193a1678675ac5869b76e8a2339f6de5b773.zip
Support for the BillboardPainter
Based on the ShadowStenciller, creates flattened images of a model for simplified mass use in a scene.
Diffstat (limited to 'gfx/gl/shaders/billboardPainter.geom')
-rw-r--r--gfx/gl/shaders/billboardPainter.geom34
1 files changed, 34 insertions, 0 deletions
diff --git a/gfx/gl/shaders/billboardPainter.geom b/gfx/gl/shaders/billboardPainter.geom
new file mode 100644
index 0000000..abd5f83
--- /dev/null
+++ b/gfx/gl/shaders/billboardPainter.geom
@@ -0,0 +1,34 @@
+#version 460 core
+
+include(`materialDetail.glsl')
+
+layout(triangles) in;
+layout(triangle_strip, max_vertices = 24) out;
+
+uniform mat4 viewProjection[8];
+uniform mat4 view[8];
+in vec3 FragPos[];
+in vec2 TexCoords[];
+flat in MaterialDetail Material[];
+in vec3 Normal[];
+in vec4 Colour[];
+out vec2 gTexCoords;
+out vec3 gNormal;
+out vec4 gColour;
+flat out MaterialDetail gMaterial;
+
+void
+main()
+{
+ for (gl_Layer = 0; gl_Layer < viewProjection.length(); ++gl_Layer) {
+ for (int v = 0; v < FragPos.length(); ++v) {
+ gl_Position = viewProjection[gl_Layer] * vec4(FragPos[v], 1);
+ gNormal = (view[gl_Layer] * vec4(Normal[v], 1)).xyz;
+ gTexCoords = TexCoords[v];
+ gMaterial = Material[v];
+ gColour = Colour[v];
+ EmitVertex();
+ }
+ EndPrimitive();
+ }
+}