From e4cc97cd1038f1b9b985b8e1abff0eecabccad8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Thu, 6 Jun 2024 18:01:10 +0200 Subject: [PATCH 01/25] EEVEE-Next: Update Documentation --- manual/render/eevee/index.rst | 1 + manual/render/eevee/introduction.rst | 12 +- manual/render/eevee/light_probes/index.rst | 6 +- .../eevee/light_probes/introduction.rst | 4 +- .../eevee/light_probes/irradiance_volumes.rst | 110 --------- manual/render/eevee/light_probes/plane.rst | 62 +++++ .../light_probes/reflection_cubemaps.rst | 94 -------- .../eevee/light_probes/reflection_planes.rst | 88 ------- manual/render/eevee/light_probes/sphere.rst | 64 ++++++ manual/render/eevee/light_probes/volume.rst | 88 +++++++ manual/render/eevee/limitations.rst | 64 ++---- manual/render/eevee/limitations_shadow.rst | 12 + .../render/eevee/materials/introduction.rst | 11 - .../render/eevee/materials/nodes_support.rst | 56 +---- manual/render/eevee/materials/settings.rst | 217 ++++++------------ .../render_settings/ambient_occlusion.rst | 40 ---- manual/render/eevee/render_settings/bloom.rst | 30 --- .../render_settings/{hair.rst => curves.rst} | 0 .../eevee/render_settings/depth_of_field.rst | 8 - .../eevee/render_settings/horizon_scan.rst | 18 ++ manual/render/eevee/render_settings/index.rst | 17 +- .../render_settings/indirect_lighting.rst | 73 ------ .../eevee/render_settings/light_probes.rst | 35 +++ .../render/eevee/render_settings/lights.rst | 10 + .../eevee/render_settings/motion_blur.rst | 30 +-- ...n_space_reflections.rst => raytracing.rst} | 66 ++++-- .../render/eevee/render_settings/sampling.rst | 16 +- .../render/eevee/render_settings/shadows.rst | 55 +---- .../render_settings/subsurface_scattering.rst | 31 --- .../{volumetrics.rst => volumes.rst} | 4 + manual/render/eevee/world.rst | 30 ++- manual/render/layers/passes.rst | 6 +- .../render/shader_nodes/input/light_path.rst | 4 +- 33 files changed, 514 insertions(+), 848 deletions(-) delete mode 100644 manual/render/eevee/light_probes/irradiance_volumes.rst create mode 100644 manual/render/eevee/light_probes/plane.rst delete mode 100644 manual/render/eevee/light_probes/reflection_cubemaps.rst delete mode 100644 manual/render/eevee/light_probes/reflection_planes.rst create mode 100644 manual/render/eevee/light_probes/sphere.rst create mode 100644 manual/render/eevee/light_probes/volume.rst create mode 100644 manual/render/eevee/limitations_shadow.rst delete mode 100644 manual/render/eevee/render_settings/ambient_occlusion.rst delete mode 100644 manual/render/eevee/render_settings/bloom.rst rename manual/render/eevee/render_settings/{hair.rst => curves.rst} (100%) create mode 100644 manual/render/eevee/render_settings/horizon_scan.rst delete mode 100644 manual/render/eevee/render_settings/indirect_lighting.rst create mode 100644 manual/render/eevee/render_settings/light_probes.rst create mode 100644 manual/render/eevee/render_settings/lights.rst rename manual/render/eevee/render_settings/{screen_space_reflections.rst => raytracing.rst} (51%) delete mode 100644 manual/render/eevee/render_settings/subsurface_scattering.rst rename manual/render/eevee/render_settings/{volumetrics.rst => volumes.rst} (92%) diff --git a/manual/render/eevee/index.rst b/manual/render/eevee/index.rst index 88942a638..ed512b3e7 100644 --- a/manual/render/eevee/index.rst +++ b/manual/render/eevee/index.rst @@ -15,3 +15,4 @@ lighting.rst light_probes/index.rst limitations.rst + limitations_shadow.rst diff --git a/manual/render/eevee/introduction.rst b/manual/render/eevee/introduction.rst index a8107e6f5..8f888801d 100644 --- a/manual/render/eevee/introduction.rst +++ b/manual/render/eevee/introduction.rst @@ -3,23 +3,23 @@ Introduction ************ -EEVEE is Blender's realtime render engine built using :term:`OpenGL` focused on -speed and interactivity while achieving the goal of rendering :abbr:`PBR (Physically Based Rendering)` materials. +EEVEE is Blender's realtime render engine focused on speed and interactivity while achieving the +goal of rendering :abbr:`PBR (Physically Based Rendering)` materials. EEVEE can be used interactively in the 3D Viewport but also produce high quality final renders. .. figure:: /images/render_eevee_introduction_viewport.png EEVEE in the 3D Viewport -- "Tiger" by Daniel Bystedt. -EEVEE materials are created using the same shader nodes as Cycles, making it easy to render existing scenes. -For Cycles users, this makes EEVEE work great for previewing materials in realtime. +EEVEE materials are created using the same shader nodes as Cycles, making it easy to render existing +scenes. For Cycles users, this makes EEVEE work great for previewing materials in realtime. -Unlike Cycles, EEVEE is not a raytrace render engine. +EEVEE is a based on rasterization and not (like Cycles) a path traced render engine. Instead of computing each ray of light, EEVEE uses a process called rasterization. Rasterization estimates the way light interacts with objects and materials using numerous algorithms. While EEVEE is designed to use :abbr:`PBR (Physically Based Rendering)` principles, it is not perfect and Cycles will always provide more physically accurate renders. -Because EEVEE uses rasterization it has a large set of :doc:`limitations `. +Because EEVEE uses rasterization it has a set of :doc:`limitations `. .. figure:: /images/render_eevee_introduction_final-render.png diff --git a/manual/render/eevee/light_probes/index.rst b/manual/render/eevee/light_probes/index.rst index 67f0477dc..16c78ebbb 100644 --- a/manual/render/eevee/light_probes/index.rst +++ b/manual/render/eevee/light_probes/index.rst @@ -9,6 +9,6 @@ :maxdepth: 2 introduction.rst - irradiance_volumes.rst - reflection_cubemaps.rst - reflection_planes.rst + volume.rst + sphere.rst + plane.rst diff --git a/manual/render/eevee/light_probes/introduction.rst b/manual/render/eevee/light_probes/introduction.rst index 508c5d1f6..1e518fd5a 100644 --- a/manual/render/eevee/light_probes/introduction.rst +++ b/manual/render/eevee/light_probes/introduction.rst @@ -3,10 +3,10 @@ Introduction ************ -Probe objects are used by EEVEE as support objects. +Light probe objects are used by EEVEE as support objects. They record lighting information locally in order to light the scene using indirect lighting. -There are three different probe types. One for diffuse lighting, two for specular lighting. +There are three different types of light probes. One for diffuse lighting, two for specular lighting. These types of objects are only useful for EEVEE (and by extension, the Material Preview mode). They are meant to guide the engine to compute better lighting quickly. diff --git a/manual/render/eevee/light_probes/irradiance_volumes.rst b/manual/render/eevee/light_probes/irradiance_volumes.rst deleted file mode 100644 index 10ecbff19..000000000 --- a/manual/render/eevee/light_probes/irradiance_volumes.rst +++ /dev/null @@ -1,110 +0,0 @@ - -****************** -Irradiance Volumes -****************** - -Diffuse indirect lighting is stored in volumetric arrays. -These arrays are defined by the user using Irradiance Volume objects. -They control how arrays are placed in the world as well as their resolution. - -Lighting is computed at the dot positions visible when the Irradiance Volume object is selected. - -.. seealso:: - - :doc:`Indirect Lighting `. - -If Ambient Occlusion is enabled, it will be applied onto diffuse indirect lighting. -If both Ambient Occlusion and "Bent Normals" are enabled -the indirect lighting will be sampled from the least occluded direction and appear more correct. - -.. reference:: - - :Panel: :menuselection:`Object Data --> Probe` - -Distance - A probe object only influences the lighting of nearby surfaces. - This influence zone is defined by the Distance parameter and object scaling. - The influence distance varies a bit, depending on the probe type. - - For Irradiance Volumes, the influence inside the volume is always 100%. - The influence decays only outside of the volume until - the distance to the volume reaches the Distance parameter value (in local space). - -Falloff - Percentage of the influence distance during which the influence of a probe fades linearly. - -Intensity - Intensity factor of the recorded lighting. - Making this parameter anything other than 1.0 is not physically correct. Use it for tweaking or artistic purposes. - -Resolution - Spatial resolution for Irradiance Volumes is determined per probe. - The local volume is divided into a regular grid of the specified dimensions. - One irradiance sample will be computed for each cell in this grid. - -Clipping - Defines the near and far clip distances when capturing the scene. - - .. warning:: - - Clipping distances are applied at the samples positions and *not* at the grid origin. - -Visibility Collection - In some cases, it is useful to limit which objects appear in the light probe's captured lighting. - For instance, an object that is too close to a capture point might be better excluded. - This is what the visibility collection does. - Only objects that are in this collection will be visible when this probes captures the scene. - - There is also an option to invert this behavior and effectively hide the objects in this collection. - - .. note:: - - This is only a filtering option. That means that if an object is not visible at render time - it won't be visible during the probe render. - - -Visibility -========== - -For every grid point a small Variance Shadow Map is rendered. -This visibility cubemap is used to reduce light leaking behind occluders. -You can tweak the size of this map inside the render settings and -tweak the bias and blur factors per grid inside the Probe Properties tab. - - Bias - Reduces self-shadowing. - - Bleed Bias - Increases the "contrast" of the depth test result. - - Blur - Amount of blur to apply when filtering the visibility shadow map. - Does not increase runtime cost but has a small effect on baking time. - - -Blending -======== - -The lighting values from an Irradiance Volume will fade outwards until the volume bounds are reached. -They will fade into the world's lighting or another Irradiance Volume's lighting. - -If multiple Irradiance Volumes overlap, smaller (in volume) ones will always have more priority. - -If an object is not inside any Irradiance Volume, or if the indirect lighting has not been baked, -the world's diffuse lighting will be used to shade it. - -.. tip:: - - - When lighting indoor environments, try to align grids with the room shape. - - Try not to put too much resolution in empty areas or areas with a low amount of lighting variation. - - You can fix bad samples by adding a smaller grid near the problematic area. - - -Viewport Display -================ - -Influence - Show the influence bounds in the 3D Viewport. The inner sphere is where the falloff starts. - -Clipping - Show the clipping distance in the 3D Viewport. diff --git a/manual/render/eevee/light_probes/plane.rst b/manual/render/eevee/light_probes/plane.rst new file mode 100644 index 000000000..010267ee5 --- /dev/null +++ b/manual/render/eevee/light_probes/plane.rst @@ -0,0 +1,62 @@ + +****************** +Light Probe Planes +****************** + +These special types of light probe object are suited to smooth planar surfaces. +They basically capture the scene with a flipped camera. + +Using planar light probes adds more render time as the scene needs to be rendered as many times as +there are light probe planes in the view. + +Light probe planes only work when ray tracing method is set to `Screen-Trace`. If ray tracing +is enabled, light probe planes will serve as support buffers. This accelerates the tracing process +and completes the missing data from the view space. This also make reflection more correct for the +affected surfaces that have medium roughness and disturbed normals (i.e. normal maps). + +.. note:: + + Reflections and Volumetrics are not supported inside Light probe planes. + + +Placement +========= + +If Backface Culling is not enabled, snapping the light probe plane to the planar surface +will effectively capture the underside of the surface. + +You can manually move the light probe plane above the surface enough for it to not appear in the capture. +Alternatively you can disable the light probe visibility in the object panel. + +.. reference:: + + :Panel: :menuselection:`Object Data --> Probe` + +Clipping Offset + Define how much below the plane the near clip is when capturing the scene. + Increasing this can fix reflection contact problems. + +Distance + A probe object only influences the lighting of nearby surfaces. + This influence zone is defined by the Distance parameter and object scaling. + The influence distance varies is a bit, depending on the probe type. + + For light probe planes the influence distance is the distance from the plane. + Only surfaces whose normals are aligned with the Reflection Plane will receive the captured reflection. + + +Viewport Display +================ + +.. reference:: + + :Panel: :menuselection:`Object Data --> Viewport Display` + +Influence + Show the influence bounds in the 3D Viewport. + +Arrow Size + Size of the arrow showing the reflection plane normal. + +Show Preview Plane + Show the captured reflected image onto a fully reflective plane in the 3D Viewport. diff --git a/manual/render/eevee/light_probes/reflection_cubemaps.rst b/manual/render/eevee/light_probes/reflection_cubemaps.rst deleted file mode 100644 index b38b903cc..000000000 --- a/manual/render/eevee/light_probes/reflection_cubemaps.rst +++ /dev/null @@ -1,94 +0,0 @@ - -******************* -Reflection Cubemaps -******************* - -Specular Indirect Lighting is stored in an array of cubemaps. These are defined by the Reflection Cubemap objects. -They specify where to sample the scene's lighting and where to apply it. - -.. seealso:: - - :doc:`Indirect Lighting `. - -*Screen Space Reflections* are much more precise than reflection cubemaps. -If enabled, they have priority and cubemaps are used as a fall back if a ray misses. - -If *Ambient Occlusion* is enabled, it will be applied in a physically plausible manner to specular indirect lighting. - -.. note:: - - The cube probes are encoded into tetrahedral maps. Some distortions may occur on the negative Z hemisphere. - Those are more visible with higher roughness values. - - -Blending -======== - -The lighting values from a Reflection Cubemap will fade outwards until the volume bounds are reached. -They will fade into the world's lighting or another Reflection Cubemap's lighting. -If multiple Reflection Cubemaps overlap, smaller (in volume) ones will always have more priority. -If an object is not inside any Reflection Cubemap influence, -or if the indirect lighting has not been baked, the world's cubemap will be used to shade it. - -.. reference:: - - :Panel: :menuselection:`Object Data --> Probe` - -Distance - A probe object only influences the lighting of nearby surfaces. - This influence zone is defined by the Distance parameter and object scaling. - The influence distance varies is a bit, depending on the probe type. - - For Reflection Cubemaps the influence volume can either be a box or a sphere centered on the probe's origin. - -Falloff - Percentage of the influence distance during which the influence of a probe fades linearly. - -Intensity - Intensity factor of the recorded lighting. - Making this parameter anything other than 1.0 is not physically correct. - Use it for tweaking or artistic purposes. - -Clipping - Define the near and far clip distances when capturing the scene. - -Visibility Collection - Sometimes, it is useful to limit which objects appear in the light probe's captured lighting. - For instance, an object that is too close to a capture point might be better excluded. - This is what the visibility collection does. - Only objects that are in this collection will be visible when this probe will capture the scene. - - There is also an option to invert this behavior and effectively hide the objects inside this collection. - - .. note:: - - This is only a filtering option. - That means if an object is not visible at render time it won't be visible during the probe render. - - -Custom Parallax -=============== - -.. reference:: - - :Panel: :menuselection:`Object Data --> Custom Parallax` - -By default, the influence volume is also the parallax volume. -The parallax volume is a volume on which is projected the recorded lighting. -It should roughly fit it surrounding area. In some cases it may be better to -adjust the parallax volume without touching the influence parameters. -In this case, just enable the *Custom Parallax* and -change the shape and distance of the parallax volume independently. - - -Viewport Display -================ - -Influence - Show the influence bounds in the 3D Viewport. The inner sphere is where the falloff starts. - -Clipping - Show the clipping distance in the 3D Viewport. - -Parallax - Show the *Custom Parallax* shape in the 3D Viewport. diff --git a/manual/render/eevee/light_probes/reflection_planes.rst b/manual/render/eevee/light_probes/reflection_planes.rst deleted file mode 100644 index 86c34bbe5..000000000 --- a/manual/render/eevee/light_probes/reflection_planes.rst +++ /dev/null @@ -1,88 +0,0 @@ - -***************** -Reflection Planes -***************** - -These special types of Probe object are suited to smooth planar surfaces. -They basically capture the whole scene with a flipped camera. - -Using reflection planes is really heavy on the render time -because the scene needs to be rendered as many times as there is Reflection Planes in the view. - -Unless Screen Space Reflection is enabled, -Reflection Planes only work on specular surfaces that have their roughness around 0. - -If Screen Space Reflection is enabled, Reflection Planes will serve as support buffers. -This accelerates the tracing process and completes the missing data from the view space. -This also make reflection more correct for the affected surfaces that have medium roughness and -disturbed normals (i.e. normal maps). - -.. note:: - - Subsurface Scattering, Screen Space Reflections and - Volumetrics are not supported inside Reflection Plane's reflection. - - -Placement -========= - -If Backface Culling is not enabled, snapping the Reflection Plane to the planar surface -will effectively capture the underside of the surface. - -You can manually move the Reflection Plane above the surface enough for it to not appear in the capture. -Alternatively you can put a floor object inside a collection and -use this collection as a Visibility Collection (inverted) inside the Reflection Plane's probe settings. - -.. reference:: - - :Panel: :menuselection:`Object Data --> Probe` - -Distance - A probe object only influences the lighting of nearby surfaces. - This influence zone is defined by the Distance parameter and object scaling. - The influence distance varies is a bit, depending on the probe type. - - For Reflection Planes the influence distance is the distance from the plane. - Only surfaces whose normals are aligned with the Reflection Plane will receive the captured reflection. - -Falloff - Percentage of the influence distance during which the influence of a probe fades linearly. - Also defines how much shading normals needs to be aligned with the plane to receive reflections. - -Clipping Offset - Define how much below the plane the near clip is when capturing the scene. - Increasing this can fix reflection contact problems. - -Visibility Collection - In some cases, it is useful to limit which objects appear in the light probe's captured lighting. - For instance, an object that is too close to a capture point might be better excluded. - This is what the visibility collection does. - Only objects that are in this collection will be visible when this probe will capture the scene. - - There is also an option to invert this behavior and effectively hide the objects inside this collection. - - .. note:: - - This is only a filtering option. - That means that if an object is not visible at render time it won't be visible during the probe render. - - .. note:: - - Due to a limitation, dupli-objects cannot be hidden by using this option. - - -Viewport Display -================ - -.. reference:: - - :Panel: :menuselection:`Object Data --> Viewport Display` - -Influence - Show the influence bounds in the 3D Viewport. - -Arrow Size - Size of the arrow showing the reflection plane normal. - -Show Preview Plane - Show the captured reflected image onto a fully reflective plane in the 3D Viewport. diff --git a/manual/render/eevee/light_probes/sphere.rst b/manual/render/eevee/light_probes/sphere.rst new file mode 100644 index 000000000..e30bcf970 --- /dev/null +++ b/manual/render/eevee/light_probes/sphere.rst @@ -0,0 +1,64 @@ + +****************** +Light Probe Sphere +****************** + +Specular Indirect Lighting can be stored in a light probe sphere. + +.. seealso:: + + :doc:`Indirect Lighting `. + +*Ray traced reflections* are more precise than spherical light probes. +If enabled, they have priority and spherical light probes are used as a fall back if a ray misses. + +.. note:: + + Spherical light probes are encoded into tetrahedral maps. Some distortions may occur on the + negative Z hemisphere. Those are more visible with higher roughness values. + + +.. reference:: + + :Panel: :menuselection:`Object Data --> Probe` + +Shape/Type + Select the shape of the influence volume. Can be set to Sphere or Box. + +Size + A probe object only influences the lighting of nearby surfaces. + This influence zone is defined by the size parameter and object scaling. + +Falloff + Percentage of the influence distance during which the influence of a probe fades linearly. + +Clipping + Define the near and far clip distances when capturing the scene. + + +Custom Parallax +=============== + +.. reference:: + + :Panel: :menuselection:`Object Data --> Custom Parallax` + +By default, the influence volume is also the parallax volume. +The parallax volume is a volume on which the recorded light is projected. +It should roughly fit it surrounding area. In some cases it may be better to +adjust the parallax volume without touching the influence parameters. +In this case, just enable the *Custom Parallax* and +change the shape and radius of the parallax volume independently. + + +Viewport Display +================ + +Influence + Show the influence bounds in the 3D Viewport. The inner sphere is where the falloff starts. + +Clipping + Show the clipping distance in the 3D Viewport. + +Parallax + Show the *Custom Parallax* shape in the 3D Viewport. diff --git a/manual/render/eevee/light_probes/volume.rst b/manual/render/eevee/light_probes/volume.rst new file mode 100644 index 000000000..c0822a32b --- /dev/null +++ b/manual/render/eevee/light_probes/volume.rst @@ -0,0 +1,88 @@ + +****************** +Light Probe Volume +****************** + +Diffuse indirect lighting is stored in a light probe volume object. + +Lighting is computed at the dot positions visible when the Irradiance Volume object is selected. + +If an object is not inside any Irradiance Volume, or if the indirect lighting has not been baked, +the world's diffuse lighting will be used to shade it. + +.. tip:: + + - When lighting indoor environments, try to align grids with the room shape. + - Try not to put too much resolution in empty areas or areas with a low amount of lighting variation. + - You can fix bad samples by adding a smaller grid near the problematic area. + + +.. reference:: + + :Panel: :menuselection:`Object Data --> Probe` + +Resolution + Spatial resolution for volumetric light probes is determined per probe. + The local volume is divided into a regular grid of the specified dimensions. + Irradiance light sample will be computed for each cell in this grid. + +Intensity + Intensity factor of the recorded lighting. + Making this parameter anything other than 1.0 is not physically correct. Use it for tweaking or + artistic purposes. + +Bake Samples + Number of ray directions to evaluate when baking. + +Surfel Density + Number of surfels per unit distance. Higher values improves quality. + +Capture Distance + The maximum distance to capture light from. + +Clamp Direct + Clamp incoming direct light. 0.0 disables direct light clamping. + +Clamp Indirect + Clamp incoming indirect light. 0.0 disables indirect light clamping. + +Normal Bias + Offset sampling of the irradiance grid in the surface normal direction to reduce light bleeding. + +Facing Bias + Smoother irradiance interpolation but introduce light bleeding. + +Capture Surface Bias + Moves capture points position away from surfaces to avoid artifacts. + +Capture Escape Bias + Moves capture points outside objects. + +Dilation Threshold + Ratio of front-facing surface hits under which a grid sample will reuse neighbors grid sample + lighting. + +Dilation radius + Radius in grid sample to search valid grid samples to copy into invalid grid samples. + +Capture world + Bake incoming light fromn the world, instead of just visibility, for more accurate lighting, + but lose correct blending to surrounding irradiance volumes. + +Capture Indirect + Bake light bounces from light source for more accurate lighting. + +Capture Emission + Bake emissive surfaces for more accurate lighting. + + + + +Viewport Display +================ + +Influence + Show the influence bounds in the 3D Viewport. The inner sphere is where the falloff starts. + +Clipping + Show the clipping distance in the 3D Viewport. diff --git a/manual/render/eevee/limitations.rst b/manual/render/eevee/limitations.rst index e2abe1e9c..574e48eb5 100644 --- a/manual/render/eevee/limitations.rst +++ b/manual/render/eevee/limitations.rst @@ -25,34 +25,25 @@ Cameras Lights ====== -- Only 128 active lights can be supported by EEVEE in a scene. -- Only 8 Shadowed sun lights can be supported at the same time. -- As of now, lights can only have one color and do not support light node trees. +- For now lights can only have one color and do not support light node trees. Light Probes ============ -- EEVEE only supports up to 128 active Reflection Cubemaps. -- EEVEE only supports up to 64 active Irradiance Volumes. -- EEVEE only supports up to 16 active Reflection Planes inside the view frustum. +- EEVEE supports up to 128 active light probe spheres. +- EEVEE supports up to 16 active light probe planes inside the view frustum. Indirect Lighting ================= -- Volumetrics don't receive light from Irradiance Volumes but do receive world's diffuse lighting. -- EEVEE does not support "specular to diffuse" light bounces nor "specular to specular" light bounces. -- All specular lighting is turned off during baking. - - -.. _eevee-limitations-shadows: +- Light probe capture does not support specular reflections. Specular energy is treated as diffuse. Shadows ======= -- Only 128 active lights can be supported by EEVEE in a scene. -- Only 8 Shadowed sun lights can be supported at the same time. +- See :ref:`eevee-limitations-shadows` for a detailed explanation of shadow limitations. .. _eevee-limitations-volumetrics: @@ -62,10 +53,8 @@ Volumetrics - Only single scattering is supported. - Volumetrics are rendered only for the camera "rays". They don't appear in reflections/refractions and probes. -- Volumetrics don't receive light from Irradiance Volumes but do receive diffuse lighting from the world. - Volumetric shadowing only work in volumetrics. They won't cast shadows onto solid objects in the scene. - Volumetric shadowing only work for volumes inside the view frustum. -- Volumetric lighting do not respect the lights shapes. They are treated as point lights. .. _eevee-limitations-dof: @@ -81,7 +70,7 @@ Depth of Field Screen Space Effects ==================== -EEVEE is not a ray tracing engine and cannot do ray-triangle intersection. +EEVEE is not a path tracing engine and cannot do ray-triangle intersection. Instead of this, EEVEE uses the depth buffer as an approximated scene representation. This reduces the complexity of scene scale effects and enables a higher performance. However, only what is in inside the view can be considered when computing these effects. @@ -105,26 +94,21 @@ Ambient Occlusion ----------------- - Objects are treated as infinitely thick, producing overshadowing if the *Distance* is really large. +- Objects are treated as uniformly thick, producing over- or under-shadowing depending on the + thickness value. -.. _eevee-limitations-reflections: +.. _eevee-limitations-raytracing: -Screen Space Reflections ------------------------- +Raytracing +---------- -- Only one glossy BSDF can emit screen space reflections. -- The evaluated BSDF is currently arbitrarily chosen. - Screen Space Reflections will reflect transparent objects and objects using Screen Space Refraction but without accurate positioning due to the one layer depth buffer. - - -.. _eevee-limitations-refraction: - -Screen Space Refraction ------------------------ - +- Blended materials and materials using raytrace refractions will not appear in dithered materials. +- Blender materials are not compatible with raytracing. - Only one refraction event is correctly modeled. -- Only opaque and alpha hashed materials can be refracted. +- Only dithered materials *not* using Raytrace Refractions can be refracted. .. _eevee-limitations-sss: @@ -140,14 +124,6 @@ Subsurface Scattering leading to light leaking from surface to surface. -Motion Blur -=========== - -:doc:`Motion Blur ` -is only available in final renders and is not shown in the 3D Viewport -and thus :ref:`Viewport Renders `. - - .. _eevee-limitations-materials: Materials @@ -161,14 +137,8 @@ Refractions Using Screen Space refraction will refract what is visible inside the view, and use the nearest probe if there is no hit. - Screen Space Reflections and Ambient Occlusion are not compatible with Screen Space Refraction; - they will be disabled on the surfaces that use it. - Surfaces that use Screen Space Refraction will not appear in Screen Space Reflections at the right place. - Surfaces that use Screen Space Refraction will not cast Ambient Occlusion onto other surfaces. - -Volume Objects - Object volume shaders will affect the whole bounding box of the object. - The shape of the volume must be adjusted using procedural texturing inside the shader. + Surfaces that use raytrace refraction will not cast ambient occlusion onto other materials not + using this option. Shader Nodes @@ -221,4 +191,4 @@ multiple :abbr:`GPU (Graphic Processing Unit, also known as Graphics Card)` syst Headless Rendering ================== -There is currently no support for using EEVEE on headless systems (i.e. without a Display Manager). +Headless rendering is not supported on headless Windows systems. diff --git a/manual/render/eevee/limitations_shadow.rst b/manual/render/eevee/limitations_shadow.rst new file mode 100644 index 000000000..2263309f2 --- /dev/null +++ b/manual/render/eevee/limitations_shadow.rst @@ -0,0 +1,12 @@ +.. _eevee-limitations-shadows: + +****************** +Limitations shadow +****************** + +.. todo:: + + This section still needs to be written. Explaining the limitations of the SVM shadowing + algorithm. + + diff --git a/manual/render/eevee/materials/introduction.rst b/manual/render/eevee/materials/introduction.rst index 06b003a2a..1558afddc 100644 --- a/manual/render/eevee/materials/introduction.rst +++ b/manual/render/eevee/materials/introduction.rst @@ -12,14 +12,3 @@ Nodes Support Due to realtime constraints, not all Cycles features are available in EEVEE. See :doc:`/render/eevee/materials/nodes_support`. - -Performance -=========== - -Performance is highly dependent on the number of BSDF nodes present in the node tree. - -.. tip:: - - Prefer using the Principled BSDF instead of multiple BSDF nodes because EEVEE is optimized for it. - -.. seealso:: :ref:`Limitations `. diff --git a/manual/render/eevee/materials/nodes_support.rst b/manual/render/eevee/materials/nodes_support.rst index cc43fe390..e2aa96005 100644 --- a/manual/render/eevee/materials/nodes_support.rst +++ b/manual/render/eevee/materials/nodes_support.rst @@ -51,24 +51,18 @@ Although most BSDFs are supported, many of them are approximations and are not f Diffuse BSDF Roughness is not supported. Only Lambertian diffusion is supported. -Emission - Treated as indirect lighting and will only show up in :abbr:`SSR (Screen Space Reflection)`\ s and Probes. - Glass / Refraction BSDF - Does not refract lights. Does not support Beckmann distribution. - See :ref:`Refraction limitations `. + Does not refract lights objects. Does not support Beckmann distribution. + See :ref:`Raytracing limitations `. Glossy BSDF Does not support Beckmann and Ashikhmin-Shirley distributions. Subsurface Scattering - Random Walk sampling is not supported. Per color channel Radius is specified by the default socket value. - Any link plugged into this socket gets ignored. - Texture Blur is not accurate for any value other than 0.0 and 1.0. + Random Walk sampling, IOR and Anisotropic are not supported. Transparent BSDF - Transparency will only have an effect if the Material blend mode is not Opaque. - Colored and additive transparency are only compatible with "Alpha Blend" mode. + Colored and additive transparency are only compatible with blended modes. Translucent BSDF Does not diffuse the light inside the object. It only lights the object with reversed normals. @@ -89,8 +83,7 @@ Principled Volume Same as Volume Scatter. See :ref:`Volume Limitation `. Holdout - Partially supported, using :ref:`Blend Modes ` - other than *Alpha* may give incorrect results. + Partially supported, using dithered mode may give incorrect results. Anisotropic BSDF Not supported. @@ -114,9 +107,6 @@ Input Nodes Ambient Occlusion The *Only Local* option is not supported. -Camera Data - EveHair Inforything is compatible. - Geometry Pointiness is not supported. @@ -132,37 +122,26 @@ Attribute Bevel Not supported. -Fresnel - Everything is compatible. - Curves Info The Random output uses a different :abbr:`RNG (Random Number Generator)` algorithm. Range and statistical distribution of the values should be the same but the values will be different. -Layer Weight - Everything is compatible. - Light Path EEVEE has no real concept of rays. But in order to ease the workflow between Cycles and EEVEE some of the outputs are only supported in particular cases. This node makes it possible to tweak indirect lighting in the shader. - Only a subset of the outputs are supported and the ray depth does not exactly have the same meaning. - In order for the *Is Camera*, *Is Shadow*, *Is Diffuse*, and *Is Glossy* outputs to work, - the object must be inside an :doc:`Irradiance Volume ` - and :doc:`/render/eevee/render_settings/indirect_lighting` must be baked. - - *Is Camera*: Supported. - *Is Shadow*: Supported. - - *Is Diffuse*: Supported. - - *Is Glossy*: Supported. + - *Is Diffuse*: Set to 1.0 when baking light probe volume. Otherwise is set to 0.0. + - *Is Glossy*: Set to 1.0 when baking light probe sphere or plane. Otherwise is set to 0.0. - *Is Singular*: Not supported. Same as Is Glossy. - *Is Reflection*: Not supported. Same as Is Glossy. - *Is Transmission*: Not supported. Same as Is Glossy. - *Ray Length*: Not supported. Defaults to 1.0. - - *Ray Depth*: Indicates the current bounce when baking the light cache. - - *Diffuse Depth*: Same as Ray Depth but only when baking diffuse light. - - *Glossy Depth*: Same as Ray Depth but only when baking specular light. + - *Ray Depth*: Not supported. Defaults to 0.0. + - *Diffuse Depth*: Partially supported. Set to 1.0 when baking light probe volume. Otherwise is set to 0.0. + - *Glossy Depth*: Partially supported. Set to 1.0 when baking light probe sphere or plane. Otherwise is set to 0.0. - *Transparent Depth*: Not supported. Defaults to 0. - *Transmission Depth*: Not supported. Same as Glossy Depth. @@ -171,15 +150,9 @@ Light Path *Is Glossy* does not work with Screen Space Reflections/Refractions but does work with reflection planes (whether used with SSR or not). -Object Info - Everything is compatible. - Particle Info Not supported. -Tangent - Everything is compatible. - Texture Coordinate *From Instancer* is not supported. @@ -218,12 +191,3 @@ Other Nodes Light Falloff Not supported. - -Bump - Imprecision due to less precise derivatives. - -Displacement/Vector Displacement - Not supported. - -Material Output - Displacement output behavior is broken compared to Cycles. diff --git a/manual/render/eevee/materials/settings.rst b/manual/render/eevee/materials/settings.rst index 36f95d5a9..7427a2f9d 100644 --- a/manual/render/eevee/materials/settings.rst +++ b/manual/render/eevee/materials/settings.rst @@ -7,157 +7,6 @@ Material Settings :Panel: :menuselection:`Properties --> Material --> Settings` - -.. _bpy.types.Material.use_backface_culling: - -Backface Culling -================ - -Backface Culling hides the back side of faces. - - -.. _bpy.types.Material.blend_method: - -Blend Mode -========== - -After calculating the color of a surface, the blend mode defines how it is added to the color buffer. -Depending on this, the final color will be different. - -.. note:: - - Alpha Blending is considered a "Transparent" blend mode - and has implications regarding screen space effects. - -Opaque - The previous color will be overwritten by the surface color. - The alpha component is ignored. This is the fastest option. - -Alpha Clip - The previous color will be overwritten by the surface color, - but only if the alpha value is above the *Clip Threshold* value. - -Alpha Hashed - The previous color will be overwritten by the surface color, - but only if the alpha value is above a random clip threshold. - This statistical approach is noisy but is able to approximate alpha blending without any sorting problem. - Increasing the sample count in the render settings will reduce the resulting noise. - -Alpha Blending - Use alpha blending to overlay the surface color on top of the previous color. - - -Sorting Problem ---------------- - -When writing to the color buffer using transparent blend modes, -the order in which the color blending happens is important as it can change the final output color. -As of now EEVEE does not support per-fragment (pixel) sorting or per-triangle sorting. -Only per-object sorting is available and is automatically done on all transparent surfaces based on object origin. - -.. note:: - - Per-object sorting has a performance cost and having thousands of - these objects in a scene will greatly degrade performance. - -.. _bpy.types.Material.show_transparent_back: - -Show Backface - If enabled, all transparent fragments will be rendered. - If disabled, only the front-most surface fragments will be rendered. - Disable this option to ensure correct appearance of transparency from any point of view. - When using *Alpha Blending* this option should be disabled because with *Alpha Blending*, - the order in which triangles are sorted is important. - - -.. _bpy.types.Material.shadow_method: - -Shadow Mode -=========== - -Type of shadows used for a transparent surface. -EEVEE does not support colored shadow maps. - -Half transparent shadows can be produced by using hashed transparent shadows and -a larger Soft value on the shadow map. - -.. note:: - - This option does not change the behavior of contact shadows which are traced using the depth buffer. - If the material is writing to the depth buffer - (in other words, if the blend mode is set to either *Opaque*, *Alpha Clip* or *Alpha Hashed*), - contact shadows will be cast by the surface material regardless of the *Transparent Shadow* type. - -None - The surface will not cast any shadow. - -Opaque - The surface will cast shadows like an opaque surface. - -Alpha Clip - The surface will cast shadows like an opaque surface, - but only areas where the alpha value is above the *Clip Threshold* value. - -Alpha Hashed - The surface will cast shadows like an opaque surface, - but only areas where the alpha value is above a random threshold. - - -.. _bpy.types.Material.alpha_threshold: - -Clip Threshold -============== - -Threshold value for Alpha Clip mode in *Blend Mode* and *Shadow Mode*. - - -Screen Space Refraction -======================= - -Enabling Screen Space Refraction on a surface means that refraction BSDFs -will do a ray trace against the depth buffer to find the most accurate refracted color. -This has a big performance cost if the surface covers a lot of pixels. - -Screen Space Reflections and Ambient Occlusion are not compatible with Screen Space Refraction. -They will be disabled on the surfaces that use it. -Surfaces that use Screen Space Refraction will not appear in Screen Space Reflections at the right place. -Surfaces that use Screen Space Refraction will not cast Ambient Occlusion onto other surfaces. - -If this option is disabled or if the Screen Space Refraction ray tracing fails, -the refracted ray will use the color of the nearest probe. - -.. _bpy.types.Material.use_screen_refraction: - -Screen Space Refraction - Enables screen space refraction. - -.. _bpy.types.Material.refraction_depth: - -Refraction Depth - If Refraction Depth is not 0.0, all refraction BSDFs in the shader will act as if - the object is a thin slab of the refraction material having this thickness. - This will model a second refraction event that will double the absorption color and - start the refraction ray after this second event. - - This option greatly increases the quality of thin glass objects. - - -.. _bpy.types.Material.use_sss_translucency: - -Subsurface Translucency -======================= - -EEVEE's Subsurface Scattering algorithm works by blurring the irradiance in screen space. -This means that if no visible part of the surface is lit, the effect disappears. - -However, true Subsurface Scattering goes beneath the surface and can travel a large distance. -This is why a human ear lit from behind appears red on the front side. - -That is what this effect mimics. This translucency approximation only works -with lights that have shadow maps and only on Subsurface BSDFs (not the Translucency BSDFs). -It does not work with indirect lighting. The soft parameter of the shadow maps also affects this effect. - - Pass Index ========== @@ -168,3 +17,69 @@ the :doc:`ID Mask Node ` in the Compositor. .. note:: :doc:`Volume Objects ` are not supported. + + +.. _bpy.types.Material.surface: + +Surface +======= + +Backface Culling + Backface Culling hides the back side of faces. + + Camera + Use back face culling to hide the back side of the face. + + Shadow + Use back face culling when casting shadows. + +Max Displacement + The maximum distance a vertex can be displaced. Displacements over this threshold may cause + visibility issues. + +Transparent shadows + Use transparent shadows for this material if it contains a Transparent BSDF, Disabling will + render faster but not give accurate shadows. + +.. _bpy.types.Material.render_method: + +Render Method + Controls the blending and the compatibility with certain features. + + :Dithered: + Allows for grayscale hashed transparency, and compatible with render passes and raytracing. + Also know as deferred rendering. + + :Blended: + Allows the colored transparency, but incompatible with render passes and raytracing. Also + known as forward rendering. + +Transparency Overlap + Render multiple transparent layers. May introduce transparency sorting problems. + +Light Probe Volume + Single Sided + Consider materials single sided for light probe volume captures. Additionally helps rejecting + inside the object, to avoid light leaking. + + +.. _bpy.types.Material.volume: + +Volume +====== + +Intersection + Determines which inner part of the mesh will produce volumetric effect. + + :Fast: + Each gace is considered as a medium interface. Gives correct results for manifold geometry + that contains no inner part. + + :Accurate: + Faces are considered as medium interface only when they have different consecutive facing. + Gives correct results as long as the max ray depth is not exceeded. Has significant memory + overhead compared to the fast method. + + + + diff --git a/manual/render/eevee/render_settings/ambient_occlusion.rst b/manual/render/eevee/render_settings/ambient_occlusion.rst deleted file mode 100644 index 7f8f252b3..000000000 --- a/manual/render/eevee/render_settings/ambient_occlusion.rst +++ /dev/null @@ -1,40 +0,0 @@ -.. _bpy.types.SceneEEVEE.gtao: - -***************** -Ambient Occlusion -***************** - -Ambient occlusion is computed using :abbr:`GTAO (Ground Truth Ambient Occlusion)` and applied to indirect lighting. -The bent normal option will make the diffuse lighting come from only the least occluded direction. - -Ambient occlusion can be rendered as a separate pass in the Render Layers panel. - -.. note:: - - This effect needs to be enabled for the :doc:`Ambient Occlusion ` node to work. - -.. reference:: - - :Panel: :menuselection:`Render --> Ambient Occlusion` - -Distance - Distance of object that contributes to the ambient occlusion effect. - -Factor - Blend factor for the ambient occlusion effect. - -Trace Precision - Increases precision of the effect but introduces more noise and lowers the maximum trace distance. - Increased precision also increases the performance cost. - Lower precision will also miss occluders and lead to undershadowing. - -Bent Normals - Compute the least occluded direction. - This direction can be used to sample the diffuse irradiance in a more realistic way. - -Bounce Approximation - An approximation to simulate light bounces giving less occlusion on brighter objects. - It only takes into account the surface color and not its surroundings. - This is not applied to the ambient occlusion pass. - -.. seealso:: :ref:`Limitations `. diff --git a/manual/render/eevee/render_settings/bloom.rst b/manual/render/eevee/render_settings/bloom.rst deleted file mode 100644 index 291cdebed..000000000 --- a/manual/render/eevee/render_settings/bloom.rst +++ /dev/null @@ -1,30 +0,0 @@ -.. _bpy.types.SceneEEVEE.bloom: - -***** -Bloom -***** - -Bloom is a post-process effect that diffuses very bright pixels. This mimics lens artifacts of real cameras. -This allows a better sense of what the actual intensities of the pixels are. - -.. reference:: - - :Panel: :menuselection:`Render --> Bloom` - -Threshold - Filters out pixels under this level of brightness. - -Knee - Makes transition between under/over-threshold gradual. - -Radius - Bloom spread distance. - -Color - Color applied to the bloom effect. - -Intensity - Blend factor. - -Clamp - Maximum intensity a bloom pixel can have. diff --git a/manual/render/eevee/render_settings/hair.rst b/manual/render/eevee/render_settings/curves.rst similarity index 100% rename from manual/render/eevee/render_settings/hair.rst rename to manual/render/eevee/render_settings/curves.rst diff --git a/manual/render/eevee/render_settings/depth_of_field.rst b/manual/render/eevee/render_settings/depth_of_field.rst index b7441dfc1..3b500556f 100644 --- a/manual/render/eevee/render_settings/depth_of_field.rst +++ b/manual/render/eevee/render_settings/depth_of_field.rst @@ -48,14 +48,6 @@ Neighbor Rejection Lower values will improve the performance but will also reduce the quality of highlights. Brightness is in the scene's referred color space. -Denoise Amount - This will reduce the flickering by clamping the color of - each pixels to their neighborhood's average instead of their maximum. - Higher values gives more stable results but may darken the scene. - -High Quality Slight Defocus - Increase the quality of almost in-focus regions. - Jitter Camera Randomize the camera position for every scene render sample to increase precision. Enabling this option can change the scene's actual sample count. diff --git a/manual/render/eevee/render_settings/horizon_scan.rst b/manual/render/eevee/render_settings/horizon_scan.rst new file mode 100644 index 000000000..e4ecb68b8 --- /dev/null +++ b/manual/render/eevee/render_settings/horizon_scan.rst @@ -0,0 +1,18 @@ +************ +Horizon Scan +************ + +.. reference:: + + :Panel: :menuselection:`Render --> Horizon Scan` + +Precision + Precision of the horizon scan. + +Thickness + Constant thickness of the surfaces considered when doing horizon scan and by extension ambient + occlusion. + +Bias + Bias the horozon angles to reduce self intersection artifacts. + diff --git a/manual/render/eevee/render_settings/index.rst b/manual/render/eevee/render_settings/index.rst index 35cfeab9a..5ae1c5027 100644 --- a/manual/render/eevee/render_settings/index.rst +++ b/manual/render/eevee/render_settings/index.rst @@ -8,16 +8,15 @@ :maxdepth: 2 sampling.rst - grease_pencil.rst - ambient_occlusion.rst - bloom.rst depth_of_field.rst - subsurface_scattering.rst - screen_space_reflections.rst - motion_blur - volumetrics.rst + horizon_scan.rst + raytracing.rst + volumes.rst performance.rst - hair.rst + curves.rst + lights.rst shadows.rst - indirect_lighting.rst + light_probes.rst film.rst + motion_blur.rst + grease_pencil.rst diff --git a/manual/render/eevee/render_settings/indirect_lighting.rst b/manual/render/eevee/render_settings/indirect_lighting.rst deleted file mode 100644 index 1527a4175..000000000 --- a/manual/render/eevee/render_settings/indirect_lighting.rst +++ /dev/null @@ -1,73 +0,0 @@ -.. _bpy.ops.scene.light_cache: -.. _bpy.types.SceneEEVEE.gi: - -***************** -Indirect Lighting -***************** - -While not strictly correct, all lighting that is not coming straight out -from a light object is considered as indirect lighting in EEVEE. -That means distant :term:`HDRI` lighting (or World) is considered as indirect lighting. -Mesh objects using an Emission node are also considered as indirect lighting. - -In EEVEE, indirect lighting is separated into two component: Diffuse and Specular. -Both have different needs and representation. For efficiency, -the indirect lighting data is precomputed on demand into a static lighting cache. - -As of now the light cache is static and needs to be computed before rendering. -It cannot be updated per frame (unless via scripting). -This limitation is being worked on and will be removed in future versions. - -Only view independent lighting can be baked. This is why Reflection Planes are not stored inside the light cache. - -The visibility and collections used during the baking process are the ones in the current Active View Layer. - -To enable light bounces through large environments, the light baking process can be run multiple times -while injecting the previous bake result into the bake. - -Light bounces only concerns diffuse lighting. - - -.. reference:: - - :Panel: :menuselection:`Render --> Indirect Lighting` - -Auto Bake - Enabling this option will trigger baking when a probe is changed; useful when positioning probes objects. - -Diffuse Bounces - Number of bounces to compute when baking the diffuse irradiance. - Total baking time is more or less multiplied by the number of bounce. - -Cubemap Size - Size of the reflection cubemaps. - -Diffuse Occlusion - Each irradiance sample also stores a shadow map that is used to minimize indirect light leaking. - This parameter defines the size of this shadow map. - -Irradiance Smoothing - Smooths irradiance interpolation but introduces light bleeding. - The irradiance visibility term can make the lighting not interpolate smoothly on some surfaces. - This setting relaxes the weight of that interpolation. - -Clamp Glossy - Clamp pixel intensity to reduce noise inside glossy reflections from reflection cubemaps (0 is disabled). - -Filter Quality - Takes more samples during cubemap filtering to remove artifacts. For now, this only has an effect on cubemaps. - - -Display -======= - -Cubemap Size - Display the Reflection Cubemaps present in the cache directly in the 3D Viewport. - -Irradiance Size - Display the Irradiance Samples present in the cache in the 3D Viewport. - -.. note:: - - Cache data display only works in the 3D Viewport and - only if the viewport uses world lighting in Material Preview or Rendered mode. diff --git a/manual/render/eevee/render_settings/light_probes.rst b/manual/render/eevee/render_settings/light_probes.rst new file mode 100644 index 000000000..60cf19ca4 --- /dev/null +++ b/manual/render/eevee/render_settings/light_probes.rst @@ -0,0 +1,35 @@ +.. _bpy.ops.scene.light_cache: +.. _bpy.types.SceneEEVEE.gi: + +************ +Light Probes +************ + +While not strictly correct, all lighting that is not coming straight out +from a light object is considered as indirect lighting in EEVEE. +That means distant :term:`HDRI` lighting (or World) is considered as indirect lighting. + +In EEVEE, indirect lighting is separated into two component: Diffuse and Specular. +Both have different needs and representation. For efficiency, +the diffuse indirect lighting data is precomputed on demand into a static lighting cache. + +As of now the diffuse light cache is static and needs to be computed before rendering. +It cannot be updated per frame (unless via scripting). +This limitation is being worked on and will be removed in future versions. + + +.. reference:: + + :Panel: :menuselection:`Render --> Light Probes` + +Sphere +====== +Resolution + Resolution when using Light Probe Spheres. + +Volume +====== + +Pool Size + Size of the irradiance pool, a bigger pool size allows for more irradiance grid in the scene, + but might not fit into GPU memory and decreases performance. diff --git a/manual/render/eevee/render_settings/lights.rst b/manual/render/eevee/render_settings/lights.rst new file mode 100644 index 000000000..adb87d49a --- /dev/null +++ b/manual/render/eevee/render_settings/lights.rst @@ -0,0 +1,10 @@ +****** +Lights +****** + +.. reference:: + + :Panel: :menuselection:`Render --> Lights` + +Light Threshold + Minimum light intensity for a light to contribute to the lighting. diff --git a/manual/render/eevee/render_settings/motion_blur.rst b/manual/render/eevee/render_settings/motion_blur.rst index e08b122d1..812a878da 100644 --- a/manual/render/eevee/render_settings/motion_blur.rst +++ b/manual/render/eevee/render_settings/motion_blur.rst @@ -35,33 +35,6 @@ Background Separation Used by the post-process blur to avoid blurring the background over the foreground. Lower values will reduce background bleeding onto foreground elements. -Max Blur - Maximum blur distance a pixel can spread over. - A value of 0 will disable the post-process blur and only use the accumulation blur. - - .. note:: - - High maximum blur values may also reduce the quality. - - EEVEE uses a fast post-process vector blur using a vector motion pass. - This blurs the image between three time steps using pixel velocity. - This technique is fast and produces clean gradients, but issues can occur at object borders - or if the motion is locally too complex; - for example, if there are many vector variations in a small area. - - This technique uses random sampling and the noise amount is proportional to the sample count found in - :menuselection:`Properties --> Render --> Sampling --> Render Samples`. - - .. note:: - - Memory usage (VRAM) will be three times higher for objects using deformation motion blur - if using post-process blur. - - .. note:: - - Alpha blended surface or volumetric effects will not have the correct velocity and will not - be correctly blurred by this technique. Use the accumulation blur for that. - Steps This controls the number of steps used by the accumulation blur and thus its accuracy. More steps means longer render time. @@ -79,6 +52,9 @@ Steps By adding more steps you can also reduce the *Max Blur* options because the post-process blur has to cover a smaller distance. +Shutter Curve + Use a custom shutter curve. + Example ======= diff --git a/manual/render/eevee/render_settings/screen_space_reflections.rst b/manual/render/eevee/render_settings/raytracing.rst similarity index 51% rename from manual/render/eevee/render_settings/screen_space_reflections.rst rename to manual/render/eevee/render_settings/raytracing.rst index 1ea3816db..e170307b7 100644 --- a/manual/render/eevee/render_settings/screen_space_reflections.rst +++ b/manual/render/eevee/render_settings/raytracing.rst @@ -1,23 +1,55 @@ -.. _bpy.types.SceneEEVEE.ssr: +.. _bpy.types.SceneEEVEE.raytracing: -************************ -Screen Space Reflections -************************ - -If this effect is enabled, all Materials will use the depth buffer and -the previous frame color to create more accurate reflection than reflection probes. - -If a *Reflection Plane* is near a reflective surface, -it will be used as the source for tracing rays more efficiently and fix the partial visibility problem. - -.. figure:: /images/render_eevee_render-settings_screen-space-reflections_planar-reflection-combo.jpg - -However, the reflected color will not contain the following effects: -Subsurface scattering, volumetrics, screen space reflections, screen space refractions. +********** +Raytracing +********** .. reference:: - :Panel: :menuselection:`Render --> Screen Space Reflections` + :Panel: :menuselection:`Render --> Raytracing` + +Method + Select the tracing method used to find scene-ray intersecions + + :Screen-Trace: + Raytrace against the depth buffer + + :None: + No intersection with scene geometry + +Settings + Split the settings per ray type (Reflection/Refraction/Diffuse) + + :Unified: + All the ray types use the same settings + + :Split: + Settings are individual to each ray type + +Ray Type +======== + +When the settings are split per ray type this section will be repeated for reflection, refraction +and diffuse rays. + +Resolution + Number of rays per pixel. Choice out of 1, 1/4 and 1/16 rays per pixel. + +Clamp + Clamp ray intensity to reduce noise. Use 0 to disable. + +Denoising + Denoising can be enabled to reduce noise in raytraced effects. + + Spatial Reuse + Reuse the rays from neighbor pixels. + + Temporal Accumulation + Accumulate samples by reprojectiong last ray tracing results. + + Bilateral Filter + Blur the resolved radiance using a bilateral filter. + Refractions Screen space refractions work the same way as screen space reflections and use the same parameters. @@ -45,4 +77,4 @@ Edge Fading Clamp Clamp the reflected color intensity to remove noise and :term:`Fireflies`. -.. seealso:: :ref:`Limitations `. +.. seealso:: :ref:`Limitations `. diff --git a/manual/render/eevee/render_settings/sampling.rst b/manual/render/eevee/render_settings/sampling.rst index 9451ad3e3..b508de492 100644 --- a/manual/render/eevee/render_settings/sampling.rst +++ b/manual/render/eevee/render_settings/sampling.rst @@ -13,12 +13,20 @@ TAA is sample based so the more samples the more aliasing is reduced at the cost :Panel: :menuselection:`Render --> Sampling` Viewport +======== + +Samples The number of samples to use in the 3D Viewport. When setting this to zero the viewport will be resampled continuously. -Render - The number of samples to use in the final render. .. _bpy.types.SceneEEVEE.use_taa_reprojection: -Viewport Denoising - Reduces noise while moving the viewport or during animation playback. +Temporal Reprojection + Reduces noise while moving the viewport or during animation playback. Can leave some ghosting. + +Render +====== + +Samples + The number of samples to use in the final render. + diff --git a/manual/render/eevee/render_settings/shadows.rst b/manual/render/eevee/render_settings/shadows.rst index c06f302fe..e8c8c3fb6 100644 --- a/manual/render/eevee/render_settings/shadows.rst +++ b/manual/render/eevee/render_settings/shadows.rst @@ -5,56 +5,21 @@ Shadows ******* These settings influence shadows which appear on objects because there is another object (the occluder) -between them and a Light. EEVEE uses a technique called Shadow Mapping to calculate these shadows. -A shadow map is calculated by looking around from the position of each Light and finding the objects -which are closest to the Light. These objects are called the nearest occluders. -Everything which is behind (or, you can say, covered by) the nearest occluders will be in shadow. - -The shadow map is a cube (hence the term "cubemap") and the Light is in the middle of this cube. -The cube has six sides and each side is divided into a grid. -You can set the resolution of the grid (for example, 512 × 512 pixels) with the *Cube Size* setting below. -During shadow calculation, the nearest occluders are only searched at grid points but not between grid points. -Because of this, the edge of the calculated shadow will appear pixelated at low Cube Size settings. - -.. note:: - - Settings for the shadows and illumination caused by light bouncing between objects (indirect lighting) - can be found on the Indirect Lighting tab. +between them and a Light. .. reference:: :Panel: :menuselection:`Render --> Shadows` -Cube Size - Number of pixels on one side of the shadow cube-map (see above) - used to calculate the shadow of Point, Area and Spot lights. - If you want to make the edge of shadows less pixelated, then increase this value. - But be aware that this increases memory usage and decreases performance since a 512 px cube-map - has 6 × 512 × 512 pixels in it. +Pool Size + Size of the shadow pool, a bigger pool size allows for more shadows in the scene, but might not + fit into GPU memory. -Cascade Size - Size of one cascade used by *Cascaded Shadow Maps*. This is only for Sun lights. +Rays + Amount of shadow rays to trace for each light. -High Bitdepth - This option can help reduce some artifacts due to float imprecision inside the shadow maps. - This option effectively doubles the memory usage of shadow maps and will slow down their update. +Steps + Amount of shadow map sample per shadow ray. -Soft Shadows - Randomize the shadow map's origin to create soft shadows. It needs a lot of samples to get rid of the banding. - -Light Threshold - The minimum amount of light for a light to contribute for lighting. - This light threshold does not take the light shape into account and may not suit every case. - That is why Blender provides a :ref:`per-light override ` - where you can just set the cut off distance. - - The influence distance is also used as shadow far clip distance, which might affect how shadows look. - This influence distance does not affect sun lights that still have a far clip distance. - - .. seealso:: - - :ref:`Custom Distance `. - -.. note:: - - The Soft Shadows method is not physically based and will not match Cycles for very large lights. +Normal Bias + Move along their normal. diff --git a/manual/render/eevee/render_settings/subsurface_scattering.rst b/manual/render/eevee/render_settings/subsurface_scattering.rst deleted file mode 100644 index 10ef9edde..000000000 --- a/manual/render/eevee/render_settings/subsurface_scattering.rst +++ /dev/null @@ -1,31 +0,0 @@ -.. _bpy.types.SceneEEVEE.sss: - -********************* -Subsurface Scattering -********************* - -This effect mimics real subsurface scattering by blurring the diffuse lighting in screen space. - -.. reference:: - - :Panel: :menuselection:`Render --> Subsurface Scattering` - -Samples - Number of samples to compute the scattering effect. - -Jitter Threshold - For the effect to be efficient, samples need to be coherent and not random. - This can lead to a cross-shaped pattern when the scattering radius is high. - Increasing the Jitter Threshold will rotate the samples below this radius percentage - in a random pattern in order to hide the visible pattern. - This affects the performance if the scattering radius is large. - -.. note:: - - :ref:`Subsurface Translucency ` - needs to be enabled in order to make the light go through an object - (like simulating a human ear lit from behind). - - This option only works with shadowed lights and does not work with indirect lighting. - -.. seealso:: :ref:`Limitations `. diff --git a/manual/render/eevee/render_settings/volumetrics.rst b/manual/render/eevee/render_settings/volumes.rst similarity index 92% rename from manual/render/eevee/render_settings/volumetrics.rst rename to manual/render/eevee/render_settings/volumes.rst index 64c5111e6..0656943bf 100644 --- a/manual/render/eevee/render_settings/volumetrics.rst +++ b/manual/render/eevee/render_settings/volumes.rst @@ -32,6 +32,10 @@ Samples Distribution Blend between linear and exponential sample distribution. Higher values puts more samples near the camera. +Max Depth + Maximum surface intersection count used by accurate volume intersection method. Will create + artifacts if it is exceeded. + .. _bpy.types.SceneEEVEE.volumetric_light: diff --git a/manual/render/eevee/world.rst b/manual/render/eevee/world.rst index 7eb406ba2..b3bc1371d 100644 --- a/manual/render/eevee/world.rst +++ b/manual/render/eevee/world.rst @@ -10,6 +10,34 @@ In EEVEE, the world lighting contribution is first rendered and stored in smaller resolution textures before being applied to the objects. This makes the lighting less precise than Cycles. +Mist Pass +========= + +.. reference:: + + :Panel: :menuselection:`World --> Mist Pass` + +Start + Starting distance of the mist, measured from the camera. + +Depth + Distance over which the mist effect fades in. + +Falloff + Type of transition used to face mist. + + +Light Probe +=========== + +.. reference:: + + :Panel: :menuselection:`World --> Light Probe` + +Resolution + The resolution used to store the light from the world. + + .. seealso:: - :doc:`Indirect Lighting `. + :doc:`Indirect Lighting `. diff --git a/manual/render/layers/passes.rst b/manual/render/layers/passes.rst index 79e53b7dd..2bbedfcda 100644 --- a/manual/render/layers/passes.rst +++ b/manual/render/layers/passes.rst @@ -187,7 +187,7 @@ Bloom .. _bpy.types.ViewLayerEEVEE.use_pass_transparent: Transparency - Contain :ref:`Alpha Blended ` surfaces, + Contain :ref:`Blended ` surfaces, so they can be adjusted in the compositor and later mixed with opaque passes. This pass only supports monochromatic opacity. @@ -329,8 +329,8 @@ The passes can be combined to produce the final image as follows: Known Limitations ================= -- Alpha blended materials are not rendered in render passes except the combined pass. - Use the *Alpha Clip* or *Alpha Hashed* as :ref:`Blending Mode ` +- Blended materials are not rendered in render passes except the combined pass. + Use the *Dithered* as :ref:`Render Method ` to render transparent materials in render passes. - Depth of field is not rendered in render passes except the combined pass. It is possible to add the depth of field back in the Compositor using diff --git a/manual/render/shader_nodes/input/light_path.rst b/manual/render/shader_nodes/input/light_path.rst index 4754822c2..fff5ba296 100644 --- a/manual/render/shader_nodes/input/light_path.rst +++ b/manual/render/shader_nodes/input/light_path.rst @@ -72,8 +72,8 @@ This node makes it possible to tweak indirect lighting in the shader. Only a subset of the outputs are supported and the ray depth does not exactly have the same meaning. In order for the *Is Camera*, *Is Shadow*, *Is Diffuse*, and *Is Glossy* outputs to work, -the object must be inside an :doc:`Irradiance Volume ` -and :doc:`/render/eevee/render_settings/indirect_lighting` must be baked. +the object must be inside an :doc:`Irradiance Volume ` +and :doc:`/render/eevee/render_settings/light_probes` must be baked. - *Is Camera*: Supported. - *Is Shadow*: Supported. -- 2.30.2 From 24604bb413829bc50f8db6b8034ef654aff3ee2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Fri, 7 Jun 2024 17:10:14 +0200 Subject: [PATCH 02/25] Pass on Introduction --- manual/render/eevee/introduction.rst | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/manual/render/eevee/introduction.rst b/manual/render/eevee/introduction.rst index 8f888801d..4e9324301 100644 --- a/manual/render/eevee/introduction.rst +++ b/manual/render/eevee/introduction.rst @@ -14,12 +14,14 @@ EEVEE can be used interactively in the 3D Viewport but also produce high quality EEVEE materials are created using the same shader nodes as Cycles, making it easy to render existing scenes. For Cycles users, this makes EEVEE work great for previewing materials in realtime. -EEVEE is a based on rasterization and not (like Cycles) a path traced render engine. -Instead of computing each ray of light, EEVEE uses a process called rasterization. -Rasterization estimates the way light interacts with objects and materials using numerous algorithms. +EEVEE is a based on rasterization and is not a path tracer. +Instead of computing each ray of light, EEVEE uses a process called rasterization to determine what +surface is visible from the camera. It then estimates the way light interacts with these surfaces +and materials using numerous algorithms. While EEVEE is designed to use :abbr:`PBR (Physically Based Rendering)` principles, it is not perfect and Cycles will always provide more physically accurate renders. -Because EEVEE uses rasterization it has a set of :doc:`limitations `. +Because EEVEE uses a lot of different algorithms it has a set of +:doc:`limitations `. .. figure:: /images/render_eevee_introduction_final-render.png -- 2.30.2 From 4d5d73c17522d4570236c8fc64f06e60c09c6e23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Fri, 7 Jun 2024 17:10:32 +0200 Subject: [PATCH 03/25] Pass on Limitations --- manual/render/eevee/limitations.rst | 48 +++-------------------------- 1 file changed, 5 insertions(+), 43 deletions(-) diff --git a/manual/render/eevee/limitations.rst b/manual/render/eevee/limitations.rst index 574e48eb5..ac4a016a5 100644 --- a/manual/render/eevee/limitations.rst +++ b/manual/render/eevee/limitations.rst @@ -70,7 +70,7 @@ Depth of Field Screen Space Effects ==================== -EEVEE is not a path tracing engine and cannot do ray-triangle intersection. +Ray-triangle intersection is not currently supported. Instead of this, EEVEE uses the depth buffer as an approximated scene representation. This reduces the complexity of scene scale effects and enables a higher performance. However, only what is in inside the view can be considered when computing these effects. @@ -88,65 +88,27 @@ These limitations creates a few problems: will not be rendered with screen space effects. -.. _eevee-limitations-ao: - -Ambient Occlusion ------------------ - -- Objects are treated as infinitely thick, producing overshadowing if the *Distance* is really large. -- Objects are treated as uniformly thick, producing over- or under-shadowing depending on the - thickness value. - - .. _eevee-limitations-raytracing: Raytracing ---------- -- Screen Space Reflections will reflect transparent objects and objects using Screen Space Refraction - but without accurate positioning due to the one layer depth buffer. -- Blended materials and materials using raytrace refractions will not appear in dithered materials. -- Blender materials are not compatible with raytracing. +- Blended materials and materials using raytrace refractions will not appear in dithered materials reflections. +- Blended materials are not compatible with raytracing. - Only one refraction event is correctly modeled. + An approximation of the second refraction event can be approximated using the :ref:`eevee-thickness-workflow`. - Only dithered materials *not* using Raytrace Refractions can be refracted. -.. _eevee-limitations-sss: - -Subsurface Scattering ---------------------- - -- Only one BSSRDF can produce screen space subsurface scattering. -- The evaluated BSSRDF is currently arbitrarily chosen. -- A maximum of 254 different surfaces can use subsurface scattering. -- Only scaling is adjustable per pixel. Individual RGB radii are adjustable in the socket default value. -- Input radiance from each surfaces are not isolated during the blurring, - leading to light leaking from surface to surface. - - .. _eevee-limitations-materials: -Materials -========= - -Refractions - Refraction is faked by sampling the same reflection probe used by the Glossy BSDFs, - but using the refracted view direction instead of the reflected view direction. - Only the first refraction event is modeled correctly. - An approximation of the second refraction event can be used for relatively thin objects using Refraction Depth. - Using Screen Space refraction will refract what is visible inside the view, - and use the nearest probe if there is no hit. - - Surfaces that use raytrace refraction will not cast ambient occlusion onto other materials not - using this option. - - Shader Nodes ============ - All BSDF's are using approximations to achieve realtime performance so there will always be small differences between Cycles and EEVEE. - Some utility nodes are not yet compatible with EEVEE. +- Certain combinations of BSDF's will result in more noise than others. This is the case of mixing Diffuse BSDF and Refraction BSDF. .. seealso:: -- 2.30.2 From 0f179f47a4f1a5270c20847e0b69f7fe579bf255 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Fri, 7 Jun 2024 20:07:01 +0200 Subject: [PATCH 04/25] Pass over raytracing and clamping --- manual/render/eevee/limitations.rst | 2 + .../render/eevee/render_settings/clamping.rst | 45 ++++++ .../eevee/render_settings/horizon_scan.rst | 18 --- manual/render/eevee/render_settings/index.rst | 6 +- .../eevee/render_settings/raytracing.rst | 150 ++++++++++++------ 5 files changed, 148 insertions(+), 73 deletions(-) create mode 100644 manual/render/eevee/render_settings/clamping.rst delete mode 100644 manual/render/eevee/render_settings/horizon_scan.rst diff --git a/manual/render/eevee/limitations.rst b/manual/render/eevee/limitations.rst index ac4a016a5..40ae943a1 100644 --- a/manual/render/eevee/limitations.rst +++ b/manual/render/eevee/limitations.rst @@ -66,6 +66,7 @@ Depth of Field but will be correctly handled by the sample-based method. For this, you need to disable the post-process depth of field by setting the *Max Size* to 0. +.. _eevee-limitations-screenspace: Screen Space Effects ==================== @@ -82,6 +83,7 @@ These limitations creates a few problems: This can be partially fixed by using the *overscan* feature. - Screen space effects lack deep information (or the thickness of objects). This is why most effects have a thickness parameter to control how to consider potential intersected pixels. +- Objects behind other objects (occluded) are not considered by these effects. - Blended surfaces are not considered by these effects. They are not part of the depth prepass and do not appear in the depth buffer. - Objects that a part of :ref:`Holdout Collections ` diff --git a/manual/render/eevee/render_settings/clamping.rst b/manual/render/eevee/render_settings/clamping.rst new file mode 100644 index 000000000..b59156698 --- /dev/null +++ b/manual/render/eevee/render_settings/clamping.rst @@ -0,0 +1,45 @@ + +******** +Clamping +******** + +.. reference:: + + :Panel: :menuselection:`Render --> Clamping` + + +.. _bpy.types.SceneEEVEE.clamp_surface_direct: +.. _bpy.types.SceneEEVEE.clamp_surface_indirect: + +Surface +_______ + +Direct Light + This option limits the maximum light intensity a surface can reflect. + It reduces :term:`Aliasing` noise and :term:`Fireflies` at the cost of accuracy. + Setting this option to 0.0 disables clamping altogether. + Lower values have a greater effect on the resulting image than higher values. + + +Indirect Light + Similar to **Direct Light* but limits the maximum light intensity reflected using ray-tracing and light-probes. + +.. note:: + + These options provides a way to limit :term:`Fireflies` and :term:`Aliasing` of highly reflective surfaces and dense volumes. + However, note that as you clamp out such values, other bright lights will be dimmed as well. + + Care must be taken when using this setting to find a balance between mitigating fireflies and + losing intentionally bright parts. + +.. _bpy.types.SceneEEVEE.clamp_volume_direct: +.. _bpy.types.SceneEEVEE.clamp_volume_indirect: + +Volume +______ + +Direct Light + The same as *Surface Direct Light* but for volume direct lighting. + +Indirect Light + The same as *Surface Direct Light* but for volume indirect lighting. diff --git a/manual/render/eevee/render_settings/horizon_scan.rst b/manual/render/eevee/render_settings/horizon_scan.rst deleted file mode 100644 index e4ecb68b8..000000000 --- a/manual/render/eevee/render_settings/horizon_scan.rst +++ /dev/null @@ -1,18 +0,0 @@ -************ -Horizon Scan -************ - -.. reference:: - - :Panel: :menuselection:`Render --> Horizon Scan` - -Precision - Precision of the horizon scan. - -Thickness - Constant thickness of the surfaces considered when doing horizon scan and by extension ambient - occlusion. - -Bias - Bias the horozon angles to reduce self intersection artifacts. - diff --git a/manual/render/eevee/render_settings/index.rst b/manual/render/eevee/render_settings/index.rst index 5ae1c5027..57e717725 100644 --- a/manual/render/eevee/render_settings/index.rst +++ b/manual/render/eevee/render_settings/index.rst @@ -8,15 +8,15 @@ :maxdepth: 2 sampling.rst - depth_of_field.rst - horizon_scan.rst + clamping.rst raytracing.rst + shadows.rst volumes.rst performance.rst curves.rst lights.rst - shadows.rst light_probes.rst film.rst + depth_of_field.rst motion_blur.rst grease_pencil.rst diff --git a/manual/render/eevee/render_settings/raytracing.rst b/manual/render/eevee/render_settings/raytracing.rst index e170307b7..fd209fa6a 100644 --- a/manual/render/eevee/render_settings/raytracing.rst +++ b/manual/render/eevee/render_settings/raytracing.rst @@ -8,73 +8,119 @@ Raytracing :Panel: :menuselection:`Render --> Raytracing` +The ray-tracing pipeline goal is to increase the accuracy of surface indirect lighting. +This is done by generating ray from each :abbr:`BSDF (Bidirectional Scattering Distribution Function)` +and finding their intersection with the scene individually. + +When disabled, it is replaced by a faster pipeline that uses pre-filtered light-probes. +This fallback mode offers a more visually stable and optimized alternative when visual fidelity is not the primary goal. + +.. seealso:: :ref:`Limitations `. + Method - Select the tracing method used to find scene-ray intersecions + Determine the tracing method used to find scene-ray intersections and indirect lighting. + + :Light Probe: + Use light-probe spheres and planes to find scene intersection. + This option is has the lowest tracing cost but rely on manually placed light-probes. :Screen-Trace: - Raytrace against the depth buffer - - :None: - No intersection with scene geometry - -Settings - Split the settings per ray type (Reflection/Refraction/Diffuse) - - :Unified: - All the ray types use the same settings - - :Split: - Settings are individual to each ray type - -Ray Type -======== - -When the settings are split per ray type this section will be repeated for reflection, refraction -and diffuse rays. + Trace ray against the screen depth buffer. Fallback to light-probes if ray exits the view. Resolution - Number of rays per pixel. Choice out of 1, 1/4 and 1/16 rays per pixel. + Resolution at which the ray-tracing is performed. + Lower options will be faster and use less memory but will produce blurrier results. -Clamp - Clamp ray intensity to reduce noise. Use 0 to disable. - -Denoising - Denoising can be enabled to reduce noise in raytraced effects. - - Spatial Reuse - Reuse the rays from neighbor pixels. - - Temporal Accumulation - Accumulate samples by reprojectiong last ray tracing results. - - Bilateral Filter - Blur the resolved radiance using a bilateral filter. +Max Roughness + Maximum roughness a :abbr:`BSDF (Bidirectional Scattering Distribution Function)` can have to use ray-tracing. + BSDFs with higher roughness will progressively use the *Fast GI Approximation*. + A value of 1 will raytrace every surfaces and disable the Fast GI. -Refractions - Screen space refractions work the same way as screen space reflections and use the same parameters. - But they are not enabled by default on all surfaces. - Enabling it will have a small performance cost. - You need to enable them in :menuselection:`Material Properties --> Settings`. - Materials using screen space refractions will not cast screen space reflections. +Screen Tracing +______________ -Half Resolution Trace - Use half resolution ray tracing. Only cast a ray for every fourth pixel. - Enabling this option drastically reduces video memory usage and increases performance at the cost of quality. +These settings control the behavior of the screen space ray-tracing. +They are only visible if *Screen-Trace* is the chosen tracing *Method*. -Trace Precision - Increases precision of the ray tracing but introduces more noise and lowers the maximum trace distance. +Precision + Higher values increase precision of the screen space ray-tracing but lowers the maximum trace distance. Increased precision also increases performance cost. Thickness How thick to consider the pixels of the depth buffer during the tracing. Higher values will stretch the reflections and add flickering. Lower values may make the ray miss surfaces. -Edge Fading - Smoothly fade out the reflected and refracted pixels if they are close to a screen edge. - The unit is in screen percentage. -Clamp - Clamp the reflected color intensity to remove noise and :term:`Fireflies`. +Denoising +_________ -.. seealso:: :ref:`Limitations `. +Denoising can be enabled to reduce the noise amount from the raw ray-traced output. +This can help image stability but will also over blur the final ray-traced output. + +Spatial Reuse + Reuse the rays from neighbor pixels. + Can introduce some light leaks across surfaces. + +Temporal Accumulation + Accumulate samples by re-projecting last ray tracing results. + This removes :term:`Fireflies` but also introduce a lot of color bias. + Useful for viewport temporal stability or making render converge faster. + +Bilateral Filter + Blur the resolved ray-traced output using a bilateral filter. + + +Fast GI Approximation +_____________________ + +This Fast GI Approximation is a fallback to the ray-tracing pipeline for +:abbr:`BSDF (Bidirectional Scattering Distribution Function)` with high roughness. +It produces less noisy output and capture bounce lighting more efficiently than individually traced rays. + +This is currently implemented as a screen space effect and will inherit. + +.. seealso:: :ref:`Limitations `. + +Method + Determine the methods used to compute the fast GI approximation. + + :Ambient Occlusion: + Use scene intersections to shadow the distant lighting from light-probes. + This is the fastest option. + + :Global Illumination: + Compute global illumination taking into account light bouncing off surrounding objects. + +Resolution + Resolution at which the fast GI is computed. + Lower options will be faster and use less memory but will produce blurrier results. + +Ray Count + Amount of GI ray per pixels at the specified *Resolution*. + Higher values will reduce noise. + +Step Count + Amount of screen sample per GI ray. + Higher values will reduce the noise amount and increase the quality. + + .. note:: + + With higher step count, there is less chance to miss other surfaces that could reflect of block the light. + This means that the Fast GI *Thickness* parameter can be tweaked to lower values without loosing too much light bounce energy. + +Precision + Higher values increase the precision of the scene intersections with the GI rays. + Increased precision also increases performance cost. + + +Distance + If non-zero, the maximum distance at which other surfaces will contribute to the fast GI approximation. + +Thickness Near + Geometric thickness of the surfaces when computing fast GI and ambient occlusion. + Reduces light leaking and missing contact occlusion. + +Thickness Far + Angular thickness of the surfaces when computing fast GI and ambient occlusion. + Reduces energy loss and missing occlusion of far geometry. -- 2.30.2 From 1ca9b7780c525be8195803d13e523413efac4eaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Fri, 7 Jun 2024 20:13:36 +0200 Subject: [PATCH 05/25] Add precision to fast GI thickness --- manual/render/eevee/render_settings/raytracing.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/manual/render/eevee/render_settings/raytracing.rst b/manual/render/eevee/render_settings/raytracing.rst index fd209fa6a..8bf0a8182 100644 --- a/manual/render/eevee/render_settings/raytracing.rst +++ b/manual/render/eevee/render_settings/raytracing.rst @@ -120,7 +120,9 @@ Distance Thickness Near Geometric thickness of the surfaces when computing fast GI and ambient occlusion. Reduces light leaking and missing contact occlusion. + The effectiveness decreases proportionally to the distance from the shading point, following the inverse square law. Thickness Far Angular thickness of the surfaces when computing fast GI and ambient occlusion. Reduces energy loss and missing occlusion of far geometry. + Higher values will make the very thin objects block or reflect too much light. -- 2.30.2 From d38d78fe7d6911b92c11407384797fbd8fe1aa8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Fri, 7 Jun 2024 21:21:42 +0200 Subject: [PATCH 06/25] Pass over sampling --- manual/render/eevee/render_settings/index.rst | 8 ++--- .../render/eevee/render_settings/lights.rst | 10 ------ .../render/eevee/render_settings/sampling.rst | 31 +++++++++++++++++++ 3 files changed, 34 insertions(+), 15 deletions(-) delete mode 100644 manual/render/eevee/render_settings/lights.rst diff --git a/manual/render/eevee/render_settings/index.rst b/manual/render/eevee/render_settings/index.rst index 57e717725..71d2e2dab 100644 --- a/manual/render/eevee/render_settings/index.rst +++ b/manual/render/eevee/render_settings/index.rst @@ -10,13 +10,11 @@ sampling.rst clamping.rst raytracing.rst - shadows.rst volumes.rst - performance.rst curves.rst - lights.rst - light_probes.rst - film.rst depth_of_field.rst motion_blur.rst + film.rst + performance.rst grease_pencil.rst + light_probes.rst diff --git a/manual/render/eevee/render_settings/lights.rst b/manual/render/eevee/render_settings/lights.rst deleted file mode 100644 index adb87d49a..000000000 --- a/manual/render/eevee/render_settings/lights.rst +++ /dev/null @@ -1,10 +0,0 @@ -****** -Lights -****** - -.. reference:: - - :Panel: :menuselection:`Render --> Lights` - -Light Threshold - Minimum light intensity for a light to contribute to the lighting. diff --git a/manual/render/eevee/render_settings/sampling.rst b/manual/render/eevee/render_settings/sampling.rst index b508de492..65f7b538b 100644 --- a/manual/render/eevee/render_settings/sampling.rst +++ b/manual/render/eevee/render_settings/sampling.rst @@ -24,9 +24,40 @@ Samples Temporal Reprojection Reduces noise while moving the viewport or during animation playback. Can leave some ghosting. +Jittered Shadows + Enable jittered shadows on the viewport. + Jittered shadows are always enabled for final renders. + This also affects shadows casted by transparent shadows. + + Render ====== Samples The number of samples to use in the final render. + +Shadows +======= + +Shadow Rays Count + Amount of shadow rays to trace for each light. + +Shadow Steps Count + Amount of shadow map sample per shadow ray. + +Volumetric Shadows + Approximate light absorption of the surrounding volume objects. This makes the volumes more opaque to light. + This is a very computationally expensive option and has limitations. + +.. seealso:: :ref:`Limitations `. + +Volumetric Shadows Steps + Number of steps to compute volumetric shadowing. + + +Advanced +======== + +Light Threshold + Minimum light intensity for a light to contribute to the lighting. -- 2.30.2 From 33b962904577308a1d87480f5110730f34519cc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Fri, 7 Jun 2024 21:39:44 +0200 Subject: [PATCH 07/25] Pass over volumes --- .../render/eevee/render_settings/sampling.rst | 2 + .../render/eevee/render_settings/shadows.rst | 25 --------- .../render/eevee/render_settings/volumes.rst | 52 +++++++------------ 3 files changed, 20 insertions(+), 59 deletions(-) delete mode 100644 manual/render/eevee/render_settings/shadows.rst diff --git a/manual/render/eevee/render_settings/sampling.rst b/manual/render/eevee/render_settings/sampling.rst index 65f7b538b..78e82db22 100644 --- a/manual/render/eevee/render_settings/sampling.rst +++ b/manual/render/eevee/render_settings/sampling.rst @@ -46,6 +46,8 @@ Shadow Rays Count Shadow Steps Count Amount of shadow map sample per shadow ray. +.. _bpy.types.SceneEEVEE.volumetric_shadow: + Volumetric Shadows Approximate light absorption of the surrounding volume objects. This makes the volumes more opaque to light. This is a very computationally expensive option and has limitations. diff --git a/manual/render/eevee/render_settings/shadows.rst b/manual/render/eevee/render_settings/shadows.rst deleted file mode 100644 index e8c8c3fb6..000000000 --- a/manual/render/eevee/render_settings/shadows.rst +++ /dev/null @@ -1,25 +0,0 @@ -.. _bpy.types.SceneEEVEE.shadow: - -******* -Shadows -******* - -These settings influence shadows which appear on objects because there is another object (the occluder) -between them and a Light. - -.. reference:: - - :Panel: :menuselection:`Render --> Shadows` - -Pool Size - Size of the shadow pool, a bigger pool size allows for more shadows in the scene, but might not - fit into GPU memory. - -Rays - Amount of shadow rays to trace for each light. - -Steps - Amount of shadow map sample per shadow ray. - -Normal Bias - Move along their normal. diff --git a/manual/render/eevee/render_settings/volumes.rst b/manual/render/eevee/render_settings/volumes.rst index 0656943bf..5f633bd50 100644 --- a/manual/render/eevee/render_settings/volumes.rst +++ b/manual/render/eevee/render_settings/volumes.rst @@ -7,7 +7,7 @@ Volumetrics EEVEE simulates volumetric scattering by evaluating all volume objects inside the view frustum. To achieve this, EEVEE uses several 3D textures which have a high video memory usage. -The texture dimensions can be tweaked using the *Tile Size* and *Samples* parameters. +The texture dimensions can be tweaked using the *Resolution* and *Steps* parameters. Object volumes have some :ref:`limitations `. @@ -15,50 +15,34 @@ Object volumes have some :ref:`limitations `. :Panel: :menuselection:`Properties --> Render --> Volumetrics` -Start - Start distance of the volumetric effect. +Resolution + Controls the quality of the volumetric effects. Lower resolution increases video memory usage and quality. -End - End distance of the volumetric effect. - -Tile Size - Controls the quality of the volumetric effects. Lower size increases video memory usage and quality. - This is the size in pixels of a volumetric cell. - -Samples - Number of samples to compute volumetric effects. Higher count increases video memory usage and quality. +Steps + Number of steps to compute volumetric effects. Higher count increases video memory usage and quality. These samples are distributed along the view depth (view Z axis). Distribution Blend between linear and exponential sample distribution. Higher values puts more samples near the camera. Max Depth - Maximum surface intersection count used by accurate volume intersection method. Will create - artifacts if it is exceeded. + Maximum surface intersection count used by accurate volume intersection method. + Will create artifacts if it is exceeded. -.. _bpy.types.SceneEEVEE.volumetric_light: +Custom Range +============ -Volumetric Lighting -=================== +When working with volumes objects, EEVEE automatically compute the best depth range where to compute +the volume sampling and lighting. +In certain situation, this isn't enough and produces sub-optimal sampling which increases noise. +This is particularly the case when using a volume shader inside the *World* or when working with large of volume objects. +The custom depth range can be enabled to restrict the computation of volumes to a certain range along the camera depth and thus increase precision. -Let the volume scattering scatter light in the scene. -Unnecessary if no Volume Scatter is present in the scene. +Start + Start distance of the volumetric effect. -Light Clamping - Clamp light contribution of the volume scattering effect. Reduces flickering and noise. - Set to 0.0 to disable clamping. - - -.. _bpy.types.SceneEEVEE.volumetric_shadow: - -Volumetric Shadows -================== - -Approximate light absorption of the surrounding volume objects. This makes the volumes more opaque to light. -This is a very computationally expensive option and has limitations. - -Samples - Number of samples to compute volumetric shadowing. +End + End distance of the volumetric effect. .. seealso:: :ref:`Limitations `. -- 2.30.2 From 0ffb73446432e887f5fd6eb272de2da2967cd538 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Fri, 7 Jun 2024 21:49:25 +0200 Subject: [PATCH 08/25] Pass over performance --- .../eevee/render_settings/performance.rst | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/manual/render/eevee/render_settings/performance.rst b/manual/render/eevee/render_settings/performance.rst index 604bb78b0..449220942 100644 --- a/manual/render/eevee/render_settings/performance.rst +++ b/manual/render/eevee/render_settings/performance.rst @@ -12,3 +12,24 @@ Performance High Quality Normals Uses higher precision normals and tangents which can improve visual quality for dense meshes with high frequency textures at the cost of memory. + + +Memory +====== + +Shadow Pool Size + A bigger pool size allows for more shadows in the scene but might not fit into GPU memory and decreases performance. + Increasing it might fix the *Shadow buffer full* error. + +Light Probes Volume Pool Size + A bigger pool size allows for more irradiance grid in the scene but might not fit into GPU memory and decreases performance. + + +Viewport +======== + +.. _bpy.types.RenderSettings.preview_pixel_size: + +Pixel Size + Option to control the resolution for viewport rendering. + Allows you to speed up viewport rendering, which is especially useful for displays with high DPI. -- 2.30.2 From abb15ba3d0eacb37687263888e07100a5d6ae5cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Fri, 7 Jun 2024 21:51:56 +0200 Subject: [PATCH 09/25] Pass over lightprobe --- manual/render/eevee/render_settings/index.rst | 1 - .../eevee/render_settings/light_probes.rst | 35 ------------------- 2 files changed, 36 deletions(-) delete mode 100644 manual/render/eevee/render_settings/light_probes.rst diff --git a/manual/render/eevee/render_settings/index.rst b/manual/render/eevee/render_settings/index.rst index 71d2e2dab..8454fd6b2 100644 --- a/manual/render/eevee/render_settings/index.rst +++ b/manual/render/eevee/render_settings/index.rst @@ -17,4 +17,3 @@ film.rst performance.rst grease_pencil.rst - light_probes.rst diff --git a/manual/render/eevee/render_settings/light_probes.rst b/manual/render/eevee/render_settings/light_probes.rst deleted file mode 100644 index 60cf19ca4..000000000 --- a/manual/render/eevee/render_settings/light_probes.rst +++ /dev/null @@ -1,35 +0,0 @@ -.. _bpy.ops.scene.light_cache: -.. _bpy.types.SceneEEVEE.gi: - -************ -Light Probes -************ - -While not strictly correct, all lighting that is not coming straight out -from a light object is considered as indirect lighting in EEVEE. -That means distant :term:`HDRI` lighting (or World) is considered as indirect lighting. - -In EEVEE, indirect lighting is separated into two component: Diffuse and Specular. -Both have different needs and representation. For efficiency, -the diffuse indirect lighting data is precomputed on demand into a static lighting cache. - -As of now the diffuse light cache is static and needs to be computed before rendering. -It cannot be updated per frame (unless via scripting). -This limitation is being worked on and will be removed in future versions. - - -.. reference:: - - :Panel: :menuselection:`Render --> Light Probes` - -Sphere -====== -Resolution - Resolution when using Light Probe Spheres. - -Volume -====== - -Pool Size - Size of the irradiance pool, a bigger pool size allows for more irradiance grid in the scene, - but might not fit into GPU memory and decreases performance. -- 2.30.2 From 3a1b68302559584f09c85a4d03941b9e3534a2e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Mon, 10 Jun 2024 20:16:18 +0200 Subject: [PATCH 10/25] Pass over Light Probes --- manual/render/eevee/index.rst | 3 +- .../eevee/light_probes/introduction.rst | 6 +- manual/render/eevee/light_probes/plane.rst | 47 +++--- manual/render/eevee/light_probes/sphere.rst | 42 +++-- manual/render/eevee/light_probes/volume.rst | 155 +++++++++++++----- manual/render/eevee/scene.rst | 6 + 6 files changed, 183 insertions(+), 76 deletions(-) create mode 100644 manual/render/eevee/scene.rst diff --git a/manual/render/eevee/index.rst b/manual/render/eevee/index.rst index ed512b3e7..f45aa475c 100644 --- a/manual/render/eevee/index.rst +++ b/manual/render/eevee/index.rst @@ -10,9 +10,10 @@ introduction.rst render_settings/index.rst - materials/index.rst world.rst + scene.rst lighting.rst light_probes/index.rst + materials/index.rst limitations.rst limitations_shadow.rst diff --git a/manual/render/eevee/light_probes/introduction.rst b/manual/render/eevee/light_probes/introduction.rst index 1e518fd5a..7702809ae 100644 --- a/manual/render/eevee/light_probes/introduction.rst +++ b/manual/render/eevee/light_probes/introduction.rst @@ -4,9 +4,9 @@ Introduction ************ Light probe objects are used by EEVEE as support objects. -They record lighting information locally in order to light the scene using indirect lighting. -There are three different types of light probes. One for diffuse lighting, two for specular lighting. +There are three different types of light probes. +Each type of light probe record the lighting at different resolution and frequency. +They are used together to recover incoming light information when using ray tracing is not possible (either for performance or for technical limitations). These types of objects are only useful for EEVEE (and by extension, the Material Preview mode). -They are meant to guide the engine to compute better lighting quickly. diff --git a/manual/render/eevee/light_probes/plane.rst b/manual/render/eevee/light_probes/plane.rst index 010267ee5..fb4b84fb3 100644 --- a/manual/render/eevee/light_probes/plane.rst +++ b/manual/render/eevee/light_probes/plane.rst @@ -1,18 +1,18 @@ -****************** -Light Probe Planes -****************** +***************** +Light Probe Plane +***************** -These special types of light probe object are suited to smooth planar surfaces. -They basically capture the scene with a flipped camera. +A light probe plane records the light incoming from a single direction for all visible points on a plane. +The specular reflection direction is the only one currently available. -Using planar light probes adds more render time as the scene needs to be rendered as many times as -there are light probe planes in the view. +This type of light probe is suited to smooth planar surfaces. -Light probe planes only work when ray tracing method is set to `Screen-Trace`. If ray tracing -is enabled, light probe planes will serve as support buffers. This accelerates the tracing process -and completes the missing data from the view space. This also make reflection more correct for the -affected surfaces that have medium roughness and disturbed normals (i.e. normal maps). +Each visible planar light probes increases the render time as the scene needs to be rendered for +each of them. + +Light probe planes only work when ray tracing method is set to `Screen-Trace`. When enabled, they +accelerate the tracing process and complete the missing data from the screen space ray tracing. .. note:: @@ -26,25 +26,28 @@ If Backface Culling is not enabled, snapping the light probe plane to the planar will effectively capture the underside of the surface. You can manually move the light probe plane above the surface enough for it to not appear in the capture. -Alternatively you can disable the light probe visibility in the object panel. +Alternatively you can disable the light probe visibility in the object visibility panel. .. reference:: :Panel: :menuselection:`Object Data --> Probe` -Clipping Offset - Define how much below the plane the near clip is when capturing the scene. - Increasing this can fix reflection contact problems. - Distance - A probe object only influences the lighting of nearby surfaces. + A probe object only influences the lighting of surfaces inside its influence zone. This influence zone is defined by the Distance parameter and object scaling. - The influence distance varies is a bit, depending on the probe type. For light probe planes the influence distance is the distance from the plane. Only surfaces whose normals are aligned with the Reflection Plane will receive the captured reflection. +Capture +======= + +Clipping Offset + Define how much below the plane the near clip is when capturing the scene. + Increasing this can fix reflection contact problems. + + Viewport Display ================ @@ -52,11 +55,11 @@ Viewport Display :Panel: :menuselection:`Object Data --> Viewport Display` -Influence - Show the influence bounds in the 3D Viewport. - Arrow Size Size of the arrow showing the reflection plane normal. -Show Preview Plane +Capture Show the captured reflected image onto a fully reflective plane in the 3D Viewport. + +Influence + Show the influence bounds in the 3D Viewport. diff --git a/manual/render/eevee/light_probes/sphere.rst b/manual/render/eevee/light_probes/sphere.rst index e30bcf970..e148dd233 100644 --- a/manual/render/eevee/light_probes/sphere.rst +++ b/manual/render/eevee/light_probes/sphere.rst @@ -3,35 +3,50 @@ Light Probe Sphere ****************** -Specular Indirect Lighting can be stored in a light probe sphere. +A light probe sphere records the light incomming from many directions at a single location. -.. seealso:: +They are used for smooth and semi-rough reflections. +They then smoothly blend to light probe volume lighting for completely diffuse reflections. - :doc:`Indirect Lighting `. - -*Ray traced reflections* are more precise than spherical light probes. -If enabled, they have priority and spherical light probes are used as a fall back if a ray misses. +If *Raytracing* is turned on, they are used as a fall back if a ray misses. .. note:: - Spherical light probes are encoded into tetrahedral maps. Some distortions may occur on the - negative Z hemisphere. Those are more visible with higher roughness values. + In both usage, the light probe spheres are shadowed by light probe volume. This is to +Adjusting their resolution is done inside the *Scene* data panel. + +.. seealso:: + + :doc:`Scene `. + +The world also have an internal light probe sphere which resolution can be adjusted in the *World* data panel. + +.. seealso:: + + :doc:`World `. .. reference:: :Panel: :menuselection:`Object Data --> Probe` -Shape/Type +Type Select the shape of the influence volume. Can be set to Sphere or Box. -Size +Radius A probe object only influences the lighting of nearby surfaces. This influence zone is defined by the size parameter and object scaling. Falloff Percentage of the influence distance during which the influence of a probe fades linearly. + +Capture +======= + +In the viewport, capture only happens if an update is detected on the light probe data or position. +For renders, the capture happens at the start of each frame. + Clipping Define the near and far clip distances when capturing the scene. @@ -54,11 +69,14 @@ change the shape and radius of the parallax volume independently. Viewport Display ================ -Influence - Show the influence bounds in the 3D Viewport. The inner sphere is where the falloff starts. +Data + Show the captured light using a reflective sphere of the given size. Clipping Show the clipping distance in the 3D Viewport. +Influence + Show the influence bounds in the 3D Viewport. The inner sphere is where the falloff starts. + Parallax Show the *Custom Parallax* shape in the 3D Viewport. diff --git a/manual/render/eevee/light_probes/volume.rst b/manual/render/eevee/light_probes/volume.rst index c0822a32b..9edb7ca4f 100644 --- a/manual/render/eevee/light_probes/volume.rst +++ b/manual/render/eevee/light_probes/volume.rst @@ -3,9 +3,10 @@ Light Probe Volume ****************** -Diffuse indirect lighting is stored in a light probe volume object. +A volume probe records the light incomming from all directions at a many locations inside a volume. -Lighting is computed at the dot positions visible when the Irradiance Volume object is selected. +The light is then filtered and only the diffuse light is recorded. +The capture point positions are visible as an overlay when the Irradiance Volume object is selected. If an object is not inside any Irradiance Volume, or if the indirect lighting has not been baked, the world's diffuse lighting will be used to shade it. @@ -14,73 +15,151 @@ the world's diffuse lighting will be used to shade it. - When lighting indoor environments, try to align grids with the room shape. - Try not to put too much resolution in empty areas or areas with a low amount of lighting variation. - - You can fix bad samples by adding a smaller grid near the problematic area. + - Bad samples can be fixed by adding a smaller grid near the problematic area. + - Large scenes may require using many volumes with different level of details. .. reference:: :Panel: :menuselection:`Object Data --> Probe` +Intensity + Intensity factor of the recorded lighting. + Making this parameter anything other than 1.0 is not physically correct. + To be used for tweaking, animating or artistic purposes. + + +Sampling Bias +============= + +Normal Bias + Offset sampling of the irradiance grid in the surface normal direction to reduce light bleeding. + Can lead to specular appearance of diffuse surface if set too high. + +View Bias + Offset sampling of the irradiance grid in the viewing direction to reduce light bleeding. + Can lead to view dependant result if set too high. Prefer this if camera is static. + +Facing Bias + When set to zero, avoids capture points behind the shaded surface to bleed light onto + the shaded surface, but this produces non-smooth interpolation when the capture resolution is high. + Increasing this bias will make the interpolation smoother but also introduce some light bleeding. + + +Validity & Dilation +=================== + +During the baking process, a validity score is assigned to each capture point. +This score is based on the number of back-face was hit when capturing the incoming lighting. +Only materials with *Single Sided* turned on for Light Probe Volumes will reduce the validity score. + +Validity Threshold + Capture points with validity below this threshold will be ignored during lighting interpolation. + This remove the influence of capture points trapped inside closed geometry, reducing the artifacts they produced. + +Dilation Threshold + Capture points with validity below this threshold will have their data replaced using valid neighbors. + +Dilation radius + Radius in capture points in which to search for a valid neighbor. + + +Bake +==== + +Light probe volume light data is static and needs to be manually baked. +Once baked, the data is stored inside the object data-block and can be moved, animated and linked +between blender files. + +.. note:: + Baking uses the render visibility of the objects in the scene. + +During baking, the scene is converted into a different representation to accelerate light transport. +This representation can be very memory intensive and prevent baking if it cannot fit inside the GPU memory. +There are a few way to deal with this issue: + - Larger scene should be divided into smaller sections or using different level of details. + - Reduce + - Turn off the light probe volume visibility option on objects that have little to no effect in the bake. + +.. tip:: + + The internal scene representation can be inspected using the `Debug Value` 3, 4 and 5. + Resolution Spatial resolution for volumetric light probes is determined per probe. The local volume is divided into a regular grid of the specified dimensions. Irradiance light sample will be computed for each cell in this grid. -Intensity - Intensity factor of the recorded lighting. - Making this parameter anything other than 1.0 is not physically correct. Use it for tweaking or - artistic purposes. - Bake Samples Number of ray directions to evaluate when baking. + This increases the baking time proportionally to the size of the scene representation. -Surfel Density - Number of surfels per unit distance. Higher values improves quality. +Surfel Resolution + Number of surfels to spawn in one local unit distance. + Higher values increase quality. Have a huge impact on memory usage. + A good value is twice the maximum *Resolution*. + + +Capture +======= Capture Distance - The maximum distance to capture light from. + Distance around the light probe volume that will be captured during the bake. + A distance of 0 will only considered the inside of the volume. + +World Contribution + Bake incoming light from the world instead of just visibility for more accurate lighting, + but lose correct blending to surrounding irradiance volumes. + +Indirect Light Contribution + Capture light bounces from light source. + +Emission Contribution + Capture emissive surfaces when baking. + + +Clamping +======== Clamp Direct Clamp incoming direct light. 0.0 disables direct light clamping. + Here direct light refers to the light that bounces only once (from light object) + or coming from emissive materials. Clamp Indirect Clamp incoming indirect light. 0.0 disables indirect light clamping. + Here indirect light refers to the light that bounces off a surface after the first bounce (from light object) + or during the first bounce if the light comes from emissive materials. -Normal Bias - Offset sampling of the irradiance grid in the surface normal direction to reduce light bleeding. +.. tip:: -Facing Bias - Smoother irradiance interpolation but introduce light bleeding. - -Capture Surface Bias - Moves capture points position away from surfaces to avoid artifacts. - -Capture Escape Bias - Moves capture points outside objects. - -Dilation Threshold - Ratio of front-facing surface hits under which a grid sample will reuse neighbors grid sample - lighting. - -Dilation radius - Radius in grid sample to search valid grid samples to copy into invalid grid samples. - -Capture world - Bake incoming light fromn the world, instead of just visibility, for more accurate lighting, - but lose correct blending to surrounding irradiance volumes. - -Capture Indirect - Bake light bounces from light source for more accurate lighting. - -Capture Emission - Bake emissive surfaces for more accurate lighting. + Setting *Clamp Indirect* to a very non-zero value will effectively only record the first light bounce leading. +Offset +====== + +In order to reduce artifacts caused by bad capture points positioning, the bake process will adjust their location. +First by moving them slightly away from surrounding surfaces, avoiding banding artifacts. +It also tries to move them out of objects if they are not so far bellow the surface. + +Surface Offset + Distance to move the capture points away from surfaces. + +Search Distance + Distance to search for valid capture positions if the capture point is near the back-face of a single-sided object. + +.. note:: + + Only materials with *Single Sided* turned on for Light Probe Volumes will move capture point position. Viewport Display ================ +Data + Show the captured light using small diffuse spheres of the given size. + Influence Show the influence bounds in the 3D Viewport. The inner sphere is where the falloff starts. diff --git a/manual/render/eevee/scene.rst b/manual/render/eevee/scene.rst new file mode 100644 index 000000000..ad52b481c --- /dev/null +++ b/manual/render/eevee/scene.rst @@ -0,0 +1,6 @@ + +***** +Scene +***** + +TODO \ No newline at end of file -- 2.30.2 From d518607b7bbd06919f915f0c3a515f094d2aecd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Tue, 11 Jun 2024 14:05:07 +0200 Subject: [PATCH 11/25] Move things around and rename to follow cycles --- manual/render/eevee/index.rst | 12 ++++++------ .../eevee/{lighting.rst => light_settings.rst} | 0 .../general_limitations.rst} | 5 +++-- manual/render/eevee/limitations/index.rst | 11 +++++++++++ .../{materials => limitations}/nodes_support.rst | 0 .../shadows_limitations.rst} | 8 +++----- .../settings.rst => material_settings.rst} | 6 ++++-- manual/render/eevee/materials/index.rst | 1 - manual/render/eevee/object_settings/object_data.rst | 6 ++++++ .../render/eevee/{scene.rst => scene_settings.rst} | 0 .../render/eevee/{world.rst => world_settings.rst} | 0 11 files changed, 33 insertions(+), 16 deletions(-) rename manual/render/eevee/{lighting.rst => light_settings.rst} (100%) rename manual/render/eevee/{limitations.rst => limitations/general_limitations.rst} (97%) create mode 100644 manual/render/eevee/limitations/index.rst rename manual/render/eevee/{materials => limitations}/nodes_support.rst (100%) rename manual/render/eevee/{limitations_shadow.rst => limitations/shadows_limitations.rst} (71%) rename manual/render/eevee/{materials/settings.rst => material_settings.rst} (92%) create mode 100644 manual/render/eevee/object_settings/object_data.rst rename manual/render/eevee/{scene.rst => scene_settings.rst} (100%) rename manual/render/eevee/{world.rst => world_settings.rst} (100%) diff --git a/manual/render/eevee/index.rst b/manual/render/eevee/index.rst index f45aa475c..dedbfa0db 100644 --- a/manual/render/eevee/index.rst +++ b/manual/render/eevee/index.rst @@ -10,10 +10,10 @@ introduction.rst render_settings/index.rst - world.rst - scene.rst - lighting.rst + world_settings.rst + scene_settings.rst + object_settings.rst + materials_settings.rst + light_settings.rst light_probes/index.rst - materials/index.rst - limitations.rst - limitations_shadow.rst + limitations/index.rst diff --git a/manual/render/eevee/lighting.rst b/manual/render/eevee/light_settings.rst similarity index 100% rename from manual/render/eevee/lighting.rst rename to manual/render/eevee/light_settings.rst diff --git a/manual/render/eevee/limitations.rst b/manual/render/eevee/limitations/general_limitations.rst similarity index 97% rename from manual/render/eevee/limitations.rst rename to manual/render/eevee/limitations/general_limitations.rst index 40ae943a1..3fbcee3ae 100644 --- a/manual/render/eevee/limitations.rst +++ b/manual/render/eevee/limitations/general_limitations.rst @@ -110,11 +110,12 @@ Shader Nodes - All BSDF's are using approximations to achieve realtime performance so there will always be small differences between Cycles and EEVEE. - Some utility nodes are not yet compatible with EEVEE. -- Certain combinations of BSDF's will result in more noise than others. This is the case of mixing Diffuse BSDF and Refraction BSDF. +- Certain combinations of BSDF's will result in more noise than others. + This is the case when mixing Diffuse BSDF and Refraction BSDF. .. seealso:: - For a full list of unsupported nodes see :doc:`Nodes Support `. + For a full list of unsupported nodes see :doc:`Nodes Support `. Memory Management diff --git a/manual/render/eevee/limitations/index.rst b/manual/render/eevee/limitations/index.rst new file mode 100644 index 000000000..136295bd3 --- /dev/null +++ b/manual/render/eevee/limitations/index.rst @@ -0,0 +1,11 @@ + +############# + Limitations +############# + +.. toctree:: + :maxdepth: 2 + + general_limitations.rst + shadows_limitations.rst + nodes_support.rst diff --git a/manual/render/eevee/materials/nodes_support.rst b/manual/render/eevee/limitations/nodes_support.rst similarity index 100% rename from manual/render/eevee/materials/nodes_support.rst rename to manual/render/eevee/limitations/nodes_support.rst diff --git a/manual/render/eevee/limitations_shadow.rst b/manual/render/eevee/limitations/shadows_limitations.rst similarity index 71% rename from manual/render/eevee/limitations_shadow.rst rename to manual/render/eevee/limitations/shadows_limitations.rst index 2263309f2..e597b1a95 100644 --- a/manual/render/eevee/limitations_shadow.rst +++ b/manual/render/eevee/limitations/shadows_limitations.rst @@ -1,12 +1,10 @@ .. _eevee-limitations-shadows: -****************** -Limitations shadow -****************** +******************* +Shadows Limitations +******************* .. todo:: This section still needs to be written. Explaining the limitations of the SVM shadowing algorithm. - - diff --git a/manual/render/eevee/materials/settings.rst b/manual/render/eevee/material_settings.rst similarity index 92% rename from manual/render/eevee/materials/settings.rst rename to manual/render/eevee/material_settings.rst index 7427a2f9d..cd66387b3 100644 --- a/manual/render/eevee/materials/settings.rst +++ b/manual/render/eevee/material_settings.rst @@ -53,7 +53,7 @@ Render Method :Blended: Allows the colored transparency, but incompatible with render passes and raytracing. Also known as forward rendering. - + Transparency Overlap Render multiple transparent layers. May introduce transparency sorting problems. @@ -81,5 +81,7 @@ Intersection overhead compared to the fast method. +.. seealso:: - + While EEVEE shares the same material node system as Cycles, not all features are supported. + See :ref:`Material limitations ``. diff --git a/manual/render/eevee/materials/index.rst b/manual/render/eevee/materials/index.rst index 07eaa3645..6019dd5c8 100644 --- a/manual/render/eevee/materials/index.rst +++ b/manual/render/eevee/materials/index.rst @@ -8,4 +8,3 @@ introduction.rst nodes_support.rst - settings.rst diff --git a/manual/render/eevee/object_settings/object_data.rst b/manual/render/eevee/object_settings/object_data.rst new file mode 100644 index 000000000..60eeda8f0 --- /dev/null +++ b/manual/render/eevee/object_settings/object_data.rst @@ -0,0 +1,6 @@ + +****** +Object +****** + +TODO \ No newline at end of file diff --git a/manual/render/eevee/scene.rst b/manual/render/eevee/scene_settings.rst similarity index 100% rename from manual/render/eevee/scene.rst rename to manual/render/eevee/scene_settings.rst diff --git a/manual/render/eevee/world.rst b/manual/render/eevee/world_settings.rst similarity index 100% rename from manual/render/eevee/world.rst rename to manual/render/eevee/world_settings.rst -- 2.30.2 From c088d82ee136f3fcd4812b5b6d339f0f1162181b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Tue, 11 Jun 2024 14:29:52 +0200 Subject: [PATCH 12/25] Pass over scene settings --- manual/render/eevee/index.rst | 2 +- manual/render/eevee/scene_settings.rst | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/manual/render/eevee/index.rst b/manual/render/eevee/index.rst index dedbfa0db..983032d66 100644 --- a/manual/render/eevee/index.rst +++ b/manual/render/eevee/index.rst @@ -10,8 +10,8 @@ introduction.rst render_settings/index.rst - world_settings.rst scene_settings.rst + world_settings.rst object_settings.rst materials_settings.rst light_settings.rst diff --git a/manual/render/eevee/scene_settings.rst b/manual/render/eevee/scene_settings.rst index ad52b481c..fb743ce4a 100644 --- a/manual/render/eevee/scene_settings.rst +++ b/manual/render/eevee/scene_settings.rst @@ -1,6 +1,10 @@ -***** -Scene -***** +************** +Scene Settings +************** -TODO \ No newline at end of file +Light Probes +============ + +Light Probe Spheres Resolution + Defines the resolution of every light probe sphere in the scene. -- 2.30.2 From b05196cd472bfa84f843bf05e4294ce213b39cb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Tue, 11 Jun 2024 15:07:14 +0200 Subject: [PATCH 13/25] Pass over world settings --- manual/render/eevee/world_settings.rst | 88 ++++++++++++++++++++++---- 1 file changed, 76 insertions(+), 12 deletions(-) diff --git a/manual/render/eevee/world_settings.rst b/manual/render/eevee/world_settings.rst index b3bc1371d..3c753c467 100644 --- a/manual/render/eevee/world_settings.rst +++ b/manual/render/eevee/world_settings.rst @@ -1,13 +1,12 @@ -***** -World -***** +************** +World Settings +************** The world environment can emit light, ranging from a single solid color to arbitrary textures. -In EEVEE, the world lighting contribution is first rendered and -stored in smaller resolution textures before being applied to the objects. +In EEVEE, the world lighting contribution is stored into internal :ref:`Light Probe`. This makes the lighting less precise than Cycles. Mist Pass @@ -17,27 +16,92 @@ Mist Pass :Panel: :menuselection:`World --> Mist Pass` +.. note:: + + The mist pass must be enabled in the View Layer tab + of the :doc:`Properties Editor ` + before the settings below are available in the World tab. + +Mist can greatly enhance the illusion of depth in your rendering. To create mist, +Blender generates a render layer with a depth map ranging between 0.0 and 1.0 +that can be used in the Compositor to generate a mist effect. + +.. _bpy.types.WorldMistSettings.start: + Start - Starting distance of the mist, measured from the camera. + The distance from the camera at which the mist starts to fade in. + +.. _bpy.types.WorldMistSettings.depth: Depth - Distance over which the mist effect fades in. + The distance from *Start* of the mist, that it fades in over. + Objects further from the camera than *Start + Depth* are completely hidden by the mist. + +.. _bpy.types.WorldMistSettings.falloff: Falloff - Type of transition used to face mist. + The curve function that controls the rate of change of the mist's strength further and further into the distance. + + :Quadratic: + Uses the same calculation as light falloff (:math:`1\over{x^2}`) and provides the smoothest + transition from transparent (0.0) to opaque (1.0). + :Linear: Has a steeper start than quadratic (:math:`1\over{x}`). + :Inverse Quadratic: + Has the steepest start (:math:`1\over{\sqrt{x}}`) and approaches 1.0 faster than the other two functions. + +.. tip:: + + A visualization can be activated in the :menuselection:`Camera --> Viewport Display` panel. + +.. figure:: /images/render_cycles_world-settings_mist-example1-BI.jpg + + Mist example + (`blend-file `__). -Light Probe -=========== +Settings +======== .. reference:: :Panel: :menuselection:`World --> Light Probe` + +Light Probe +----------- + +.. _bpy.types.World.probe_resolution: + Resolution The resolution used to store the light from the world. - + This is equivalent to the resolution for light probe spheres. .. seealso:: - :doc:`Indirect Lighting `. + :doc:`Light Probe Sphere `. + +Sun +--- + +EEVEE can separate the light from intense light sources (e.g. a sun from an outdoor HDRI) and +replace them by a sun light. This increases the quality of the lighting as the internal light probes +alone cannot reproduce this type of lighting with enough precision. + +Threshold + If non-zero, the maximum value for world contribution that will be recorded inside the world light probe. + The excess contribution is converted to a sun light. + This reduces the light bleeding caused by very bright light sources. + A value of zero will disable this feature and all lighting will be stored inside the internal light probes. + +Angle + Angle of the extracted sun light. + Angular diameter of the Sun as seen from the Earth + +Use Shadow + Enable shadow casting on the extracted sun light. + +.. seealso:: + + The shadow properties control the extracted sun shadows. + They are exactly the same as for a sun light object. + :doc:`Light Properties `. -- 2.30.2 From 66562549eba01332330e1ad26c0cdade5fa920bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Tue, 11 Jun 2024 15:19:06 +0200 Subject: [PATCH 14/25] Pass over material settings --- manual/render/eevee/material_settings.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/manual/render/eevee/material_settings.rst b/manual/render/eevee/material_settings.rst index cd66387b3..53df3ff2c 100644 --- a/manual/render/eevee/material_settings.rst +++ b/manual/render/eevee/material_settings.rst @@ -33,6 +33,9 @@ Backface Culling Shadow Use back face culling when casting shadows. + Light Probe Volume + Use back face culling when baking light probe volumes. + Max Displacement The maximum distance a vertex can be displaced. Displacements over this threshold may cause visibility issues. -- 2.30.2 From 5acc07af9870e3f50e6baf18ca6de1990379d002 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Tue, 11 Jun 2024 17:15:30 +0200 Subject: [PATCH 15/25] Pass over material setting --- manual/render/eevee/index.rst | 2 +- .../eevee/limitations/general_limitations.rst | 1 + manual/render/eevee/material_settings.rst | 144 +++++++++++++++--- 3 files changed, 126 insertions(+), 21 deletions(-) diff --git a/manual/render/eevee/index.rst b/manual/render/eevee/index.rst index 983032d66..5cdfee86a 100644 --- a/manual/render/eevee/index.rst +++ b/manual/render/eevee/index.rst @@ -13,7 +13,7 @@ scene_settings.rst world_settings.rst object_settings.rst - materials_settings.rst + material_settings.rst light_settings.rst light_probes/index.rst limitations/index.rst diff --git a/manual/render/eevee/limitations/general_limitations.rst b/manual/render/eevee/limitations/general_limitations.rst index 3fbcee3ae..66c6eaad0 100644 --- a/manual/render/eevee/limitations/general_limitations.rst +++ b/manual/render/eevee/limitations/general_limitations.rst @@ -112,6 +112,7 @@ Shader Nodes - Some utility nodes are not yet compatible with EEVEE. - Certain combinations of BSDF's will result in more noise than others. This is the case when mixing Diffuse BSDF and Refraction BSDF. +- Displacement of flat shaded surfaces will split the mesh. See :ref:`eevee-workaround-displacement` for workaround. .. seealso:: diff --git a/manual/render/eevee/material_settings.rst b/manual/render/eevee/material_settings.rst index 53df3ff2c..88efd1d3a 100644 --- a/manual/render/eevee/material_settings.rst +++ b/manual/render/eevee/material_settings.rst @@ -1,4 +1,3 @@ - ***************** Material Settings ***************** @@ -7,6 +6,11 @@ Material Settings :Panel: :menuselection:`Properties --> Material --> Settings` +.. seealso:: + + While EEVEE shares the same material node system as Cycles, not all features are supported. + See :ref:`Material limitations ``. + Pass Index ========== @@ -16,7 +20,7 @@ the :doc:`ID Mask Node ` in the Compositor. .. note:: - :doc:`Volume Objects ` are not supported. + :doc:`Volume Objects ` dp not support the pass index. .. _bpy.types.Material.surface: @@ -26,6 +30,7 @@ Surface Backface Culling Backface Culling hides the back side of faces. + This option should be turned on whenever it is possible, as it has an impact on performance. Camera Use back face culling to hide the back side of the face. @@ -35,14 +40,52 @@ Backface Culling Light Probe Volume Use back face culling when baking light probe volumes. + Additionally helps rejecting capture point inside the object to avoid light leaking. + + .. seealso:: + + :doc:`Light Probe Volume `. + + +.. _bpy.types.Material.displacement_method: + +Displacement Type + Controls how the displacement output from the shader node tree is used. + + :Bump Only: + Use Bump Mapping to simulated the appearance of displacement. + This only modifies the shading normal of the object. Vertex position is not affected. + + :Displacement Only: + This mode is not supported and fallback to *Displacement and Bump*. + + :Displacement and Bump: + Combination of true displacement and bump mapping for finer details. + Vertex position is modified. + + .. note:: + This type of displacement is not precomputed. It has a performance impact multiplied by the + render sample count. However, the evaluation is much faster than doing it using geometry + nodes or a displacement modifier. + +.. _eevee-workaround-displacement: + + .. note:: + Displacing flat shaded geometry will split adjacent faces. + This can be worked around by passing the vertex normals as a custom attribute. Max Displacement - The maximum distance a vertex can be displaced. Displacements over this threshold may cause - visibility issues. + The maximum distance a vertex can be displaced when using true displacement. + Displacements over this threshold may cause visibility issues. + These visibility issues can be observed when the object is out of view at the edge of screen + with parts being displaced inside the view. The object would then disappear because of camera culling. + This can also produce missing shadow updates where the displaced geometry is. + +.. _bpy.types.Material.use_transparent_shadow: Transparent shadows - Use transparent shadows for this material if it contains a Transparent BSDF, Disabling will - render faster but not give accurate shadows. + Use transparent shadows for this material if it contains a Transparent BSDF. + Disabling will render faster but not give accurate shadows. .. _bpy.types.Material.render_method: @@ -54,16 +97,83 @@ Render Method Also know as deferred rendering. :Blended: - Allows the colored transparency, but incompatible with render passes and raytracing. Also - known as forward rendering. + Allows the colored transparency, but incompatible with render passes and raytracing. + Also known as forward rendering. + + +Dithered Layers +--------------- + +When using *Dithered* render method, the materials are rendered in layers. +Each layer can only transmit (e.g. refract) light emitted from previous layers. +If no intersection with the layers below exists, the transmissive BSDFs will fallback to light probes. + +Raytraced Transmission + Use raytracing to determine transmitted color instead of using only light probes. + This prevents the surface from contributing to the lighting of surfaces not using this setting. + + +Sorting Problem +--------------- + +When using *Blended* render method, the order in which the color blending happens is important as it +can change the final output color. As of now EEVEE does not support per-fragment (pixel) sorting or per-triangle sorting. +Only per-object sorting is available and is automatically done on all transparent surfaces based on object origin. +Opaque surfaces (i.e. that have no transparency) will still have correct sorting regardless of the render method. + +.. tip:: + Face order can be adjusted in edit mode by using :doc:`sort element `. + +.. note:: + + Per-object sorting has a performance cost and having thousands of + these objects in a scene will greatly degrade performance. + +.. _bpy.types.Material.use_transparency_overlap: Transparency Overlap - Render multiple transparent layers. May introduce transparency sorting problems. + If enabled, all transparent fragments will be rendered. + If disabled, only the front-most surface fragments will be rendered. + This option can be disabled to fix sorting issues caused by blending order. + Only available for the *Blended* render method. -Light Probe Volume - Single Sided - Consider materials single sided for light probe volume captures. Additionally helps rejecting - inside the object, to avoid light leaking. + +Thickness +--------- + +This feature is used to approximate the inner geometry structure of the object without heavy computation. +This is currently used for Subsurface, Translucent BSDF, Refraction BSDF and the nodes containing them. + +If no value is plugged into the output node, then a default thickness based on the smallest dimension of the object is computed. +If a value is connected it will be used as object space thickness (i.e. scaled by object transform). +A value of zero will disable the thickness approximation and treat the object as having only one interface. + +.. note:: + The thickness is used to skip the inner part of the object. This means that: + - refraction will skip objects inside this thickness distance. + - the surface will not receive shadow from casters within the thickness distance. + +.. tip:: + - For large or compound meshes (e.g. vegetation), the thickness should be set to the thickness of individual parts (e.g. leaves, grass blades). + - Thickness can be baked to textures or custom attributes for more accurate result. + +Thickness Mode + Determines what model to use to approximate the object geometry. + + :Sphere: + Approximate the object as a sphere whose diameter is equal to the thickness defined by the node tree. + This is more suited to objects with rounder edges (e.g. a monkey head), and is perfectly suited to spheres. + + :Slab: + Approximate the object as an infinite slab of thickness defined by the node tree. + This is more suited to very flat or thin objects (e.g. glass panels, grass blades). + +From Shadow + Use the shadow maps from shadow casting lights to refine the thickness defined by the material node tree. + This takes the minimum thickness between the shadow map and the material node tree value. + This is useful for objects where pre-computation is difficult (e.g. complex meshes), impossible + (e.g. procedural geometry with displacement) or just impractical. + However, this will have a performance impact that scale with the number of render samples. .. _bpy.types.Material.volume: @@ -75,16 +185,10 @@ Intersection Determines which inner part of the mesh will produce volumetric effect. :Fast: - Each gace is considered as a medium interface. Gives correct results for manifold geometry + Each face is considered as a medium interface. Gives correct results for manifold geometry that contains no inner part. :Accurate: Faces are considered as medium interface only when they have different consecutive facing. Gives correct results as long as the max ray depth is not exceeded. Has significant memory overhead compared to the fast method. - - -.. seealso:: - - While EEVEE shares the same material node system as Cycles, not all features are supported. - See :ref:`Material limitations ``. -- 2.30.2 From 72046cfed83d38496de97cf657150240b8b4a1ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Tue, 11 Jun 2024 18:19:57 +0200 Subject: [PATCH 16/25] Pass over light settings --- manual/render/eevee/light_settings.rst | 209 ++++++++---------- .../eevee/limitations/general_limitations.rst | 1 + .../eevee/render_settings/performance.rst | 4 + 3 files changed, 101 insertions(+), 113 deletions(-) diff --git a/manual/render/eevee/light_settings.rst b/manual/render/eevee/light_settings.rst index 28242edd3..f1eaf58ba 100644 --- a/manual/render/eevee/light_settings.rst +++ b/manual/render/eevee/light_settings.rst @@ -13,126 +13,109 @@ lights are another way to add light into the scene. The difference is that they are not directly visible in the rendered image, and can be more easily managed as objects of their own type. +See :doc:`Light settings ` for settings common to all renderers. -Common +Shadow ====== -:doc:`Light settings ` for all renderers. - - -.. _bpy.types.Light.use_custom_distance: -.. _bpy.types.Light.cutoff_distance: - -EEVEE -===== - -Specular - Specular Light intensity multiplier. Use it for artistic control. Defines the intensity with which the light object - will be visible in reflections on the surface of specular objects, like metals or mirrors. - Setting this to 0 will make the light object disappear from specular reflections. Keep it exactly at 1.0 for - photo-realistic results. -Custom Distance - If enabled, uses *Distance* as the custom attenuation distance instead of global Light Threshold. - In order to avoid long setup times, this distance is first computed - automatically based on a light threshold. The distance is computed - at the light origin and using the inverse square falloff. - - Distance - Specifies where light influence will be set to 0. - - .. seealso:: - - Global :doc:`Light Threshold `. - -.. note:: - - The light's *Power*/*Strength* affect both specular and diffuse light. - - -.. _bpy.types.*Light.shadow: - -Shadows -======= - -Common Parameters ------------------ - -Clip Start - Distance from the light object at which the shadow map starts. - Any object which is closer to the light than Clip Start will not cast shadows. - *Clip Start* is only available for point, spot and area lights. - -Bias - Bias applied to the depth test to reduce self-shadowing artifacts. - This determines, what size of surface details (for example, bumps) will cast shadows on the object itself. - If this value is low, small bumps will cast shadows on the object's surface. - This might cause jagged shadow edge between the sunny and shadowy side of the object, - but it can be smoothed out by turning on :doc:`Soft Shadows ` - - -Contact Shadows ---------------- - -This type of shadow exists to fix light leaking caused by bias or shadow map undersampling. -It uses the depth buffer to find occluders (just like Screen Space Reflections). -However, just like Screen Space Reflections it has the same limitations, -namely, unknown object thickness and effect disappearing at screen edges. +For shadowing lights, EEVEE uses a technique called *Virtual Shadow Mapping* along with *Shadow Map Raytracing*. +This technique offers better performance than ray tracing and is compatible with any *Render Method*. +*Virtual Shadow Mapping* produces more accurate results than traditional shadow mapping by putting resolution +only where it is needed. It also includes a very efficient caching mechanism. .. tip:: - - The distance of action of Contact Shadows should remain quite small. - They are not accurate enough to shadow the entire scene. - -Distance - World space distance in which to search for screen space occluder. - -Bias - Bias applied to the ray tracing to reduce self-shadowing artifacts. - -Thickness - Pixel thickness used to detect occlusion, treating any potential occluder as this thick. - - -.. _eevee-cascaded-shadow-map: - -Cascaded Shadow Map -------------------- - -Sun lights usually illuminate a large scene with many objects, some close, some far away. -To optimize shadow calculation in this situation, a technique called Cascaded Shadow Maps is used. -The distance between the camera's near clip and far clip point is divided into as many equal intervals -(called cascades) as you set the Count parameter below. -For each cascade a different resolution shadow will be displayed: higher resolution for closer cascades and lower -resolution for distant ones. -Do note that cascade shadow maps are always updated because they depend on the camera position or your view origin in -the 3D-Viewport. This means they have a high performance impact. - -.. note:: - - In orthographic view the cascades cover the whole depth range of the camera - with an evenly distributed shadow precision. - -Count - Number of cascades to use. More cascades means better shadow precision but a lower update rate. - -Fade - When the Fade is greater than 0, the size of each cascade (distance interval) is increased so that neighboring - cascades overlap. Then a fade is applied in the overlapping region to provide a smooth transition between cascades. - Higher values mean the cascade's size is increased more, which decreases the available shadow resolution - inside the cascade since some of it is used in the overlapping region. - -Max Distance - Distance away from the view origin (or camera origin if in camera view) to cover by the cascades. - If the view far clip distance is lower than Max Distance, the view far clip distance will be used. - Only works in perspective view. - -Distribution - Puts more resolution towards the near clip plane. Only works in perspective view. + - The error message *Shadow buffer full* means that the system cannot allocate. + Increasing the :ref:`Shadow Pool Size ` or + increasing the :ref:`Resolution Limit ` on some lights + might fix the issue. .. seealso:: :ref:`Limitations `. +.. _bpy.types.Light.use_shadow_jitter: -Limitations -=========== +Jitter + Enable jittered soft shadows to increase shadow precision (disabled in viewport unless enabled in the render settings). + Has a high performance impact as the shadow map cannot be cached and needs to be updated for each render sample. -- Unlike in Cycles, the *Size* of spot lights does not change the softness of the cone. +.. _bpy.types.Light.shadow_jitter_overblur: + +Overblur + Apply shadow tracing to each jittered sample to reduce under-sampling artifacts. + +.. _bpy.types.Light.shadow_filter_radius: + +Filter + Blur shadow aliasing using Percentage Closer Filtering with a circular kernel. + The effective world scale of the filter depends on the shadow map resolution at the shadowed pixel position. + +.. _bpy.types.Light.shadow_maximum_resolution: + +Resolution Limit + Minimum size of a shadow map pixel. Higher values use less memory at the cost of shadow quality. + Higher values also speed-up rendering of heavy scene. + Each shadow is scaled depending on the shadowed pixel on screen. This can create very sharp shadows + but also requires a lot of memory if the shadowed pixel is close to the camera. + This property limits the maximum amount of detail that the shadow map can capture. + +.. _bpy.types.Light.use_absolute_resolution: + +Absolute Resolution Limit + Limit the resolution at 1 unit from the light origin instead of relative to the shadowed pixel. + This makes :ref:`Resolution Limit ` act as a regular shadow map pixel size. + For example, with this option enabled, a *Resolution Limit* set to `2 * sqrt(2) / 1024` will limit the resolution to 1024px². + The `2 * sqrt(2)` refers to the unit cube diagonal. + + .. tip:: + This setting only exists for compatibility reasons. Do not use it unless you have a good reason. + It might be removed in future versions. + + .. note:: The setting :ref:`Absolute Resolution Limit ` does not exist for Sun Light. + + +Influence +========= + +These parameters modulate the intensity of the light depending on the shader type. +These are meant for artistic control, and any value other than 1.0 breaks :abbr:`PBR (Physically Based Rendering)` rules. + +.. _bpy.types.Light.diffuse_factor: + +Diffuse + Diffuse reflection intensity multiplier. + +.. _bpy.types.Light.specular_factor: + +Glossy + Glossy light intensity multiplier. + +.. _bpy.types.Light.transmission_factor: + +Transmission + Transmission light intensity multiplier. + +.. _bpy.types.Light.volume_factor: + +Volume Scatter + Volume light intensity multiplier. + + +.. _bpy.types.Light.use_custom_distance: + +Custom Distance +=============== + +If enabled, uses :ref:`Distance ` as the custom attenuation distance +instead of global Light Threshold. In order to avoid long setup times, this distance is first computed +automatically based on a light threshold. +The distance is computed at the light origin and using the inverse square falloff. + +.. _bpy.types.Light.cutoff_distance: + +Distance + Specifies where light influence will be set to 0. + +.. note:: The setting :ref:`Custom Distance ` does not exist for Sun Light. + +.. seealso:: + + Global :doc:`Light Threshold `. diff --git a/manual/render/eevee/limitations/general_limitations.rst b/manual/render/eevee/limitations/general_limitations.rst index 66c6eaad0..73c6d36fe 100644 --- a/manual/render/eevee/limitations/general_limitations.rst +++ b/manual/render/eevee/limitations/general_limitations.rst @@ -26,6 +26,7 @@ Lights ====== - For now lights can only have one color and do not support light node trees. +- Unlike in Cycles, the :ref:`Size ` of spot lights does not change the softness of the cone. Light Probes diff --git a/manual/render/eevee/render_settings/performance.rst b/manual/render/eevee/render_settings/performance.rst index 449220942..809056d5d 100644 --- a/manual/render/eevee/render_settings/performance.rst +++ b/manual/render/eevee/render_settings/performance.rst @@ -17,10 +17,14 @@ High Quality Normals Memory ====== +.. _bpy.types.SceneEEVEE.shadow_pool_size: + Shadow Pool Size A bigger pool size allows for more shadows in the scene but might not fit into GPU memory and decreases performance. Increasing it might fix the *Shadow buffer full* error. +.. _bpy.types.SceneEEVEE.gi_irradiance_pool_size: + Light Probes Volume Pool Size A bigger pool size allows for more irradiance grid in the scene but might not fit into GPU memory and decreases performance. -- 2.30.2 From 121780744b6f3c409de8493f9fa0a394ea555b9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Wed, 12 Jun 2024 13:42:54 +0200 Subject: [PATCH 17/25] Pass over object settings --- manual/render/eevee/light_probes/volume.rst | 2 + manual/render/eevee/object_settings/index.rst | 11 +++++ .../eevee/object_settings/object_data.rst | 40 ++++++++++++++++++- 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 manual/render/eevee/object_settings/index.rst diff --git a/manual/render/eevee/light_probes/volume.rst b/manual/render/eevee/light_probes/volume.rst index 9edb7ca4f..0a70719cf 100644 --- a/manual/render/eevee/light_probes/volume.rst +++ b/manual/render/eevee/light_probes/volume.rst @@ -64,6 +64,8 @@ Dilation radius Radius in capture points in which to search for a valid neighbor. +.. _eevee-lightprobe-volume-bake: + Bake ==== diff --git a/manual/render/eevee/object_settings/index.rst b/manual/render/eevee/object_settings/index.rst new file mode 100644 index 000000000..33057b3bf --- /dev/null +++ b/manual/render/eevee/object_settings/index.rst @@ -0,0 +1,11 @@ + +################### + Object Settings +################### + +Settings for objects and object data. + +.. toctree:: + :maxdepth: 2 + + object_data.rst diff --git a/manual/render/eevee/object_settings/object_data.rst b/manual/render/eevee/object_settings/object_data.rst index 60eeda8f0..67c7e902e 100644 --- a/manual/render/eevee/object_settings/object_data.rst +++ b/manual/render/eevee/object_settings/object_data.rst @@ -3,4 +3,42 @@ Object ****** -TODO \ No newline at end of file +Ray Visibility +-------------- + +Objects can be set to be invisible to particular ray types. +This can be used, for example, to make an emitting mesh invisible to camera rays. +For instanced objects, visibility is inherited; if the parent object is hidden for some ray types, +the children will be hidden for these too. + +In terms of performance, using these options is more efficient that using a shader node setup +that achieves the same effect. + +.. _bpy.types.Object.visible_shadow: + +Shadow + Enables the object to cast shadows. The object will not be capture inside the shadow maps. + + +Light Probes +------------ + +Objects can be set to not be captured by certain :doc:`light probe `. +This can be used, for example, to avoid animated object being recorded into static light probes. +For instanced objects, visibility is inherited; if the parent object is hidden for some ray types, +the children will be hidden for these too. + +.. _bpy.types.Object.visible_shadow: + +Volume + Makes the object visible during light probe volumes :ref:`baking `. + +.. _bpy.types.Object.visible_shadow: + +Sphere + Makes the object visible during light probe sphere capture. + +.. _bpy.types.Object.visible_shadow: + +Plane + Makes the object visible during light probe plane capture. -- 2.30.2 From d605aab8d10e31435433442315adbec6601f4ed3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Wed, 12 Jun 2024 14:50:22 +0200 Subject: [PATCH 18/25] Pass over shadow limitations --- manual/render/eevee/light_settings.rst | 36 +++++++++++++------ .../eevee/limitations/general_limitations.rst | 12 +++++-- .../render/eevee/render_settings/sampling.rst | 8 +++++ 3 files changed, 43 insertions(+), 13 deletions(-) diff --git a/manual/render/eevee/light_settings.rst b/manual/render/eevee/light_settings.rst index f1eaf58ba..5abeab21d 100644 --- a/manual/render/eevee/light_settings.rst +++ b/manual/render/eevee/light_settings.rst @@ -19,15 +19,19 @@ Shadow ====== For shadowing lights, EEVEE uses a technique called *Virtual Shadow Mapping* along with *Shadow Map Raytracing*. -This technique offers better performance than ray tracing and is compatible with any *Render Method*. *Virtual Shadow Mapping* produces more accurate results than traditional shadow mapping by putting resolution only where it is needed. It also includes a very efficient caching mechanism. +This technique offers better performance than ray tracing and is compatible +with any :ref:`Render Method `. .. tip:: - - The error message *Shadow buffer full* means that the system cannot allocate. + - The error message *Shadow buffer full* means that the system cannot allocate more shadow memory. Increasing the :ref:`Shadow Pool Size ` or - increasing the :ref:`Resolution Limit ` on some lights - might fix the issue. + the :ref:`Resolution Limit ` on some lights + can fix the issue. Otherwise, the only workaround is to disable shadow casting on some lights. + - *Shadow Map Raytracing* can be tweaked in the :ref:`Render Settings `. + - Turning on :ref:`Jitter ` can reduce the light leaking artifacts + caused by large lights and *Shadow Map Raytracing*. .. seealso:: :ref:`Limitations `. @@ -42,12 +46,18 @@ Jitter Overblur Apply shadow tracing to each jittered sample to reduce under-sampling artifacts. + .. note:: + Any value higher than zero will result in a blurrier shadow and is not physically correct. + .. _bpy.types.Light.shadow_filter_radius: Filter Blur shadow aliasing using Percentage Closer Filtering with a circular kernel. The effective world scale of the filter depends on the shadow map resolution at the shadowed pixel position. + .. note:: + Any value bigger than 1px will increase the chances of light leaking artifacts. + .. _bpy.types.Light.shadow_maximum_resolution: Resolution Limit @@ -57,19 +67,24 @@ Resolution Limit but also requires a lot of memory if the shadowed pixel is close to the camera. This property limits the maximum amount of detail that the shadow map can capture. + .. note:: + Reducing the shadow map resolution will increase the chances of light leaking artifacts. + .. _bpy.types.Light.use_absolute_resolution: Absolute Resolution Limit Limit the resolution at 1 unit from the light origin instead of relative to the shadowed pixel. This makes :ref:`Resolution Limit ` act as a regular shadow map pixel size. - For example, with this option enabled, a *Resolution Limit* set to `2 * sqrt(2) / 1024` will limit the resolution to 1024px². - The `2 * sqrt(2)` refers to the unit cube diagonal. + + .. note:: + For example, with this option enabled, a *Resolution Limit* set to `2 * sqrt(2) / 1024` will limit the resolution to 1024px². + The `2 * sqrt(2)` refers to the unit cube diagonal. .. tip:: - This setting only exists for compatibility reasons. Do not use it unless you have a good reason. - It might be removed in future versions. + This setting only exists for compatibility reasons. It might be removed in future versions. - .. note:: The setting :ref:`Absolute Resolution Limit ` does not exist for Sun Light. + .. note:: + The setting :ref:`Absolute Resolution Limit ` does not exist for Sun Light. Influence @@ -114,7 +129,8 @@ The distance is computed at the light origin and using the inverse square fallof Distance Specifies where light influence will be set to 0. -.. note:: The setting :ref:`Custom Distance ` does not exist for Sun Light. +.. note:: + The setting :ref:`Custom Distance ` does not exist for Sun Light. .. seealso:: diff --git a/manual/render/eevee/limitations/general_limitations.rst b/manual/render/eevee/limitations/general_limitations.rst index 73c6d36fe..2dc32894d 100644 --- a/manual/render/eevee/limitations/general_limitations.rst +++ b/manual/render/eevee/limitations/general_limitations.rst @@ -27,6 +27,7 @@ Lights - For now lights can only have one color and do not support light node trees. - Unlike in Cycles, the :ref:`Size ` of spot lights does not change the softness of the cone. +- The area light :ref:`Beam spread ` option is not supported. Light Probes @@ -34,18 +35,23 @@ Light Probes - EEVEE supports up to 128 active light probe spheres. - EEVEE supports up to 16 active light probe planes inside the view frustum. - +- Active light probe volumes must fit inside the :ref:`Light Probes Volume Memory Pool `. Indirect Lighting ================= - Light probe capture does not support specular reflections. Specular energy is treated as diffuse. +.. _eevee-limitations-shadows: + Shadows ======= -- See :ref:`eevee-limitations-shadows` for a detailed explanation of shadow limitations. - +- *Shadow Map Raytracing* can produce light leaking because of overlapping shadow casters. + This can be mitigated by using lower :ref:`Size `, enabling + :ref:`Size `, or reducing the light shape size. +- Thin objects (e.g. walls without thickness) might have light leaking on the shadowed side. + This can be mitigated by making the object have some thickness or lowering :ref:`Size `. .. _eevee-limitations-volumetrics: diff --git a/manual/render/eevee/render_settings/sampling.rst b/manual/render/eevee/render_settings/sampling.rst index 78e82db22..c7ff575c0 100644 --- a/manual/render/eevee/render_settings/sampling.rst +++ b/manual/render/eevee/render_settings/sampling.rst @@ -37,14 +37,22 @@ Samples The number of samples to use in the final render. +.. _eevee-shadow-raytrace: + Shadows ======= +.. _bpy.types.SceneEEVEE.shadow_ray_count: + Shadow Rays Count Amount of shadow rays to trace for each light. + Higher values reduces the noise caused by random shadow sampling. + +.. _bpy.types.SceneEEVEE.shadow_step_count: Shadow Steps Count Amount of shadow map sample per shadow ray. + Higher step count results in softer shadows but have a higher cost. .. _bpy.types.SceneEEVEE.volumetric_shadow: -- 2.30.2 From 55cda35083104cc538cb9da7e4acffa07da42028 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Wed, 12 Jun 2024 14:53:04 +0200 Subject: [PATCH 19/25] Cleanup Limitations --- manual/render/eevee/limitations/index.rst | 3 +-- .../{general_limitations.rst => limitations.rst} | 2 +- .../render/eevee/limitations/shadows_limitations.rst | 10 ---------- 3 files changed, 2 insertions(+), 13 deletions(-) rename manual/render/eevee/limitations/{general_limitations.rst => limitations.rst} (98%) delete mode 100644 manual/render/eevee/limitations/shadows_limitations.rst diff --git a/manual/render/eevee/limitations/index.rst b/manual/render/eevee/limitations/index.rst index 136295bd3..fff2f8e8f 100644 --- a/manual/render/eevee/limitations/index.rst +++ b/manual/render/eevee/limitations/index.rst @@ -6,6 +6,5 @@ .. toctree:: :maxdepth: 2 - general_limitations.rst - shadows_limitations.rst + limitations.rst nodes_support.rst diff --git a/manual/render/eevee/limitations/general_limitations.rst b/manual/render/eevee/limitations/limitations.rst similarity index 98% rename from manual/render/eevee/limitations/general_limitations.rst rename to manual/render/eevee/limitations/limitations.rst index 2dc32894d..f9ebf6414 100644 --- a/manual/render/eevee/limitations/general_limitations.rst +++ b/manual/render/eevee/limitations/limitations.rst @@ -69,7 +69,7 @@ Volumetrics Depth of Field ============== -- Alpha blended surfaces cannot be correctly handled by the post-processing blur, +- Blended materials cannot be correctly handled by the post-processing blur, but will be correctly handled by the sample-based method. For this, you need to disable the post-process depth of field by setting the *Max Size* to 0. diff --git a/manual/render/eevee/limitations/shadows_limitations.rst b/manual/render/eevee/limitations/shadows_limitations.rst deleted file mode 100644 index e597b1a95..000000000 --- a/manual/render/eevee/limitations/shadows_limitations.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. _eevee-limitations-shadows: - -******************* -Shadows Limitations -******************* - -.. todo:: - - This section still needs to be written. Explaining the limitations of the SVM shadowing - algorithm. -- 2.30.2 From 5d31cd292598dcfd16a919235ebb89f4d52ff379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Wed, 12 Jun 2024 15:04:04 +0200 Subject: [PATCH 20/25] Pass over nodes support --- manual/render/eevee/limitations/nodes_support.rst | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/manual/render/eevee/limitations/nodes_support.rst b/manual/render/eevee/limitations/nodes_support.rst index e2aa96005..f53c461dc 100644 --- a/manual/render/eevee/limitations/nodes_support.rst +++ b/manual/render/eevee/limitations/nodes_support.rst @@ -19,8 +19,10 @@ These nodes are only available if EEVEE is the active render engine. These nodes Shader to RGB ------------- -EEVEE supports the conversion of BSDF outputs into color inputs to make any kind of custom shading. +EEVEE supports the conversion of BSDF outputs into color inputs to make a wide variety of custom shading. This is supported using the :doc:`Shader to RGB ` node. +This node evaluates the lighting of the BSDFs connected to it just like a *Blended* material and inherits +its limitation. Specular BSDF @@ -52,11 +54,11 @@ Diffuse BSDF Roughness is not supported. Only Lambertian diffusion is supported. Glass / Refraction BSDF - Does not refract lights objects. Does not support Beckmann distribution. + Only supports GGX and Multiscatter GGX distribution. See :ref:`Raytracing limitations `. Glossy BSDF - Does not support Beckmann and Ashikhmin-Shirley distributions. + Only supports GGX and Multiscatter GGX distributions. Subsurface Scattering Random Walk sampling, IOR and Anisotropic are not supported. -- 2.30.2 From 396e2e7de2430518947ab8a4fff69c916a01d375 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Wed, 12 Jun 2024 15:19:24 +0200 Subject: [PATCH 21/25] Remove material folder --- manual/render/eevee/materials/index.rst | 10 ---------- manual/render/eevee/materials/introduction.rst | 14 -------------- 2 files changed, 24 deletions(-) delete mode 100644 manual/render/eevee/materials/index.rst delete mode 100644 manual/render/eevee/materials/introduction.rst diff --git a/manual/render/eevee/materials/index.rst b/manual/render/eevee/materials/index.rst deleted file mode 100644 index 6019dd5c8..000000000 --- a/manual/render/eevee/materials/index.rst +++ /dev/null @@ -1,10 +0,0 @@ - -############# - Materials -############# - -.. toctree:: - :maxdepth: 2 - - introduction.rst - nodes_support.rst diff --git a/manual/render/eevee/materials/introduction.rst b/manual/render/eevee/materials/introduction.rst deleted file mode 100644 index 1558afddc..000000000 --- a/manual/render/eevee/materials/introduction.rst +++ /dev/null @@ -1,14 +0,0 @@ - -************ -Introduction -************ - -EEVEE's materials system uses the same node based approach as :doc:`Cycles `. - - -Nodes Support -============= - -Due to realtime constraints, not all Cycles features are available in EEVEE. -See :doc:`/render/eevee/materials/nodes_support`. - -- 2.30.2 From eeee022f79f8bd2fa49fc520fd26ad74c0f21d7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Wed, 12 Jun 2024 15:29:55 +0200 Subject: [PATCH 22/25] Fixes to references --- manual/render/eevee/index.rst | 2 +- manual/render/eevee/limitations/limitations.rst | 5 +++-- manual/render/eevee/material_settings.rst | 11 +++++++---- manual/render/eevee/render_settings/raytracing.rst | 4 +++- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/manual/render/eevee/index.rst b/manual/render/eevee/index.rst index 5cdfee86a..ca61abd07 100644 --- a/manual/render/eevee/index.rst +++ b/manual/render/eevee/index.rst @@ -12,7 +12,7 @@ render_settings/index.rst scene_settings.rst world_settings.rst - object_settings.rst + object_settings/index.rst material_settings.rst light_settings.rst light_probes/index.rst diff --git a/manual/render/eevee/limitations/limitations.rst b/manual/render/eevee/limitations/limitations.rst index f9ebf6414..568133f54 100644 --- a/manual/render/eevee/limitations/limitations.rst +++ b/manual/render/eevee/limitations/limitations.rst @@ -105,7 +105,7 @@ Raytracing - Blended materials and materials using raytrace refractions will not appear in dithered materials reflections. - Blended materials are not compatible with raytracing. - Only one refraction event is correctly modeled. - An approximation of the second refraction event can be approximated using the :ref:`eevee-thickness-workflow`. + An approximation of the second refraction event can be achieved using the :ref:`Thickness workflow `. - Only dithered materials *not* using Raytrace Refractions can be refracted. @@ -119,7 +119,8 @@ Shader Nodes - Some utility nodes are not yet compatible with EEVEE. - Certain combinations of BSDF's will result in more noise than others. This is the case when mixing Diffuse BSDF and Refraction BSDF. -- Displacement of flat shaded surfaces will split the mesh. See :ref:`eevee-workaround-displacement` for workaround. +- Displacement of flat shaded surfaces will split the mesh into triangles. + See :ref:`Displacement ` for a workaround. .. seealso:: diff --git a/manual/render/eevee/material_settings.rst b/manual/render/eevee/material_settings.rst index 88efd1d3a..e324e727e 100644 --- a/manual/render/eevee/material_settings.rst +++ b/manual/render/eevee/material_settings.rst @@ -9,7 +9,7 @@ Material Settings .. seealso:: While EEVEE shares the same material node system as Cycles, not all features are supported. - See :ref:`Material limitations ``. + See :ref:`Shader nodes limitations `. Pass Index ========== @@ -47,7 +47,10 @@ Backface Culling :doc:`Light Probe Volume `. -.. _bpy.types.Material.displacement_method: +.. _bpy.types.Material.displacement: + +Displacement +------------ Displacement Type Controls how the displacement output from the shader node tree is used. @@ -68,8 +71,6 @@ Displacement Type render sample count. However, the evaluation is much faster than doing it using geometry nodes or a displacement modifier. -.. _eevee-workaround-displacement: - .. note:: Displacing flat shaded geometry will split adjacent faces. This can be worked around by passing the vertex normals as a custom attribute. @@ -138,6 +139,8 @@ Transparency Overlap Only available for the *Blended* render method. +.. _bpy.types.Material.thickness: + Thickness --------- diff --git a/manual/render/eevee/render_settings/raytracing.rst b/manual/render/eevee/render_settings/raytracing.rst index 8bf0a8182..df216015f 100644 --- a/manual/render/eevee/render_settings/raytracing.rst +++ b/manual/render/eevee/render_settings/raytracing.rst @@ -15,7 +15,9 @@ and finding their intersection with the scene individually. When disabled, it is replaced by a faster pipeline that uses pre-filtered light-probes. This fallback mode offers a more visually stable and optimized alternative when visual fidelity is not the primary goal. -.. seealso:: :ref:`Limitations `. +.. seealso:: + + :ref:`Limitations `. Method Determine the tracing method used to find scene-ray intersections and indirect lighting. -- 2.30.2 From 5256a533513307eb72210412a198164f7bc8e951 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Wed, 12 Jun 2024 16:48:16 +0200 Subject: [PATCH 23/25] Final pass --- manual/render/eevee/introduction.rst | 3 +-- manual/render/eevee/light_probes/sphere.rst | 18 +++++++-------- manual/render/eevee/light_probes/volume.rst | 6 +++-- manual/render/eevee/light_settings.rst | 23 ++++++++++++------- .../render/eevee/limitations/limitations.rst | 6 ++--- manual/render/eevee/material_settings.rst | 6 ++--- .../render/eevee/render_settings/clamping.rst | 2 +- manual/render/eevee/render_settings/film.rst | 2 +- .../eevee/render_settings/motion_blur.rst | 4 ++-- .../eevee/render_settings/performance.rst | 3 +++ .../eevee/render_settings/raytracing.rst | 7 +++--- .../render/eevee/render_settings/sampling.rst | 14 +++++++++-- .../render/eevee/render_settings/volumes.rst | 2 -- 13 files changed, 58 insertions(+), 38 deletions(-) diff --git a/manual/render/eevee/introduction.rst b/manual/render/eevee/introduction.rst index 4e9324301..910402a9c 100644 --- a/manual/render/eevee/introduction.rst +++ b/manual/render/eevee/introduction.rst @@ -20,8 +20,7 @@ surface is visible from the camera. It then estimates the way light interacts wi and materials using numerous algorithms. While EEVEE is designed to use :abbr:`PBR (Physically Based Rendering)` principles, it is not perfect and Cycles will always provide more physically accurate renders. -Because EEVEE uses a lot of different algorithms it has a set of -:doc:`limitations `. +For these reasons, EEVEE has a set of :doc:`limitations `. .. figure:: /images/render_eevee_introduction_final-render.png diff --git a/manual/render/eevee/light_probes/sphere.rst b/manual/render/eevee/light_probes/sphere.rst index e148dd233..f87f15fff 100644 --- a/manual/render/eevee/light_probes/sphere.rst +++ b/manual/render/eevee/light_probes/sphere.rst @@ -12,19 +12,17 @@ If *Raytracing* is turned on, they are used as a fall back if a ray misses. .. note:: - In both usage, the light probe spheres are shadowed by light probe volume. This is to + In both usage, the light probe spheres are shadowed by light probe volume. + This is done in order to reduce light leaking in shadowed areas and reduce the need to + setup more light probe spheres. -Adjusting their resolution is done inside the *Scene* data panel. - -.. seealso:: - - :doc:`Scene `. +Adjusting their resolution is done inside the :doc:`Scene data ` panel. The world also have an internal light probe sphere which resolution can be adjusted in the *World* data panel. .. seealso:: - :doc:`World `. + :doc:`World Settings `. .. reference:: @@ -44,8 +42,10 @@ Falloff Capture ======= -In the viewport, capture only happens if an update is detected on the light probe data or position. -For renders, the capture happens at the start of each frame. +.. note:: + + In the viewport, capture only happens if an update is detected on the light probe data or position. + For renders, the capture happens at the start of each frame. Clipping Define the near and far clip distances when capturing the scene. diff --git a/manual/render/eevee/light_probes/volume.rst b/manual/render/eevee/light_probes/volume.rst index 0a70719cf..5ff5aabcb 100644 --- a/manual/render/eevee/light_probes/volume.rst +++ b/manual/render/eevee/light_probes/volume.rst @@ -80,7 +80,7 @@ During baking, the scene is converted into a different representation to acceler This representation can be very memory intensive and prevent baking if it cannot fit inside the GPU memory. There are a few way to deal with this issue: - Larger scene should be divided into smaller sections or using different level of details. - - Reduce + - Reduce *Surfel Resolution*. - Turn off the light probe volume visibility option on objects that have little to no effect in the bake. .. tip:: @@ -99,7 +99,9 @@ Bake Samples Surfel Resolution Number of surfels to spawn in one local unit distance. Higher values increase quality. Have a huge impact on memory usage. - A good value is twice the maximum *Resolution*. + + .. tip:: + A good value is twice the maximum *Resolution*. Capture diff --git a/manual/render/eevee/light_settings.rst b/manual/render/eevee/light_settings.rst index 5abeab21d..12aef9614 100644 --- a/manual/render/eevee/light_settings.rst +++ b/manual/render/eevee/light_settings.rst @@ -15,10 +15,12 @@ and can be more easily managed as objects of their own type. See :doc:`Light settings ` for settings common to all renderers. +.. _bpy.types.Light.shadow: + Shadow ====== -For shadowing lights, EEVEE uses a technique called *Virtual Shadow Mapping* along with *Shadow Map Raytracing*. +EEVEE uses a technique called *Virtual Shadow Mapping* along with *Shadow Map Raytracing*. *Virtual Shadow Mapping* produces more accurate results than traditional shadow mapping by putting resolution only where it is needed. It also includes a very efficient caching mechanism. This technique offers better performance than ray tracing and is compatible @@ -38,9 +40,12 @@ with any :ref:`Render Method `. .. _bpy.types.Light.use_shadow_jitter: Jitter - Enable jittered soft shadows to increase shadow precision (disabled in viewport unless enabled in the render settings). + Enable jittered soft shadows to increase shadow precision. Has a high performance impact as the shadow map cannot be cached and needs to be updated for each render sample. + .. note:: + The effect isn't visible by default in the viewport. See :ref:`render settings `. + .. _bpy.types.Light.shadow_jitter_overblur: Overblur @@ -76,12 +81,14 @@ Absolute Resolution Limit Limit the resolution at 1 unit from the light origin instead of relative to the shadowed pixel. This makes :ref:`Resolution Limit ` act as a regular shadow map pixel size. - .. note:: - For example, with this option enabled, a *Resolution Limit* set to `2 * sqrt(2) / 1024` will limit the resolution to 1024px². - The `2 * sqrt(2)` refers to the unit cube diagonal. + .. hint:: - .. tip:: - This setting only exists for compatibility reasons. It might be removed in future versions. + With this option enabled, the following equation can be used to set the *Resolution Limit* with a desired resolution: + + .. math:: + resolution\_limit = 2 * \sqrt{2} / resolution + + The :math:`2 * \sqrt{2}` refers to the unit cube diagonal and :math:`resolution` refers to the desired resolution (e.g. 1024px). .. note:: The setting :ref:`Absolute Resolution Limit ` does not exist for Sun Light. @@ -134,4 +141,4 @@ Distance .. seealso:: - Global :doc:`Light Threshold `. + Global :ref:`Light Threshold `. diff --git a/manual/render/eevee/limitations/limitations.rst b/manual/render/eevee/limitations/limitations.rst index 568133f54..cb4da95cf 100644 --- a/manual/render/eevee/limitations/limitations.rst +++ b/manual/render/eevee/limitations/limitations.rst @@ -48,10 +48,10 @@ Shadows ======= - *Shadow Map Raytracing* can produce light leaking because of overlapping shadow casters. - This can be mitigated by using lower :ref:`Size `, enabling - :ref:`Size `, or reducing the light shape size. + This can be mitigated by using lower :ref:`step count `, enabling + :ref:`jitter `, or reducing the light shape size. - Thin objects (e.g. walls without thickness) might have light leaking on the shadowed side. - This can be mitigated by making the object have some thickness or lowering :ref:`Size `. + This can be mitigated by making the object have some thickness or lowering :ref:`Resolution Limit`. .. _eevee-limitations-volumetrics: diff --git a/manual/render/eevee/material_settings.rst b/manual/render/eevee/material_settings.rst index e324e727e..82e11b475 100644 --- a/manual/render/eevee/material_settings.rst +++ b/manual/render/eevee/material_settings.rst @@ -152,9 +152,9 @@ If a value is connected it will be used as object space thickness (i.e. scaled b A value of zero will disable the thickness approximation and treat the object as having only one interface. .. note:: - The thickness is used to skip the inner part of the object. This means that: - - refraction will skip objects inside this thickness distance. - - the surface will not receive shadow from casters within the thickness distance. + - The thickness is used to skip the inner part of the object. + - Refraction will not refract objects inside the thickness distance. + - Shadow casting object will not cast shadow within the thickness distance. .. tip:: - For large or compound meshes (e.g. vegetation), the thickness should be set to the thickness of individual parts (e.g. leaves, grass blades). diff --git a/manual/render/eevee/render_settings/clamping.rst b/manual/render/eevee/render_settings/clamping.rst index b59156698..6f41e38c7 100644 --- a/manual/render/eevee/render_settings/clamping.rst +++ b/manual/render/eevee/render_settings/clamping.rst @@ -22,7 +22,7 @@ Direct Light Indirect Light - Similar to **Direct Light* but limits the maximum light intensity reflected using ray-tracing and light-probes. + Similar to **Direct Light** but limits the maximum light intensity reflected using ray-tracing and light-probes. .. note:: diff --git a/manual/render/eevee/render_settings/film.rst b/manual/render/eevee/render_settings/film.rst index 6ceb3c974..e5dcf77ba 100644 --- a/manual/render/eevee/render_settings/film.rst +++ b/manual/render/eevee/render_settings/film.rst @@ -7,7 +7,7 @@ Filter Size Due to limited resolution of images and computer screens, pixel filters are needed to avoid :term:`Aliasing`. This is achieved by slightly blurring the image to soften edges. - This Setting controls home much the image is softened; + This Setting controls how much the image is softened; lower values give more crisp renders, higher values are softer and reduce aliasing. Transparent diff --git a/manual/render/eevee/render_settings/motion_blur.rst b/manual/render/eevee/render_settings/motion_blur.rst index 812a878da..95c795903 100644 --- a/manual/render/eevee/render_settings/motion_blur.rst +++ b/manual/render/eevee/render_settings/motion_blur.rst @@ -15,8 +15,8 @@ both in a movie frame and in a photograph from a real-world camera. .. note:: - Motion blur is only available in final renders and is not shown in the 3D Viewport - and thus :ref:`Viewport Renders `. + Motion blur is only visible in the viewport during animation playback and uses a simpler + algorithm than final render. Same thing applies to :ref:`Viewport Renders `. Position Controls at what point the shutter opens in relation to the current frame. diff --git a/manual/render/eevee/render_settings/performance.rst b/manual/render/eevee/render_settings/performance.rst index 809056d5d..48a5bcc7b 100644 --- a/manual/render/eevee/render_settings/performance.rst +++ b/manual/render/eevee/render_settings/performance.rst @@ -23,6 +23,9 @@ Shadow Pool Size A bigger pool size allows for more shadows in the scene but might not fit into GPU memory and decreases performance. Increasing it might fix the *Shadow buffer full* error. + .. seealso:: + :ref:`Shadow documentation ` + .. _bpy.types.SceneEEVEE.gi_irradiance_pool_size: Light Probes Volume Pool Size diff --git a/manual/render/eevee/render_settings/raytracing.rst b/manual/render/eevee/render_settings/raytracing.rst index df216015f..37b8dd710 100644 --- a/manual/render/eevee/render_settings/raytracing.rst +++ b/manual/render/eevee/render_settings/raytracing.rst @@ -29,6 +29,7 @@ Method :Screen-Trace: Trace ray against the screen depth buffer. Fallback to light-probes if ray exits the view. + Resolution Resolution at which the ray-tracing is performed. Lower options will be faster and use less memory but will produce blurrier results. @@ -43,7 +44,7 @@ Screen Tracing ______________ These settings control the behavior of the screen space ray-tracing. -They are only visible if *Screen-Trace* is the chosen tracing *Method*. +They are only visible if *Screen-Trace* is the active tracing *Method*. Precision Higher values increase precision of the screen space ray-tracing but lowers the maximum trace distance. @@ -106,10 +107,10 @@ Step Count Amount of screen sample per GI ray. Higher values will reduce the noise amount and increase the quality. - .. note:: + .. tip:: With higher step count, there is less chance to miss other surfaces that could reflect of block the light. - This means that the Fast GI *Thickness* parameter can be tweaked to lower values without loosing too much light bounce energy. + This means that the Fast GI *Thickness* parameters can be tweaked to lower values without loosing too much light bounce energy. Precision Higher values increase the precision of the scene intersections with the GI rays. diff --git a/manual/render/eevee/render_settings/sampling.rst b/manual/render/eevee/render_settings/sampling.rst index c7ff575c0..7292b02ff 100644 --- a/manual/render/eevee/render_settings/sampling.rst +++ b/manual/render/eevee/render_settings/sampling.rst @@ -24,6 +24,8 @@ Samples Temporal Reprojection Reduces noise while moving the viewport or during animation playback. Can leave some ghosting. +.. _bpy.types.SceneEEVEE.use_shadow_jitter_viewport: + Jittered Shadows Enable jittered shadows on the viewport. Jittered shadows are always enabled for final renders. @@ -60,7 +62,7 @@ Volumetric Shadows Approximate light absorption of the surrounding volume objects. This makes the volumes more opaque to light. This is a very computationally expensive option and has limitations. -.. seealso:: :ref:`Limitations `. + .. seealso:: :ref:`Volume Limitations `. Volumetric Shadows Steps Number of steps to compute volumetric shadowing. @@ -69,5 +71,13 @@ Volumetric Shadows Steps Advanced ======== +.. _bpy.types.SceneEEVEE.light_threshold: + Light Threshold - Minimum light intensity for a light to contribute to the lighting. + Minimum light intensity for a light to contribute to the lighting. + Used to compute the distance at which to cut-off lights influence. + Lower values improve performance. + + .. seealso:: + + :ref:`Custom Distance ` overrides this setting. diff --git a/manual/render/eevee/render_settings/volumes.rst b/manual/render/eevee/render_settings/volumes.rst index 5f633bd50..ce7cdb074 100644 --- a/manual/render/eevee/render_settings/volumes.rst +++ b/manual/render/eevee/render_settings/volumes.rst @@ -9,8 +9,6 @@ EEVEE simulates volumetric scattering by evaluating all volume objects inside th To achieve this, EEVEE uses several 3D textures which have a high video memory usage. The texture dimensions can be tweaked using the *Resolution* and *Steps* parameters. -Object volumes have some :ref:`limitations `. - .. reference:: :Panel: :menuselection:`Properties --> Render --> Volumetrics` -- 2.30.2 From 56e974181ddf222f354ef79fb49c3db53dcb806d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Wed, 12 Jun 2024 17:29:03 +0200 Subject: [PATCH 24/25] Address review --- manual/render/eevee/introduction.rst | 7 ++-- .../eevee/light_probes/introduction.rst | 4 +-- manual/render/eevee/light_probes/plane.rst | 12 +++---- manual/render/eevee/light_probes/sphere.rst | 19 +++++------ manual/render/eevee/light_probes/volume.rst | 33 ++++++++++--------- manual/render/eevee/light_settings.rst | 8 ++--- .../render/eevee/limitations/limitations.rst | 2 +- manual/render/eevee/material_settings.rst | 11 ++++--- .../render/eevee/render_settings/clamping.rst | 2 +- .../eevee/render_settings/performance.rst | 2 +- .../eevee/render_settings/raytracing.rst | 32 +++++++++--------- .../render/eevee/render_settings/sampling.rst | 4 +-- .../render/eevee/render_settings/volumes.rst | 8 ++--- manual/render/eevee/world_settings.rst | 9 +++-- 14 files changed, 74 insertions(+), 79 deletions(-) diff --git a/manual/render/eevee/introduction.rst b/manual/render/eevee/introduction.rst index 910402a9c..e0a4abd17 100644 --- a/manual/render/eevee/introduction.rst +++ b/manual/render/eevee/introduction.rst @@ -14,10 +14,9 @@ EEVEE can be used interactively in the 3D Viewport but also produce high quality EEVEE materials are created using the same shader nodes as Cycles, making it easy to render existing scenes. For Cycles users, this makes EEVEE work great for previewing materials in realtime. -EEVEE is a based on rasterization and is not a path tracer. -Instead of computing each ray of light, EEVEE uses a process called rasterization to determine what -surface is visible from the camera. It then estimates the way light interacts with these surfaces -and materials using numerous algorithms. +EEVEE is based on rasterization and is not a path tracer. +Instead of computing each ray of light, rasterization determines what surface is visible from the camera. +It then estimates the way light interacts with these surfaces and materials using numerous algorithms. While EEVEE is designed to use :abbr:`PBR (Physically Based Rendering)` principles, it is not perfect and Cycles will always provide more physically accurate renders. For these reasons, EEVEE has a set of :doc:`limitations `. diff --git a/manual/render/eevee/light_probes/introduction.rst b/manual/render/eevee/light_probes/introduction.rst index 7702809ae..b9597404d 100644 --- a/manual/render/eevee/light_probes/introduction.rst +++ b/manual/render/eevee/light_probes/introduction.rst @@ -6,7 +6,7 @@ Introduction Light probe objects are used by EEVEE as support objects. There are three different types of light probes. -Each type of light probe record the lighting at different resolution and frequency. -They are used together to recover incoming light information when using ray tracing is not possible (either for performance or for technical limitations). +Each type of light probe records the lighting at a different resolution and frequency. +Probes are used together to recover incoming light information when using ray tracing is not possible (either for performance or for technical limitations). These types of objects are only useful for EEVEE (and by extension, the Material Preview mode). diff --git a/manual/render/eevee/light_probes/plane.rst b/manual/render/eevee/light_probes/plane.rst index fb4b84fb3..679e1e4a1 100644 --- a/manual/render/eevee/light_probes/plane.rst +++ b/manual/render/eevee/light_probes/plane.rst @@ -8,15 +8,15 @@ The specular reflection direction is the only one currently available. This type of light probe is suited to smooth planar surfaces. -Each visible planar light probes increases the render time as the scene needs to be rendered for +Each visible planar light probe increases the render time as the scene needs to be rendered for each of them. -Light probe planes only work when ray tracing method is set to `Screen-Trace`. When enabled, they +Light probe planes only work when the ray tracing method is set to `Screen-Trace`. When enabled, they accelerate the tracing process and complete the missing data from the screen space ray tracing. .. note:: - Reflections and Volumetrics are not supported inside Light probe planes. + Reflections and volumetrics are not supported inside Light probe planes. Placement @@ -34,9 +34,9 @@ Alternatively you can disable the light probe visibility in the object visibilit Distance A probe object only influences the lighting of surfaces inside its influence zone. - This influence zone is defined by the Distance parameter and object scaling. + This influence zone is defined by the distance parameter and the object's scale. - For light probe planes the influence distance is the distance from the plane. + For light probe planes, the influence distance is the distance from the plane. Only surfaces whose normals are aligned with the Reflection Plane will receive the captured reflection. @@ -44,7 +44,7 @@ Capture ======= Clipping Offset - Define how much below the plane the near clip is when capturing the scene. + Define how far below the plane the near clip is when capturing the scene. Increasing this can fix reflection contact problems. diff --git a/manual/render/eevee/light_probes/sphere.rst b/manual/render/eevee/light_probes/sphere.rst index f87f15fff..2bc5ce2b5 100644 --- a/manual/render/eevee/light_probes/sphere.rst +++ b/manual/render/eevee/light_probes/sphere.rst @@ -6,37 +6,34 @@ Light Probe Sphere A light probe sphere records the light incomming from many directions at a single location. They are used for smooth and semi-rough reflections. -They then smoothly blend to light probe volume lighting for completely diffuse reflections. +Sphere probes smoothly blend to light probe volume lighting for completely diffuse reflections. -If *Raytracing* is turned on, they are used as a fall back if a ray misses. +If *Raytracing* is turned on, they are used as a fallback if a ray misses. .. note:: - In both usage, the light probe spheres are shadowed by light probe volume. + In both usages, the light probe spheres are shadowed by light probe volume. This is done in order to reduce light leaking in shadowed areas and reduce the need to setup more light probe spheres. Adjusting their resolution is done inside the :doc:`Scene data ` panel. -The world also have an internal light probe sphere which resolution can be adjusted in the *World* data panel. - -.. seealso:: - - :doc:`World Settings `. +The world also has an internal light probe sphere with a resolution that can be adjusted +in the :doc:`World data ` panel. .. reference:: :Panel: :menuselection:`Object Data --> Probe` Type - Select the shape of the influence volume. Can be set to Sphere or Box. + Shape of the influence volume. Can be set to Sphere or Box. Radius A probe object only influences the lighting of nearby surfaces. This influence zone is defined by the size parameter and object scaling. Falloff - Percentage of the influence distance during which the influence of a probe fades linearly. + Percentage of the influence distance in which the influence of a probe fades linearly. Capture @@ -62,7 +59,7 @@ By default, the influence volume is also the parallax volume. The parallax volume is a volume on which the recorded light is projected. It should roughly fit it surrounding area. In some cases it may be better to adjust the parallax volume without touching the influence parameters. -In this case, just enable the *Custom Parallax* and +In this case, enable the *Custom Parallax* and change the shape and radius of the parallax volume independently. diff --git a/manual/render/eevee/light_probes/volume.rst b/manual/render/eevee/light_probes/volume.rst index 5ff5aabcb..a23fbb45c 100644 --- a/manual/render/eevee/light_probes/volume.rst +++ b/manual/render/eevee/light_probes/volume.rst @@ -3,7 +3,7 @@ Light Probe Volume ****************** -A volume probe records the light incomming from all directions at a many locations inside a volume. +A volume probe records the light incomming from all directions at many locations inside a volume. The light is then filtered and only the diffuse light is recorded. The capture point positions are visible as an overlay when the Irradiance Volume object is selected. @@ -41,8 +41,8 @@ View Bias Can lead to view dependant result if set too high. Prefer this if camera is static. Facing Bias - When set to zero, avoids capture points behind the shaded surface to bleed light onto - the shaded surface, but this produces non-smooth interpolation when the capture resolution is high. + When set to zero, avoids capturing points behind the shaded surface to bleed light onto + the shaded surface. This produces non-smooth interpolation when the capture resolution is high. Increasing this bias will make the interpolation smoother but also introduce some light bleeding. @@ -50,7 +50,7 @@ Validity & Dilation =================== During the baking process, a validity score is assigned to each capture point. -This score is based on the number of back-face was hit when capturing the incoming lighting. +This score is based on the number of back-faces hit when capturing the incoming lighting. Only materials with *Single Sided* turned on for Light Probe Volumes will reduce the validity score. Validity Threshold @@ -77,11 +77,11 @@ between blender files. Baking uses the render visibility of the objects in the scene. During baking, the scene is converted into a different representation to accelerate light transport. -This representation can be very memory intensive and prevent baking if it cannot fit inside the GPU memory. +This representation can be very memory intensive and prevents baking if it cannot fit inside the GPU memory. There are a few way to deal with this issue: - - Larger scene should be divided into smaller sections or using different level of details. - - Reduce *Surfel Resolution*. - - Turn off the light probe volume visibility option on objects that have little to no effect in the bake. +- Larger scenes should be divided into smaller sections or use different level of details. +- Reduce *Surfel Resolution*. +- Turn off the light probe volume visibility option on objects that have little to no effect in the bake. .. tip:: @@ -90,7 +90,7 @@ There are a few way to deal with this issue: Resolution Spatial resolution for volumetric light probes is determined per probe. The local volume is divided into a regular grid of the specified dimensions. - Irradiance light sample will be computed for each cell in this grid. + The lighting will be captured for each cell in this grid. Bake Samples Number of ray directions to evaluate when baking. @@ -98,7 +98,7 @@ Bake Samples Surfel Resolution Number of surfels to spawn in one local unit distance. - Higher values increase quality. Have a huge impact on memory usage. + Higher values increase quality, but have a huge impact on memory usage. .. tip:: A good value is twice the maximum *Resolution*. @@ -127,12 +127,12 @@ Clamping Clamp Direct Clamp incoming direct light. 0.0 disables direct light clamping. - Here direct light refers to the light that bounces only once (from light object) - or coming from emissive materials. + Here direct light refers to the light that bounces only once (from the light object) + or light coming from emissive materials. Clamp Indirect Clamp incoming indirect light. 0.0 disables indirect light clamping. - Here indirect light refers to the light that bounces off a surface after the first bounce (from light object) + Here indirect light refers to the light that bounces off a surface after the first bounce (from the light object) or during the first bounce if the light comes from emissive materials. .. tip:: @@ -143,9 +143,10 @@ Clamp Indirect Offset ====== -In order to reduce artifacts caused by bad capture points positioning, the bake process will adjust their location. -First by moving them slightly away from surrounding surfaces, avoiding banding artifacts. -It also tries to move them out of objects if they are not so far bellow the surface. +In order to reduce artifacts caused by bad capture point positioning, +the bake process adjusts their location before capturing light. +It moves the capture points slightly away from surrounding surfaces and tries to move them out of objects +if they are not too far bellow the surface. Surface Offset Distance to move the capture points away from surfaces. diff --git a/manual/render/eevee/light_settings.rst b/manual/render/eevee/light_settings.rst index 12aef9614..4adda56bb 100644 --- a/manual/render/eevee/light_settings.rst +++ b/manual/render/eevee/light_settings.rst @@ -8,7 +8,7 @@ Light Settings :Panel: :menuselection:`Properties --> Light` :menuselection:`Shader Editor --> Sidebar --> Options` -Next to lighting from the background and any object with an emission shader, +Besides lighting from the background and materials with emission shaders, lights are another way to add light into the scene. The difference is that they are not directly visible in the rendered image, and can be more easily managed as objects of their own type. @@ -27,7 +27,7 @@ This technique offers better performance than ray tracing and is compatible with any :ref:`Render Method `. .. tip:: - - The error message *Shadow buffer full* means that the system cannot allocate more shadow memory. + - The error message *Shadow buffer full* means that the system cannot allocate enough shadow memory. Increasing the :ref:`Shadow Pool Size ` or the :ref:`Resolution Limit ` on some lights can fix the issue. Otherwise, the only workaround is to disable shadow casting on some lights. @@ -57,7 +57,7 @@ Overblur .. _bpy.types.Light.shadow_filter_radius: Filter - Blur shadow aliasing using Percentage Closer Filtering with a circular kernel. + Blur shadow aliasing using :abbr:`PCF (Percentage Closer Filtering)` with a circular kernel. The effective world scale of the filter depends on the shadow map resolution at the shadowed pixel position. .. note:: @@ -67,7 +67,7 @@ Filter Resolution Limit Minimum size of a shadow map pixel. Higher values use less memory at the cost of shadow quality. - Higher values also speed-up rendering of heavy scene. + Higher values also speed-up rendering of heavy scenes. Each shadow is scaled depending on the shadowed pixel on screen. This can create very sharp shadows but also requires a lot of memory if the shadowed pixel is close to the camera. This property limits the maximum amount of detail that the shadow map can capture. diff --git a/manual/render/eevee/limitations/limitations.rst b/manual/render/eevee/limitations/limitations.rst index cb4da95cf..57cbecbb7 100644 --- a/manual/render/eevee/limitations/limitations.rst +++ b/manual/render/eevee/limitations/limitations.rst @@ -25,7 +25,7 @@ Cameras Lights ====== -- For now lights can only have one color and do not support light node trees. +- Lights can only have one color and do not support light node trees. - Unlike in Cycles, the :ref:`Size ` of spot lights does not change the softness of the cone. - The area light :ref:`Beam spread ` option is not supported. diff --git a/manual/render/eevee/material_settings.rst b/manual/render/eevee/material_settings.rst index 82e11b475..12b105375 100644 --- a/manual/render/eevee/material_settings.rst +++ b/manual/render/eevee/material_settings.rst @@ -60,7 +60,7 @@ Displacement Type This only modifies the shading normal of the object. Vertex position is not affected. :Displacement Only: - This mode is not supported and fallback to *Displacement and Bump*. + This mode is not supported and falls back to *Displacement and Bump*. :Displacement and Bump: Combination of true displacement and bump mapping for finer details. @@ -118,17 +118,18 @@ Sorting Problem --------------- When using *Blended* render method, the order in which the color blending happens is important as it -can change the final output color. As of now EEVEE does not support per-fragment (pixel) sorting or per-triangle sorting. +can change the final output color. EEVEE does not support per-fragment (pixel) sorting or per-triangle sorting. Only per-object sorting is available and is automatically done on all transparent surfaces based on object origin. Opaque surfaces (i.e. that have no transparency) will still have correct sorting regardless of the render method. .. tip:: - Face order can be adjusted in edit mode by using :doc:`sort element `. + Face order can be adjusted in edit mode by using :doc:`sort element ` + or using :doc:`geometry node `. .. note:: Per-object sorting has a performance cost and having thousands of - these objects in a scene will greatly degrade performance. + objects in a scene will greatly degrade performance. .. _bpy.types.Material.use_transparency_overlap: @@ -147,7 +148,7 @@ Thickness This feature is used to approximate the inner geometry structure of the object without heavy computation. This is currently used for Subsurface, Translucent BSDF, Refraction BSDF and the nodes containing them. -If no value is plugged into the output node, then a default thickness based on the smallest dimension of the object is computed. +If no value is plugged into the output node, a default thickness based on the smallest dimension of the object is computed. If a value is connected it will be used as object space thickness (i.e. scaled by object transform). A value of zero will disable the thickness approximation and treat the object as having only one interface. diff --git a/manual/render/eevee/render_settings/clamping.rst b/manual/render/eevee/render_settings/clamping.rst index 6f41e38c7..fce183053 100644 --- a/manual/render/eevee/render_settings/clamping.rst +++ b/manual/render/eevee/render_settings/clamping.rst @@ -26,7 +26,7 @@ Indirect Light .. note:: - These options provides a way to limit :term:`Fireflies` and :term:`Aliasing` of highly reflective surfaces and dense volumes. + These options provide a way to limit :term:`Fireflies` and :term:`Aliasing` of highly reflective surfaces and dense volumes. However, note that as you clamp out such values, other bright lights will be dimmed as well. Care must be taken when using this setting to find a balance between mitigating fireflies and diff --git a/manual/render/eevee/render_settings/performance.rst b/manual/render/eevee/render_settings/performance.rst index 48a5bcc7b..644ec6880 100644 --- a/manual/render/eevee/render_settings/performance.rst +++ b/manual/render/eevee/render_settings/performance.rst @@ -29,7 +29,7 @@ Shadow Pool Size .. _bpy.types.SceneEEVEE.gi_irradiance_pool_size: Light Probes Volume Pool Size - A bigger pool size allows for more irradiance grid in the scene but might not fit into GPU memory and decreases performance. + A bigger pool size allows for more irradiance grids in the scene but might not fit into GPU memory and decreases performance. Viewport diff --git a/manual/render/eevee/render_settings/raytracing.rst b/manual/render/eevee/render_settings/raytracing.rst index 37b8dd710..598ef7538 100644 --- a/manual/render/eevee/render_settings/raytracing.rst +++ b/manual/render/eevee/render_settings/raytracing.rst @@ -24,7 +24,7 @@ Method :Light Probe: Use light-probe spheres and planes to find scene intersection. - This option is has the lowest tracing cost but rely on manually placed light-probes. + This option has the lowest tracing cost but relies on manually placed light-probes. :Screen-Trace: Trace ray against the screen depth buffer. Fallback to light-probes if ray exits the view. @@ -47,7 +47,7 @@ These settings control the behavior of the screen space ray-tracing. They are only visible if *Screen-Trace* is the active tracing *Method*. Precision - Higher values increase precision of the screen space ray-tracing but lowers the maximum trace distance. + Higher values increase precision of the screen space ray-tracing but lower the maximum trace distance. Increased precision also increases performance cost. Thickness @@ -58,17 +58,17 @@ Thickness Denoising _________ -Denoising can be enabled to reduce the noise amount from the raw ray-traced output. -This can help image stability but will also over blur the final ray-traced output. +Denoising can be enabled to reduce the amount of noise from the raw ray-traced output. +This can help image stability but will also over-blur the final ray-traced output. Spatial Reuse Reuse the rays from neighbor pixels. Can introduce some light leaks across surfaces. Temporal Accumulation - Accumulate samples by re-projecting last ray tracing results. - This removes :term:`Fireflies` but also introduce a lot of color bias. - Useful for viewport temporal stability or making render converge faster. + Accumulate samples by re-projecting the last ray tracing results. + This removes :term:`Fireflies` but also introduces color bias. + Useful for viewport temporal stability or making renders converge faster. Bilateral Filter Blur the resolved ray-traced output using a bilateral filter. @@ -77,16 +77,14 @@ Bilateral Filter Fast GI Approximation _____________________ -This Fast GI Approximation is a fallback to the ray-tracing pipeline for +Fast GI Approximation is a fallback to the ray-tracing pipeline for :abbr:`BSDF (Bidirectional Scattering Distribution Function)` with high roughness. -It produces less noisy output and capture bounce lighting more efficiently than individually traced rays. +It produces a less noisy output and captures bounce lighting more efficiently than individually traced rays. -This is currently implemented as a screen space effect and will inherit. - -.. seealso:: :ref:`Limitations `. +This is currently implemented as a screen space effect and will inherit all associated :ref:`limitations `. Method - Determine the methods used to compute the fast GI approximation. + Determine the method used to compute the fast GI approximation. :Ambient Occlusion: Use scene intersections to shadow the distant lighting from light-probes. @@ -100,17 +98,17 @@ Resolution Lower options will be faster and use less memory but will produce blurrier results. Ray Count - Amount of GI ray per pixels at the specified *Resolution*. + Number of GI rays per pixel at the specified *Resolution*. Higher values will reduce noise. Step Count - Amount of screen sample per GI ray. + Number of screen samples per GI ray. Higher values will reduce the noise amount and increase the quality. .. tip:: - With higher step count, there is less chance to miss other surfaces that could reflect of block the light. - This means that the Fast GI *Thickness* parameters can be tweaked to lower values without loosing too much light bounce energy. + With a higher step count, there is less chance to miss other surfaces that could reflect or block the light. + This means that the Fast GI *Thickness* parameters can be tweaked to lower values without losing too much light bounce energy. Precision Higher values increase the precision of the scene intersections with the GI rays. diff --git a/manual/render/eevee/render_settings/sampling.rst b/manual/render/eevee/render_settings/sampling.rst index 7292b02ff..f1ce3230f 100644 --- a/manual/render/eevee/render_settings/sampling.rst +++ b/manual/render/eevee/render_settings/sampling.rst @@ -47,13 +47,13 @@ Shadows .. _bpy.types.SceneEEVEE.shadow_ray_count: Shadow Rays Count - Amount of shadow rays to trace for each light. + Number of rays to trace for each light. Higher values reduces the noise caused by random shadow sampling. .. _bpy.types.SceneEEVEE.shadow_step_count: Shadow Steps Count - Amount of shadow map sample per shadow ray. + Number of shadow map sample per shadow ray. Higher step count results in softer shadows but have a higher cost. .. _bpy.types.SceneEEVEE.volumetric_shadow: diff --git a/manual/render/eevee/render_settings/volumes.rst b/manual/render/eevee/render_settings/volumes.rst index ce7cdb074..f56fb0feb 100644 --- a/manual/render/eevee/render_settings/volumes.rst +++ b/manual/render/eevee/render_settings/volumes.rst @@ -21,7 +21,7 @@ Steps These samples are distributed along the view depth (view Z axis). Distribution - Blend between linear and exponential sample distribution. Higher values puts more samples near the camera. + Blend between linear and exponential sample distribution. Higher values put more samples near the camera. Max Depth Maximum surface intersection count used by accurate volume intersection method. @@ -31,10 +31,10 @@ Max Depth Custom Range ============ -When working with volumes objects, EEVEE automatically compute the best depth range where to compute +When working with volume objects, EEVEE automatically computes the best depth range where to compute the volume sampling and lighting. -In certain situation, this isn't enough and produces sub-optimal sampling which increases noise. -This is particularly the case when using a volume shader inside the *World* or when working with large of volume objects. +In certain situations, this isn't enough and produces sub-optimal sampling which increases noise. +This is particularly the case when using a volume shader inside the *World* or when working with large number of volume objects. The custom depth range can be enabled to restrict the computation of volumes to a certain range along the camera depth and thus increase precision. Start diff --git a/manual/render/eevee/world_settings.rst b/manual/render/eevee/world_settings.rst index 3c753c467..c5eec6e2e 100644 --- a/manual/render/eevee/world_settings.rst +++ b/manual/render/eevee/world_settings.rst @@ -6,7 +6,7 @@ World Settings The world environment can emit light, ranging from a single solid color to arbitrary textures. -In EEVEE, the world lighting contribution is stored into internal :ref:`Light Probe`. +In EEVEE, the world lighting contribution is stored into an internal :doc:`Light Probe `. This makes the lighting less precise than Cycles. Mist Pass @@ -83,8 +83,8 @@ Resolution Sun --- -EEVEE can separate the light from intense light sources (e.g. a sun from an outdoor HDRI) and -replace them by a sun light. This increases the quality of the lighting as the internal light probes +EEVEE can separate the light from intense light sources (e.g. a sun from an outdoor :abbr:`HDRI (High Dynamic Range Imaging)`) and +replace them with a sun light. This increases the quality of the lighting as the internal light probes alone cannot reproduce this type of lighting with enough precision. Threshold @@ -94,8 +94,7 @@ Threshold A value of zero will disable this feature and all lighting will be stored inside the internal light probes. Angle - Angle of the extracted sun light. - Angular diameter of the Sun as seen from the Earth + Angular diameter of the extracted sun light as seen from the Earth. Use Shadow Enable shadow casting on the extracted sun light. -- 2.30.2 From 94b26979624d8cd8a1e3e90e72e7a29279d73734 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Wed, 12 Jun 2024 17:37:40 +0200 Subject: [PATCH 25/25] Fix build errors --- manual/render/cycles/render_settings/hair.rst | 2 +- manual/render/eevee/object_settings/object_data.rst | 8 ++++---- manual/render/lights/light_object.rst | 2 +- manual/render/materials/settings.rst | 2 +- manual/render/shader_nodes/input/light_path.rst | 3 --- manual/troubleshooting/gpu/common/other.rst | 2 +- 6 files changed, 8 insertions(+), 11 deletions(-) diff --git a/manual/render/cycles/render_settings/hair.rst b/manual/render/cycles/render_settings/hair.rst index 1ff061ac6..31888b3c7 100644 --- a/manual/render/cycles/render_settings/hair.rst +++ b/manual/render/cycles/render_settings/hair.rst @@ -34,5 +34,5 @@ Viewport Display These settings control the curve rendering settings used when the 3D viewport is set to :ref:`Material Preview <3dview-material-preview>` -.. include:: /render/eevee/render_settings/hair.rst +.. include:: /render/eevee/render_settings/curves.rst :start-after: .. --- copy below this line --- diff --git a/manual/render/eevee/object_settings/object_data.rst b/manual/render/eevee/object_settings/object_data.rst index 67c7e902e..0c0240dde 100644 --- a/manual/render/eevee/object_settings/object_data.rst +++ b/manual/render/eevee/object_settings/object_data.rst @@ -23,22 +23,22 @@ Shadow Light Probes ------------ -Objects can be set to not be captured by certain :doc:`light probe `. +Objects can be set to not be captured by certain :doc:`light probe `. This can be used, for example, to avoid animated object being recorded into static light probes. For instanced objects, visibility is inherited; if the parent object is hidden for some ray types, the children will be hidden for these too. -.. _bpy.types.Object.visible_shadow: +.. _bpy.types.Object.hide_probe_volume: Volume Makes the object visible during light probe volumes :ref:`baking `. -.. _bpy.types.Object.visible_shadow: +.. _bpy.types.Object.hide_probe_sphere: Sphere Makes the object visible during light probe sphere capture. -.. _bpy.types.Object.visible_shadow: +.. _bpy.types.Object.hide_probe_plane: Plane Makes the object visible during light probe plane capture. diff --git a/manual/render/lights/light_object.rst b/manual/render/lights/light_object.rst index d9f9c0c13..53588e5cc 100644 --- a/manual/render/lights/light_object.rst +++ b/manual/render/lights/light_object.rst @@ -22,7 +22,7 @@ Color Renderer Settings ================= -- :doc:`EEVEE specific settings ` +- :doc:`EEVEE specific settings ` - :doc:`Cycles specific settings ` diff --git a/manual/render/materials/settings.rst b/manual/render/materials/settings.rst index 849809265..749936449 100644 --- a/manual/render/materials/settings.rst +++ b/manual/render/materials/settings.rst @@ -14,7 +14,7 @@ Renderer Settings While shading nodes control the appearance, these settings control the quality and algorithms that each renderer uses to render the material. -- :doc:`EEVEE specific settings ` +- :doc:`EEVEE specific settings ` - :doc:`Cycles specific settings ` diff --git a/manual/render/shader_nodes/input/light_path.rst b/manual/render/shader_nodes/input/light_path.rst index fff5ba296..59e199ea4 100644 --- a/manual/render/shader_nodes/input/light_path.rst +++ b/manual/render/shader_nodes/input/light_path.rst @@ -71,9 +71,6 @@ some of the outputs are only supported in particular cases. This node makes it possible to tweak indirect lighting in the shader. Only a subset of the outputs are supported and the ray depth does not exactly have the same meaning. -In order for the *Is Camera*, *Is Shadow*, *Is Diffuse*, and *Is Glossy* outputs to work, -the object must be inside an :doc:`Irradiance Volume ` -and :doc:`/render/eevee/render_settings/light_probes` must be baked. - *Is Camera*: Supported. - *Is Shadow*: Supported. diff --git a/manual/troubleshooting/gpu/common/other.rst b/manual/troubleshooting/gpu/common/other.rst index f7eeaaaf1..26c8bf87c 100644 --- a/manual/troubleshooting/gpu/common/other.rst +++ b/manual/troubleshooting/gpu/common/other.rst @@ -36,7 +36,7 @@ Poor Performance Render Errors ------------- -See :doc:`EEVEE ` and +See :doc:`EEVEE ` and :doc:`Cycles ` documentation respectively. -- 2.30.2