Sabitlenmiş Tweet
TopoWeaverIO
108 posts

TopoWeaverIO
@TopoWeaverIO
🛠️ Building a WebGPU game 🕹️ for the browser.
Katılım Mayıs 2022
22 Takip Edilen111 Takipçiler

@techietaro Still need to integrate the culling for the individual shadow maps. Will improve performance.
English

@TopoWeaverIO Hand-tuning WebGPU shadows demands Bushidō focus. I respect the discipline to optimize manually rather than rely on engine bloat.
English

@eddieprograms Yes vegetation is instances culled and lod switched on the GPU. Did not implemented lod transition so it goes straight from imposter to real mesh. Will handle that later.
English

@TopoWeaverIO That’s awesome, I wanna make something similar but using Vulkan. Very fast movement thru a huge world, emphasis on physics based gameplay. How did you make your world, are the trees instanced?
English

@hasan_ab_hasan I have full control over optimizations and features. It's a little more tedious but most of the time and effort is spent out of engine and physics stuff.
English

@TopoWeaverIO can I why you chose to go with custom 3d and physics, is is for learning? or there is something missing in the available libraries
English

@hasan_ab_hasan Custom 3D and physics engine.. assets will be built internally with the world editor.. have not built that yet so stuck with the basic car for now sadly🫤
English

@TopoWeaverIO grab a model and replace the car.
good job!
ThreeJS + Physics?
English

@devusnullus @imanands Brave new world.. I'm already out of touch 😅
English

@wrennly_dev I changed the way I render the instances since this post. All instances are now in one sparse buffer. Thing is I am wasting compute on culling instances in groups that are outside frustum. Need some further storage barrier testing..
English

@TopoWeaverIO storageBarrier() is the unsung hero here. did you run into issues with workgroup size when the instance count drops to near zero?
English

@wrennly_dev I finally did a separate pass to do the reset. But I'm looking into using them again for the per Instance culling and combined chunk culling..
English

@TopoWeaverIO storage barriers can get expensive if workgroups aren't balanced. did you hit any stalls on smaller instances or just rely on the gpu to chew through it?
English

@Aureon_de_Veyra Using texture atlas and batching geometry to reduce the draw calls until webgpu gets bindless textures
English

@TopoWeaverIO Looks Great. Are you baking textures or procedurally generating them?
English

@imanands There are 4 LODs for the chunks. Still working on that..
English

@imanands Thanks 🙂. It is separated in individual world chunks with one mesh and one group of instances per chunk.
English

Really impressive render bundle work. WebGPU is so underrated for browser games — the performance ceiling is way higher than most people expect. We're building a full AI-native game IDE on BabylonJS + WebGPU at Arclusion and this kind of optimization is exactly why we bet on the browser stack. What are you using for the scene graph?
English

@paws4puzzles On an rtx 4050 (30W) I'm at 120fps with max 50% used. With frame drops because I'm still transferring nested objects from the worker(next fix) in addition to sharedbuffer. On the ultra5 125H iGPU I get 35 fps with plenty of frame drops.. unusable.
English

@TopoWeaverIO Solid optimization. Render bundles really shine for batched draws like this. What frame time gains are you seeing so far?
English

Doing pixel dissolve to emulate cloud fog for a pixel art feel. #pixelart
English

Sky is Falling !!!!!! Clouds 4 LOD switches and culling now handled by the GPU.
#webgpu #indiedev #indiegame
English

@KentoAsashima Doing that for the imposter switch and discard. Base on the minimum pixels it would have on screen. For chuncks I'm just hard coding the distance thresholds.
English

@TopoWeaverIO I like to use the projected screen size of objects/chunks as a means to select the LOD. The details then naturally scale with screen resolution and field of view.
Using bounding sphere radius is often enough and very cheap to calculate.
English



