blender 4.2 eevee requirements

Issue #2121 resolved
Alessandro Padovani created an issue

importer 4.2.0.2189, blender 4.2.0 beta

In 4.2 we get a first release of eevee next. We already fitted the principled shader to the new principled in #1764, so what changes for us is the minimum eevee requirements. We can compare with the old settings in #96. In short all the old settings are gone and no more necessary apart curves, this is because GI is now raytraced so "fake" settings are not needed anymore.

https://developer.blender.org/docs/release_notes/4.2/eevee/

Below there's a comparison of the old and new eevee with the same scene imported as extended principled. We notice the new GI shadows and displacement, which weren't possible before. Also a new view transform is available "khronos pbr neutral" which greatly improves the colors fidelity.

Test scene included.

Comments (22)

  1. Alessandro Padovani reporter

    update. thickness. In 4.2 There’s a new thickness output which replaces the old “refraction depth“ in the material settings, that we don’t use for material conversion. This is only used by eevee but doesn’t harm for cycles so I’d always set it up.

    The thickness output is only used for refraction or sss or translucency. In my tests it seems we need zero for refraction and 1 for sss, while translucency seems to be fine with the default value, so we don’t need to set it.

    # thickness output for blender 4.2+
    if refraction > 0
      thickness output = 0
    else if sss > 0
      thickness output = 1
    

  2. Alessandro Padovani reporter

    update. refraction.

    I’m not impressed with the new raytraced refraction. I expected an improvement over the old eevee, instead it seems worse. Below a comparison with the test scene in #1368, imported as extended principled and rendered with eevee.

    One way we can improve things is by using a 1:1 resolution for raytracing, since the principled refraction is raytraced, this way we get rid of the blurred effect and other artifacts.

  3. Thomas Larsson repo owner

    I removed the unused Eevee and light settings and added a thickness value. However, there seems to be a problem with refractive materials such as the cornea and eye moisture in Eevee:

  4. Alessandro Padovani reporter

    Commit beab4e8.

    I cannot reproduce the eye issue, here G8F renders fine both in blender 3.x and 4.x including 4.2. Test scene included. There’s a bug where the thickness output is always connected for any material, it should be used only for refraction and sss as explained above. Other materials don’t use the thickness output. For example the eyelashes material is not refractive nor subsurface.

    steps (blender 3.x 4.x):

    1. in global settings set render settings and light settings to update
    2. import g8f-basic.duf as extended principled
    3. render with eevee

    note. There’s something odd with the principled ior level in blender 4.x though. Will look at it.

  5. Thomas Larsson repo owner

    The thickness node should be gone for the eyelashes, although I don’t have Blender 4.2 at home so I’m not quite sure. I don’t have the eye problem here either. Perhaps some glitch with the drivers on my work computer.

  6. Alessandro Padovani reporter

    Commit c943b7c.

    bug. thickness. Eyelashes are fine, but thickness is gone for refraction now. You should test both G8F and the crystal balls.

    with extended principled:

    • The two crystal balls should have thickness = 0 because they are both refractive with principled transmission > 0. With principled we make thin wall as refractive.
    • G8F should have thickness = 1 for the sss skin and no thickness for eyelashes.

    with bsdf:

    • Only the red ball should have thickness = 0, because the blue ball is not refractive. With bsdf we make thin wall as transparent.
    • G8F should have no thickness for the volumetric skin and no thickness for eyelashes.
    # thickness output for blender 4.2+
    if refraction > 0
      thickness output = 0
    else if sss > 0
      thickness output = 1
    

    note. new eevee volume. What’s interesting is that the new eevee can render geometry volumes, thus producing a simplified volumetric skin. The old eevee rendered volumes as boxes. We can see the volume bleeding at the borders where different volume materials meet, same as happens with cycles but much more visible.

    steps:

    1. import G8F as bsdf and render with eevee

  7. Alessandro Padovani reporter

    Commit 2899993.

    bug. thickness. The “daz thin wall” group doesn’t use any refraction. Again, the blue crystal ball shouldn’t have thickness for bsdf, as described above. Since I see this is difficult to get, below there’s a better definition.

    Note that we give precedence to transmission over subsurface in case of conflicts, though there shouldn’t be any material with both.

    # thickness output for blender 4.2+
    for principled v2
      if transmission weight > 0
        thickness output = 0
      else if subsurface weight > 0
        thickness output = 1
    
    for bsdf
      if there's "daz refraction" group
        thickness output = 0
      else if there's "daz subsurface" group
        thickness output = 1
    

  8. Alessandro Padovani reporter

    That’s ok, in any case this is a first approximation of the thickness output, we may find a better use for it eventually.

  9. Alessandro Padovani reporter

    update. important. eevee fast GI approximation.

    Ok I believe I got it. The reason why we have a odd fresnel effect on eevee is because of the fast GI approximation. To fix this we can set a maximum roughness for raytracing, so for smooth surfaces raytracing will be used instead of fast GI with results similar to cycles.

    Below a comparison with raytracing vs fast GI. To avoid artifacts we have to set the raytracing to a better precision than the default. I also tried to tweak the fast GI parameters but with no results, so the only way seems to be raytracing.

    https://docs.blender.org/manual/en/4.2/render/eevee/render_settings/raytracing.html

    # blender 4.2 eevee requirements
    raytracing method = screen trace
    raytracing resolution = 1:1
    raytracing max roughness = 0.2
    

  10. Alessandro Padovani reporter

    Commit 2103134.

    bug. thickness. Works fine, apart the principled blue ball should have thickness = 0, because it uses refraction, same for the principled eyemoisture for example. I know ior is 1 but we use refraction nonetheless, there’s some little distortion if we don’t set thickness = 0. I’m reporting my notes together below for your convenience.

    with extended principled:

    • The two crystal balls should have thickness = 0 because they are both refractive with principled transmission > 0. With principled we make thin wall as refractive.
    • G8F should have thickness = 1 for the sss skin and no thickness for eyelashes.

    with bsdf:

    • Only the red ball should have thickness = 0, because the blue ball is not refractive. With bsdf we make thin wall as transparent.
    • G8F should have no thickness for the volumetric skin and no thickness for eyelashes.
    • G8F should have thickness = 1 for the skin if we use sss skin in the global settings.
    # thickness output for blender 4.2+
    for principled v2
      if transmission weight > 0
        thickness output = 0
      else if subsurface weight > 0
        thickness output = 1
    
    for bsdf
      if there's "daz refraction" group
        thickness output = 0
      else if there's "daz subsurface" group
        thickness output = 1
    

    possible bug. eevee requirements. The raytracing is correctly updated if I set “update“ in global settings, but I get no warnings if I set “warn“, apart in the console if I open it. If warnings are now supposed to appear only in the console then that’s ok, but I fear most users will miss them this way. Let me know.

  11. Thomas Larsson repo owner

    OK, I think I got it now. Thickness is set to zero when a daz refraction group is created, and when the pbr Transmission value is set. The plugin doesn’t use refraction bsdf or glass bsdf in other places. Both crystal balls use thickness = 0 for principled, but only the red ball does for the bsdf method.

    Render setting warnings are added to the bottom of the other warnings.

  12. Alessandro Padovani reporter

    Commit d2df734 works fine thank you for the fix.

    As a last request for 4.2 please consider adding a global setting to choose the displacement type, as described in #2098. Since we now have displacement in eevee, which will always default to “displacement and bump“ with flat shading artifacts, I believe it is correct to leave the choice to the user. Then the option can be useful in general of course, also in previous versions of blender.

    Or let me know if there’s any reason not to, so we can close as resolved.

  13. Thomas Larsson repo owner

    A global displacement option is introduced in the latest commit. There is also a third option, “Bump”, to match the Blender options.

  14. Alessandro Padovani reporter

    Commit 3a91e46.

    There’s a mispelling, it says “Displacement Only Bump“ instead of “Displacement and Bump“. We may want to use the same blender names “bump only“ “displacement only“ “displacement and bump“.

  15. Alessandro Padovani reporter

    4.2.0.2223, blender 4.2 beta

    update. max roughness. I’m afraid we have to increase the max roughness as a minimum requirement, otherwise fast GI comes into play for smooth surfaces with a odd fresnel. The ideal would be max roughness = 1 but it also means we always use raytracing for reflections that’s not good for performance reasons. We can try with 0.5 that’s a medium value and should fix most smooth surfaces.

    Below an example with golden palace. In any case when ne notice odd reflections in eevee it’s probably the fast GI and we have to increase the max roughness for raytracing.

    https://docs.blender.org/manual/en/4.2/render/eevee/render_settings/raytracing.html

    # blender 4.2 eevee requirements
    raytracing method = screen trace
    raytracing resolution = 1:1
    raytracing max roughness = 0.5
    

    p.s. Again I tried to tweak the various fast GI parameters, but increasing the fast GI precision doesn’t fix this specific issue, so the only way seems raytracing.

  16. Log in to comment