summaryrefslogtreecommitdiff
path: root/gfx/gl/shaders/billboard.vert
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2026-02-28 13:49:27 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2026-02-28 13:54:13 +0000
commit9ecec749060a05705d7c7eb200949e17a84702a1 (patch)
treedb36f49685662d6c423eb196fc5e64c5f89f5daa /gfx/gl/shaders/billboard.vert
parentUse RelativeDistance in Camera near/fear and expose member variables (diff)
downloadilt-9ecec749060a05705d7c7eb200949e17a84702a1.tar.bz2
ilt-9ecec749060a05705d7c7eb200949e17a84702a1.tar.xz
ilt-9ecec749060a05705d7c7eb200949e17a84702a1.zip
Add BillboardProgram to SceneShader
The implementation is overly simple/incomplete, I'm not even convince what is there is right, but it's a decent start.
Diffstat (limited to 'gfx/gl/shaders/billboard.vert')
-rw-r--r--gfx/gl/shaders/billboard.vert23
1 files changed, 23 insertions, 0 deletions
diff --git a/gfx/gl/shaders/billboard.vert b/gfx/gl/shaders/billboard.vert
new file mode 100644
index 0000000..2d73084
--- /dev/null
+++ b/gfx/gl/shaders/billboard.vert
@@ -0,0 +1,23 @@
+#version 460 core
+
+uniform mat4 viewProjection;
+uniform ivec4 viewPort;
+uniform ivec3 viewPoint;
+uniform vec3 centre;
+uniform float size;
+layout(location = 0) in ivec3 modelPos;
+layout(location = 1) in float yaw;
+
+flat out ivec3 ModelPos;
+flat out float Yaw;
+flat out float Depth;
+
+void
+main()
+{
+ ModelPos = modelPos;
+ Yaw = yaw;
+ gl_Position = viewProjection * vec4(modelPos - viewPoint + centre, 1);
+ Depth = gl_Position.w;
+ gl_PointSize = (viewPort.w * size * 2) / gl_Position.w;
+}