From 1971b20ebca35bc8dbe24902dd5749413b43ff1b Mon Sep 17 00:00:00 2001 From: skal Date: Mon, 2 Feb 2026 17:27:32 +0100 Subject: feat(3d): Implement Task 21.1 WGSL Library & Composer - Implemented ShaderComposer for modular WGSL snippet management. - Factored out common math, primitives, lighting, and ray-box helpers. - Refactored Renderer3D to use dynamic shader composition. - Consolidated high-DPI and shadow robustness fixes into final shader structure. --- src/gpu/effects/shader_composer.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/gpu/effects/shader_composer.h (limited to 'src/gpu/effects/shader_composer.h') diff --git a/src/gpu/effects/shader_composer.h b/src/gpu/effects/shader_composer.h new file mode 100644 index 0000000..7d918a9 --- /dev/null +++ b/src/gpu/effects/shader_composer.h @@ -0,0 +1,23 @@ +// This file is part of the 64k demo project. +// It defines the ShaderComposer class for managing WGSL snippets. + +#pragma once + +#include +#include +#include + +class ShaderComposer { +public: + static ShaderComposer& Get(); + + // Register a snippet (e.g. "common_math", "sdf_primitives") + void RegisterSnippet(const std::string& name, const std::string& code); + + // Assemble a final shader string by prepending required snippets + std::string Compose(const std::vector& dependencies, const std::string& main_code); + +private: + ShaderComposer() = default; + std::map snippets_; +}; -- cgit v1.2.3