diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2024-01-28 02:25:11 +0000 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2024-01-28 02:25:11 +0000 |
commit | 892513f81ed68e05d4dedb99f51de5bc46cab6b2 (patch) | |
tree | 19209bc3f1c58123bd497c7c555ac8c7d251c351 /gfx/gl/shaders/commonShadowPoint.gs | |
parent | Set light view point uniform once (diff) | |
download | ilt-892513f81ed68e05d4dedb99f51de5bc46cab6b2.tar.bz2 ilt-892513f81ed68e05d4dedb99f51de5bc46cab6b2.tar.xz ilt-892513f81ed68e05d4dedb99f51de5bc46cab6b2.zip |
Geometry shader for single pass shadow maps
2D array texture, 4 levels, geometry shader outputs to each layer for a specific band, single
scene rendering.
Pending massive tidy up.
Diffstat (limited to 'gfx/gl/shaders/commonShadowPoint.gs')
-rw-r--r-- | gfx/gl/shaders/commonShadowPoint.gs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/gfx/gl/shaders/commonShadowPoint.gs b/gfx/gl/shaders/commonShadowPoint.gs new file mode 100644 index 0000000..b008f29 --- /dev/null +++ b/gfx/gl/shaders/commonShadowPoint.gs @@ -0,0 +1,22 @@ +#version 330 core +#extension GL_ARB_viewport_array : enable + +uniform mat4 viewProjection[4]; +uniform int viewProjections; +in vec4 vworldPos[]; +layout(triangles) in; +layout(triangle_strip, max_vertices = 12) out; + +void +main() +{ + for (int vp = 0; vp < viewProjections; ++vp) { + for (int v = 0; v < vworldPos.length(); ++v) { + gl_Position = viewProjection[vp] * vworldPos[v]; + gl_Position.z = max(gl_Position.z, -1); + gl_Layer = vp; + EmitVertex(); + } + EndPrimitive(); + } +} |