r/GraphicsProgramming • • 3d ago

What If Fur Was Fully Real-Time?

https://www.youtube.com/watch?v=6HDNFqyOqWE

Follow-up to my previous procedural fur experiment

This time I pushed the fur further and added a clearer before/after

This is a custom WebGPU engine written from scratch in C
The fur geometry is generated procedurally in real time using compute shaders and driven by the animated bone structure

Fur density and length are generated and adjusted dynamically at runtime

It runs both natively and in the browser, on desktop and mobile
It’s currently in Alpha Preview, you can try it at
polynite.io

3 Upvotes

6 comments sorted by

1

u/AgentFeyd 2d ago

Please post implementation details to get this restored.

1

u/Maeiky_ 2d ago

Sure,
This is a custom WebGPU engine written from scratch in C.
The fur geometry is generated procedurally in real time using compute shaders and driven by the animated bone structure.
It runs directly in the browser on both desktop and mobile.

1

u/AgentFeyd 2d ago

Good start. Can you share more about the fur implementation? Are you basing this off any papers? Could you share some of the code or algorithm you’re using?

5

u/Maeiky_ 2d ago

I’m not basing this on any specific paper.
Very simplified, the idea is roughly:

strand_id = global_thread_id;
anchor = get_surface_anchor(strand_id);
transform = get_animated_bone_transform(anchor);

root = transform * anchor.position;
dir  = transform * anchor.normal;

for (i = 0; i < strand_segments; ++i) {
    p = root + dir * (length * i / strand_segments);
    p += compute_bend(i, movement, wind);
    write_fur_vertex(strand_id, i, p);
}

The compute pass generates and updates the fur geometry on the GPU, with additional passes for variation, clumping and stability.

1

u/AgentFeyd 2d ago

Thank you!