diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-10 18:19:30 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-10 18:19:30 +0100 |
| commit | 225ff0313c5021c3f1ec2bf5dd61114032b925a7 (patch) | |
| tree | 33fce14571651158a409d9acf8494cff69dfe8dc /src/gpu/effects/scene1_effect.h | |
| parent | 532220d2abb2b48307f049c4ad5f545d4c8934d6 (diff) | |
feat: Add Scene1 effect from ShaderToy (raymarching cube & sphere)
Converted ShaderToy shader (Saturday cubism experiment) to Scene1Effect
following EFFECT_WORKFLOW.md automation guidelines.
**Changes:**
- Created Scene1Effect (.h, .cc) as scene effect (not post-process)
- Converted GLSL to WGSL with manual fixes:
- Replaced RESOLUTION/iTime with uniforms.resolution/time
- Fixed const expressions (normalize not allowed in const)
- Converted mainImage() to fs_main() return value
- Manual matrix rotation for scene transformation
- Added shader asset to workspaces/main/assets.txt
- Registered in CMakeLists.txt (both GPU_SOURCES sections)
- Added to demo_effects.h and shaders declarations
- Added to timeline.seq at 22.5s for 10s duration
- Added to test_demo_effects.cc scene_effects list
**Shader features:**
- Raymarching cube and sphere with ground plane
- Reflections and soft shadows
- Sky rendering with sun and horizon glow
- ACES tonemapping and sRGB output
- Time-based rotation animation
**Tests:** All effects tests passing (5/9 scene, 9/9 post-process)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Diffstat (limited to 'src/gpu/effects/scene1_effect.h')
| -rw-r--r-- | src/gpu/effects/scene1_effect.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/gpu/effects/scene1_effect.h b/src/gpu/effects/scene1_effect.h new file mode 100644 index 0000000..dc5c747 --- /dev/null +++ b/src/gpu/effects/scene1_effect.h @@ -0,0 +1,19 @@ +// This file is part of the 64k demo project. +// Scene1 effect - ShaderToy conversion (raymarching scene) + +#ifndef SCENE1_EFFECT_H_ +#define SCENE1_EFFECT_H_ + +#include "gpu/effect.h" + +class Scene1Effect : public Effect { + public: + Scene1Effect(const GpuContext& ctx); + void render(WGPURenderPassEncoder pass, float time, float beat, + float intensity, float aspect_ratio) override; + + private: + RenderPass pass_; +}; + +#endif /* SCENE1_EFFECT_H_ */ |
