How to render emission reflections on a transparent background?

Hi guys,
I have a text with emissive material that I would like to render with alpha channel and then composite it into a photo.
Behind the text I modelled a wall to scale with that of the photograph in order to capture both the shadows and the reflections of light.


The problem is that, if I enable Shadow Catcher on the rough 3d model of the palace and the street, I can’t render the emission light reflections but only the shadows …

I am using Cycles in Blender 2.9.

Anyone has an idea what I am talking about…? :roll_eyes:

This is sadly not easily possible without some tricks.
Chris P has a good tutorial about reflection catcher: https://m.youtube.com/watch?v=AGoATLxsdsc
https://m.youtube.com/watch?v=dgIy-csN5D4

1 Like

Okay, thanks, I take a look.
No problems to use tricks, but I (us) need a solution bec

You could try making a scene with only your wall and the text. Give the wall a transparent shader mixed with a glossy shader to catch the reflections, adjust the glossy roughness as needed. Render with film-transparent option and compose over the photograph.

1 Like

Okay, but the scene have only a walls/floor and text…, and without emission text and lights there won’t be any reflections…

I am not sure if this is what you want,but if you only want the reflection of the text, use the lightpath node in the text material. In this example I have the wall (with glossy mixed with transparent) and the text with the material shown.

I posted in a FB groups the same problem with a clearer example.
I try to repeat it here because it is a very simple scene and I can also share the scene (with all property named, so you can understand anything) so that you can understand better which is the point, what I need and, above all, you can test it if you want.
Here is the problem:
How to render reflections passes on a transparent background?
I mean: how to render reflections (coming from light and emissions objects in the scene) shining on an invisible background.
For example, let’s have this simple scene:

In that photo I’d like to composite some text with different shader…; there is a simple background to match the room of the photo, a text shaded with Emission and a normal Text with simple material. Plus 2 area lights where were the original windows of the photo:

But now I have to make invisible the background (Walls and Floor) to match the CGI with the photo backplate. BUT when I enable Shadow Catcher, it kills all reflections and keep only the shadows!

I tried to create different render layers (View Layer) with different set up, but I didn’t find a solution to get the reflections passes (exactly the DiffuseDir, DiffuseIndir, GlossyDir, GlossyIndir) without alpha channel.

Again, the Shadow Catcher seems to kill all reflections and if you disable it, your CGI background (walls, floors…), won’t be transparent.

Here can you find the elementary simple scene:
Reflections_passes_Cycles_Blender 2.90.zip (264.7 KB)

So, maybe if we work all with the same scene it will be easier to fond a solution. Imho.

So, what I need are the reflections (of the Emission text, of the Reflex text and of the aria Lights), that are shining on the floor and walls as in image two, BUT WITH TRANSPARENT BACKGROUND.
Or in other words, the same image as third, which has a transparent background, PLUS all the reflections coming from lights and objects in scene.

I will take a look and experiment.

1 Like

You are welcome, mate!

I have deleted a couple of posts as they were not a practical solution.

Sorry your compositor and render layer setup was confusing me a bit, I do not normally use them. I have gone back to my original idea of making a «reflection catcher» as I first described.

I have duplicated your walls and applied textures as described in my first post, I also flattened the floor of your shadow catcher and my reflection catcher. I slightly scaled my reflection catcher to avoid artifacts with it being in the same space as the shadow catcher.

I turned the background image opacity to 1 (it was set to 0.5)

The reflection catcher for the walls will reflect all objects and lights and you can still use your shadow catcher as is. You have to adjust the transparency factor to your taste in the reflection catcher’s materials (like a secular factor). It will also reflect the world colour, I have found no way around that, although the film-transparent option is checked the world does influence reflections I turned the world colour to black (transparent did not work).
The result:

This is the best solution I could come up with, maybe there is a way of doing this with the compositor but I do not know it well enough.

The file:
secondtry.blend (190.3 KB)

1 Like

Well done Mate!
I also was near to your solution yesterday…: it is not bad!

Anyway my question was how to render emission reflections (in general, how to catch light reflection in scene) on a transparent background, and how to export this pass(es) in a EXR file to composite in external software, as it happens for all others 3D software which normally have not a Compositor module as Blender 3D. I am relative new and Blender and I actually don’t use Compositor.
But stay tuned because the finally correct answer maybe comes just in the Compositor in Blender, or maybe in the shader editor… I’m still experimenting…
Thanks for now!

Here you can find your solution composited in Photoshop: well done!

1 Like

It is an interesting question and I had fun experimenting.

There could be a way to do this with the glossy-diffuse and the glossy-direct passes. The problem is that where you want transparent they are black. In gimp or photoshop you can fade the black colour to alpha and then mix the two images as layers.

I tried to do this in the compositor with chroma-key and set alpha but gave up, I could only get solid black to become transparent. It should be possible somehow.

I think you would still have to use separate objects for the shadow catcher and reflection catcher because as you say the shadow catcher overrides everything else.

I also tend to render passes and composite them in gimp as there are more options, so I do not have experience with blenders compositor.

Another idea that occurred to me was to simulate a shadow catcher with material nodes, and in the same material mix that with my reflection catcher to get both together, but I have not worked out how to do it yet and went for the «easy» way.

You will never get totally transparent parts in your wall because the light bounces of your lights effect the whole surface to some extent, you could turn down the bounces but that would mess up the effect.

I will also investigate a bit more when I have time as it is an interesting topic.

1 Like

Hi DNorman,
yes, this is exactly the point: “There could be a way to do this with the glossy-diffuse and the glossy-direct passes. The problem is that where you want transparent they are black.”.

I found some tuts where maybe there is the solution (maybe in both Shader editor and /or Compositor tab?). But because I also have no experience with Compositor in Blender, I didn’t get any acceptable result.
(8) Composite CGI Around Real Object - Blender VFX Tutorial (FULL) - YouTube
(8) Improved Reflection Catcher in Blender Cycles - YouTube

Look at this two tuts…

1 Like

These two videos are great.
I especially liked the second one by Chis (all his videos are very well explained).
He does give a sort of solution for dark reflections, which I was also bothered about, becase turning black to transparent we loose the dark reflections. The problem is that it implies a specific mask for all objects in the scene to be reflected and this can be impractical with multiple objects.

They do solution mixing the glossy passes and turning black to transparent in compositor, for the lighter reflections, with the set alpha node.


Chris uses a dodge node for the alpha factor in his first example, to get some darker reflections but it is not a real solution as he says. It gave me a dark matte over all the transparency.
I used a colour ramp to preserve the alpha you wanted, you can adjust the white slider position for the intesity. This only gives lighter reflections as did my first answer.

I have been reading a bit and many people would like this feature, in dev talk they are talking about getting shadow catcher to do reflections (no luck yet):


There is also also a proposal to get a shadow catcher node for cycles here:

This would be great to be able to mix it with reflections and other things you can think of.
In Eevee it is possible to fake a shadow catcher with the shader to rgb node (does not work in cycles) unfortunately good reflections are tricky in eevee.
1 Like

Mate, I find a great solution but of course I didnd’t do it without your contribute and the contribute of Hajile Ibushi, a member of the Blender Facebook group.
If you want to see the discussion, you can go there and see my solution.
Maybe there will be still something to refine it, but it seems to be already pretty good!
Blender | Facebook

1 Like

Sorry, I do not have a facebook account and the discussion is private. It would be good to have your solution here as well so everyone can see it :slight_smile:

Okay,
give me some time and I’ll share everything…