From 612eda22bfe851443b6007fb23078d9403237609 Mon Sep 17 00:00:00 2001 From: codereader Date: Sun, 13 Feb 2022 09:48:20 +0100 Subject: [PATCH] #5893: Remove LightSources interface --- include/irender.h | 50 ------------------- include/irenderable.h | 1 - libs/render/CamRenderer.h | 6 +-- radiant/xyview/XYRenderer.h | 10 ++-- .../rendersystem/backend/OpenGLShader.cpp | 20 +------- .../rendersystem/backend/OpenGLShader.h | 1 - 6 files changed, 10 insertions(+), 78 deletions(-) diff --git a/include/irender.h b/include/irender.h index e216b79579..72c574b003 100644 --- a/include/irender.h +++ b/include/irender.h @@ -286,51 +286,6 @@ typedef std::function RenderableCallback; typedef std::function RendererLightCallback; -/** - * \brief - * Simple container of light sources - * - * This is a storage class used to represent all light sources which fall upon - * a particular object. It is passed to the RenderSystem at render time to - * provide the list of lights which intersect the Renderable being submitted. - */ -class LightSources -{ -public: - - /// Invoke a callback on all contained lights. - virtual void forEachLight(const RendererLightCallback& callback) const = 0; -}; - -/// Debug stream insertion for LightSources -inline std::ostream& operator<< (std::ostream& s, const LightSources& ls) -{ - s << "LightSources("; - - // Insert comma-separated list of RendererLights - bool addComma = false; - ls.forEachLight( - [&](const RendererLight& l) - { - if (addComma) - s << ", "; - s << l; - addComma = true; - } - ); - - return s << ")"; -} - -/// Debug stream insertion for possibly null LightSources pointer -inline std::ostream& operator<< (std::ostream& s, const LightSources* ls) -{ - if (ls) - return s << *ls; - else - return s << "[no lightsources]"; -} - const int c_attr_TexCoord0 = 1; const int c_attr_Tangent = 3; const int c_attr_Binormal = 4; @@ -460,16 +415,11 @@ class Shader : * \param modelview * The modelview transform for this object. * - * \param lights - * Optional LightSources containing all of the lights which illuminate this - * object. - * * \param entity * Optional IRenderEntity exposing entity-related render parameters. */ virtual void addRenderable(const OpenGLRenderable& renderable, const Matrix4& modelview, - const LightSources* lights = nullptr, const IRenderEntity* entity = nullptr) = 0; /** diff --git a/include/irenderable.h b/include/irenderable.h index 9c6f552c98..77f6a8b623 100644 --- a/include/irenderable.h +++ b/include/irenderable.h @@ -11,7 +11,6 @@ class RenderSystem; typedef std::shared_ptr RenderSystemPtr; class OpenGLRenderable; -class LightSources; class Matrix4; class IRenderEntity; class RendererLight; diff --git a/libs/render/CamRenderer.h b/libs/render/CamRenderer.h index 76a8a8c5e7..dd3e9ea094 100644 --- a/libs/render/CamRenderer.h +++ b/libs/render/CamRenderer.h @@ -71,18 +71,18 @@ class CamRenderer : if (mergeShader) { - mergeShader->addRenderable(renderable, localToWorld, nullptr, nullptr); + mergeShader->addRenderable(renderable, localToWorld, nullptr); } } if ((_flags & Highlight::Flags::Primitives) != 0 && _shaders.primitiveHighlightShader) { - _shaders.primitiveHighlightShader->addRenderable(renderable, localToWorld, nullptr, nullptr); + _shaders.primitiveHighlightShader->addRenderable(renderable, localToWorld, nullptr); } if ((_flags & Highlight::Flags::Faces) != 0 && _shaders.faceHighlightShader) { - _shaders.faceHighlightShader->addRenderable(renderable, localToWorld, nullptr, nullptr); + _shaders.faceHighlightShader->addRenderable(renderable, localToWorld, nullptr); } } }; diff --git a/radiant/xyview/XYRenderer.h b/radiant/xyview/XYRenderer.h index 14d5be840a..a602f7cabb 100644 --- a/radiant/xyview/XYRenderer.h +++ b/radiant/xyview/XYRenderer.h @@ -46,7 +46,7 @@ class XYRenderer : { addHighlightRenderable(renderable, localToWorld); - shader.addRenderable(renderable, localToWorld, nullptr, entity); + shader.addRenderable(renderable, localToWorld, entity); } void addHighlightRenderable(const OpenGLRenderable& renderable, const Matrix4& localToWorld) override @@ -62,14 +62,14 @@ class XYRenderer : if (mergeShader) { - mergeShader->addRenderable(renderable, localToWorld, nullptr, nullptr); + mergeShader->addRenderable(renderable, localToWorld, nullptr); } } // Elements can still be selected in merge mode if ((_flags & Highlight::Flags::Primitives) != 0) { - _shaders.selectedShader->addRenderable(renderable, localToWorld, nullptr, nullptr); + _shaders.selectedShader->addRenderable(renderable, localToWorld, nullptr); } return; @@ -80,11 +80,11 @@ class XYRenderer : { if ((_flags & Highlight::Flags::GroupMember) != 0) { - _shaders.selectedShaderGroup->addRenderable(renderable, localToWorld, nullptr, nullptr); + _shaders.selectedShaderGroup->addRenderable(renderable, localToWorld, nullptr); } else { - _shaders.selectedShader->addRenderable(renderable, localToWorld, nullptr, nullptr); + _shaders.selectedShader->addRenderable(renderable, localToWorld, nullptr); } } } diff --git a/radiantcore/rendersystem/backend/OpenGLShader.cpp b/radiantcore/rendersystem/backend/OpenGLShader.cpp index f5cbb4435e..945847e46d 100644 --- a/radiantcore/rendersystem/backend/OpenGLShader.cpp +++ b/radiantcore/rendersystem/backend/OpenGLShader.cpp @@ -89,7 +89,6 @@ void OpenGLShader::destroy() void OpenGLShader::addRenderable(const OpenGLRenderable& renderable, const Matrix4& modelview, - const LightSources* lights, const IRenderEntity* entity) { if (!_isVisible) return; @@ -97,23 +96,8 @@ void OpenGLShader::addRenderable(const OpenGLRenderable& renderable, // Add the renderable to all of our shader passes for (const OpenGLShaderPassPtr& pass : _shaderPasses) { - // If the shader pass cares about lighting, submit the renderable once - // for each incident light - if (pass->state().testRenderFlag(RENDER_BUMP)) - { - if (lights) - { - lights->forEachLight([&](const RendererLight& light) - { - pass->addRenderable(renderable, modelview, &light, entity); - }); - } - } - else - { - // No lighting, submit the renderable once - pass->addRenderable(renderable, modelview, nullptr, entity); - } + // Submit the renderable to each pass + pass->addRenderable(renderable, modelview, nullptr, entity); } } diff --git a/radiantcore/rendersystem/backend/OpenGLShader.h b/radiantcore/rendersystem/backend/OpenGLShader.h index c6276b6dca..7f506d81fb 100644 --- a/radiantcore/rendersystem/backend/OpenGLShader.h +++ b/radiantcore/rendersystem/backend/OpenGLShader.h @@ -98,7 +98,6 @@ class OpenGLShader : std::string getName() const override { return _name; } void addRenderable(const OpenGLRenderable& renderable, const Matrix4& modelview, - const LightSources* lights, const IRenderEntity* entity) override; bool hasSurfaces() const;