diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-14 15:13:09 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-14 15:13:09 +0100 |
| commit | e38be0dbf5816338ff97e2ee2f9adfff2902dc2b (patch) | |
| tree | 42e380626c6f9d0e0137336c8c2dfb68df327dae /src/gpu | |
| parent | d6cc50eb49275bbc0de21d4c65a5172d5d65f790 (diff) | |
refactor(wgsl): modularize common shader functions
Extracted common WGSL functions into separate files in `common/shaders/` to improve reusability and maintainability.
- Created `common/shaders/render/fullscreen_vs.wgsl` for a reusable fullscreen vertex shader.
- Created `common/shaders/math/color.wgsl` for color conversion and tone mapping functions.
- Created `common/shaders/math/utils.wgsl` for general math utilities.
- Created `common/shaders/render/raymarching.wgsl` for SDF raymarching logic.
- Updated multiple shaders to use these new common snippets via `#include`.
- Fixed the shader asset validation test to correctly handle shaders that include the common vertex shader.
This refactoring makes the shader code more modular and easier to manage.
Diffstat (limited to 'src/gpu')
| -rw-r--r-- | src/gpu/post_process_helper.cc | 4 | ||||
| -rw-r--r-- | src/gpu/shaders.cc | 5 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/gpu/post_process_helper.cc b/src/gpu/post_process_helper.cc index 4ffa9c1..c5bef27 100644 --- a/src/gpu/post_process_helper.cc +++ b/src/gpu/post_process_helper.cc @@ -21,8 +21,10 @@ WGPURenderPipeline create_post_process_pipeline(WGPUDevice device, .uniform(PP_BINDING_EFFECT_PARAMS, WGPUShaderStage_Fragment) .build(device); + const std::string composed_shader = ShaderComposer::Get().Compose({}, shader_code); + WGPURenderPipeline pipeline = RenderPipelineBuilder(device) - .shader(shader_code) + .shader(composed_shader.c_str()) .bind_group_layout(bgl) .format(format) .build(); diff --git a/src/gpu/shaders.cc b/src/gpu/shaders.cc index 903b96e..1b50e8e 100644 --- a/src/gpu/shaders.cc +++ b/src/gpu/shaders.cc @@ -52,6 +52,11 @@ void InitShaderComposer() { register_if_exists("ray_box", AssetId::ASSET_SHADER_RAY_BOX); register_if_exists("ray_triangle", AssetId::ASSET_SHADER_RAY_TRIANGLE); + register_if_exists("render/fullscreen_vs", AssetId::ASSET_SHADER_RENDER_FULLSCREEN_VS); + register_if_exists("math/color", AssetId::ASSET_SHADER_MATH_COLOR); + register_if_exists("math/utils", AssetId::ASSET_SHADER_MATH_UTILS); + register_if_exists("render/raymarching", AssetId::ASSET_SHADER_RENDER_RAYMARCHING); + register_if_exists("cnn_activation", AssetId::ASSET_SHADER_CNN_ACTIVATION); register_if_exists("cnn_conv1x1", AssetId::ASSET_SHADER_CNN_CONV1X1); register_if_exists("cnn_conv3x3", AssetId::ASSET_SHADER_CNN_CONV3X3); |
