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 Impostors, there's some flickering on the impostors.
There’s a bug in the Octahedron shader included with Amplify Impostors 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
Some objects don't cast shadow propertly.
If the object uses a custom opaque shader, in URP make sure it has the “ShadowCaster” and “DepthOnly” passes. Try switching it to Standard or Simple Lit shader to verify this is the cause of the issue.
The Receive Shadows of my Volumetric Fog volume isn't working when I enable Umbra Soft Shadows. Are these two assets compatible?
If you’re experiencing issues with the Receive Shadows feature, adjust the Render Pass Event on the Volumetric Fog 2 render feature. Change it from “Before Rendering Transparents” to “Before Rendering Post Processing.”
Some objects don't cast shadow propertly.
If the object uses a custom opaque shader, in URP make sure it has the “ShadowCaster” and “DepthOnly” passes. Try switching it to Standard or Simple Lit shader to verify this is the cause of the issue.
Does Umbra generate a global shadowmap texture that I can use in my custom shaders?
Yes. You can sample the _ScreenSpaceShadowMapTexture in screen space coordinates to get the attenuation value (0 = shadowed, 1 = lit):