diff options
| author | Dan Goodliffe <dan@randomdan.homeip.net> | 2026-02-06 19:56:46 +0000 |
|---|---|---|
| committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2026-02-06 19:56:46 +0000 |
| commit | 99f5033fdc6e2701bf5bb76e89e100a846cbba80 (patch) | |
| tree | b72ec7920738132166daab88b6fdb895819dac04 /gfx/gl/shaders/pointLight.geom | |
| parent | Add glDebugScope (diff) | |
| parent | Make similar array tidy-up to networkStraight shaders (diff) | |
| download | ilt-99f5033fdc6e2701bf5bb76e89e100a846cbba80.tar.bz2 ilt-99f5033fdc6e2701bf5bb76e89e100a846cbba80.tar.xz ilt-99f5033fdc6e2701bf5bb76e89e100a846cbba80.zip | |
Merge branch 'glmax'
Diffstat (limited to 'gfx/gl/shaders/pointLight.geom')
| -rw-r--r-- | gfx/gl/shaders/pointLight.geom | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/gfx/gl/shaders/pointLight.geom b/gfx/gl/shaders/pointLight.geom new file mode 100644 index 0000000..1ee7e06 --- /dev/null +++ b/gfx/gl/shaders/pointLight.geom @@ -0,0 +1,49 @@ +#version 460 core + +const vec3[] cube = vec3[]( // http://www.cs.umd.edu/gvil/papers/av_ts.pdf + vec3(-1, 1, 1), // Front-top-left + vec3(1, 1, 1), // Front-top-right + vec3(-1, -1, 1), // Front-bottom-left + vec3(1, -1, 1), // Front-bottom-right + vec3(1, -1, -1), // Back-bottom-right + vec3(1, 1, 1), // Front-top-right + vec3(1, 1, -1), // Back-top-right + vec3(-1, 1, 1), // Front-top-left + vec3(-1, 1, -1), // Back-top-left + vec3(-1, -1, 1), // Front-bottom-left + vec3(-1, -1, -1), // Back-bottom-left + vec3(1, -1, -1), // Back-bottom-right + vec3(-1, 1, -1), // Back-top-left + vec3(1, 1, -1) // Back-top-right +); +uniform mat4 viewProjection; +uniform ivec3 viewPoint; +flat in vec3 position[]; +flat in vec3 colour[]; +flat in float size[]; +flat in float kq[]; +layout(points) in; + +layout(triangle_strip, max_vertices = cube.length()) out; +flat out vec4 geo_centre; +flat out vec3 geo_colour; +flat out float geo_kq; + +void +doVertex(int idx) +{ + gl_Position = viewProjection * (gl_in[0].gl_Position + vec4(cube[idx] * size[0], 1)); + geo_centre = vec4(position[0], size[0]); + geo_colour = colour[0]; + geo_kq = kq[0]; + EmitVertex(); +} + +void +main() +{ + for (int i = 0; i < cube.length(); ++i) { + doVertex(i); + } + EndPrimitive(); +} |
