diff --git a/Source/Renderer/Renderer/DescriptorSet.h b/Source/Renderer/Renderer/DescriptorSet.h index bd135698..ee0a12bd 100644 --- a/Source/Renderer/Renderer/DescriptorSet.h +++ b/Source/Renderer/Renderer/DescriptorSet.h @@ -52,7 +52,8 @@ namespace Renderer { DEBUG, GLOBAL, - SHADOWS, + TILES, + LIGHT, PER_PASS, PER_DRAW, TERRAIN, @@ -65,7 +66,8 @@ namespace Renderer { case DEBUG: return "DEBUG"; case GLOBAL: return "GLOBAL"; - case SHADOWS: return "SHADOWS"; + case TILES: return "TILES"; + case LIGHT: return "LIGHT"; case PER_PASS: return "PER_PASS"; case PER_DRAW: return "PER_DRAW"; case TERRAIN: return "TERRAIN"; diff --git a/Source/Renderer/Renderer/Renderer.cpp b/Source/Renderer/Renderer/Renderer.cpp index 9aff948a..8f09aea2 100644 --- a/Source/Renderer/Renderer/Renderer.cpp +++ b/Source/Renderer/Renderer/Renderer.cpp @@ -10,6 +10,14 @@ namespace Renderer { } + void Renderer::SetRenderSize(const vec2& renderSize) + { + for (auto& callback : _onRenderSizeChangedCallbacks) + { + callback(renderSize); + } + } + RenderGraph& Renderer::CreateRenderGraph(RenderGraphDesc& desc) { RenderGraph* renderGraph = Memory::Allocator::New(desc.allocator, desc.allocator, this); diff --git a/Source/Renderer/Renderer/Renderer.h b/Source/Renderer/Renderer/Renderer.h index d0448063..ba4f89ac 100644 --- a/Source/Renderer/Renderer/Renderer.h +++ b/Source/Renderer/Renderer/Renderer.h @@ -49,6 +49,8 @@ namespace Renderer class Renderer { public: + ~Renderer(); + virtual void InitDebug() = 0; virtual void InitWindow(Novus::Window* window) = 0; virtual void Deinit() = 0; @@ -57,14 +59,13 @@ namespace Renderer virtual void ReloadShaders(bool forceRecompileAll) = 0; virtual void ClearUploadBuffers() = 0; - virtual void SetRenderSize(vec2 renderSize) = 0; - virtual vec2 GetRenderSize() = 0; + virtual void SetRenderSize(const vec2& renderSize); + virtual const vec2& GetRenderSize() = 0; + void AddOnRenderSizeChanged(const std::function& func) { _onRenderSizeChangedCallbacks.push_back(func); } virtual vec2 GetWindowSize() = 0; virtual ImageFormat GetSwapChainImageFormat() = 0; - virtual ~Renderer(); - [[nodiscard]] RenderGraph& CreateRenderGraph(RenderGraphDesc& desc); // Creation @@ -245,6 +246,7 @@ namespace Renderer bool _isExecutingCommandlist = false; std::vector _frameTimeQueries; + std::vector> _onRenderSizeChangedCallbacks; friend class RenderGraph; }; diff --git a/Source/Renderer/Renderer/Renderers/Vulkan/RendererVK.cpp b/Source/Renderer/Renderer/Renderers/Vulkan/RendererVK.cpp index 9392f103..a62939bd 100644 --- a/Source/Renderer/Renderer/Renderers/Vulkan/RendererVK.cpp +++ b/Source/Renderer/Renderer/Renderers/Vulkan/RendererVK.cpp @@ -110,13 +110,15 @@ namespace Renderer _uploadBufferHandler->Clear(); } - void RendererVK::SetRenderSize(vec2 renderSize) + void RendererVK::SetRenderSize(const vec2& renderSize) { _renderSize = renderSize; _renderSizeChanged = true; + + Renderer::SetRenderSize(renderSize); } - vec2 RendererVK::GetRenderSize() + const vec2& RendererVK::GetRenderSize() { return _renderSize; } diff --git a/Source/Renderer/Renderer/Renderers/Vulkan/RendererVK.h b/Source/Renderer/Renderer/Renderers/Vulkan/RendererVK.h index ba972de7..2b400c3e 100644 --- a/Source/Renderer/Renderer/Renderers/Vulkan/RendererVK.h +++ b/Source/Renderer/Renderer/Renderers/Vulkan/RendererVK.h @@ -42,8 +42,8 @@ namespace Renderer void ReloadShaders(bool forceRecompileAll) override; void ClearUploadBuffers() override; - void SetRenderSize(vec2 renderSize) override; - vec2 GetRenderSize() override; + void SetRenderSize(const vec2& renderSize) override; + const vec2& GetRenderSize() override; vec2 GetWindowSize() override; ImageFormat GetSwapChainImageFormat() override; diff --git a/Source/ShaderCooker/ShaderCooker/DxcBridge.cpp b/Source/ShaderCooker/ShaderCooker/DxcBridge.cpp index 0760e2d9..05916b87 100644 --- a/Source/ShaderCooker/ShaderCooker/DxcBridge.cpp +++ b/Source/ShaderCooker/ShaderCooker/DxcBridge.cpp @@ -171,11 +171,12 @@ namespace ShaderCooker defines.push_back(MakeDefine(L"DEBUG", L"0")); defines.push_back(MakeDefine(L"GLOBAL", L"1")); - defines.push_back(MakeDefine(L"SHADOWS", L"2")); - defines.push_back(MakeDefine(L"PER_PASS", L"3")); - defines.push_back(MakeDefine(L"PER_DRAW", L"4")); - defines.push_back(MakeDefine(L"TERRAIN", L"5")); - defines.push_back(MakeDefine(L"MODEL", L"6")); + defines.push_back(MakeDefine(L"TILES", L"2")); + defines.push_back(MakeDefine(L"LIGHT", L"3")); + defines.push_back(MakeDefine(L"PER_PASS", L"4")); + defines.push_back(MakeDefine(L"PER_DRAW", L"5")); + defines.push_back(MakeDefine(L"TERRAIN", L"6")); + defines.push_back(MakeDefine(L"MODEL", L"7")); // Define all SHADER_*PROFILE* to 0 for (const char* profile : validProfilesArray)