Combine Cycles passes in way compatible with photoshop

I'm trying to take my Cycles render passes into photoshop and combine them there. The purpose of this is to be able to manipulate the passes individually with various photoshop tools. However, photoshop does not support the way that Cycles passes are usually combined.

Normally, you have ((Diffuse Direct + Diffuse Indirect) * Diffuse Color) + ((Gloss Direct + Indirect) * Gloss Color). However, Photoshop does not have the Add blend mode.

So to do this, I need a different way to combine passes that does not rely on the Add blend mode. Is there another way that will be reasonably accurate?

• Sure Photoshop has add mode, it's called Linear Dodge.. Mar 1 '18 at 1:00
• If you are looking for accuracy. Then do the compositing in blender using scene referred (linear) values using OpenEXR.
– user1853
Mar 1 '18 at 1:12
• @Jerryno I've tried it. It is not the same as Add. It does other stuff as well and does not give the same results as Add in blender. Mar 1 '18 at 1:34

2 Answers

In Photoshop the add blending mode is named LinearDodge(Add). The reason why it might look to do incorrect results is due to the color space it operates in. To handle the data we need to work in linear space. If you want to do non-clamped, fully linear compositing, you need to use 32bit-mode, at all the times.

Export your layers as MultilayerEXR, import into Photoshop with EXR-IO addon. Photoshop will work in linear space when set to 32bit depth, which it is by default when opening EXR.

Set your layers to multiply and add like this:

You get the correct result. Next you want to convert this into Smart object, then convert to 8/16bits without merging layers and do whatever you want with it. Like this you can still work inside the Smart object in linear space.

You can also work in linear space when using 8/16bit depth, but you need to set it inside Edit > ColorSettings, because Photoshop does not default to it in 8/16bit depth. Use Custom profile with Gamma 1.0. Your monitor probably displays in sRGB, so you need to check View > Proof Colors, to see it converted into your monitors color space. Note that some color spaces do not offer the same gamut, so there will be losses when converting, which is un-avoidable. sRGB and linearRGB have the same color gamut, only the gamma curve is different, so the color space is no problem.

Photoshop is designed to handle whatever color space (CMYK, AdobeRGB, Linear, etc.) and does not only work in display-referred space.

But only in 32bit depth it is unclamped. Working in 8/16bit will result always in clamping and incorrect result because of this, not because of color space.

Explanation why this does not work in 8/16 bits:

When exporting the layers as png or tiff in 8 or 16bits, you loose accuracy there. You can export them as sRGB and composite in Photoshop in sRGB space with no problems. But color blending operations will result in clamping when not in 32bit, so another loss of accuracy.

You might loose some sharp highlights in 16bits and probably your image will look very different when using 8bits.

• Thank you, that makes sense now. I don't suppose there's any way to do something similar in SAI paint? I wanted to do filters and PS and paint in SAI2. But looks like Sai is only 8 bit. Mar 1 '18 at 20:18
• "Photoshop is designed to handle whatever color space (CMYK, AdobeRGB, Linear, etc.)" only one of those is a colour space. "and does not only work in display-referred space" Photoshop is display referred due to historical reasons, including the colour management system being largely display referred (ICC). These facets make Photoshop unsuitable for scene referred work. Everything from a majority of the PDF specification blend modes, to the ACE CMS (ICC), to lacklustre 32 bit mode, etc. essentially makes Photoshop useful for display referred work only. Jun 24 '18 at 0:51
• @troy_s look up color spaces. You can definitely do scene referred editing in Photoshop through custom ICC profiles, but it's true that the 32-bit mode does not offer all the tools and so wouldn't be my weapon of choice also. I would do that in Krita. But this is about Photoshop. If you want all the tools Photoshop has, there is this workaround. Jun 24 '18 at 9:50
• The V4 specification allows for parametric curves. You would need to find a single designed one to make a case however, as I have seen zero out in the wild. PS remains display referred. As for your comment about the term "colour space", I would recommend people look to the ISO 22028-1 Standard, which states very clearly that the term features three mandatory components: A) A white point, B) Transfer functions, C) Chromaticity of primaries. CMYK and Linear are a colour encoding model and a transfer characteristic respectively, not colour spaces. However, thanks for the tip. Jun 24 '18 at 18:56

According to this, Linear Dodge is the same as Add in Blender. However, if you are working with 8 or 16bit jpg/png/tga, Photoshop by default will works in display-referred space (i.e. everything is gamma corrected and non-linear), so the results of adding multiple render layers together in a non-linear space will be WRONG.

The only way to work in a linear space, which is absolutely critical, is to use 32bit EXR, that's the only way Photoshop will operate in linear space, and follow this workaround.

In short, don't use Photoshop. It's really not designed for linear values and will give you wrong results unless you specifically configure it to work in linear space.

• I'm working with 8 bit PNGs that I saved out of Blender. Is that why Linear Dodge 'add' isn't working then? Do I need to go through this as an EXR? Mar 1 '18 at 5:04
• This answer is very misleading and except the "make sure you are in 32bit" and "dodge is same as add" wrong. See my answer for explanation. Mar 1 '18 at 12:36
• Thanks Jerryno, i updated my answer to be a little less absolute. Mar 1 '18 at 17:10