Profile avatar
pcwalton.bsky.social
Programming languages and graphics person. Rust compiler developer, Firefox hacker, Bevy contributor.
30 posts 1,999 followers 13 following
Regular Contributor
Conversation Starter

Bevy 0.16 has a GPU driven rendering path now, enabled by default on platforms where it's supported! It uses bindless resources and multi-draw indirect to hugely reduce drawcalls. GPU 2-phase occlusion culling is supported. CPU overhead is minimized by aggressively retaining objects on GPU.

I'm trying pair programming with ChatGPT to build a CS-y algorithm that I need in Bevy: SIMD iterating over all zeroes in a variable length bitset in reverse order. Pretty disappointed, honestly. It's consistently making "what are you thinking?!" errors and forcing me to correct them repeatedly.

#opensource is wild. When things are working well, it's joyful, frictionless and inclusive. I have a fun story from #bevy today: 1. I do some failed R&D work. 2. This generates a spin-off documentation PR, because the internals were very confusing. ...

Trying to think of what the actual definition of garbage collection is, in my mind. I guess something like: an automatic dynamic system that, at runtime, detects and recycles memory that a program no longer needs. That rules out unique_ptr, because that's static, but it includes reference counting.

Random idea: when optimizations result in a single instruction referring to multiple functions in debug info, use AI to determine which function is most likely to be semantically meaningful. (For example, attributing a line to f32::clone is almost never what the programmer wants.)

IME the trick to getting an intuitive understanding of quaternion rotations is just to treat them as "basically axis-angle". The vector part of the quaternion is the axis and the scalar part is "basically the angle". 1/2

Maybe the biggest problem with LLMs as expert systems is that they can't say how confident they are. I'd be a lot more OK with LLMs sometimes giving incorrect answers if they didn't deliver those wrong answers as though they were certain.

Nushell is really useful for one-off data manipulation. It'd be neat to have it ported to the browser (or iOS/Android) with an UI.

Landed experimental GPU occlusion culling in @bevyengine.org. This is the modern 2-phase occlusion culling system. It's fully dynamic, runs entirely on GPU, and requires no baking and no artist-defined occlusion volumes.

Landed multi-draw-indirect and bindless textures in Bevy 0.16! It cuts our CPU overhead for drawing in half on many scenes, and along with the retained render-world scene graph I also landed it brings us significantly closer to GPU-driven rendering.

Learned the other day: On GPU, inverse trigonometric functions are way more expensive than regular trigonometric functions. But on CPU, they're about the same speed (source: llvm.org/devmtg/2022-...)

One thing that would make Rust compiles faster in many cases is for Cargo to insta-kill any rust-analyzer processes when you run cargo build. That "Blocking" message wastes a lot of time.

Sorry, but at this point if you think Bevy's ECS is a burden for app logic I just don't believe you. You have to organize your code somehow. The question is whether the framework helps you do it or not.

Bevy 0.15 is out :) This time around, I wrote animation masks, additive blending, most of the Bevy Remote Protocol, chromatic aberration, point light and spot lights for volumetric fog, and PCSS.

Idly wondering if Objective-C/Swift have precise enough reachability information to try running a Bacon cycle collector if memory is running low.

Wanted: a `#[derive_fast_hash]` that gives you a fast hash and compare implementation that goes as many bytes as it can at a time, for types with no padding anywhere (the macro would guarantee this somehow).

Modified #BevyEngine 's depth of field post-processing effect to produce pixel art bokeh ⬢ #shader #gamedev #indiedev #solodev

The iOS ecosystem has gotten so close to having true JIT support on iOS that I'm not sure that the delta between all the workarounds and true JIT support is that meaningful anymore. You can already JIT in wasm or JS, or you can interpret, or you can sign yourself a JIT entitlement...

Really interesting deep dive into virtual geometry (Nanite) in Bevy 0.15: jms55.github.io/posts/2024-1...

Hi folks! Like everyone, I'd like to reduce my hellsite usage and so I'll be posting here too.