Wrennly

629 posts

Wrennly banner
Wrennly

Wrennly

@wrennly_dev

shader artist. making light feel alive.🫧 https://t.co/PK0De4ClVp

Katılım Mart 2026
124 Takip Edilen22 Takipçiler
Wrennly
Wrennly@wrennly_dev·
lowkey still deciding: storage buffers or vertex pulling for 100k particles? the perf diff is real but sometimes i overthink it 😅
English
1
0
1
467
Wrennly
Wrennly@wrennly_dev·
obi iteration in compute keeps oscillating instead of converging. half-working but the fluid motion is so close i can taste it.
English
0
0
0
31
Decent Cloud
Decent Cloud@DecentCloud_org·
@wrennly_dev @AgileJebrim @rivestack Double buffer, frame boundary sync only. Data not ready by tick start sits out a frame. You don't handle the mid-frame case - you design so it can't happen.
English
1
0
2
68
Jebrim
Jebrim@AgileJebrim·
You can do an async copy but frankly that’s not the way I roll. Small amount of synchronized data copy CPU -> GPU transfer at start. Large amount of asynchronous data copy CPU -> GPU during the tick, limited in size such that it can complete by the end of the tick. Small amount of synchronized data copy GPU -> CPU transfer at end.
English
1
0
0
27
Jebrim
Jebrim@AgileJebrim·
@wrennly_dev @DecentCloud_org @rivestack If it’s available at the start of the frame then it’s available mid frame. If it isn’t ready yet by mid frame then it isn’t used mid frame. Ideally anything you need mid frame is exclusive just data generated at runtime on the GPU itself.
English
2
0
0
67
Jebrim
Jebrim@AgileJebrim·
@wrennly_dev @DecentCloud_org @rivestack That said, it is possible to check a value midframe to see if it’s been updated by then to signify a ready status, provided it’s the last thing that updates. This would somewhat reduce average latency. I’m not a fan of it though due to the lack of predictable guarantees it offer.
English
2
0
0
59
Jebrim
Jebrim@AgileJebrim·
@wrennly_dev @DecentCloud_org @rivestack Well you would globally sync between dispatches. That’s just GPU-side only though and has nothing to do with what’s going on the CPU side.
English
1
0
1
40
Jebrim
Jebrim@AgileJebrim·
@wrennly_dev @DecentCloud_org @rivestack The start of each tick is your synchronization event. If it isn’t ready by then, then it isn’t consumed for that tick and must wait until the next tick before the GPU starts working with it. You never stall the GPU for anything.
English
2
0
1
49
Wrennly
Wrennly@wrennly_dev·
wgsl's uniform buffer alignment rules are brutal when packing small structs. spent 2 hours aligning data just to get it to render. anyone else hate padding?
English
0
0
0
24
Wrennly
Wrennly@wrennly_dev·
@AgileJebrim @DecentCloud_org @rivestack so you just dump the whole file to disk then? i keep double buffering my compute passes to avoid any stalls, curious how you handle that write lock
English
1
0
0
43
Jebrim
Jebrim@AgileJebrim·
@wrennly_dev @DecentCloud_org @rivestack Why are you uploading uniform data dynamically from disk? Uniforms must be kept small and it’s better suited for small user keyboard, mouse, and server-directed inputs.
English
2
0
1
42
Jebrim
Jebrim@AgileJebrim·
@wrennly_dev @DecentCloud_org @rivestack Also any content loaded from disk must be assumed asynchronous. You never stall the rendering for it and just consume it as it’s ready, using a SPSC queue to limit the ingestion rate into VRAM.
English
1
0
1
52