skip to Main Content
Can I use Umbra Soft Shadows with other render pipelines?
Currently Umbra Soft Shadows is designed to support only Universal Rendering Pipeline.
Can I use Umbra Soft Shadows with dynamic objects?
Yes, Umbra Soft Shadows work with real-time directional light and integrates seamlessly with Unity shadow system. The generated shadows apply to all objects in a similar way than regular Unity shadows work, including dynamic objects.
Can I customize shadow cascades?
Yes, Umbra Soft Shadows respects all shadow settings, including bias, normal and cascade splits configuration in the URP asset. Umbra includes an advanced section where you can customize shadow cascades scaling and enable cascade blending. This allows for fine-tuning the distribution and quality of shadows based on distance from the camera.
I notice artifacts, discontinuity or softness changes in shadows over the distance.
Follow these tips to obtain the best results:

1) Adjust the shadow cascade splits in the URP asset. Try increasing the distance for the split 1.

2) Adjust shadow bias/normal bias in the directional light inspector. Reduce near plane value.

3) Adjust cascade scales in Umbra Soft Shadows inspector. Try enabling Cascade Blending option and adjust the blending distance value.

What kind of performance impact can I expect?
Umbra Soft Shadows is optimized, but the impact can vary depending on the settings (sample count and occluders count if contact hardening option is enabled). Higher blur iterations result in increased processing requirements as well.
When using Umbra with Amplify Imposters, there's some flickering on the imposters.
There’s a bug in the Octahedron shader included with Amplify Imposters that ignore shadow coordinates when shadows are set to screen space. Edit the amplify shader and locate these lines and apply the commented fix:

#if defined(_MAIN_LIGHT_SHADOWS)

inputData.shadowCoord = TransformWorldToShadowCoord(inputData.positionWS);

#else

      // inputData.shadowCoord = float4(0, 0, 0, 0);   bug

      inputData.shadowCoord = float4(inputData.normalizedScreenSpaceUV, 0, 1);   fix

#endif

Back To Top