diff options
| author | skal <pascal.massimino@gmail.com> | 2026-03-10 09:28:08 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-03-10 09:28:08 +0100 |
| commit | ef205b6eda78f1dcf65aa696dedf1f8c0707ff30 (patch) | |
| tree | 4e8512b0e9eb34aa56c01dfa667fd68e07050e93 /doc/CODING_STYLE.md | |
| parent | e10eea9d89440c9494c86433c15baaca58705ffd (diff) | |
fix: use ShaderComposer in RotatingCube; add rule to CODING_STYLE
rotating_cube_effect.cc was bypassing ShaderComposer, causing #include
directives in rotating_cube.wgsl to fail at runtime.
handoff(Claude): ShaderComposer rule documented and enforced in rotating_cube.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'doc/CODING_STYLE.md')
| -rw-r--r-- | doc/CODING_STYLE.md | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/doc/CODING_STYLE.md b/doc/CODING_STYLE.md index 7d45027..6ef7326 100644 --- a/doc/CODING_STYLE.md +++ b/doc/CODING_STYLE.md @@ -166,6 +166,24 @@ Three-line header for all source files. ## WGSL Shader Style +### Always Use ShaderComposer (Required) + +**Rule:** Always load `.wgsl` shaders via `ShaderComposer::Get().Compose(...)`, even if the shader has no `#include` directives. Never pass the raw shader string directly to `wgpuDeviceCreateShaderModule`. + +```cpp +// Correct +const std::string src = ShaderComposer::Get().Compose({}, my_shader_wgsl); +WGPUShaderSourceWGSL wgsl_src = {}; +wgsl_src.code = str_view(src); + +// Wrong - bypasses #include resolution +wgsl_src.code = str_view(my_shader_wgsl); +``` + +**Rationale:** Shaders may gain `#include` directives later; bypassing `ShaderComposer` silently breaks them at runtime with no compile error. + +--- + ### File Header (Required) Every `.wgsl` file must start with a 2-line comment header: |
