diff options
| author | Dan Goodliffe <dan@randomdan.homeip.net> | 2026-02-26 18:04:06 +0000 |
|---|---|---|
| committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2026-02-28 13:41:37 +0000 |
| commit | 1e08193a1678675ac5869b76e8a2339f6de5b773 (patch) | |
| tree | c9a47be9f06f69a06be2f43d371a88e1c507669e /gfx/gl/shaders/billboardPainter.geom | |
| parent | Tidy the preFrame logic into a single function in SceneRenderer (diff) | |
| download | ilt-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.geom | 34 |
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(); + } +} |
