diff options
| author | Dan Goodliffe <dan@randomdan.homeip.net> | 2026-02-28 13:49:27 +0000 |
|---|---|---|
| committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2026-02-28 13:54:13 +0000 |
| commit | 9ecec749060a05705d7c7eb200949e17a84702a1 (patch) | |
| tree | db36f49685662d6c423eb196fc5e64c5f89f5daa /gfx/gl/sceneShader.cpp | |
| parent | Use RelativeDistance in Camera near/fear and expose member variables (diff) | |
| download | ilt-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.cpp | 14 |
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 { |
