From 892513f81ed68e05d4dedb99f51de5bc46cab6b2 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 28 Jan 2024 02:25:11 +0000 Subject: 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. --- gfx/gl/shaders/commonShadowPoint.gs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 gfx/gl/shaders/commonShadowPoint.gs (limited to 'gfx/gl/shaders/commonShadowPoint.gs') 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(); + } +} -- cgit v1.2.3