EEVEE-Next #93220

Open
opened 2021-11-19 18:41:26 +01:00 by Clément Foucault · 198 comments

Overview of tasks and plans for the initial release of EEVEE Next, in Blender 4.2.

Additional features will be added throughout the lifetime of the 4 series.

Tasks before release

What tasks needs to be done after EEVEE-Next is made default and before Blender 4.2 is branched of.

Shading

Shadows

  • #121836 Jittered Soft Shadows
  • Adjust filter setting and scaling behavior.
  • Fix shadow acne during light update (set max LOD to actual count after update throttle)

Python API

Versioning

Other

  • #120100 Reduce compilation time
  • Finish manual blender/blender-manual#104615
  • #122433 Remove EEVEE-Legacy.
  • Convert settings from EEVEE-Legacy to EEVEE-Next
  • Pass over the RNA to tag all deprecated properties and tweak name & description
  • Remove 64x64 probe size (must be done after EEVEE-Next is made default as the property is shared with EEVEE.

Completed work

Main features currently implemented:

  • Virtual Shadowmapping: Increases shadow resolution and maximum sharpness while keeping relatively low memory footprint.
  • Subsurface Scattering: New algorithm that eliminate light leaking between objects and supports per pixel radius.
  • High Light count support: Lights are now efficiently culled and there is virtually no limits to the maximum number of lights in a scene.
  • Motion Blur: Now supports shutter curve.
  • Grease Pencil Object support: Grease pencil object are now treated as any other geometry and fully compatible with the shading pipeline. (Full support has been delayed as it requires more design)
  • Shading: Arbitrary number of BSDFs are now supported without major performance impact. Raytracing and SSS is no more restricted to one BSDF node.
  • Thickness output: This is a new output which control the thickness for translucency and refraction.
  • Renderpass: All passes are rendered at once and do not need multiple geometry passes (except cryptomatte).
  • Irradiance Cache: The baking has been totally rewritten and data is now stored inside the lightprobe objects which allows modifications after baking.

Motion Vector

  • Motion vectors support in the viewport.

Film

  • TAA reprojection.
  • Sample accumulation.
  • Reduced memory usage of weight buffers.

Camera

  • Port Depth Of Field.

Motion Blur

  • Shutter curve support for time steps.
  • Motion steps data.
    • Mesh.
    • Curves.

Shading

  • Bump Mapping support.

  • Shader to RGB support.

  • Vertex Displacement support

  • Single pass HiZ using compute shader.

  • #105868 Deferred Shading.

  • #116070 Translucent BSDF support.

    • Avoid overriding of SSS closure.
    • Make sure to not over allocate gbuffer layers.
  • #118256 Sphere probe convolution

  • #118079 Fix noise in clearcoat materials

  • #118589 Support light objects in refraction

  • Update the light probe pipeline as we went away from the random sampling approach

  • Make Translucent BSDF work with indirect lighting in Dithered mode. Currently this isn't supported by EEVEE-Legacy.

  • Fix SSS (shadowing problem, need split light eval pass).

  • #120329 Make thickness consistent accross BSDFs.

  • #120384 Implement thickness output behavior and options.

  • #120866 Add direct/indirect light clamping options & consistency.

Light

  • Efficient Light culling
  • Arbitrary light count

Shadows

  • #104472 Virtual Shadow mapping
  • #111809 Shadow tracing
  • #118220 PCF shadows (#113839)
  • #120620 Make a decision if we want to keep shadow pass monochromatic or colored. Postponed until we have shadow catchers.

Render Passes

  • Render Passes
  • #99390 Cryptomatte
  • Transparent Pass

Global Illumination

Volumetric

  • #114062 Remove distant lighting
  • #119734 Add versioning code to migrate world volume to volume object.

Performance

  • Deferred Lighting Optimization
  • #118385 Add specialization constants for Film Accumulation
  • #118198 Shadow Rendering Improvements
  • #112979 Horizon Based Global Illumination
  • #114597 Profiling and optimizations for iGPUs

UI

  • Rename Lightprobe Types
  • Add presets to raytracing panel
  • #113971 Review Material options panel
  • Expose thickness output socket
  • #120691 #120616 #120732 UI pass on panels
Overview of tasks and plans for the initial release of EEVEE Next, in Blender 4.2. Additional features will be added throughout the lifetime of the 4 series. ## Tasks before release What tasks needs to be done after EEVEE-Next is made default and before Blender 4.2 is branched of. #### Shading - [x] #121455 Sunlight extraction #### Shadows - [x] #121836 Jittered Soft Shadows - [x] Adjust filter setting and scaling behavior. - [x] Fix shadow acne during light update (set max LOD to actual count after update throttle) #### Python API - [x] #113976 Cleanup API #### Versioning - [x] [Document porting procedure](https://developer.blender.org/docs/release_notes/4.2/eevee_migration/) in the release notes - [x] #122489 Add automatic handling of `Alpha Clip` material #### Other - [ ] #120100 Reduce compilation time - [ ] Finish manual blender/blender-manual#104615 - [x] #122433 Remove EEVEE-Legacy. - [x] Convert settings from EEVEE-Legacy to EEVEE-Next - [x] Pass over the RNA to tag all deprecated properties and tweak name & description - [ ] Remove 64x64 probe size (must be done after EEVEE-Next is made default as the property is shared with EEVEE. ## Completed work Main features currently implemented: - **Virtual Shadowmapping**: Increases shadow resolution and maximum sharpness while keeping relatively low memory footprint. - **Subsurface Scattering**: New algorithm that eliminate light leaking between objects and supports per pixel radius. - **High Light count support**: Lights are now efficiently culled and there is virtually no limits to the maximum number of lights in a scene. - **Motion Blur**: Now supports shutter curve. - **Grease Pencil Object support**: ~~Grease pencil object are now treated as any other geometry and fully compatible with the shading pipeline.~~ (Full support has been delayed as it requires more design) - **Shading**: Arbitrary number of BSDFs are now supported without major performance impact. Raytracing and SSS is no more restricted to one BSDF node. - **Thickness output**: This is a new output which control the thickness for translucency and refraction. - **Renderpass**: All passes are rendered at once and do not need multiple geometry passes (except cryptomatte). - **Irradiance Cache**: The baking has been totally rewritten and data is now stored inside the lightprobe objects which allows modifications after baking. ### Motion Vector - [x] Motion vectors support in the viewport. ### Film - [x] TAA reprojection. - [x] Sample accumulation. - [x] Reduced memory usage of weight buffers. ### Camera - [x] Port Depth Of Field. ### Motion Blur - [x] Shutter curve support for time steps. - [x] Motion steps data. - [x] Mesh. - [x] Curves. ### Shading - [x] Bump Mapping support. - [x] Shader to RGB support. - [x] Vertex Displacement support - [x] Single pass HiZ using compute shader. - [x] #105868 Deferred Shading. - [x] #116070 Translucent BSDF support. - [x] Avoid overriding of SSS closure. - [x] Make sure to not over allocate gbuffer layers. - [x] #118256 Sphere probe convolution - [x] #118079 Fix noise in clearcoat materials - [x] #118589 Support light objects in refraction - [x] Update the light probe pipeline as we went away from the random sampling approach - [x] Make Translucent BSDF work with indirect lighting in Dithered mode. Currently this isn't supported by EEVEE-Legacy. - [x] Fix SSS (shadowing problem, need split light eval pass). - [x] #120329 Make thickness consistent accross BSDFs. - [x] #120384 Implement thickness output behavior and options. - [x] #120866 Add direct/indirect light clamping options & consistency. ### Light - [x] Efficient Light culling - [x] Arbitrary light count ### Shadows - [x] #104472 Virtual Shadow mapping - [x] #111809 Shadow tracing - [x] #118220 PCF shadows (#113839) - [x] #120620 ~~Make a decision if we want to keep shadow pass monochromatic or colored.~~ Postponed until we have shadow catchers. ### Render Passes - [x] Render Passes - [x] #99390 Cryptomatte - [x] Transparent Pass ### Global Illumination - [x] #105673 Screen Space Effects - [x] #105643 Volume Probe - [x] #118725 Volume probe sample location change - [x] #105649 Cubemap Probe - [x] #112966 Planar Capture - [x] #114279 Disable deferred compilation lookdev world ### Volumetric - [x] #114062 Remove distant lighting - [x] #119734 Add versioning code to migrate world volume to volume object. ### Performance - [x] Deferred Lighting Optimization - [x] #118385 Add specialization constants for Film Accumulation - [x] #118198 Shadow Rendering Improvements - [x] #112979 Horizon Based Global Illumination - [x] #114597 Profiling and optimizations for iGPUs ### UI - [x] Rename Lightprobe Types - [x] Add presets to raytracing panel - [x] #113971 Review Material options panel - [x] Expose thickness output socket - [x] #120691 #120616 #120732 UI pass on panels
Clément Foucault self-assigned this 2021-11-19 18:41:26 +01:00
Author
Member

Changed status from 'Needs Triage' to: 'Confirmed'

Changed status from 'Needs Triage' to: 'Confirmed'
Author
Member

Added subscriber: @fclem

Added subscriber: @fclem
Member

Added subscriber: @EAW

Added subscriber: @EAW

Added subscriber: @lsscpp

Added subscriber: @lsscpp

Added subscriber: @geocentric_wage

Added subscriber: @geocentric_wage
Contributor

Added subscriber: @Rawalanche

Added subscriber: @Rawalanche
Contributor

Is this: https://developer.blender.org/T68478 really missing from the list or is it part of some other feature in the list?

I am asking because lack of almost any feature in this list is nowhere near as big of a pain point as the fact currently, when using any HDRI lighting, users have to keep two separate lighting setups for Eevee and Cycles, and also spend substantial amount of time creating Eevee HDRI light ligth based on rough calibration by the Cycles reference. Then, every time when switching between Eevee and Cycles, the user has to either swap the light rigs, or use the less physically based (with scene lights in place of HDRI hotspots) Eevee light right also with Cycles.

Furthermore, majority of users do not even posses the skill and knowledge to pull off an Eevee HDRI light rig that's at least remotely closer to correct HDRI illumination. Aside from getting the light intensities, colors and radii right, one also has to do numerous hacks with ray switching in world shader to ensure that directly visible environment is unclamped for tone mapping and bloom to work correctly, while at the same time making sure that diffuse contribution of the world shader is clamped so that the light is not doubled.

Solving this issue would significantly improve both Eevee workflow as well as image quality produced by users to average skill level, since diffuse illumination from HDRIs would not longer be extremely incorrect.

Unless the Ray Tracing section of this list includes diffuse illumination from the world shader with HDRI texture support, then even if every single feature on this list would be completed, most users would still produce images of significantly degraded quality unless they posses the quite advanced knowledge to work around it described above.

Is this: https://developer.blender.org/T68478 really missing from the list or is it part of some other feature in the list? I am asking because lack of almost any feature in this list is nowhere near as big of a pain point as the fact currently, when using any HDRI lighting, users have to keep two separate lighting setups for Eevee and Cycles, and also spend substantial amount of time creating Eevee HDRI light ligth based on rough calibration by the Cycles reference. Then, every time when switching between Eevee and Cycles, the user has to either swap the light rigs, or use the less physically based (with scene lights in place of HDRI hotspots) Eevee light right also with Cycles. Furthermore, majority of users do not even posses the skill and knowledge to pull off an Eevee HDRI light rig that's at least remotely closer to correct HDRI illumination. Aside from getting the light intensities, colors and radii right, one also has to do numerous hacks with ray switching in world shader to ensure that directly visible environment is unclamped for tone mapping and bloom to work correctly, while at the same time making sure that diffuse contribution of the world shader is clamped so that the light is not doubled. Solving this issue would significantly improve both Eevee workflow as well as image quality produced by users to average skill level, since diffuse illumination from HDRIs would not longer be extremely incorrect. Unless the Ray Tracing section of this list includes diffuse illumination from the world shader with HDRI texture support, then even if every single feature on this list would be completed, most users would still produce images of significantly degraded quality unless they posses the quite advanced knowledge to work around it described above.
Author
Member

@Rawalanche I will add it to the list of features that may be tackled after the rewrite. I would not consider it a blocker since it is a new feature and is not fundamentally a missing part of the pipeline.

The Raytracing changes does improve this use case but still introduce too much noise. So I think sun light extraction is still a needed feature.

@Rawalanche I will add it to the list of features that may be tackled after the rewrite. I would not consider it a blocker since it is a new feature and is not fundamentally a missing part of the pipeline. The Raytracing changes does improve this use case but still introduce too much noise. So I think sun light extraction is still a needed feature.

Added subscriber: @TheRedWaxPolice

Added subscriber: @TheRedWaxPolice

Added subscriber: @PhlixFer

Added subscriber: @PhlixFer

Added subscriber: @JohnCox-3

Added subscriber: @JohnCox-3

Added subscriber: @AlexeyAdamitsky

Added subscriber: @AlexeyAdamitsky

Added subscriber: @Jaydead

Added subscriber: @Jaydead

Added subscriber: @dabuxian

Added subscriber: @dabuxian

Added subscriber: @sbchild

Added subscriber: @sbchild

Added subscriber: @s12a

Added subscriber: @s12a

Added subscriber: @SergeyHerr

Added subscriber: @SergeyHerr

Added subscriber: @mavek

Added subscriber: @mavek

Added subscriber: @Baga-4

Added subscriber: @Baga-4

Added subscriber: @dodo-2

Added subscriber: @dodo-2

Added subscriber: @ThomasToo

Added subscriber: @ThomasToo

This comment was removed by @ThomasToo

*This comment was removed by @ThomasToo*
Member

Added subscriber: @Jeroen-Bakker

Added subscriber: @Jeroen-Bakker

Added subscriber: @AndyCuccaro

Added subscriber: @AndyCuccaro

Added subscriber: @AD_Blend-69420

Added subscriber: @AD_Blend-69420

Added subscriber: @ThomasDinges

Added subscriber: @ThomasDinges

Added subscriber: @JacobMerrill-1

Added subscriber: @JacobMerrill-1

Added subscriber: @frogstomp-4

Added subscriber: @frogstomp-4
Contributor

Added subscriber: @RedMser

Added subscriber: @RedMser

Added subscriber: @Caden-Mitchell

Added subscriber: @Caden-Mitchell

This comment was removed by @JacobMerrill-1

*This comment was removed by @JacobMerrill-1*
Contributor

Added subscriber: @Eary

Added subscriber: @Eary

This comment was removed by @JacobMerrill-1

*This comment was removed by @JacobMerrill-1*

Moderation note This is not the proper place for user feedback or feature requests. Please check this for appropriate places: https://wiki.blender.org/wiki/Communication/Contact#User_Feedback_and_Requests

**Moderation note** This is not the proper place for user feedback or feature requests. Please check this for appropriate places: https://wiki.blender.org/wiki/Communication/Contact#User_Feedback_and_Requests

Added subscriber: @Low_Polygon42

Added subscriber: @Low_Polygon42

Added subscriber: @GeorgiaPacific

Added subscriber: @GeorgiaPacific

Added subscriber: @Blendork

Added subscriber: @Blendork

Added subscriber: @browneggz

Added subscriber: @browneggz

Added subscriber: @2905710881

Added subscriber: @2905710881

This comment was removed by @2905710881

*This comment was removed by @2905710881*

Added subscriber: @viadvena

Added subscriber: @viadvena

Added subscriber: @Georgefly

Added subscriber: @Georgefly

Added subscriber: @EvertonSchneider

Added subscriber: @EvertonSchneider

Added subscriber: @Prodeous

Added subscriber: @Prodeous

Added subscriber: @Yuro

Added subscriber: @Yuro

Added subscriber: @winnertakesteve-1

Added subscriber: @winnertakesteve-1

Added subscriber: @pixeltrain3d

Added subscriber: @pixeltrain3d

Added subscriber: @Defka

Added subscriber: @Defka

Added subscriber: @Zeirus

Added subscriber: @Zeirus

This comment was removed by @dodo-2

*This comment was removed by @dodo-2*

This comment was removed by @dodo-2

*This comment was removed by @dodo-2*

Added subscriber: @TheCrowdedOne

Added subscriber: @TheCrowdedOne

Added subscriber: @ephraimpauli

Added subscriber: @ephraimpauli

Added subscriber: @blenderrocket

Added subscriber: @blenderrocket

Added subscriber: @2046411367

Added subscriber: @2046411367

Added subscriber: @homeworker

Added subscriber: @homeworker

Added subscriber: @Confabulatori

Added subscriber: @Confabulatori

This comment was removed by @2905710881

*This comment was removed by @2905710881*

Again, please don't use this task for feature requests or user questions! There are other channels for this: https://wiki.blender.org/wiki/Communication/Contact#User_Feedback_and_Requests

Again, please don't use this task for feature requests or user questions! There are other channels for this: https://wiki.blender.org/wiki/Communication/Contact#User_Feedback_and_Requests

This comment was removed by @dodo-2

*This comment was removed by @dodo-2*

Added subscriber: @bent

Added subscriber: @bent

Added subscriber: @Festivity

Added subscriber: @Festivity

Added subscriber: @VDC

Added subscriber: @VDC

Added subscriber: @Motiomancer

Added subscriber: @Motiomancer

Added subscriber: @SteffenD

Added subscriber: @SteffenD

This comment was removed by @TheCrowdedOne

*This comment was removed by @TheCrowdedOne*

This comment was removed by @dodo-2

*This comment was removed by @dodo-2*

Added subscriber: @Guilherme-Emerich-Setubal

Added subscriber: @Guilherme-Emerich-Setubal

Added subscriber: @LouisLithium

Added subscriber: @LouisLithium

Added subscriber: @matthewg.3d

Added subscriber: @matthewg.3d

Added subscriber: @set9

Added subscriber: @set9

Added subscriber: @Dangry

Added subscriber: @Dangry

Added subscriber: @iloveyehan

Added subscriber: @iloveyehan

This comment was removed by @JacobMerrill-1

*This comment was removed by @JacobMerrill-1*

Added subscriber: @fanny

Added subscriber: @fanny

Added subscriber: @leomid

Added subscriber: @leomid
Member

Added subscriber: @Imaginer

Added subscriber: @Imaginer

Added subscriber: @maylog

Added subscriber: @maylog

Added subscriber: @Eliot-Mack

Added subscriber: @Eliot-Mack

This comment was removed by @JacobMerrill-1

*This comment was removed by @JacobMerrill-1*

Added subscriber: @Steve-Hanff

Added subscriber: @Steve-Hanff

Added subscriber: @Garek

Added subscriber: @Garek

Added subscriber: @RomanKuz-4

Added subscriber: @RomanKuz-4

Added subscriber: @DuarteRamos

Added subscriber: @DuarteRamos

Added subscriber: @ShyDugong

Added subscriber: @ShyDugong

Added subscriber: @Emi_Martinez

Added subscriber: @Emi_Martinez

Added subscriber: @StojoArt

Added subscriber: @StojoArt

Added subscriber: @lictex_1

Added subscriber: @lictex_1

Added subscriber: @nlate

Added subscriber: @nlate

Added subscriber: @Mounir

Added subscriber: @Mounir

Added subscriber: @ClinToch

Added subscriber: @ClinToch

This comment was removed by @ClinToch

*This comment was removed by @ClinToch*

This comment was removed by @dodo-2

*This comment was removed by @dodo-2*

Added subscriber: @dvi

Added subscriber: @dvi

This comment was removed by @dvi

*This comment was removed by @dvi*

This comment was removed by @Defka

*This comment was removed by @Defka*

This comment was removed by @dvi

*This comment was removed by @dvi*

Please keep this task on topic! This task is for developers and should focus on code design and review. Please refrain from further user questions, including asking for a build, asking for a merge ETA, examples, comparison with other software and so on... It is also too early for bug reports. Thank you for your understanding.

Please keep this task on topic! This task is for developers and should focus on code design and review. Please refrain from further user questions, including asking for a build, asking for a merge ETA, examples, comparison with other software and so on... It is also too early for bug reports. Thank you for your understanding.

Added subscriber: @brurpo

Added subscriber: @brurpo

Added subscriber: @cmzw

Added subscriber: @cmzw

Added subscriber: @Aiden-McKown

Added subscriber: @Aiden-McKown

This comment was removed by @dvi

*This comment was removed by @dvi*

This comment was removed by @Low_Polygon42

*This comment was removed by @Low_Polygon42*

This comment was removed by @dvi

*This comment was removed by @dvi*

Added subscriber: @AditiaA.Pratama

Added subscriber: @AditiaA.Pratama

This comment was removed by @AD_Blend-69420

*This comment was removed by @AD_Blend-69420*

This comment was removed by @dvi

*This comment was removed by @dvi*

Added subscriber: @brecht

Added subscriber: @brecht

Added subscriber: @zNight

Added subscriber: @zNight

This comment was removed by @dodo-2

*This comment was removed by @dodo-2*

This comment was removed by @ThomasDinges

*This comment was removed by @ThomasDinges*

This comment was removed by @dvi

*This comment was removed by @dvi*

Like any other online platform, there are rules here as well. I explained this several times before. One again:
Please keep this task on topic! This task is for developers and should focus on code design and review. Please refrain from further user questions, including asking for a build, asking for a merge ETA, examples, comparison with other software and so on... It is also too early for bug reports. Thank you for your understanding.

Or in more simple words: If you are not a developer, working on the EEVEE rewrite, this is NOT the right place for comments.

Please help to keep this platform clean for developers and use places like blenderartists for user discussions. Thanks.

Like any other online platform, there are rules here as well. I explained this several times before. One again: `Please keep this task on topic! This task is for developers and should focus on code design and review. Please refrain from further user questions, including asking for a build, asking for a merge ETA, examples, comparison with other software and so on... It is also too early for bug reports. Thank you for your understanding.` Or in more simple words: If you are not a developer, working on the EEVEE rewrite, this is NOT the right place for comments. Please help to keep this platform clean for developers and use places like blenderartists for user discussions. Thanks.

This comment was removed by @dodo-2

*This comment was removed by @dodo-2*

Added subscriber: @Stat_Headcrabed

Added subscriber: @Stat_Headcrabed

Added subscriber: @AM-1

Added subscriber: @AM-1

Added subscriber: @johannes.wilde

Added subscriber: @johannes.wilde

Added subscriber: @Fynn-Ribbeck

Added subscriber: @Fynn-Ribbeck

Added subscriber: @Olliver

Added subscriber: @Olliver

This comment was removed by @Olliver

*This comment was removed by @Olliver*

Added subscriber: @EvaVomhoff

Added subscriber: @EvaVomhoff

This comment was removed by @TheCrowdedOne

*This comment was removed by @TheCrowdedOne*

This comment was removed by @Caden-Mitchell

*This comment was removed by @Caden-Mitchell*

Added subscriber: @hzuika

Added subscriber: @hzuika
Author
Member

An update is long overdue.

This task has accumulated many delay due to multiple things.

The major reason is that during the middle of the rewrite, I was facing major technical difficulty caused by limitations from our GL 3.3 requirement. So at some point I took the decision to make use of more modern techniques and drop support from older hardware. We are aiming to require GL 4.3 capable hardware in the near future. However this means that we cannot rely on the GL implementation on Apple computers. So I had to sidetrack to another project to make sure that shaders will be compatible with Vulkan and Metal (D13360).

Comming back to the rewrite I had to redo many things a second time to use the more modern way to do things. This was needed for performance reasons.

But with all the added delay and without much real testing possible (because of feature incompleteness and plethora of TODOs) it was starting to feel like a never ending project. So we decided to start pushing the developpement into master in an attempt to guide the developpement using feedback from the Blender Studio. The new implementation is hidden under a new experimental option (59f53f5802). My goal with this is to merge the eevee-rewrite branch into master bit by bit making sure each feature is polished. The GPU module changes needed are already in master.

I'll resume my weekly reports on my [wiki section ]] for the week to week updates. For important milestones and feedback, I created [ https:*devtalk.blender.org/t/eevee-next/23570 | this topic on devtalk .

I would like to thank everyone who showed interest in this task.

An update is long overdue. This task has accumulated many delay due to multiple things. The major reason is that during the middle of the rewrite, I was facing major technical difficulty caused by limitations from our GL 3.3 requirement. So at some point I took the decision to make use of more modern techniques and drop support from older hardware. We are aiming to require GL 4.3 capable hardware in the near future. However this means that we cannot rely on the GL implementation on Apple computers. So I had to sidetrack to another project to make sure that shaders will be compatible with Vulkan and Metal ([D13360](https://archive.blender.org/developer/D13360)). Comming back to the rewrite I had to redo many things a second time to use the more modern way to do things. This was needed for performance reasons. But with all the added delay and without much real testing possible (because of feature incompleteness and plethora of TODOs) it was starting to feel like a never ending project. So we decided to start pushing the developpement into `master` in an attempt to guide the developpement using feedback from the Blender Studio. The new implementation is hidden under a new experimental option (59f53f5802). My goal with this is to merge the `eevee-rewrite` branch into master bit by bit making sure each feature is polished. The GPU module changes needed are already in master. I'll resume my weekly reports on my [wiki section ]] for the week to week updates. For important milestones and feedback, I created [[ https:*devtalk.blender.org/t/eevee-next/23570 | this topic on devtalk ](https:*wiki.blender.org/wiki/User:Hypersomniac#Weekly_Reports). I would like to thank everyone who showed interest in this task.
Member

Added subscriber: @Alaska

Added subscriber: @Alaska
Contributor

In #93220#1327240, @fclem wrote:
The major reason is that during the middle of the rewrite, I was facing major technical difficulty caused by limitations from our GL 3.3 requirement. So at some point I took the decision to make use of more modern techniques and drop support from older hardware. We are aiming to require GL 4.3 capable hardware in the near future. However this means that we cannot rely on the GL implementation on Apple computers. So I had to sidetrack to another project to make sure that shaders will be compatible with Vulkan and Metal (D13360).

Possibly a dumb question, but if Apple support means having to sidetrack to support Vulkan and Metal, why not just use Vulkan as the base for all platforms instead of GL 4.3? Or did I misunderstand something?

> In #93220#1327240, @fclem wrote: > The major reason is that during the middle of the rewrite, I was facing major technical difficulty caused by limitations from our GL 3.3 requirement. So at some point I took the decision to make use of more modern techniques and drop support from older hardware. We are aiming to require GL 4.3 capable hardware in the near future. However this means that we cannot rely on the GL implementation on Apple computers. So I had to sidetrack to another project to make sure that shaders will be compatible with Vulkan and Metal ([D13360](https://archive.blender.org/developer/D13360)). Possibly a dumb question, but if Apple support means having to sidetrack to support Vulkan and Metal, why not just use Vulkan as the base for all platforms instead of GL 4.3? Or did I misunderstand something?
Member

@Rawalanche having shader syntax compatible with vulkan is an important step into this direction. Having a production ready fully working vulkan backend takes (a lot) more time. Bumping the version to OpenGL 4.3 would make it easier to transition to vulkan.

@Rawalanche having shader syntax compatible with vulkan is an important step into this direction. Having a production ready fully working vulkan backend takes (a lot) more time. Bumping the version to OpenGL 4.3 would make it easier to transition to vulkan.
Contributor

In #93220#1327526, @Jeroen-Bakker wrote:
@Rawalanche having shader syntax compatible with vulkan is an important step into this direction. Having a production ready fully working vulkan backend takes (a lot) more time. Bumping the version to OpenGL 4.3 would make it easier to transition to vulkan.

I see. I did not know upgrading GL version is/could be just intermediate step on the road to Vulkan backend. That's why I asked :)

> In #93220#1327526, @Jeroen-Bakker wrote: > @Rawalanche having shader syntax compatible with vulkan is an important step into this direction. Having a production ready fully working vulkan backend takes (a lot) more time. Bumping the version to OpenGL 4.3 would make it easier to transition to vulkan. I see. I did not know upgrading GL version is/could be just intermediate step on the road to Vulkan backend. That's why I asked :)

Added subscriber: @insideitall

Added subscriber: @insideitall

Thank you so much Clement, this was all I wanted! I wish you the best of luck with the project, I know nothing about program development but an eevee rewrite sounds like a lot of work. Also sorry Thomas for all the trouble, just wanted to thank Clement :D

Thank you so much Clement, this was all I wanted! I wish you the best of luck with the project, I know nothing about program development but an eevee rewrite sounds like a lot of work. Also sorry Thomas for all the trouble, just wanted to thank Clement :D

Added subscriber: @Sparazza

Added subscriber: @Sparazza

Added subscriber: @LasseFoster-2

Added subscriber: @LasseFoster-2

This comment was removed by @dodo-2

*This comment was removed by @dodo-2*

Removed subscriber: @AM-1

Removed subscriber: @AM-1

This comment was removed by @JacobMerrill-1

*This comment was removed by @JacobMerrill-1*

This comment was removed by @dodo-2

*This comment was removed by @dodo-2*

Added subscriber: @Zelo101

Added subscriber: @Zelo101

Added subscriber: @GaryRitchie

Added subscriber: @GaryRitchie

Added subscriber: @SamGreen

Added subscriber: @SamGreen

Added subscriber: @Macilvoy

Added subscriber: @Macilvoy

Added subscriber: @TroyAC

Added subscriber: @TroyAC

This comment was removed by @TroyAC

*This comment was removed by @TroyAC*

Added subscriber: @Sean-Boyle

Added subscriber: @Sean-Boyle

Added subscriber: @MrAlwis

Added subscriber: @MrAlwis

Removed subscriber: @StojoArt

Removed subscriber: @StojoArt

Added subscriber: @vegetablescum

Added subscriber: @vegetablescum

This comment was removed by @vegetablescum

*This comment was removed by @vegetablescum*
Member

Added subscriber: @zanqdo

Added subscriber: @zanqdo

Added subscriber: @Hannah-Umit

Added subscriber: @Hannah-Umit

Added subscriber: @mod_moder

Added subscriber: @mod_moder

Added subscriber: @finalflasher

Added subscriber: @finalflasher

Added subscriber: @RobertWesseling

Added subscriber: @RobertWesseling

Removed subscriber: @Sean-Boyle

Removed subscriber: @Sean-Boyle

Added subscriber: @hipda

Added subscriber: @hipda

This comment was removed by @hipda

*This comment was removed by @hipda*

Added subscriber: @osayami

Added subscriber: @osayami

Removed subscriber: @bent

Removed subscriber: @bent

Added subscriber: @Striletsky

Added subscriber: @Striletsky

This comment was removed by @dodo-2

*This comment was removed by @dodo-2*

Added subscriber: @NEEO

Added subscriber: @NEEO

Added subscriber: @Soichi-Sugano

Added subscriber: @Soichi-Sugano

Added subscriber: @hamza-el-barmaki

Added subscriber: @hamza-el-barmaki

This comment was removed by @hamza-el-barmaki

*This comment was removed by @hamza-el-barmaki*

Added subscriber: @satishgoda1

Added subscriber: @satishgoda1

Added subscriber: @baybaypras

Added subscriber: @baybaypras

Added subscriber: @Spundun-Bhatt

Added subscriber: @Spundun-Bhatt

Added subscriber: @Benni-Merz

Added subscriber: @Benni-Merz

Added subscriber: @DARRINALDER

Added subscriber: @DARRINALDER

Added subscriber: @Horizon42

Added subscriber: @Horizon42
Member

Added subscriber: @zhanghua

Added subscriber: @zhanghua

Removed subscriber: @Low_Polygon42

Removed subscriber: @Low_Polygon42

Added subscriber: @Joe_W

Added subscriber: @Joe_W

Added subscriber: @Yacine-Teach

Added subscriber: @Yacine-Teach

Added subscriber: @Nik-9

Added subscriber: @Nik-9

Added subscriber: @Basarchitects

Added subscriber: @Basarchitects

Added subscriber: @digital0785

Added subscriber: @digital0785

Added subscriber: @intracube

Added subscriber: @intracube

Added subscriber: @Cigitia

Added subscriber: @Cigitia

Added subscriber: @Asger

Added subscriber: @Asger

Added subscriber: @jpburns

Added subscriber: @jpburns

Added subscriber: @Austin-Berenyi

Added subscriber: @Austin-Berenyi

Added subscriber: @SpectreFirst

Added subscriber: @SpectreFirst

Added subscriber: @Nico-Traber

Added subscriber: @Nico-Traber

Added subscriber: @Strike_Digital

Added subscriber: @Strike_Digital

Added subscriber: @cueqzapper

Added subscriber: @cueqzapper

Added subscriber: @Nabarun

Added subscriber: @Nabarun

Added subscriber: @Jarrett-Johnson

Added subscriber: @Jarrett-Johnson

Added subscriber: @JanErik

Added subscriber: @JanErik

Added subscriber: @heini

Added subscriber: @heini

Added subscriber: @julien.hondaa

Added subscriber: @julien.hondaa
Clément Foucault added this to the EEVEE & Viewport project 2023-02-08 15:03:33 +01:00
Clément Foucault changed title from EEVEE rewrite to EEVEE-Next 2023-02-08 15:03:49 +01:00
Clément Foucault removed the
Interest
EEVEE & Viewport
label 2023-02-09 01:18:39 +01:00
Brecht Van Lommel added
Type
To Do
and removed
Priority
Normal
Status
Confirmed
Type
Report
labels 2023-06-14 13:11:41 +02:00

Hey, sorry to bother but I thought this was the right place to ask: is Light Linking planned to release with Eevee Next, too? I have searched for it on the web but I haven't found any answer, thus my question. Thanks!

Hey, sorry to bother but I thought this was the right place to ask: is Light Linking planned to release with Eevee Next, too? I have searched for it on the web but I haven't found any answer, thus my question. Thanks!
Author
Member

@jimix85 No, light linking isn't planned to be implemented in EEVEE-Next first release and isn't listed here. It might be implemented at some point but I can't say when. But it is already implemented for Cycles and planned for the 4.0 release.

I deleted @dodo-2 's comment to avoid confusion.

Also these general questions are more suited toward https://devtalk.blender.org/ or https://blender.chat/ . This is a coordination task.

@jimix85 No, light linking isn't planned to be implemented in EEVEE-Next first release and isn't listed here. It might be implemented at some point but I can't say when. But it is already implemented for Cycles and planned for the 4.0 release. I deleted @dodo-2 's comment to avoid confusion. Also these general questions are more suited toward https://devtalk.blender.org/ or https://blender.chat/ . This is a coordination task.
Clément Foucault added the
Interest
EEVEE
label 2023-10-02 12:54:29 +02:00

Are there any plans to expose a setting to choose the number of screen space ray samples per pixel? Could help with removing noise from the SSGI result in situations where it's very noisy but is the only thing which is noisy in the render, to avoid increasing the sample count for the entire render. Could offer faster render times in such situations.

Similarly, is there some kind of interval value for the radius of "spatial reuse"? And is this something we could potentially adjust as well?

Are there any plans to expose a setting to choose the number of screen space ray samples per pixel? Could help with removing noise from the SSGI result in situations where it's very noisy but is the only thing which is noisy in the render, to avoid increasing the sample count for the entire render. Could offer faster render times in such situations. Similarly, is there some kind of interval value for the radius of "spatial reuse"? And is this something we could potentially adjust as well?

I have noticed a regression from the legacy EEVEE, and some other problems related to the implementation, not bugs.

  1. VSM versus the previous CSM+Jitter:
    VSM, aside from the alpha-state-related bugs, has a lack of necessary features such as:
  • The jittering approach used in legacy EEVEE effectively has infinite layers of shadow casters calculated, as for each random point on the light source, it re-calculates the shadow map. On the other hand, EEVEE next's VSM lacks multi-layer shadow casters, leading to light leaks with too soft light sources.
    An example here:
    Cycles for reference:
    image
    EEVEE Next:
    image
    EEVEE Legacy:
    image
    As can be seen, there is a light leakage in the shadow of the pot.

  • The examples above also show another problem, which is related to the type of filter used for the shadows. I didn't look at the code, but it seems like a Gaussian kernel weight rather than a poisson disk shape - which is the physically correct shape for a light source like the sun and most other light sources. Also, the filtered results appear to be blended with the unfiltered results, leaving an unnatural penumbra and a lot of jaggies in some scenes.

  1. The Hi-Z implementation seems to use the mipmaps of the back buffer to reduce performance impact in rough reflections depending on the ray length. While it helps a lot with rough reflections and GI, it doesn't make sense to use it in mirror-like and almost-mirror-like surfaces.
    The example here shows what I'm talking about:
    image
    This is with precision set to 1.0.
    image
    This one is with precision set to 0.85.
    The lower the precision goes, the faster it looks blocky when the ray length increases.

3- The SSRT implementation can have a better temporal accumulation and sampling. It never converges to an acceptable amount of noise:

  • The approach used to remove ghosting is too simple for such a noisy input. Using a 33 box filter for min-max or variance clamping always leads to severe energy loss, almost rendering the SSGI useless. Here's a comparison of TA on/off:
    Off:
    image
    On:
    image
    I'd suggest using a larger kernel and a better clipping/blending approach for history. My preferences are a 7
    7 kernel and an intersection with trivariate Gaussian ellipsoid instead of AABB (if AABB is the current approach), it has a very low energy loss in my experience and is also better at removing ghosting.
  • The bilateral filter doesn't seem to be really bilateral! but just a simple Gaussian blur.
  • Why the user has to enable spatial reuse to be able to use temporal accumulation? And why do they have to enable temporal accumulation to be able to enable the blur?

Btw, I can help with the SSGI denoiser if the team agrees that it needs improvements. I don't like to do something with 0 hope for it getting merged.

I have noticed a regression from the legacy EEVEE, and some other problems related to the implementation, not bugs. 1. **VSM versus the previous CSM+Jitter:** VSM, aside from the alpha-state-related bugs, has a lack of necessary features such as: - The jittering approach used in legacy EEVEE effectively has infinite layers of shadow casters calculated, as for each random point on the light source, it re-calculates the shadow map. On the other hand, EEVEE next's VSM lacks multi-layer shadow casters, leading to light leaks with too soft light sources. An example here: Cycles for reference: ![image](/attachments/c3e59c01-874a-4952-8eab-2fa823d0065e) EEVEE Next: ![image](/attachments/5889dce9-97b6-4a51-91d4-24a86b74e7f8) EEVEE Legacy: ![image](/attachments/dcf5408f-1477-4ecb-b893-fea47b200174) As can be seen, there is a light leakage in the shadow of the pot. - The examples above also show another problem, which is related to the type of filter used for the shadows. I didn't look at the code, but it seems like a Gaussian kernel weight rather than a poisson disk shape - which is the physically correct shape for a light source like the sun and most other light sources. Also, the filtered results appear to be blended with the unfiltered results, leaving an unnatural penumbra and a lot of jaggies in some scenes. 2. The Hi-Z implementation seems to use the mipmaps of the back buffer to reduce performance impact in rough reflections depending on the ray length. While it helps a lot with rough reflections and GI, it doesn't make sense to use it in mirror-like and almost-mirror-like surfaces. The example here shows what I'm talking about: ![image](/attachments/bc3df9d7-d74d-4b76-a347-d31061cdb80b) This is with precision set to 1.0. ![image](/attachments/2df1f995-8e05-4079-bf26-6cdd2af4590a) This one is with precision set to 0.85. The lower the precision goes, the faster it looks blocky when the ray length increases. 3- The SSRT implementation can have a better temporal accumulation and sampling. It never converges to an acceptable amount of noise: - The approach used to remove ghosting is too simple for such a noisy input. Using a 3*3 box filter for min-max or variance clamping always leads to severe energy loss, almost rendering the SSGI useless. Here's a comparison of TA on/off: Off: ![image](/attachments/732db28f-d274-4019-9fe2-ab7d32c6b91b) On: ![image](/attachments/d07ab71e-aa29-4b38-ae05-1e19c896f811) I'd suggest using a larger kernel and a better clipping/blending approach for history. My preferences are a 7*7 kernel and an intersection with trivariate Gaussian ellipsoid instead of AABB (if AABB is the current approach), it has a very low energy loss in my experience and is also better at removing ghosting. - The bilateral filter doesn't seem to be really bilateral! but just a simple Gaussian blur. - Why the user **has** to enable spatial reuse to be able to use temporal accumulation? And why do they *have* to enable temporal accumulation to be able to enable the blur? Btw, I can help with the SSGI denoiser if the team agrees that it needs improvements. I don't like to do something with 0 hope for it getting merged.

Please keep this task clean. For EEVEE Next feedback there is https://devtalk.blender.org/t/blender-4-1-eevee-next-feedback/31813. Feature requests and suggestions are for https://blender.community/c/rightclickselect/

Please keep this task clean. For EEVEE Next feedback there is https://devtalk.blender.org/t/blender-4-1-eevee-next-feedback/31813. Feature requests and suggestions are for https://blender.community/c/rightclickselect/
Author
Member

@MJ.Ehsan I'm sorry I didn't see your comment when it was posted. The denoiser definitely needs more love but there is so many areas to improve already that any help is welcome. If you are interested in contributing you can join the #eevee-viewport-module channel on https://blender.chat/ .

@MJ.Ehsan I'm sorry I didn't see your comment when it was posted. The denoiser definitely needs more love but there is so many areas to improve already that any help is welcome. If you are interested in contributing you can join the `#eevee-viewport-module` channel on https://blender.chat/ .
Contributor

Shader to RGB is not fully supported with feature parity from EEVEE-Legacy yet. Refraction to Shader to RGB is missing.
#123017

Shader to RGB is not fully supported with feature parity from EEVEE-Legacy yet. Refraction to Shader to RGB is missing. https://projects.blender.org/blender/blender/issues/123017
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset System
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Asset Browser Project
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No Assignees
141 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#93220
No description provided.