Repository navigation
Fix rendering bugs that make some scenes look wrong - #12
Merged
Merged
Conversation
oscillatealpha and oscillatesize multiplied the particle's current value every frame and nothing reset it, so a twinkle between 50% and 100% was at 0.0002 after two seconds: twinkling stars and fireflies faded out. alphafade, alphachange, sizechange and colorchange instead overwrote the value from the spawn value, so only the last of them counted. Colour, alpha and size are now rebuilt from the spawn values every frame and each operator scales what the ones before it left. colorchange also reads its starttime and endtime like the other change operators. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ASKszRoN1cM2ks8vnFvkiy
The default scaling mode cropped only when the screen was wider than the scene. On a narrower one (16:10, 4:3) it showed more than the scene and stretched its edge rows into bands, and on a square screen it stretched the whole picture. Wallpaper Engine scales to cover and crops the overhang, which is what fill already did; default now does the same. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ASKszRoN1cM2ks8vnFvkiy
- A child of a rotated parent was turned the opposite way around it: world_xf rotated by +angle while every quad rotates by -angle. - The auto projection doubled the scene size, treating origins as centred when they are measured from the bottom-left corner, so a full background filled a quarter of the screen. - The cursor is mapped through the scaling window, so cursor effects on a cropped or zoomed scene react under the real cursor. Parallax moves the same way on both axes (y was inverted against x). - Particle systems now follow their parents, puppet attachments, scripts and timelines, and a system hidden at load can be shown later. - When a layer's last effect pass is dropped (shader missing or failing to build), the pass that reaches the scene gets the layer's blend instead of its effect's 'normal', which drew an opaque box. - g_Daytime carries the time of day instead of 0. - A 'uniform int' parameter is written as an i32, not float bits. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ASKszRoN1cM2ks8vnFvkiy
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (9)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
beingsuz
marked this pull request as ready for review
September 26, 2026 22:19
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by beingsuz · project thread
Before: twinkling particles (stars, fireflies) faded to nothing within about two seconds. On a 16:10 or 4:3 screen the default fit showed more than the scene and smeared its top and bottom rows; on a square screen it stretched the picture. Children of rotated layers were placed on the wrong side. Particle systems ignored their parent layers, scripts and timelines. A layer whose last effect failed to build could draw as an opaque box.
After: those scenes draw the way Wallpaper Engine draws them, as far as the code can be checked without real wallpapers (see Verification).
This is the first batch from an audit of the renderer; more fixes follow on this branch once example wallpapers arrive.
Changes
Particles
oscillatealpha/oscillatesizemultiplied the current value every frame and nothing reset it: alpha went from 1 to 0.0002 in 120 frames. Colour, alpha and size are now rebuilt from the spawn values each frame, and every operator scales what the earlier ones left (soalphafade+alphachangeboth apply instead of the last one winning).colorchangehonoursstarttime/endtime.world_xf, so they follow parents, puppet attachments, script moves and timelines (retransform_dirtynow covers them).Layout
--scaling defaultcovers the screen likefill, cropping the overhang, instead of overscanning narrower screens and stretching square ones.world_xfrotated a child's offset by+angle, while every quad rotates by-angle. Children of rotated parents were mirrored around them.auto_projectiondoubled the extent: origins are measured from the corner, not the centre.Effects
normal(One/Zero).g_Daytimeis the time of day instead of 0.uniform intmembers (detected from naga's member type) are written as i32, not as float bits.Verification
cargo fmt --check,cargo clippy --workspace --all-targets -D warningsandcargo test --workspacepass on Linux with lavapipe.🤖 Generated with Claude Code
https://claude.ai/code/session_01ASKszRoN1cM2ks8vnFvkiy
Generated by Claude Code