rob cupisz Profile picture
Mar 21 21 tweets 10 min read
Here it is! Just released:

Enemies

A short film we’ve been working on for a while now on the Demo Team, here at Unity.

Some notes on rendering in the 🧵

#unity #gamedev
With ultra settings, it runs at 4k 30fps (average of 40fps) on an i7 cpu and rtx 3090.

We've prepared other quality settings to run it on lower hw targets, including consoles. 4k is upscaled - with DLSS on supported hw.
Together with Unity R&D we’ve been improving the engine and HDRP during the production. All improvements have either already been released, or are in PRs that are about to land in the coming weeks.

In other words the project runs on a vanilla editor and HDRP.
Lighting.

Sun, and mostly area lights later on.

For indirect: Adaptive Probe Volumes (screenshots), SSGI to add contribution from smaller shapes, and AO (raytraced and SS).

No lightmaps - would've been a nightmare on this kind of geometry.
Apart from raytracing AO, Sun shadows and reflections are raytraced as well.

SSR couldn’t handle all these reflective bits swirling around in the background, disoccluding, etc.

Raytraced reflection denoising does a surprisingly good job in these conditions.
For area light shadows we needed both extra large penumbrae, and precise and sharp contacts. Getting these wrong is one of the worst artifacts you can introduce on a face.

I'm quite happy with our improvements here. (PR about to land in HDRP)
Hair is a big one.

It's a real-time strand-based simulation, which tries to maintain the initial groom and clumping, while making hair as dynamic as possible.

Mesh collisions via SDF with a real-time mesh-to-SDF renderer.
Shading in texture space on a limited number of points along a strand, then interpolated during actual strand rendering.

Strand LODding for simulation, shadowing and final rendering. Segment culling.

We'll release the hair solution as a package in Q2, stay tuned.
Facial animation is still a 4D capture. We've improved our workflow and quality, but 4D would still be impractical for any larger production.

The future of our productions is Ziva, where we only train the system with 4D, but final performance is captured even with and HMC.
Ziva allows for full body performance while recording facial performance with HMC - in our old workflow matching 4D with the body is hard, and the actor performs differently with their head fixed.

It is also effectively an efficient compression, allows for interactivity, etc.
We will migrate Enemies from 4D to Ziva in the coming weeks.
Skin tension.

Calculates edge length relative to the rest pose, to identify stretching and contraction, which allows us to drive wrinkle and blood flow maps.

In The Heretic we needed a facial rig just for that. This is much more convenient.
Skin attachments.

Eyebrows, eyelashes, tearline, peach fuzz/vellus hair(!), etc. need to follow skin deformation.

We've developed a system for handling that through jobs for The Heretic, now moved to gpu.

Some attachments still resolved on cpu, like the teeth occlusion polygon
Improvements to skin shading, hair shading (Marschner), eye caustics, tearline (the wet interface between the eyelids and the eye).

Most of these already shipping in HDRP. Remaining digital human features mentioned earlier shipping in Q2 as an updated Digital Human package.
Lookdev scene for comparing against light stage photos
Random screenshot intermission
Smoke and flame.

Transparencies don't play nice with DoF in a rasterization renderer, and here we have close-ups of in-focus smoke/flame over out-of-focus face, and vice versa.

To get around that, we're rendering them into an off-screen buffer, but still depth-test against
the main depth buffer, to get occlusion from the bishop and the hand.

Then a blur with a simplified DoF kernel with a fixed CoC size, and composite with the main colour buffer - after the regular DoF (and moblur) pass.

Easy with HDRP's custom pass and custom post-process.
Team intro!

We're a small team, and kinda like it that way :) On this production these were our roles:

@vesseff as usual, as a writer and director, also on cinematography and lighting.

@tlaedre as a tech director.

Yours truly👋, Mikko Alaluusua and @codeverses on programming.
@vesseff @tlaedre @codeverses .
@Paco_q2 art director and 3D artist

@KNechevski anim director

@ChrisKardach tech anim

@adrianlazar3d tech art

@dominas64 more programming

Petter Flood - more 3D art

Jörn Großhans - additional art consulting

Aleksander Karshikoff - producer

Silvia Rasheva - manager
Special thanks to:

The entire Unity R&D team, for actually making the tools we use!

@matt_ostertag (@Tuatara_VFX) for the smoke and flame vfx art :)

@8Infinite8 for his 4D scanning studio and expertise.

Everyone else who contributed! Full credits:
unity.com/demos/enemies#…

• • •

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

Keep Current with rob cupisz

rob cupisz 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!

:(