How to make light emitting material not to emit light?

Hello and thanks for reading!

I have a light emitting material to simulate the visibility of a light source. Since light sources themselves can’t be made visible within UE (right?), I built an emissive material for a mesh in front of my light source.

Now I actually don’t want this light emitting mesh to emit light, but only to look as if it would. I can easily switch of my real light source by switching off “affects world”, but I can’t do this for my mesh.

So my question is: Is there any way to tell the material it should not really emit light? Thanks a lot!

Martin

It sounds like you’re fighting the system a bit. I mean, if it’s emissive, it should affect nearby meshes.

And when the light it off, you can set the emission to zero?

Hello and thank you. I also have the feeling I am fighting the system. :upside_down_face: But then maybe you can tell me how to achieve what I am trying to do:

All I need a visible light source for my rectangular light. Now since the rectangular light is very nice with it’s barn doors, I want to make use of them. Now when I have to use a light emitting mesh to make the rectangular light visible, this mesh “destroys” the barn doors, since it emits light itself.

AlI want is a visible light source. I also tried to setup a material that is semi-transparent and put that in front of the light source, as in the real world, a kind of diffusor.

Maybe this is the way to go?

Thanks a lot!

Do you have the shader model set to ‘unlit’? ( in the emissive material )

Also maybe put the light source slightly in front of the mesh.

There are multiple ways to go about it, but the best and the easiest one is to use Unlit material shading mode, as @ClockworkOcean already suggested, then turning off the “Affect Distance Field Indirect Lighting” checkbox on the object:


But just keep in mind that the emissive material will still reflect in the specular component of the material (Lumen Reflections).

I agree that since UE5’s renderer is approaching realism of the offline renderers, we should get an ability to make lights with non zero area or volume actually visible to the camera. From physically based light transport perspective, it makes no sense to have a light source which illuminates the scene but you are not able to see it from the illuminated point.

3 Likes

Wow, finally it works all as wanted! Thanks a lot!

I am member of a lot of forums, but the speed and quality here is really amazing! Thanks you so much!

I have found good results by baking an emissive texture in arnold to not “destroy” the light. And then mixing that with the actual light.
The problem is lumen is not accurate enough to get the small light bounces necessary for the effect… so it doesn’t really matter if theoretically it is correct.
I’d also like the ability to turn off what contributes to lumen gi… even offline renderers have this feature… not everything is photorealistic bounced light.

Hello, I got a tip from my academy that seems to address the problem much easier: Just set the emissive material blend mode to “translucent”. That’s it.

Anyone having any objection?

2 Likes

This is exactly what I wanted, thank you!

Yes setting the material to translucent does stop emission. For me this does not work because I do not want the material grouped / sorted with other translucents.

In my case I want a skybox to stop lighting the scene by the texture… setting material to translucent does this, but then the sky gets sorted oddly with scene’s glass. Sad face!

This works but it’s not an ideal solution, since translucent shaders are more expensive than default lit it has the potential to affect performance if you have a scene with many translucent materials. Or you have an object like a table lamp with one material and texture and only part of the material should be emissive, you don’t want to make it translucent because then it looks like this:

A better solution would be to selectively disable Lumen screen traces for specific materials, as was mentioned in related threads but for which I have not found a solution