Trying to get particle shadows to apply to other particles.

Hey xdbxdbx -

There is an important tool tip that often gets overlooked when using Cast Volumentric Translucent Shadow (VTS, from now on) since it is only shown when hovering over the option, it reads, “[VTS]s are useful for primatives with smoothly changing opacity like particles representing a volume, But have artifacts when used with highly opaque surfaces.” So a lot of what you are experiencing in your video are these artifacts in your particles.

First, I want to explain the “brown” color which you see in your systems (notably the screenshot just above). This color can be set in the material for your particle under the option in Translucency Self-Shadowing >> Translucent Multiple Scattering Extinction. This setting is meant to smooth the transitions and to help sell the volume nature of your particle system.

Now to the heart of the issue, you have translucent particles but the opacity in Cascade is set to 1 which the engine reads as opaque, but because you are still using the VTS that blending is attempting to happen and it generates the artifacts. Alpha setup in your particle system is very important in an effect like you are trying to achieve. With a large amount of particles (small or large) you are getting a lot of overdraw (particles rendering one on top of another) and ignoring the performance issue for now, you are having to add the opacity so at just .5 (50%) opacity which is just 2 particles you would create an opacity of 1 and start to generate artifacts from blending issues. Using some of the information above and in your video, I recreated your effect and had to go to an alpha value of 0.0125 (1.25%) before I removed a majority of the artifacts. You would have to adjust this value based on the size of the particles and the amount of overdraw. For this reason it may be better to go for a masked or an opaque effect without the use of VTS but still casting shadows. With a smooth spherical normal in your material you should get some very good shadowing and the gaps between your particles would still allow for a kind of transparency.

This gets rid of the artifact issue but we still have a light calculation issue to consider. We have to break this down a little more because the light from the level is actually being correctly calculated. You can see this in your video as the light always dims on the backside and is bright on the front side. This issue comes when the particles themselves wanting to be treated as individual camera facing elements, but in actuality that is not what you want them to be. They are a small part of a larger volume and while the screen alignment allows us to adjust as we pan around the effect the normal of the individual particle is not adjusting it is remaining calculated based on Camera Facing which causes issue as your camera pans around the effect and your light remains stationary. (This is why your moving spotlights look better than the directional light there is less obvious normal calculation errors between the camera and the light). So Solution right, here we go, In the Required Module way down at the bottom there is a Normal section. Adjust it to Cylinder and the emitter will now calculate the normal based on being a cylindrical volume and not based on being a Camers Facing sprite, even though your sprite is still camera facing. (For your original effect it would be best probably to use a Spherical calculation, also an option.)

In summary, adjust your alpha WAY down based on your size and spawn amount OR use opaque particles without VTS and adjust the Normals to better match the overall shape of your emitted effect.

Here is an example of the Opaque example, VTS with 25% Opacity and VTS with 1.25% opacity:

99bdd5df2ccee61bb6cdfe47493f784f5b17bf85.jpeg

Here is my calculated normal for an opaque particle (it looks a little better than the texture based sphere normal, my opinion) the hardness of the normal’s sphere mask is set to 0:

Thank You

Eric Ketchum