EEVEE-Next #93220

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

This is a list of all the tasks planned for the future of EEVEE's codebase.
Due to a change in requirements, this rewrite is planned for after the metal backend has landed in master.

The initial release of EEVEE-Next is currently planned for the 4.1 release. Additional features will be added throughout the lifetime of the 4 series.

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, refraction and volume shader.
  • 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.

Light

  • Efficient Light culling
  • Arbitrary light count

Shadows

Render Passes

  • Render Passes
  • #99390 Cryptomatte
  • Transparent Pass
  • Remove Shadow Pass

Global Illumination

Volumetric

Performance

  • Shadow Rendering Improvements
  • Deferred Lighting Optimization
  • #112979 Horizon Based Global Illumination
  • Resolution Scaling

UI

  • Rename Lightprobe Types
  • Add presets to raytracing panel
  • #113971 Review Material options panel
  • Expose thickness output socket

Python API

Extended target

This is a list of all the tasks planned for the future of EEVEE's codebase. Due to a change in requirements, this rewrite is planned for after the metal backend has landed in master. The initial release of EEVEE-Next is currently planned for the 4.1 release. Additional features will be added throughout the lifetime of the 4 series. 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, refraction and volume shader. - **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. ### Light - [x] Efficient Light culling - [x] Arbitrary light count ### Shadows - [x] #104472 Virtual Shadow mapping - [x] #111809 Shadow tracing ### Render Passes - [x] Render Passes - [x] #99390 Cryptomatte - [x] Transparent Pass - [ ] Remove Shadow Pass ### Global Illumination - [x] #105673 Screen Space Effects - [ ] #105643 Volume Probe - [ ] #105649 Cubemap Probe - [ ] #112966 Planar Capture - [x] #114279 Disable deferred compilation lookdev world ### Volumetric - [ ] #105672 Volume Rendering - [x] #114062 Remove distant lighting ### Performance - [ ] Shadow Rendering Improvements - [ ] Deferred Lighting Optimization - [ ] #112979 Horizon Based Global Illumination - [ ] Resolution Scaling ### UI - [ ] Rename Lightprobe Types - [ ] Add presets to raytracing panel - [x] #113971 Review Material options panel - [x] Expose thickness output socket ### Python API - [ ] #113976 Cleanup API ### Extended target - [D9792: [WIP] Eevee: Parallax Occlusion Mapping from Displacement Output](https://archive.blender.org/developer/D9792) - Panoramic camera support. - Depth Of Field for panoramic camera. - Grease Pencil Geometry support. - Add Refractive Material simplification option to transparent BSDF.
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
First-time contributor

Added subscriber: @lsscpp

Added subscriber: @lsscpp
First-time contributor

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.
First-time contributor

Added subscriber: @TheRedWaxPolice

Added subscriber: @TheRedWaxPolice
First-time contributor

Added subscriber: @PhlixFer

Added subscriber: @PhlixFer
First-time contributor

Added subscriber: @JohnCox-3

Added subscriber: @JohnCox-3
First-time contributor

Added subscriber: @AlexeyAdamitsky

Added subscriber: @AlexeyAdamitsky
First-time contributor

Added subscriber: @Jaydead

Added subscriber: @Jaydead
First-time contributor

Added subscriber: @dabuxian

Added subscriber: @dabuxian
First-time contributor

Added subscriber: @sbchild

Added subscriber: @sbchild
First-time contributor

Added subscriber: @s12a

Added subscriber: @s12a
First-time contributor

Added subscriber: @SergeyHerr

Added subscriber: @SergeyHerr
First-time contributor

Added subscriber: @mavek

Added subscriber: @mavek
First-time contributor

Added subscriber: @Baga-4

Added subscriber: @Baga-4
First-time contributor

Added subscriber: @dodo-2

Added subscriber: @dodo-2
First-time contributor

Added subscriber: @ThomasToo

Added subscriber: @ThomasToo
First-time contributor

This comment was removed by @ThomasToo

*This comment was removed by @ThomasToo*
Member

Added subscriber: @Jeroen-Bakker

Added subscriber: @Jeroen-Bakker
First-time contributor

Added subscriber: @AndyCuccaro

Added subscriber: @AndyCuccaro
First-time contributor

Added subscriber: @AD_Blend-69420

Added subscriber: @AD_Blend-69420

Added subscriber: @ThomasDinges

Added subscriber: @ThomasDinges
First-time contributor

Added subscriber: @JacobMerrill-1

Added subscriber: @JacobMerrill-1
First-time contributor

Added subscriber: @frogstomp-4

Added subscriber: @frogstomp-4
Contributor

Added subscriber: @RedMser

Added subscriber: @RedMser
First-time contributor

Added subscriber: @Caden-Mitchell

Added subscriber: @Caden-Mitchell
First-time contributor

This comment was removed by @JacobMerrill-1

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

Added subscriber: @Eary

Added subscriber: @Eary
First-time contributor

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
First-time contributor

Added subscriber: @Low_Polygon42

Added subscriber: @Low_Polygon42
First-time contributor

Added subscriber: @GeorgiaPacific

Added subscriber: @GeorgiaPacific
First-time contributor

Added subscriber: @Blendork

Added subscriber: @Blendork
First-time contributor

Added subscriber: @browneggz

Added subscriber: @browneggz
First-time contributor

Added subscriber: @2905710881

Added subscriber: @2905710881
First-time contributor

This comment was removed by @2905710881

*This comment was removed by @2905710881*
First-time contributor

Added subscriber: @viadvena

Added subscriber: @viadvena
First-time contributor

Added subscriber: @Georgefly

Added subscriber: @Georgefly
First-time contributor

Added subscriber: @EvertonSchneider

Added subscriber: @EvertonSchneider
First-time contributor

Added subscriber: @Prodeous

Added subscriber: @Prodeous
First-time contributor

Added subscriber: @Yuro

Added subscriber: @Yuro
First-time contributor

Added subscriber: @winnertakesteve-1

Added subscriber: @winnertakesteve-1
First-time contributor

Added subscriber: @pixeltrain3d

Added subscriber: @pixeltrain3d
First-time contributor

Added subscriber: @Defka

Added subscriber: @Defka
First-time contributor

Added subscriber: @Zeirus

Added subscriber: @Zeirus
First-time contributor

This comment was removed by @dodo-2

*This comment was removed by @dodo-2*
First-time contributor

This comment was removed by @dodo-2

*This comment was removed by @dodo-2*
First-time contributor

Added subscriber: @TheCrowdedOne

Added subscriber: @TheCrowdedOne
First-time contributor

Added subscriber: @ephraimpauli

Added subscriber: @ephraimpauli
First-time contributor

Added subscriber: @blenderrocket

Added subscriber: @blenderrocket
First-time contributor

Added subscriber: @2046411367

Added subscriber: @2046411367
First-time contributor

Added subscriber: @homeworker

Added subscriber: @homeworker
First-time contributor

Added subscriber: @Confabulatori

Added subscriber: @Confabulatori
First-time contributor

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
First-time contributor

This comment was removed by @dodo-2

*This comment was removed by @dodo-2*
First-time contributor

Added subscriber: @bent

Added subscriber: @bent
First-time contributor

Added subscriber: @Festivity

Added subscriber: @Festivity
First-time contributor

Added subscriber: @VDC

Added subscriber: @VDC
First-time contributor

Added subscriber: @Motiomancer

Added subscriber: @Motiomancer
First-time contributor

Added subscriber: @SteffenD

Added subscriber: @SteffenD
First-time contributor

This comment was removed by @TheCrowdedOne

*This comment was removed by @TheCrowdedOne*
First-time contributor

This comment was removed by @dodo-2

*This comment was removed by @dodo-2*
First-time contributor

Added subscriber: @Guilherme-Emerich-Setubal

Added subscriber: @Guilherme-Emerich-Setubal
First-time contributor

Added subscriber: @LouisLithium

Added subscriber: @LouisLithium
First-time contributor

Added subscriber: @matthewg.3d

Added subscriber: @matthewg.3d
First-time contributor

Added subscriber: @set9

Added subscriber: @set9
First-time contributor

Added subscriber: @Dangry

Added subscriber: @Dangry
First-time contributor

Added subscriber: @iloveyehan

Added subscriber: @iloveyehan
First-time contributor

This comment was removed by @JacobMerrill-1

*This comment was removed by @JacobMerrill-1*
First-time contributor

Added subscriber: @fanny

Added subscriber: @fanny
First-time contributor

Added subscriber: @leomid

Added subscriber: @leomid
Member

Added subscriber: @Imaginer

Added subscriber: @Imaginer
First-time contributor

Added subscriber: @maylog

Added subscriber: @maylog
First-time contributor

Added subscriber: @Eliot-Mack

Added subscriber: @Eliot-Mack
First-time contributor

This comment was removed by @JacobMerrill-1

*This comment was removed by @JacobMerrill-1*
First-time contributor

Added subscriber: @Steve-Hanff

Added subscriber: @Steve-Hanff
First-time contributor

Added subscriber: @Garek

Added subscriber: @Garek
First-time contributor

Added subscriber: @RomanKuz-4

Added subscriber: @RomanKuz-4
First-time contributor

Added subscriber: @DuarteRamos

Added subscriber: @DuarteRamos
First-time contributor

Added subscriber: @ShyDugong

Added subscriber: @ShyDugong
First-time contributor

Added subscriber: @Emi_Martinez

Added subscriber: @Emi_Martinez
First-time contributor

Added subscriber: @StojoArt

Added subscriber: @StojoArt
First-time contributor

Added subscriber: @lictex_1

Added subscriber: @lictex_1
First-time contributor

Added subscriber: @nlate

Added subscriber: @nlate
First-time contributor

Added subscriber: @Mounir

Added subscriber: @Mounir
First-time contributor

Added subscriber: @ClinToch

Added subscriber: @ClinToch
First-time contributor

This comment was removed by @ClinToch

*This comment was removed by @ClinToch*
First-time contributor

This comment was removed by @dodo-2

*This comment was removed by @dodo-2*
First-time contributor

Added subscriber: @dvi

Added subscriber: @dvi
First-time contributor

This comment was removed by @dvi

*This comment was removed by @dvi*
First-time contributor

This comment was removed by @Defka

*This comment was removed by @Defka*
First-time contributor

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.
First-time contributor

Added subscriber: @brurpo

Added subscriber: @brurpo
First-time contributor

Added subscriber: @cmzw

Added subscriber: @cmzw
First-time contributor

Added subscriber: @Aiden-McKown

Added subscriber: @Aiden-McKown
First-time contributor

This comment was removed by @dvi

*This comment was removed by @dvi*
First-time contributor

This comment was removed by @Low_Polygon42

*This comment was removed by @Low_Polygon42*
First-time contributor

This comment was removed by @dvi

*This comment was removed by @dvi*

Added subscriber: @AditiaA.Pratama

Added subscriber: @AditiaA.Pratama
First-time contributor

This comment was removed by @AD_Blend-69420

*This comment was removed by @AD_Blend-69420*
First-time contributor

This comment was removed by @dvi

*This comment was removed by @dvi*

Added subscriber: @brecht

Added subscriber: @brecht
First-time contributor

Added subscriber: @zNight

Added subscriber: @zNight
First-time contributor

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*
First-time contributor

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.
First-time contributor

This comment was removed by @dodo-2

*This comment was removed by @dodo-2*
First-time contributor

Added subscriber: @Stat_Headcrabed

Added subscriber: @Stat_Headcrabed
First-time contributor

Added subscriber: @AM-1

Added subscriber: @AM-1
First-time contributor

Added subscriber: @johannes.wilde

Added subscriber: @johannes.wilde
First-time contributor

Added subscriber: @Fynn-Ribbeck

Added subscriber: @Fynn-Ribbeck
First-time contributor

Added subscriber: @Olliver

Added subscriber: @Olliver
First-time contributor

This comment was removed by @Olliver

*This comment was removed by @Olliver*
First-time contributor

Added subscriber: @EvaVomhoff

Added subscriber: @EvaVomhoff
First-time contributor

This comment was removed by @TheCrowdedOne

*This comment was removed by @TheCrowdedOne*
First-time contributor

This comment was removed by @Caden-Mitchell

*This comment was removed by @Caden-Mitchell*
First-time contributor

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 :)
First-time contributor

Added subscriber: @insideitall

Added subscriber: @insideitall
First-time contributor

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
First-time contributor

Added subscriber: @Sparazza

Added subscriber: @Sparazza
First-time contributor

Added subscriber: @LasseFoster-2

Added subscriber: @LasseFoster-2
First-time contributor

This comment was removed by @dodo-2

*This comment was removed by @dodo-2*
First-time contributor

Removed subscriber: @AM-1

Removed subscriber: @AM-1
First-time contributor

This comment was removed by @JacobMerrill-1

*This comment was removed by @JacobMerrill-1*
First-time contributor

This comment was removed by @dodo-2

*This comment was removed by @dodo-2*
First-time contributor

Added subscriber: @Zelo101

Added subscriber: @Zelo101
First-time contributor

Added subscriber: @GaryRitchie

Added subscriber: @GaryRitchie
First-time contributor

Added subscriber: @SamGreen

Added subscriber: @SamGreen
First-time contributor

Added subscriber: @Macilvoy

Added subscriber: @Macilvoy
First-time contributor

Added subscriber: @TroyAC

Added subscriber: @TroyAC
First-time contributor

This comment was removed by @TroyAC

*This comment was removed by @TroyAC*
First-time contributor

Added subscriber: @Sean-Boyle

Added subscriber: @Sean-Boyle
First-time contributor

Added subscriber: @MrAlwis

Added subscriber: @MrAlwis
First-time contributor

Removed subscriber: @StojoArt

Removed subscriber: @StojoArt
First-time contributor

Added subscriber: @vegetablescum

Added subscriber: @vegetablescum
First-time contributor

This comment was removed by @vegetablescum

*This comment was removed by @vegetablescum*
Member

Added subscriber: @zanqdo

Added subscriber: @zanqdo
First-time contributor

Added subscriber: @Hannah-Umit

Added subscriber: @Hannah-Umit

Added subscriber: @mod_moder

Added subscriber: @mod_moder
First-time contributor

Added subscriber: @finalflasher

Added subscriber: @finalflasher
First-time contributor

Added subscriber: @RobertWesseling

Added subscriber: @RobertWesseling
First-time contributor

Removed subscriber: @Sean-Boyle

Removed subscriber: @Sean-Boyle
First-time contributor

Added subscriber: @hipda

Added subscriber: @hipda
First-time contributor

This comment was removed by @hipda

*This comment was removed by @hipda*
First-time contributor

Added subscriber: @osayami

Added subscriber: @osayami
First-time contributor

Removed subscriber: @bent

Removed subscriber: @bent
First-time contributor

Added subscriber: @Striletsky

Added subscriber: @Striletsky
First-time contributor

This comment was removed by @dodo-2

*This comment was removed by @dodo-2*
First-time contributor

Added subscriber: @NEEO

Added subscriber: @NEEO
First-time contributor

Added subscriber: @Soichi-Sugano

Added subscriber: @Soichi-Sugano
First-time contributor

Added subscriber: @hamza-el-barmaki

Added subscriber: @hamza-el-barmaki
First-time contributor

This comment was removed by @hamza-el-barmaki

*This comment was removed by @hamza-el-barmaki*
First-time contributor

Added subscriber: @satishgoda1

Added subscriber: @satishgoda1
First-time contributor

Added subscriber: @baybaypras

Added subscriber: @baybaypras
First-time contributor

Added subscriber: @Spundun-Bhatt

Added subscriber: @Spundun-Bhatt
First-time contributor

Added subscriber: @Benni-Merz

Added subscriber: @Benni-Merz
First-time contributor

Added subscriber: @DARRINALDER

Added subscriber: @DARRINALDER
First-time contributor

Added subscriber: @Horizon42

Added subscriber: @Horizon42
Member

Added subscriber: @zhanghua

Added subscriber: @zhanghua
First-time contributor

Removed subscriber: @Low_Polygon42

Removed subscriber: @Low_Polygon42
First-time contributor

Added subscriber: @Joe_W

Added subscriber: @Joe_W
First-time contributor

Added subscriber: @Yacine-Teach

Added subscriber: @Yacine-Teach
First-time contributor

Added subscriber: @Nik-9

Added subscriber: @Nik-9
First-time contributor

Added subscriber: @Basarchitects

Added subscriber: @Basarchitects
First-time contributor

Added subscriber: @digital0785

Added subscriber: @digital0785
First-time contributor

Added subscriber: @intracube

Added subscriber: @intracube
First-time contributor

Added subscriber: @Cigitia

Added subscriber: @Cigitia
First-time contributor

Added subscriber: @Asger

Added subscriber: @Asger
First-time contributor

Added subscriber: @jpburns

Added subscriber: @jpburns
First-time contributor

Added subscriber: @Austin-Berenyi

Added subscriber: @Austin-Berenyi
First-time contributor

Added subscriber: @SpectreFirst

Added subscriber: @SpectreFirst
First-time contributor

Added subscriber: @Nico-Traber

Added subscriber: @Nico-Traber
First-time contributor

Added subscriber: @Strike_Digital

Added subscriber: @Strike_Digital
First-time contributor

Added subscriber: @cueqzapper

Added subscriber: @cueqzapper
First-time contributor

Added subscriber: @Nabarun

Added subscriber: @Nabarun

Added subscriber: @Jarrett-Johnson

Added subscriber: @Jarrett-Johnson
First-time contributor

Added subscriber: @JanErik

Added subscriber: @JanErik
First-time contributor

Added subscriber: @heini

Added subscriber: @heini
First-time contributor

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
First-time contributor

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
First-time contributor

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?
First-time contributor

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/
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
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
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
140 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.