Nice post, @brecht! Exciting times!
The Scale slider in the SSS node is the same as the Subsurface slider in the Principled shader, just named differently.
Both sliders also work as a Mix, the only difference is that when you set the SSS node Scale at 0 youāll get just a plain diffuse.
Nice to know, because of the different names I didnāt realize those sliders have the exact same functionality.
Does anyone have an update on whether we might have a chance at ever getting some sort of bi directional ray tracing in blender? The thought has been stuck with me for a while now and i see alot of use cases for it. Any update would be greatly appreciated.
Thereās just been a sub-discussion about that in this thread.
Hi.
Iāve been searching info about easy way to create RGB matte passes with Cycles and seems like the feature is missing. I found some old discussion to request it in RightClickSelect forum and workaround YouTube tutorials to manually setup random color mattes with shaders, but Iām quite surprised itās not much requested.
I have just finished animated commercial project rendered mostly in Blender that I started using Object ID passes to be able to adjust renderings in compositing software, but quite soon I realized itās not working due to aliased ID pass (which was expected). I didnāt use Cryptomatte, as Blender compositor File Output node doesnāt allow mix of 16bit and 32bit layers inside one .exr file (main render output supports it) and main output has unconventional naming for easy use in compositing software. Also it was unnecessary to render everything in 32bit that is required Cryptomatte to work. Also Cryptomatte masks change if geometries are changed in a scene while with RGB mattes itās possible to specify exact mattes for objects with IDās assignments.
Simple and well working method is using good old RGB mattes, which should be able to just apply as IDs to geometries or shaders and have renderer to render additional matte passes to be saved in .exr. Unfortunately there is not this option in Cycles, so itās needed to create separate matte assets to manually link in scene and prepare separate view layers to be rendered for each shot. Can be done (and I did), but itās a big waste of time to do it for many shots.
Long introduction, but RGB matte render passes are very much needed for Cycles. Can this feature be planned and added as a development task?
A couple of non-optimal workarounds:
Separately render with an override material āRGB Matteā where you plug āObject info > Colorā into an emission shader. Accordingly set every object to the desired R/G/B Value.
Or a more versatile one:
Set the object ID pass for every object then separately render with an override material āRGB Matteā where you plug āObject info > Object Indexā into a math divide, into a color ramp where you set the RGB values. You can also set a ID pass for make objects transparent.
Set a fake user (Shield icon) for the material and save it into your startup scene to have it always at hand.
Thanks for replyā¦ you are right. With override material passes I can prepare matte render passes in advance to my custom startup scene. I need to double check if my setup is flawless, but this is what I did as a quick test setup following your suggestion. Maybe shader is different, but idea is same. Sharing this and hopefully it helps someone else as well.
Steps to do
-
Create 3 individual RGB matte materials using object indexes. 1st material using index values 0-3, 2nd material 3-6, 3rd material 6-9. This works for total of 9 separate mattes from indexes 1-9. (0 is black and above 9 black)
-
Create 3 View layers. Each view layer is setuped with different override material using 3 materials created.
-
To be saved as a startup scene with Use for Rendering off by default and each matte pass to be activated when needed.
Will need some more matte passes for production use, but this works how Iād like and number of passes is easy to scale up. After one time general setup just need to setup object index values and activate matte passes. This is quite much how Iād like from userās point of view. I should have asked 2 months ago, but in production rush did overly complex setup using linked duplicated assets with matte materials parented to main render assets.
EDIT: Have to add that this still is not ideal for bigger team where artists have their own start scenes. I personally like to setup startup scene per project which would be in shared location for each team member to load for new scene preparation. This would then be included in that shared scene.
Hi, why not use AOVs for this ?
Hi, Hadriscus.
For my original question the answer is: Yes, thatās what Iād like to do, but seems like Cycles donāt have existing matte AOVs.
Can you let me know if you have a good solution to do it in Blender with Object Index and Material Index values without extra work during render setup? I guess it also needs to be manually prepared and saved in startup scene? Index values would be setuped for assets during asset production, so when assets are linked to render scene lighting artist should only need to activate matte passes.
lsscpp: Thanks for the shader setup image, that color ramp method is clear now. I will take a look about custom AOVs next.
As a general note in my opinion there is some lack of āstandardā pipeline compatibility in Blender rendering which should be improved to gain more commercial use, but I believe it improves if there will be more feedback from studios. I have myself also just last year decided to use Blender in commercial work and no prior experience before 2.8. Here in DevTalk has been good requests about proxies, render output naming convention and new render view window to name few. That type of things are not exciting for many individual users, but for team work and larger projects highly important.
This is literally why we have Cryptomatte. It creates antialiased mattes for every single object, material and asset.
Using Cryptomatte would be the best solution but having to save out 32bit float for every pass is not always an option (huge files).
As already mentioned, using custom AOVs is the next best solution without having to render twice.
Problem is that it is only shader based so no object index.
Here is a screenshot of how it works with with shaders:
Pros, you only need to render once, you can have as many as you need and it works in eevee as well.
Yes, Cryptomatte is great, but as I stated and Irfan as well, in animation productions required storage will be huge. I have mentioned before in another discussion problem with compositor File Output node limitation, as it forces to save all .exr layers either in 16bit or 32bit. Standard render output in Blender can save all other passes in 16bit and Cryptomatte and Z-depth in 32bit. This is a good way, but standard naming for other compositor software is problem. I am supposed to file a bug report as a limitation of File Output node, but was too busy due to work project to do it yet.
Good thing with standard RGB mattes is that it allows to specify fixed mattes in start of the project. For example in city scenes all building windows could be red, concrete surfaces blue, metals green, roof tops alpha. When assets are prepared with pre-defined IDs, then compositors know in advance which matte passes and color channels to use to adjust certain image elements.
Cryptomattes are random and different in each scene, so itās not easy to create one master comp setup with prepared mattes for color adjustments to use as a starting point in large number of shots. Good way is to prepare main assets with RGB mattes and still render Cryptomatte as extra to allow compositors to have most control. But currently there is the bit depth and naming issue.
I hope Iām not hijacking the thread with this seemingly small issue, but for animation production or high quantity image production that needs repetitive compositing process this is quite important.
EDIT: To addā¦ I donāt know if itās possible in Blender to specify Cryptomatte IDs manually to use in compositing. In general Cryptomatte with custom attributes should support it.
You can select objects and materials in cryptomatte by name. See here:
You can bundle up the following setup into a node group and just add it as-is to your shader tree. Of course you still have to add the correspondingly named AOV to the render passes, so there is a little bit of setup involved.
Nota bene the way the color mapping works here is by having a total number of objects specified from the start, although that can vary from shot to shot.
The idea of a RGB Matte is to get a clean matte into each red green and blue channel though.
Your setup breaks a bit with more than 3 objects
Oh really ? I didnāt know that. How do you avoid overlaps in the first place with only three colors ?
Cryptomatte is not random. The hashes are unique based on object, material or asset naming.
The storage cost of Cryptomatte is quite low. We routinely get 12mb frames in 2k with 100+ objects. Storage is cheap compared to artist / dev time.
We use cycles and Cryptomatte from blender on a vfx feature right now with 80+ Full cg shots in 2k. Cryptomatte is consistent across all shots and sequences assuming your naming and asset usage are too.
This makes our nuke and fusion composites consistent when it comes Cryptomatte selection and lookdev.
You write out a gazillion different passes. Some use only RGB, some also include the alpha channel and/or CMY.