summaryrefslogtreecommitdiff
path: root/gfx/gl/sceneShader.cpp
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/sceneShader.cpp
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/sceneShader.cpp')
-rw-r--r--gfx/gl/sceneShader.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/gfx/gl/sceneShader.cpp b/gfx/gl/sceneShader.cpp
index 72cde91..43e54a5 100644
--- a/gfx/gl/sceneShader.cpp
+++ b/gfx/gl/sceneShader.cpp
@@ -1,4 +1,6 @@
#include "sceneShader.h"
+#include <gfx/gl/shaders/billboard-frag.h>
+#include <gfx/gl/shaders/billboard-vert.h>
#include <gfx/gl/shaders/dynamicPoint-vert.h>
#include <gfx/gl/shaders/dynamicPointInst-vert.h>
#include <gfx/gl/shaders/fixedPoint-vert.h>
@@ -30,7 +32,7 @@ inline void
SceneShader::allPrograms(auto member, auto &&... ps) const
{
for (const auto & prog : std::initializer_list<const SceneProgram *> {&basic, &basicInst, &water, &landmass,
- &absolute, &pointLightInst, &spotLightInst, &networkStraight, &networkCurve}) {
+ &absolute, &pointLightInst, &spotLightInst, &networkStraight, &networkCurve, &billboard}) {
(prog->*member)(std::forward<decltype(ps)>(ps)...);
}
}
@@ -89,6 +91,16 @@ SceneShader::BasicProgram::use(Location const & location) const
setModel(location);
}
+SceneShader::BillboardProgram::BillboardProgram() : SceneProgram {billboard_vert, billboard_frag} { }
+
+void
+SceneShader::BillboardProgram::use(RelativeDistance size, RelativePosition3D centre) const
+{
+ Program::use();
+ glUniform(sizeLoc, size);
+ glUniform(centreLoc, centre);
+}
+
void
SceneShader::LandmassProgram::use(const glm::vec3 colourBias) const
{