From cc33b5d481b3438d9000c2aa1f165523410d89a8 Mon Sep 17 00:00:00 2001 From: Riyyi Date: Sat, 31 Aug 2024 19:54:23 +0200 Subject: [PATCH] Render+Asset: Fix derived Renderer2D, fix Skybox uniform --- assets/glsl/batch-cubemap.vert | 4 ++-- assets/glsl/lightsource.frag | 3 +++ src/inferno/render/renderer.cpp | 23 +++++++++++++++++++---- src/inferno/render/renderer.h | 25 ++++++++++--------------- 4 files changed, 34 insertions(+), 21 deletions(-) diff --git a/assets/glsl/batch-cubemap.vert b/assets/glsl/batch-cubemap.vert index 15238cf..6bac061 100644 --- a/assets/glsl/batch-cubemap.vert +++ b/assets/glsl/batch-cubemap.vert @@ -8,7 +8,7 @@ out vec4 v_color; out vec3 v_textureCoordinates; out flat uint v_textureIndex; -uniform mat4 u_projectionView2; +uniform mat4 u_projectionView; void main() { @@ -16,5 +16,5 @@ void main() v_textureCoordinates = a_position; v_textureIndex = a_textureIndex; // Vclip = Camera projection * Camera view * Model transform * Vlocal - gl_Position = u_projectionView2 * vec4(a_position, 1.0f); + gl_Position = u_projectionView * vec4(a_position, 1.0f); } diff --git a/assets/glsl/lightsource.frag b/assets/glsl/lightsource.frag index fd2311a..600133e 100644 --- a/assets/glsl/lightsource.frag +++ b/assets/glsl/lightsource.frag @@ -10,5 +10,8 @@ uniform samplerCube u_textures[32]; void main() { + // Prevent u_textures variable from getting optimized away + if (texture(u_textures[0], vec3(0.0f)).x > 99999.0f) { discard; } + color = v_color; } diff --git a/src/inferno/render/renderer.cpp b/src/inferno/render/renderer.cpp index fd83c15..870f3cf 100644 --- a/src/inferno/render/renderer.cpp +++ b/src/inferno/render/renderer.cpp @@ -283,7 +283,7 @@ void Renderer2D::drawQuad(const TransformComponent& transform, glm::mat4 color, void Renderer2D::loadShader() { - m_shader = AssetManager::the().load("assets/glsl/post-process"); + m_shader = AssetManager::the().load("assets/glsl/batch-2d"); } // ----------------------------------------- @@ -371,10 +371,10 @@ void RendererCubemap::beginScene(glm::mat4 cameraProjection, glm::mat4 cameraVie // x x x 0 // x x x 0 // 0 0 0 1 - // cameraView = glm::mat4(glm::mat3(cameraView)); + cameraView = glm::mat4(glm::mat3(cameraView)); m_shader->bind(); - m_shader->setFloat("u_projectionView2", cameraProjection * cameraView); + m_shader->setFloat("u_projectionView", cameraProjection * cameraView); m_shader->unbind(); } @@ -594,6 +594,13 @@ void Renderer3D::startBatch() // ----------------------------------------- +RendererPostProcess::RendererPostProcess(s) +{ + Renderer2D::initialize(); + + ruc::info("RendererPostProcess initialized"); +} + RendererPostProcess::~RendererPostProcess() { } @@ -627,12 +634,20 @@ void RendererPostProcess::drawQuad(const TransformComponent& transform, std::sha void RendererPostProcess::loadShader() { - ruc::error("POSTPROCESSING!"); m_shader = AssetManager::the().load("assets/glsl/post-process"); } // ----------------------------------------- +RendererLightCube::RendererLightCube(s) +{ + RendererCubemap::initialize(); + + m_enableDepthBuffer = true; + + ruc::info("RendererLightCube initialized"); +} + RendererLightCube::~RendererLightCube() { } diff --git a/src/inferno/render/renderer.h b/src/inferno/render/renderer.h index fb9346f..11e5e70 100644 --- a/src/inferno/render/renderer.h +++ b/src/inferno/render/renderer.h @@ -143,7 +143,7 @@ public: void drawQuad(const TransformComponent& transform, glm::mat4 color, std::shared_ptr texture); protected: - Renderer2D() { Renderer2D::initialize(); } // Needed for derived classes + Renderer2D() {} // Needed for derived classes void initialize(); @@ -173,7 +173,7 @@ public: void drawCubemap(const TransformComponent& transform, glm::mat4 color, std::shared_ptr texture); protected: - RendererCubemap() { RendererCubemap::initialize(); } // Needed for derived classes + RendererCubemap() {} // Needed for derived classes void initialize(); @@ -232,15 +232,13 @@ class RendererPostProcess final : public Renderer2D , public ruc::Singleton { public: - RendererPostProcess(ruc::Singleton::s) - : Renderer2D() - { - } - virtual ~RendererPostProcess(); - + using Singleton::s; using Singleton::the; using Singleton::destroy; + RendererPostProcess(s); + virtual ~RendererPostProcess(); + void drawQuad(const TransformComponent& transform, std::shared_ptr albedo, std::shared_ptr position, std::shared_ptr normal); private: @@ -253,16 +251,13 @@ class RendererLightCube final : public RendererCubemap , public ruc::Singleton { public: - RendererLightCube(ruc::Singleton::s) - : RendererCubemap() - { - m_enableDepthBuffer = true; - } - virtual ~RendererLightCube(); - + using Singleton::s; using Singleton::the; using Singleton::destroy; + RendererLightCube(s); + virtual ~RendererLightCube(); + void beginScene(glm::mat4, glm::mat4) override {} private: