Mixed Render Engines

idea

(BobGeorge) #1

Hi folks,

I’ve been trying out the new Blender 2.8 (alpha) and I’m liking it so far. But what I’m wondering is whether it’s possible to mix render engines and have different ones on different tabs / for different purposes.

Basically, I’ve got a “modelling” tab for doing all my editing and then a “render” tab - the texture editor set to show the “render result” - to display the rendering results.

And my ideal workflow would be to have Eevee - in “rendered” mode - as the rendering engine for the modelling tab for some real-time viewport feedback, but then equally have Cycles enabled for the final renders.

As I do want the final results to be properly raytraced, but that’s slow for editing purposes and that’s where Eevee comes in and shines, providing real-time feedback in the viewport. This would, to my mind, be the perfect workflow, as you can edit rapidly - in real-time - with Eevee for immediate feedback, but then use Cycles, once the editing is done, to get the final rendered results.

Is there any way to set Blender 2.8 up in this way - Eevee as the viewport renderer but Cycles as the actual final render engine - without needing to keep manually switching render engines every time?

And, if not, then consider this instead to be a “feature request” for 2.8 to have something like this added, as I can’t imagine I’m the only one who’s wanting their workflow to work this way.


(zeauro) #2

It was first intention. You may find old demos of 2.8 where user create a viewlayer for EEVEE and another one for Cycles.
It does not work like that anymore.

Now, I can obtain that by creating 2 viewlayers (viewport/render), disabling rendering for one (Viewport).
Then, I have to create a scene with duplicated linked objects.
And finally duplicate main window, set render engine to EEVEE for one used as viewport and to Cycles in the other one to render.
That is too complicated to stay as is. Devs will probably end up with a less twisted workflow to do, so.
Or it will be possible to create an addon doing all this in one step.

Cycles and EEVEE are sharing material nodes for this goal. It will not be possible to have EEVEE entirely able to support all nodetrees working for Cycles, because they are not working the same.
But be assure that a workflow involving both engines is an initial target of 2.8 and devs will do what they can to reach a smooth way to do that.


(sozap) #3

Being able to mix renderengine is a killer feature, having multiple scene is kind of tedious when you have a lot of shots to setup. I hope this get tackled eventually.

Anyway , @BobGeorge I think you just have to use cycles render engine and use the lookdev/material preview . You need to switch to eevee to setup things like AO , screen space reflections once. But once it’s setup you can stay in Cycles.
Keep in mind that for now Eevee and Cycles lights don’t have the same energy ratio, so for lighting this is a bit cumbersome to use.
I think it’s on the todo to unify all this , so lights energy are consistent and you can setup eevee stuff while being in cycles.


(BlackRainbow) #4

Just finished project in where i needed more than a 10 renderlayers for each shot. Decided to try 2.8 for it. New collection system is a killer feature, saved lot of time. But i still couldnt rid of having multiple scenes for each shot as for some layers eevee worked best and for some cycles. Having different renderers assigned to layer is an absolute must. More than that, we realy need to have different render settings for each layer.


(William) #5

You can already do this.

Set your renderer to Cycles, then in your modeling tab, set the viewport display mode to LookDev mode. Here you can choose to use the Scene world and/or lights to match the Cycles result.

However, note that lights in 2.8 don’t match exactly between Cycles and Eevee, so you will have to jump between Eevee and Cycles mode to set the lamp strength to be comparable.

You can also elect not to use your scene lights and have a custom HDRI while modeling, and then switch to Cycles for the full lighting setup.


(English is not my native language) #6

This is how I configured my workflow to have render engine selector always available and avoid scroll/changing tabs nightmare when you try to match results by changing settings for each render engine in properties editor settings.


(sozap) #7

I just tried with the default scene, it looks like that when eevee has a light value of 10 the matching cycle light is 1000 , do you know if it’s different depending on lamp distance (falloff) or lamp type ?


(Daniel Paul) #8

I hope they will also add the possibility to set GPUs to specific engines.
For Example:

GPU 1 = EEVEE
GPU 2 = CYCLES
GPU 3 = CYCLES

This way the geometry an textures could stay in the Vram, even when Cycles is paused.
The preparing time for Cycles would be much less.
EEVEE would always be fluid while navigating, even when Cycles is rendering.

Blender can do this in 2.79, the viewport is super smooth while rendering.
Since i used Blender the first time (2.79) i hate to work in c4d with Octane. :rofl:
No matter what your settings are or how many gpus you use,
the moment you activate octane, the framerate in VP drops…


(English is not my native language) #9

This is still WIP and that is in the To Do list:
https://developer.blender.org/T54659

Anyway, I do not think it will be possible to have 100% coincidence with lighting, materials and other configurations between Cycles and Eevee by default, I guess it will always be necessary to make individual adjustments. I also suppose that for different reasons someone might want to work in Cycles and Eevee at the same time as their project progresses. I think that in that case it would be easier to do it at the same time, than having to work first in one render engine and then when finished start making adjustments on the other. For all this I think that having the Render Engine selector always available is important.


(English is not my native language) #10

If I have not misunderstood you, you can now configure it that way. You connect your monitor to GPU 1 (primary display), it will be used by Eevee. Then you uncheck the box for GPU 1 for Cycles Compute Devices in User Preferences.
Edit:
Oh, maybe you were referring to Cycles and Eevee at the same time in Viewport. I really do not know how it works and how resources are used.


(Indy_logic) #11

I just realized that this is sort of possible with the new output node. You can have two different node trees in the same material/light/env. Each one goes to it’s own shader output with Eevee or Cycles selected.


(Indy_logic) #12

For my own personal wish list, I’d love the ability to simply select a different render engine per render layer (view layer).

I can already see this as being a pretty cool time saving feature when you need an extra bit of realism. Say, you’re working on a project that uses Eevee as the main render. But there are shots where you could really use the added realism of Cycles. Maybe you want to render a characters hair as Cycles or maybe a pass of just indirect illumination. Assuming we get dynamic overrides some time soon, and they let us “Override” the render engine, you could just setup the passes to just render what you want in whatever engine you need for that layer.


(smilebags) #13

Is the lamp strength discrepancy a bug which hasn’t been fixed yet, or the intended functionality? It seems like if they are correlated, having them look the same should be a very simple fix in Eevee’s code.


(BobGeorge) #14

Oh, yes. I just tried this and, yeah, that’s pretty much what I was thinking.

So I guess my suggestion - seeing as the user interface is the focus of 2.8 - now becomes “can we make this feature a bit more obvious?”. If not default, then the “scene world” and “scene lights” should be checked by default, so that when you switch to the material view, it’s all turned on.

Also, yes, there is quite the discrepancy between Eevee and Cycles on lamp strength.

I don’t mind it not being quite equal - I’m not at all expecting Eevee and Cycles to be pixel identical or anything silly like that - but they need to be a bit more comparable.

Basically, the way I see it is that the “Eevee in the viewport, Cycles for final render” thing is effectively using Eevee as a kind of “pre-viz” tool. So you can roughly see, with Eevee, that the light and shadows are broadly where they should be to give you an idea of the end result.

But I feel the discrepancy in light strength between them is a bit too much at the moment. Well, it’s still alpha and there’s more to be done before release. This is not the final product yet.


(BlackRainbow) #15

Thats not what i meant. I was saying about using eevee for viewport and cycles for final render. For example you setup 2 renderlayers, and one is configured to use cycles and another for eevee. Can you assign cycles to renderlayer1 and eevee to renderlayer2 so that when you hit render blender could automatically change renderers according to renderlayers? Now when you choose either eevee or cycles, it will be used for all renderlayers you’ve set up, with same render settings.


(William) #16

Yes, that would be nice. However, technically the lamps in Eevee and Cycles work quite differently. Currently in Eevee they don’t use the node tree at all, so making them sync up could be difficult in more complex cases. But yes, it’d be nice if they could somehow approximate the Cycles lights more, esp when used in LookDev mode.

The other issue with lights, is that in Cycles many users use meshes for lights, which doesn’t work in Eevee. Currently, lighting is different enough that an Eevee-based Cycles preview is not all that accurate.