Custom Depth Shadow Masking & Prism Masking

Hey there,

Was tinkering around with translucency tonight, saw some major improvements over UE3 with translucent materials. What I really like is that the engine draws faces as the human eye would naturally see them instead of layer by layer as was previously the case (even when a material is two-sided).

But in testing translucency and volumetric translucent shadows, I came across an idea that I think would be very useful. If it’s already implemented, I’d like to know how to use it.

I’d like to see the devs create shadow maps in the material editor for translucent objects to indicate where shadows should be cast whenever “translucent volumetric shadows” is checked. Right now, that option defaults its behavior to casting shadows wherever there’s opacity on the mesh. But what if I want the shadows cast to be the inverse of that, or shadows to appear within a certain opacity range? There’s no real way to fine tune that from what I’ve seen so far.

It’d just be nice to have finer controls over cast shadows in the above way, and not having them mapped exclusively to opacity for translucent materials.

Also.

I’d like to create “prism masks” (for want of a better term), where I can specifically direct lightmass to influence the light based on a color map when light passes through geometry faces. Sort of like rainbow optics when light passes through glass to create spectrum. I ask it in this way – instead of just requesting naturalistic prism lighting – because not every developer who creates (or simulates theoretical behavior) will make use of naturalistic lighting through color bounces. Of course, then having two-sided materials might complicate that as well, so I don’t know if that poses a technical problem in implementing something like this as well. And then that of course might be problematic for high numbers of polys. This request would also be specific to translucent/alpha composite materials.

Technical limitations might prevent this from becoming possible, or perhaps it’s already been included but I haven’t the slightest about how to use it. But I thought I’d at least throw this second suggestion out there anyways.

Sorry for the delay.

Right now, that option defaults its behavior to casting shadows wherever there’s opacity on the mesh. But what if I want the shadows cast to be the inverse of that, or shadows to appear within a certain opacity range? There’s no real way to fine tune that from what I’ve seen so far.

Curious, what use case would this be useful for? Opacity defines how much the material blocks light, which is going to work the same regardless of whether that light is causing shadows or arriving at your eye. So using opacity for both is physically based. Of course, if there’s something really cool that can be done with having more control over opacity for shadowing, then it can be justified.

I’d like to create “prism masks” (for want of a better term), where I can specifically direct lightmass to influence the light based on a color map when light passes through geometry faces.

What you are describing sounds like colored translucent shadows. Lightmass supports those, but unfortunately they only work on static lights. Stationary lights don’t store their direct lighting in the lightmap and therefore LIghtmass can’t compute colored translucent shadows for it.

https://udn.unrealengine.com/docs/ue3/INT/Engine/Subsystems/Rendering/LightingAndShadows/Lighting/Lightmass/index.html#Translucentshadows

Outside of lightmass, a movable object with a translucent material can cast dynamic shadows on the world if you check bCastVolumetricShadow on the object and the light. Unfortunately they can only be monochrome due to some render target limitations.

Thanks for your suggestions.

Well, with special shadow maps, I’d like to do something like create fantasy illusion shadows. So a static or skeletal mesh renders as one thing, while the shadow renders as another. For example, I could show a character human casting the shadow of a monstrous ogre or something, to signify that the character is not who he says he is. (Just an example). The way I’m expressing this idea, shadows do not merely function as part of the scenery anymore, but also as a part of the narrative structure. So why not let users have more control over shadows through these kinds of maps?

As for prisms:

If you look at 1:44 in this video, you’ll see how light passes through the crystal (translucent) object. It bounces around, and the lighting is definitely not static (although there is some emissive). The reason I request prism maps – or something with a finer degree of control about the lighting scheme on translucent surfaces – is precisely because I’d like to do crystalline objects in this generation of the engine. (Couldn’t do it very well with UE3, because of depth sorting issues – which, on a positive note, seem to have been improved in rocket now.)

Yeah, you can simulate stuff like that in a fresnel node, but again the uniqueness here is that LIGHT and irridescence is controlled as well through the faceted object – especially when the object is dynamic, like in the video. With UE4 making efforts towards dynamic lighting and more procedurally based solutions, it just seems like the way to go with this.

Just my 2c

Cool, thanks for your feedback.