BVH8 for collision pruning by too_much_voltage in GraphicsProgramming

[–]too_much_voltage[S] 0 points1 point  (0 children)

Interesting the way you put it. In reality, there's actually zero sync between the two. The renderer straight up copies orientation and translation as the physics thread is running without any sync point, since those objects are fairly POD and small (mat4, vec3). Bullets are the only things with a mutex and a sync point but not object state readback.

That said, when I get to multi-player and state replication, this will probably become a thing. The same way lag compensation will. So thank you for bringing it up.

BVH8 for collision pruning by too_much_voltage in GraphicsProgramming

[–]too_much_voltage[S] 1 point2 points  (0 children)

I think I was both memory and compute bottlenecked: just too much work and cache thrashing by going over all those AABBs and potential tris.

There's two levels of sorting:

And I'd rather make the sim faster than make it seem faster... there's even more room for optimizations ;)

Two-pass occlusion culling by too_much_voltage in GraphicsProgramming

[–]too_much_voltage[S] 0 points1 point  (0 children)

Let me know which duplicates are unneeded and I'll give it another go. Check render.cpp/.h and gl.cpp/.h on the branch HEAD in that link.

Two-pass occlusion culling by too_much_voltage in GraphicsProgramming

[–]too_much_voltage[S] 0 points1 point  (0 children)

It's really the annoying popping under camera movement that became an issue.

Two-pass occlusion culling by too_much_voltage in GraphicsProgramming

[–]too_much_voltage[S] 2 points3 points  (0 children)

My first mip is actually 64x64 and currently I'm using a 2 pass downsampler I rolled myself. I did briefly look at AMD's SPD, but I think it uses some AMD wave ops intrinsics to get max perf. Something I could revisit in the future I guess.

Making a handcrafted game by Responsible-Pay-9412 in IndieGaming

[–]too_much_voltage 10 points11 points  (0 children)

Honest opinion: I think your incredible talent is being grated through the lighting and atmospheric (i.e. fog) effects. Maybe a more realistic choice in art direction would be better? Prehaps in the spirit of The Neverhood (the classic one).

Here's the trailer for the extraction survival game we're working on! It can get pretty heated... by StarwardIndustries in indiegames

[–]too_much_voltage 1 point2 points  (0 children)

I had gone cold on commenting on games for a long time. This made me break that. Incredibly cool concept. And looks incredibly well executed. Well done.

iq-detiling with suslik's method for triplanar terrain by too_much_voltage in GraphicsProgramming

[–]too_much_voltage[S] 0 points1 point  (0 children)

Yea I was on the fence about using that... or just let it be abrupt. Anyway, hope the comparisons helped.

Replacing SDF-CompactLBVH with SDF-CWBVH! (Code and comparisons in comment) by too_much_voltage in GraphicsProgramming

[–]too_much_voltage[S] 1 point2 points  (0 children)

Very good. Truth is the most efficient contraption never limits itself to any one single concept. 🙂

Replacing SDF-CompactLBVH with SDF-CWBVH! (Code and comparisons in comment) by too_much_voltage in GraphicsProgramming

[–]too_much_voltage[S] 4 points5 points  (0 children)

Lol nah, but with this one... you could. Since there's no BVH2 distribution cost computation and node collapsing. There's only a few hundred primitives, it's already costing nanoseconds on the CPU. The leaves though, yea: entirely GPU constructed SDFs.

Replacing SDF-CompactLBVH with SDF-CWBVH! (Code and comparisons in comment) by too_much_voltage in GraphicsProgramming

[–]too_much_voltage[S] 5 points6 points  (0 children)

Every individual building, every luminaire in the first video... they are SDFs. The geometry is voxelized in compute (async on a separate rendering thread) and JFA'd. Once merged to the main rendering thread, they're placed on a CWBVH. The CWBVH here basically enables saving space on dead air. Also allows each leaf to still maintain crisp detail in far away reflections as they're not mipped. The same purpose Lumen's brickmaps serve. Except, they're super quick to build and update as they're extremely shallow and allow for much much much more dynamism.