How to Make Video Screen Emit Light in EEVEE Next?

To preface: I am very new to lighting in Blender and how it works, and this is basically the first full-blown scene I’ve added proper lighting to. I have a screen where I want to play a video on it and have it emit light that’s dependent on the video playing on it, but since I’m using EEVEE Next, I’m not sure how to make it do that. I can’t find any tutorials for this for 4.2+. And no, I can’t change to Cycles because I’m using toon shaders that are EEVEE-specific. Here’s a picture of the scene for reference:

If you have any suggestions or advice on how to do this in EEVEE NEXT, I would love to hear it. Thank you!

Any emissive texture will cast light if raytracing is enabled:

Of course this has all of the caveats of screen-space raytracing.

There are 2 ways to do it.

  • Use raytracing. This will give you what you want directly, but will only work if the screen is visible in the render, because Eevee’s raytracing is screen space only. Also, it will change the shading of the entire scene so it might not be good for your art style.

  • Use an area light and manually animate the color.

Really? Because I already tried raytracing:

I can make it work on a new scene with a plane, but not in this one.

Are your render settings correct? If a new file works, your project file settings must have some wrong settings.
If this is in viewport, is world and scene light on?

blender_unncjYE0EF
Can confirm that both of these are enabled.

Not sure? I’ve been trying to get sharper shadows and lights since I’m doing cel/toon shading, so I’ve had to do some weird stuff to get anything remotely close to what I want.

Well, you can reset the settings when you right-click on them. But you would have to go through all of them manually.

But I think this has to do with your cel shading setup.
I never use this but what is the alpha doing in the second part of the node setup?
From what I see it has no value / 1.00 since it is not patched to the .png alpha.
It just starts at the Shader to RGB node.

Anyway, maybe, just for the screen-emissive surface, use another, simple diffuse setup where you plug the video / screen content in - no cel shading there.

You might need to increase your emission strength too.

Just realized that the Light Path node probably runs that alpha.
And what SterlingRoth just said.

Tried that already with all the emission nodes, sadly didn’t do anything.

What are you other shaders set up like?

Everything seems very flat…

As I mentioned, I’m doing cel/toon shading for my scene. The flatness is intentional. Here’s the material for the stone floor for comparison:


Pretty much every object in the room uses a toon shader preset from the Paint System addon:

It appears that raytracing effects aren’t visible through the shader to RGB node.

Your best bet is @etn249 's suggestion to use an area light.

That’s unfortunate. Do you happen to have any resources on how to animate an area light to emit light based on a texture by any chance?

Not in eevee. I would manually animate the color value of an area lamp to be an approximation of the average color of the video playing.

I wouldn’t worry too much about the textured lighting.

if you are going for a cel shaded style, you don’t often see complex lighting like that for a reason. It stops making sense pretty quickly.

The material isn’t just shader to rgb, it also uses emission nodes on which the raytracing’s effect won’t be visible.

correct, but in my testing, I couldn’t get any diffuse raytracing to pass through the shader to rgb node at all. That’s the only way that the shader is receiving lighting from the world, so if that’s not working, nothing else about the shader will work with that.

Okay, yeah, that makes sense. Pardon my ignorance, but is there a way to get the average color of a texture via nodes? Just trying to figure out a way to automate this as much as possible since the video playing on the screen is going to be fairly long.

No nodes in eevee lights, unfortunately.

I don’t know any direct way to do it automatically.
I’m sure there’s some sort of python tricks you could use to streamline the process somewhat, but no easy buttons unfortunately.

The further I get into this project, the more I realize how much I screwed myself over with choosing EEVEE as the rendering engine with toon shaders. I will just have to take this as a learning opportunity and deal with it. Thank you anyway for the help.