Preview

Final result in HLSL
Final integration in game.

Breakdown

Prototyping

Started with Shader Graph and VFX Graph to quickly iterate on the dissolve look and basic particles.

Prototype A
Testing alpha visibility and base emission.
Prototype B
Added noise texture to emission to cover the internal volume.
Prototype C
Adding vertex offset for a more dynamic silhouette.
Prototype D
VFX Graph integration to provide particle dynamics.
Switching logic
Early vehicle switching test.

HLSL Migration

Shader Graph was great for early viz, but it didn’t play nice with our project’s custom toon lighting.

To get full control over the rendering—especially shadows and outlines—I migrated the logic to custom HLSL. This let me hook directly into the toon lighting passes and ensure the outline and shadows stayed synced during the transition.

Implementation

HLSL Code
Rewrote the nodal math into the HLSL Forward pass.
C# Script
Simple C# controller to sync parameters at runtime.

The main challenge was syncing the dissolve math across multiple passes like Shadowcaster and DepthNormals. Needed to make sure the shadows and outlines clipped and offset exactly like the main geometry as it dissolves.

Final Result

Final result
Final HLSL shader with toon lighting and dynamic shadow support.
Y-axis sweep
Vertical sweep option.
Z-axis sweep
Final look using the Z-axis sweep.

In-Game Result