James Baxter Profile picture
Nov 24 6 tweets 3 min read
Using Niagara to draw damage masks with only a single 8-bit render target in @UnrealEngine

Works on skinned meshes and no positional map required, just a single-channel acceleration map baked offline with a custom editor tool. #UE5

Project Discord:
discord.gg/rrMzug9J2n
@UnrealEngine Hits are buffered on CPU and sent to Niagara in batches (up to 64 each-frame), so you can absolutely hammer it with hits.

Takes ~0.6ms for a 1K render target on GTX 980. Next improvement is to prioritise updating within camera view, and atlas targets for different mesh sections.
A custom in-editor tool is used to bake the acceleration data from the content browser.

Specify the mesh, choose the sampling regions abnd UV set, and it packs accordingly. Even shows a preview now :)
There is an upper limit of 65,536 tris - but can be increased to 262,144 by reducing precision of the quantized barycentric data.

Alternatively you can compute pixel barycentric position at runtime, and have >4 million triangles. Good luck skinning a mesh like that though...
Frustratingly - it's impossible to store an R32_UINT texture in Unreal as an asset because silly API decisions, so have to use R32_FLOAT for the acceleration map and asuint/asfloat HLSL intrinsics.

Could fix it by modifying engine, but trying to restrict this to a plugin format.
Looking forward to combining it with this:

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with James Baxter

James Baxter Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(