-
Notifications
You must be signed in to change notification settings - Fork 840
Optimizing light loop part 2 #2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
sebastienlagarde
merged 30 commits into
HDRP/staging
from
HDRP/optimizing-light-loop-when-shadows
Apr 17, 2020
Merged
Optimizing light loop part 2 #2
sebastienlagarde
merged 30 commits into
HDRP/staging
from
HDRP/optimizing-light-loop-when-shadows
Apr 17, 2020
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…loop-when-shadows
# Conflicts: # com.unity.render-pipelines.high-definition/CHANGELOG.md # com.unity.render-pipelines.high-definition/Runtime/Lighting/Light/HDAdditionalLightData.cs # com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.cs
# Conflicts: # com.unity.render-pipelines.high-definition/CHANGELOG.md # com.unity.render-pipelines.high-definition/Runtime/Lighting/Light/HDAdditionalLightData.cs
sebastienlagarde
pushed a commit
that referenced
this pull request
Jul 7, 2020
FrancescoC-unity
added a commit
that referenced
this pull request
Jul 23, 2020
sebastienlagarde
added a commit
that referenced
this pull request
Sep 30, 2020
* Implement clipping and culling (does not consider view frustum corners) * Support orthographic projection * Turn 'scaleXY' into a scalar * Test corners of the view volume * Improve the placeholder for the linear depth * Fix aspect * Bugfix * Optimize * Also store view space Z * Optimize orthographic * Optimize LUT * Add wave intrinsic support * Fix group count * Reduce the kernel count to 1 * Remove old code * Bounds check * Add a profiling marker * Fix lane masks * Fix compiler warning * Remove GPU Pro reference * Be politically correct * No instrinsics on Xbox * Update CHANGELOG.md * update reference screenshots for mac Co-authored-by: sebastienlagarde <sebastien@unity3d.com>
sebastienlagarde
added a commit
that referenced
this pull request
Oct 1, 2020
Merged
sebastienlagarde
added a commit
that referenced
this pull request
Oct 4, 2020
* Skip biquadratic reconstruction when doing filtering * changelog * Use int instead of float (was doing experiment with multiple options) * Mis missing docs * Moving function to internal and adding doc for missing param in planar reflection function * Halving the perf impact of film grain and sRGB dithering in Final pass (#1782) * Optimize ALU of grain and dithering * changelog * Fix when res is smaller than grain texture Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * New DXR HDRP test for testing SNorm16 vertex format support in ray tracing shaders (#1651) * Added new DXR test (6000_VertexFormats) for testing a few vertex attribute formats. * Deleted unused material * Perform the first mip of the depth pyramid alongside the downsample of depth buffer for low res transparents (#1800) * Skip redundant mip0 of depth pyramid * changelog * Fix register on ps * Reuse minDepth * Make sure in rendergraph the copy of the depth buffer happens. * Wrong naming Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Fix for text of shadow splits being truncated at the bottom (#1822) * Add some more margin * Changelog Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Fix property field drawing in custom pass volume (#1824) Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Force probe to render again if first time was during async shader compilation (#1847) Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Refresh environment library field in Lookdev (#1849) * Refresh the library field too * Add the refresh on Repaint * Changelog * Guard for null * Revert "Add the refresh on Repaint" This reverts commit 072c8e5. Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Fix matcap preferences serialization issue (#2013) * Fix serialization issue * Changelog Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Added a way to check the normals through the material views. (#1895) * Added a way to check the normals through the material views. * Adding the information in the documentation Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * [10.x.x] AxF UI improvements (#1902) * AxF UI - Remove possibility to select main BRDF as BTF since it is unsupported (could be handy to show it if it was imported as such, but for now we safely ignore since importer doesn't produce a material with that mode selected) Also prevent compilation error even if selected. * AxF UI - Add a bit of tooltips (even if for some fields engine editor bug doesn't show them), group advanced surface inputs into their own foldable UI block, make clearer the tiling/offset vector meaning. * AxF UI - Remove UI parts that were moved into the main mapping section. * AxF - Update the documentation to reflect UI changes. * AxF new UI - Add missing file * Close popup window when focus is lost (case 1258571) (#1907) Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Default contact shadow LIGHT quality setting set to true on High (#1911) * Have contact shadow on high quality. * changelog Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Fix double addition to sorted list (#1916) * Added the possibility to replace or overwrite already existing local package when installing a new one. (#1921) * When trying to install the local configuration package, if another one is already present the user is now asked whether they want to keep it or not. * Update changelog Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Fixed an exception thrown when closing the lookdev because there is no active SRP anymore. (#1925) * Fixed an exception thrown when closing the lookdev because there is no active SRP anymore. * Update changelog Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Fixed UI alignment of framesettings (#1929) Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Fixed an issue where entering playmode would close the LookDev window. (#1937) * Fixed an exception thrown when closing the lookdev because there is no active SRP anymore. * Update changelog * Fixed an issue where entering playmode would close the LookDev window. * Update changelog Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Added Simple mode to Earth Preset for PBR Sky (#1866) * Added Simple Earth Mode to PBR Sky * Update doc * update doc Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Fix hair shader compilation issue with Debug Display mode (#2023) * Fix compilation issue with debug mode and hair * Update CHANGELOG.md * Improve MSAA color resolve when very different samples are merged together (#1839) * Improve MSAA color resolve. * Changelog * Revert unwanted changes This reverts commit a55a905. * Update refs * Linux refs * update linux and mac reference screenshots Co-authored-by: Sebastien Lagarde <sebastien@unity3d.com> * Revert "Fix hair shader compilation issue with Debug Display mode (#2023)" This reverts commit 16989c6. * Screen Space Ambient Occlusion for Shadow Matte (#1901) * Added the export of normals during the prepass for shadow matte for proper SSAO calculation. * change log * update reference screenshots Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Fixed Cutoff not working properly with ray tracing shaders default and SG (case 1261292). (#1923) * Fixed Cutoff not working properly with ray tracing shaders default and SG (case 1261292). * Update LitData.hlsl * Update AxFData.hlsl Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Fix hair shader compilation issue with Debug Display mode (#2034) * Fix compilation issue with debug mode and hair * Update CHANGELOG.md * Update Deferred.compute * Update LightLoop.hlsl * add missing meta * Fix cubemap static preview + remove custom inspector (#2041) * Removed HDCubemapInspector * Updated changelog * Fixed wizard DXR setup for non-compatible systems (#2003) * Fixed wizard DXR setup for non-compatible systems * Updated changelog Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Fix Custom Post Process affecting preview cameras (#1988) * Fix after opaque and sky post processes not disabled by frame setting * Disable custom post process for previews * Updated changelog Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Fix for lens distortion breaking rendering (#1938) * Do different check to see if lens distortion is on * Changelog Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Fixed save popup appearing twice (#2002) Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Remove unused variable causing error (#1942) Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Add screenshots of the debug modes (#2051) * Add back hdri distortion (#2049) * Fixed the dependecy of FrameSettings (MSAA, ClearGBuffer, DepthPrepassWithDeferred) (case 1277620). (#1915) * Fixed the dependecy of FrameSettings (MSAA, ClearGBuffer, DepthPrepassWithDeferred) (case 1277620). * fixing typos * Update FrameSettingsUI.Drawers.cs Co-authored-by: Sebastien Lagarde <sebastien@unity3d.com> * Fixed the usage of GUIEnable for volume components (case 1280018). (#1996) Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Fixed the diffusion profile becoming invalid when hitting the reset button (case 1269462). (#2000) * Fixed the diffusion profile becoming invalid when hitting the reset (case 1269462). * removing unwanted changelog Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * bump time (#2047) * Fix issue with MSAA resolve killing alpha channel (#2046) * Preserve alpha channel during resolve. * changelog Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Fix warning (#2057) * - Fixed a warning in materialevalulation (#2058) - Fixed an error when building the player. * Fix box light disappearing when range is below 1 and no range attenuation (#1989) * Fix * Changelog * Fix typo Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Switch RenderGraph path as default. (#1783) * Enable Render Graph by default. * Fixed a leak in test 9901 * Enabled debug menu entry for enabling/disabling Render Graph * Cleaned up Raytracing buffers when not using rendergraph * Fixed path tracing and non render graph path. * Fixed AO allocation * Updated yamato to change RenderGraph tests to non render graph tests. * Removed unused function * Fixed ambient occlusion with Render Graph * Fixed Render Graph Log to log all graphs during a frame. * Fixed binding of light list buffers in forward. * Fixed GCalloc * Remove obsolete member of test cameras * Workaround for weird gcalloc in GrabCoCHistory when XR and RG are both enabled. * Post merge fix * Temp yamato remote fix * Tentative fix part 2 * Revert "Tentative fix part 2" This reverts commit 4f6f83d. * Revert "Temp yamato remote fix" This reverts commit 22e6617. * Tmp workaround yamato remote * Missing doc * Replace scp with rsync to avoid locked .git issue * Fixed transparent MSAA * Update yml * Fixed some full screen debug with XR. * Revert "Replace scp with rsync to avoid locked .git issue" This reverts commit 60b47e2. # Conflicts: # .yamato/hdrp-osx-metal.yml # .yamato/hdrp_hybrid-osx-metal.yml # .yamato/shadergraph-osx-metal.yml # .yamato/universal-osx-metal.yml # .yamato/universal_hybrid-osx-metal.yml # .yamato/vfx_hdrp-osx-metal.yml # .yamato/vfx_urp-osx-metal.yml * regen yml * Disable GCAlloc tests on macos * Added an index to render graph texture resources name to help tracking in analysis tools. * Removed useless parameters * Fixed ResolveFullScreenDebug on Vulkan. * Fixed binding of depth pyramid shader parameter during forward transparent passes. * Fixed motion vector buffer binding in custom passes. * Fixed a wrong test in custom passes. * Bind null handle to avoid issue with planar not needing this, but main camera not. * Changelog * Comment * Update yml files * Update yml files * update resource asset and refrence screenshots for 001-HDTemplate * Update yml Co-authored-by: Theo Penavaire <theo.penavaire@gmail.com> Co-authored-by: FrancescoC-Unity <francescoc@unity3d.com> Co-authored-by: Sebastien Lagarde <sebastien@unity3d.com> * Misc Render Graph Improvements (#2060) * Enable Render Graph by default. * Fixed a leak in test 9901 * Enabled debug menu entry for enabling/disabling Render Graph * Cleaned up Raytracing buffers when not using rendergraph * Fixed path tracing and non render graph path. * Fixed AO allocation * Updated yamato to change RenderGraph tests to non render graph tests. * Removed unused function * Fixed ambient occlusion with Render Graph * Fixed Render Graph Log to log all graphs during a frame. * Fixed binding of light list buffers in forward. * Fixed GCalloc * Remove obsolete member of test cameras * Workaround for weird gcalloc in GrabCoCHistory when XR and RG are both enabled. * Post merge fix * Temp yamato remote fix * Tentative fix part 2 * Revert "Tentative fix part 2" This reverts commit 4f6f83d. * Revert "Temp yamato remote fix" This reverts commit 22e6617. * Tmp workaround yamato remote * Missing doc * Replace scp with rsync to avoid locked .git issue * Fixed transparent MSAA * Update yml * Fixed some full screen debug with XR. * Revert "Replace scp with rsync to avoid locked .git issue" This reverts commit 60b47e2. # Conflicts: # .yamato/hdrp-osx-metal.yml # .yamato/hdrp_hybrid-osx-metal.yml # .yamato/shadergraph-osx-metal.yml # .yamato/universal-osx-metal.yml # .yamato/universal_hybrid-osx-metal.yml # .yamato/vfx_hdrp-osx-metal.yml # .yamato/vfx_urp-osx-metal.yml * regen yml * Disable GCAlloc tests on macos * Fixed a leak. * Change bad variable name. * Split debug overlay passes to avoid always reading their inputs Refactored DebugOverlay to make it a class. * Fixed decal atlas debug with RG * Added name to the backbuffer and a newline between Texture and Compute resources. * Properly added name to backbuffer. * Fixed debugger display for resource handles * Added meta info to resource handles to better check validity. Co-authored-by: Theo Penavaire <theo.penavaire@gmail.com> * Fixed Probe Volumes with render graph. (#2061) * Improve light AABB generation #2 (#1906) * Implement clipping and culling (does not consider view frustum corners) * Support orthographic projection * Turn 'scaleXY' into a scalar * Test corners of the view volume * Improve the placeholder for the linear depth * Fix aspect * Bugfix * Optimize * Also store view space Z * Optimize orthographic * Optimize LUT * Add wave intrinsic support * Fix group count * Reduce the kernel count to 1 * Remove old code * Bounds check * Add a profiling marker * Fix lane masks * Fix compiler warning * Remove GPU Pro reference * Be politically correct * No instrinsics on Xbox * Update CHANGELOG.md * update reference screenshots for mac Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Update TestCaseFilters.asset (#2067) * Fix alpha not having TAA applied to it. (#2069) * TAA'd alpha was never output * Changelog * Fix issues with bloom sampling outside (#1930) * Fix leftover from guard bands and fix wrong clamping of UVs * Changelog * Fix dof bug Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Fix rendergraph on consoles when motion vectors are enabled (#2076) * Fix * reput the branch * changelog * Revert history change * Update material.hlsl include in all .shader to be at correct location (#2082) * removed reference screenshots * update reference screenshots * quie warning in srcbounds.compute * update .meta for reference screenshots * Revert: Fix alpha not having TAA applied to it. (#2069) * update screenshost of runtime test * Update 4052_TAA.png * Fixed the Ray-Tracing related Debug Display not working in render graph mode. (#1971) Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Fix nan in the pbr sky (#1983) * Fix nan in pbr sky * use safepositivepow Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * [HDRP][LookDev] Ensure stylesheet are loaded before applying them on Domain Reload (#1985) * Ensure stylesheet are loaded before applying them on Domain Reload * Added changelog description * Fix for upgrade package workflow Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Fix accumulation on DX11 (#1987) * Fix accumulation on DX11 * Remove left-over line of code * minor bugfix Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * [HDRP][Compositor] Fix issue with screen space UI not drawing (#2070) * Fix issue with screen space UI not drawing on the graphics compositor * Revert minor code change * Remove debug/log messages * Hide internal compositor data from inspector Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Added a new volume component parameter to control the max ray length of directional lights(case 1279849). (#1991) Removed the max clamp value for the RTR, RTAO and RTGI's ray length (case 1279849). Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Fixed error Maximum allowed thread group count is 65535 when resolution is very high. (#2068) * Fix issue when we need more than 65535 * Changelog * Push rest of file * Missing offset Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Added context options "Move to Top", "Move to Bottom", "Expand All" and "Collapse All" for volume components. (#2071) * Added context options "Move to Top", "Move to Bottom", "Expand All" and "Collapse All" for volume components. * Fixing the expansion state after moving * Update CHANGELOG.md * Update CHANGELOG.md Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Fixed LOD mesh stripping and LOD Group UI (#2072) * Current LOD bias and max values for scene view rendering is now using the default frame settings. This makes LODGroup UI consistent with what is happening on screen. * LOD Meshes are now properly stripped depending on the Max LOD value stored in all HDRP assets of a build. * Added a section about LOD management in the feature comparison with builtin to explain the differences and that the QualitySettings lod APIs aren't supported anymore. * Update changelog * Updated doc with review feedback. Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Added support for box and pyramid point lights in path tracing (#2027) * Added support for box and pyramid point lights. * Updated changelog. Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * [HDRP][Compositor] Fix outlines in transitions between post-processed and plain regions (#1972) * Add controls for the transition between post processed and plain image parts * Changelog Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Reduce bloom flickering (#2035) * Fix bilinear sampling uv and remove upsampling guard bands * Added high quality prefiltering option * Changelog & doc * Use predeclared samplers and addback guard bands * Use appropriate overload Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Meshes with decal material not added to RT acceleration structure anymore (#2079) * Test that a material is non-decal before adding corresp. mesh to the RT AS. * Updated changelog. * Update HDRaytracingManager.cs Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * Decal cross fade support (#1986) * Enable LOD cross fade * Changelog * Make changes only for mesh decals * Update DecalData.hlsl * Update DecalSurfaceOptionsUIBlock.cs * do some cleanup and move ComputeFadeMaskSeed in ShaderVariablesFunctions.hlsl * update documentation * Update ShaderVariablesFunctions.hlsl Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * [HDRP][Compositor] Fix camera stacking for AOVs in the graphics compositor (#1912) * Fix camera stacking for AOVs in the graphics compositor * Fix null reference exception when closing the compositor window * RenderGraph implementation for AOV stacking and misc improvements * Update HDRenderPipelineResources.asset Co-authored-by: sebastienlagarde <sebastien@unity3d.com> * filter out scene 2306 shadow tint on metal due to instability * fix all test Co-authored-by: FrancescoC-Unity <francescoc@unity3d.com> Co-authored-by: Anis <anis@unity3d.com> Co-authored-by: FrancescoC-unity <43168857+FrancescoC-unity@users.noreply.github.com> Co-authored-by: IonutNedelcuUnity <43206223+IonutNedelcuUnity@users.noreply.github.com> Co-authored-by: Adrien de Tocqueville <adrien.tocqueville@unity3d.com> Co-authored-by: anisunity <42026998+anisunity@users.noreply.github.com> Co-authored-by: slunity <37302815+slunity@users.noreply.github.com> Co-authored-by: fredericv-unity3d <55485372+fredericv-unity3d@users.noreply.github.com> Co-authored-by: JulienIgnace-Unity <julien@unity3d.com> Co-authored-by: Antoine Lelievre <antoinel@unity3d.com> Co-authored-by: Theo Penavaire <theo.penavaire@gmail.com> Co-authored-by: Evgenii Golubev <EvgeniiG@users.noreply.github.com> Co-authored-by: jenniferd-unity <71718938+jenniferd-unity@users.noreply.github.com> Co-authored-by: Pavlos Mavridis <pavlos.mavridis@unity3d.com> Co-authored-by: Emmanuel Turquin <emmanuel@turquin.org>
8 tasks
pastasfuture
pushed a commit
that referenced
this pull request
Aug 20, 2021
Changed the runtime registration and access of Probe Volumes to be able to feed additional data for rendering from a DOTS system.
pastasfuture
pushed a commit
that referenced
this pull request
Sep 15, 2021
Changed the runtime registration and access of Probe Volumes to be able to feed additional data for rendering from a DOTS system.
mohammad22
pushed a commit
that referenced
this pull request
Mar 2, 2022
Changed the runtime registration and access of Probe Volumes to be able to feed additional data for rendering from a DOTS system.
mohammad22
pushed a commit
that referenced
this pull request
Oct 19, 2022
Uncomment Probe Volume related menu items Baked Lighting Workflow: Maintain lists of all Probe Volume instances and publicly expose to allow game-specific bake code to turn on and off relevant lighting data for context-specific bakes. Probe Volume: Probe Volume Improvements Probe Volumes: Force the lightmapper to free old additionalbakedata jobs in a few cases, such as when probe volumes are disabled, or when probe volumes are hidden. Previously, it looks like the lightmapper could hang onto this data until you quit. (#19) Probe Volumes: Lots of bugfixes and improvements to bilateral filtering modes. Octahedral Depth data now working (requires changes on the C++ side). Added support for comparing filtering the texel coordinates and then taking a single sample, vs taking 8x samples and then filtering the results. Ported over from unity graphics repo 3c3b091 Probe Volumes: Lots of bugfixes around baking. Reflection Probes and Density Volumes: now respect scene visibility toggles in regards to their contribution to the scene. TODO: Remove debug logging that was added! Backing up WIP work. SceneObjectIDMap: Fix bug where index from gameobject dictionary would get out of sync from entries after an insertion occurred to fill a hole. This resulted in a nasty bug where reflection probes would occasionally generate the same filename as eachother, would overwrite eachothers textures, and would point to the same texture after the bake completed. Probe Volume: Comment out log spam. Planning to clean it out completely in a follow up commit Probe Volume: Remove log spam from ProbeVolumeManager Added HDRP_STRIP_LEGACY_AMBIENT_PROBE_BAKING define for enabling legacy ambient probe bake feature stripping - requires custom build with backport of https://ono.unity3d.com/unity/unity/pull-request/123092/_/lighting/SRP-opt-out-skymanager Make HDBakedReflectionSystem public for baking API Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Probe Volume: Wrap editor-only variable dataNeedsDilation in UNITY_EDITOR define blocks to avoid warnings. Probe Volumes: Track whether or not bake inputs has been set, and only attempt to get bake data if the inputs was set. Otherwise the lightmapper will error out. Probe Volume: Add View Bias support - exposed on the ProbeVolume component next to Normal Bias (#25) Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Probe Volume: Probe Volume binary serialization and minor fixes * Prefer binary serialization of Probe Volume assets. * Added "Reserialize All" action to context menus of ProbeVolumeAsset to be able to convert all assets in a project to binary format. Probe Volume: Add support for sampling probe volumes from volumetrics. Probe Volume inner loop cleanup happened in the process. Added support for disabling bilateral filtering via a define, which is used in volumetrics and vfx sampling of probe volumes now. Fix bug where density volume voxelization would erroneously sample and voxelize density volumes that no longer existed due to assumption that density volumes were last in the light list (they are not anymore: probe volumes come after). Probe Volumes: Reflection Probe Normalization by Probe Volumes added. In order to enable, NormalizeReflectionProbeWithProbeVolume needs to be enabled in the Frame Settings for the Camera, and scenes need to be rebaked. Options exist on the ProbeVolumeController volume override. (#27) Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Probe Volumes: Reflection Probe Normalization: Add #if UNITY_EDITOR guards around Subscribe/UnsubscribeSHBaking Probe Volume: Fix vector truncation warnings in sample SH Luminance functions Probe Volume: Fix one more vector trunction warning Enable Probe Volumes with L2 Encoding mode Probe Volumes: Lots of bugfixes and improvements to bilateral filtering modes. Octahedral Depth data now working (requires changes on the C++ side). Added support for comparing filtering the texel coordinates and then taking a single sample, vs taking 8x samples and then filtering the results. Ported over from unity graphics repo 3c3b091 Probe Volume Normalization Baking Bugfix: Sanitize out sentinel values from reflection probe request positions array - large values caused the lightmapper to barf killing all direct lighting contribution. Also added tracking for whether or not the data was set, as the lightmapper is not robust to multiple set calls Probe Volume: Make ProbeVolumeinternals visible to Unity.Entities.Hybrid.HybridComponents so that they can be converted for hybrid rendering Probe volumes rotation + reflection probe normalization fixes and improvements. Also lots of cleanup to avoid debug-only + lightmapper work when in playmode. Cleaned out old deadcode + comments. Cleaned some GC cases (#1) Co-authored-by: pastasfuture <nickb@bonfirestudios.com> ReflectionProbeLuminanceSHPreview: Fix path to shader after merge conflict resolution mistake Probe Volume: Fix bug where bakingEnabled flag was not correctly being set to false when ForceOff was triggered in the editor (not in playmode). Also add additional logging around case where lightmapper does not have data for a specific ID (so we can track down the source faster in the future) Probe Volume: Set methods for Probe Volumes exposed that allows us to use them to do deep copies of Scenes Probe Volume Reflection Probe Normalization: Use dominant specular direction for normalization instead of R. For low roughness materials, this has little to no effect (because it uses the R vector still). For high roughness materials, this bends towards normalizing against the surface normal instead of R. So this feature improves quality of high roughness specular Fix warning log that had some formatting error DOTS Probe Volume (#2) Changed the runtime registration and access of Probe Volumes to be able to feed additional data for rendering from a DOTS system. Avoid boxing when using ProbeVolumeAtlasKey in a dictionary. (#4) Probe Volume Reflection Probe Normalization: Fix error: Output Particle Lit Quad': undeclared identifier 'ComputeReflectionProbeNormalizationDirection' Fix double dark ao and ao in lightloop (#12) Fix double dark AO + material AO availability in light loop for probe volumes. Probe Volumes: Pack AO and isUninitializedGI flag into .x channel of light layers GBuffer RT to fix double dark AO and to allow emissive surfaces to receive probe volume lighting. Also perform small restructuring to a probe volume bilateral filter function to remove a shader warning
mohammad22
pushed a commit
that referenced
this pull request
Oct 21, 2022
Probe Volume: Uncomment Probe Volume related menu items Baked Lighting Workflow: Maintain lists of all Probe Volume instances and publicly expose to allow game-specific bake code to turn on and off relevant lighting data for context-specific bakes. Probe Volume: Probe Volume Improvements Probe Volumes: Force the lightmapper to free old additionalbakedata jobs in a few cases, such as when probe volumes are disabled, or when probe volumes are hidden. Previously, it looks like the lightmapper could hang onto this data until you quit. (#19) Probe Volumes: Lots of bugfixes and improvements to bilateral filtering modes. Octahedral Depth data now working (requires changes on the C++ side). Added support for comparing filtering the texel coordinates and then taking a single sample, vs taking 8x samples and then filtering the results. Ported over from unity graphics repo 3c3b091 Probe Volumes: Lots of bugfixes around baking. Reflection Probes and Density Volumes: now respect scene visibility toggles in regards to their contribution to the scene. TODO: Remove debug logging that was added! Backing up WIP work. SceneObjectIDMap: Fix bug where index from gameobject dictionary would get out of sync from entries after an insertion occurred to fill a hole. This resulted in a nasty bug where reflection probes would occasionally generate the same filename as eachother, would overwrite eachothers textures, and would point to the same texture after the bake completed. Probe Volume: Comment out log spam. Planning to clean it out completely in a follow up commit Probe Volume: Remove log spam from ProbeVolumeManager Added HDRP_STRIP_LEGACY_AMBIENT_PROBE_BAKING define for enabling legacy ambient probe bake feature stripping - requires custom build with backport of https://ono.unity3d.com/unity/unity/pull-request/123092/_/lighting/SRP-opt-out-skymanager Make HDBakedReflectionSystem public for baking API Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Probe Volume: Wrap editor-only variable dataNeedsDilation in UNITY_EDITOR define blocks to avoid warnings. Probe Volumes: Track whether or not bake inputs has been set, and only attempt to get bake data if the inputs was set. Otherwise the lightmapper will error out. Probe Volume: Add View Bias support - exposed on the ProbeVolume component next to Normal Bias (#25) Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Probe Volume: Probe Volume binary serialization and minor fixes * Prefer binary serialization of Probe Volume assets. * Added "Reserialize All" action to context menus of ProbeVolumeAsset to be able to convert all assets in a project to binary format. Probe Volume: Add support for sampling probe volumes from volumetrics. Probe Volume inner loop cleanup happened in the process. Added support for disabling bilateral filtering via a define, which is used in volumetrics and vfx sampling of probe volumes now. Fix bug where density volume voxelization would erroneously sample and voxelize density volumes that no longer existed due to assumption that density volumes were last in the light list (they are not anymore: probe volumes come after). Probe Volumes: Reflection Probe Normalization by Probe Volumes added. In order to enable, NormalizeReflectionProbeWithProbeVolume needs to be enabled in the Frame Settings for the Camera, and scenes need to be rebaked. Options exist on the ProbeVolumeController volume override. (#27) Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Probe Volumes: Reflection Probe Normalization: Add #if UNITY_EDITOR guards around Subscribe/UnsubscribeSHBaking Probe Volume: Fix vector truncation warnings in sample SH Luminance functions Probe Volume: Fix one more vector trunction warning Enable Probe Volumes with L2 Encoding mode Probe Volumes: Lots of bugfixes and improvements to bilateral filtering modes. Octahedral Depth data now working (requires changes on the C++ side). Added support for comparing filtering the texel coordinates and then taking a single sample, vs taking 8x samples and then filtering the results. Ported over from unity graphics repo 3c3b091 Probe Volume Normalization Baking Bugfix: Sanitize out sentinel values from reflection probe request positions array - large values caused the lightmapper to barf killing all direct lighting contribution. Also added tracking for whether or not the data was set, as the lightmapper is not robust to multiple set calls Probe Volume: Make ProbeVolumeinternals visible to Unity.Entities.Hybrid.HybridComponents so that they can be converted for hybrid rendering Probe volumes rotation + reflection probe normalization fixes and improvements. Also lots of cleanup to avoid debug-only + lightmapper work when in playmode. Cleaned out old deadcode + comments. Cleaned some GC cases (#1) Co-authored-by: pastasfuture <nickb@bonfirestudios.com> ReflectionProbeLuminanceSHPreview: Fix path to shader after merge conflict resolution mistake Probe Volume: Fix bug where bakingEnabled flag was not correctly being set to false when ForceOff was triggered in the editor (not in playmode). Also add additional logging around case where lightmapper does not have data for a specific ID (so we can track down the source faster in the future) Probe Volume: Set methods for Probe Volumes exposed that allows us to use them to do deep copies of Scenes Probe Volume Reflection Probe Normalization: Use dominant specular direction for normalization instead of R. For low roughness materials, this has little to no effect (because it uses the R vector still). For high roughness materials, this bends towards normalizing against the surface normal instead of R. So this feature improves quality of high roughness specular Fix warning log that had some formatting error DOTS Probe Volume (#2) Changed the runtime registration and access of Probe Volumes to be able to feed additional data for rendering from a DOTS system. Avoid boxing when using ProbeVolumeAtlasKey in a dictionary. (#4) Probe Volume Reflection Probe Normalization: Fix error: Output Particle Lit Quad': undeclared identifier 'ComputeReflectionProbeNormalizationDirection' Fix double dark ao and ao in lightloop (#12) Fix double dark AO + material AO availability in light loop for probe volumes. Probe Volumes: Pack AO and isUninitializedGI flag into .x channel of light layers GBuffer RT to fix double dark AO and to allow emissive surfaces to receive probe volume lighting. Also perform small restructuring to a probe volume bilateral filter function to remove a shader warning Dynamic GI: Probe Volume Dynamic GI V1 (#7) Large feature addition to Probe Volumes to support Dynamic GI at runtime & in editor via compute jobs. Huge coordination across game team, Spotlight & HDRP team to refine the algorithm and feature set. Key Features - New toggle on a light "Affects Dynamic GI" - New toggle on a probe Volume "Support Dynamic GI" - New debug draw mode on a probe volume "Draw Neighbors" to visualize the neighbor the dynamic GI light will bounce around in - All light types are supported Missing features - During albedo baking step, mask volumes are not being sampled correctly - Off screen lights are missing their shadows when being sampled by the Hit pass of the Dynamic GI compute shader - Directional light GI seems off, maybe its the offscreen shadow issues - Sky lighting is not supported at the moment in the dynamic GI - Currently does not encode emissive in the neighborhood bake data, only albedo, surface distance & normal - Currently does require a re-bake when geometry changes, the only thing it relies on getting from the lightmapper is the probe validity value Commit notes: * Added dynamic GI options onto HDLight and ProbeVolume inspectors * work in progress dynamic gi * lots more refactoring on the data model and packing for hits vs misses * Cleanup dynamic GI code into separate file * Working axis baking code with visualization * small fixes * validity scale fix * neighbor draw quad scale control * small fix * scale fix * First pass at albedo extraction code for DynamicGI * bake bug fix * Albedo baking via Shader Graph works now, and more tweaks to neighbor debug draw * bug fix * Dynamic GI neighbor cleanup to use real probe volume data for positioning * bug fix for non uniform density volumes * cleanup * Cleanup and setup of Propagation Buffers * more work in progress dynamic GI, have a test read modify write of SH data working * cleanup dynamic GI values when its disabled * more cleanup * bug fix * New improved Albedo sampling code from Francesco * cache debug shader not material, works better for some reason * Lots of shader code and setup for real-time GI propagation. Still a work in progress but most code written on GPU side * All the compute data hooked up first pass * Kinda of working * Slightly better, still not there * Fixes plus re-write of SH data in dynamic GI * First kinda working version of new RTGI, needs lots of tuning and improvements * Move VolumeComponent to seperate file so it is preserved when assets are saved * More improvements, anti alias punctual lights and add a secondary bounce to hits * Tweaks, added FCC's SH logic for testing / comps * Cleanup and addition of 3D texture for Irradiance sampling to smooth out history * Cleanup & and added back bounce boost control for hit pass * Tuning defaults * more filddleing with defaults * temp code for testing * Intended L1 * Adding Affect Dynamic GI to light explorer UI Fixing hit lighting logic to work with multiple lights * Adding de-ringing to SH Exposing class outside of HDRP for play mode testing * Move probe volume update code around so worked better with needing state set before dispatches * Integration of SG logic for Irradiance Cache, way cleaner and better results. Removed old Irradiance cache logic using L1 SH * More cleanup and refinements of SG algorithm * Bias punctual lights near surfaces to fix strobing * Cleanup * name cleanup * Support volume rotation in neighbor debug view mode * Fixed contribution normalization. Changed the direction for infinite bounces evaluation from reflection to surface normal. * changing default sharpness to 3.5 to reduce dark banding a tad * Hacked prototype of an alternative propagation algorithm. * Smoothed radiance gathering from hits. * Cleanup and temp NaN propagation workaround. * Changed History Contribution min limit to 0 to be able to test propagation without it. * Removed old algorithm, cleaned up data format and volume parameters to make new directional version the default one * Fixed Probe Volume dynamic GI data access after merging with the DOTS Probe Volume feature. Signed-off-by: Andrew Saraev <andrew.saraev@unity3d.com> * Fixed up popping issues with Dynamic GI and other probe volumes in view, plus made it so the light list is global, not camera view culled so all lights stay active in the list for GI to propagate more accurately and shadows to update even for lights behind the camera. Merged with latest * Build compile fixes * Player build fixes, real-time GI now works in player builds * HDRP settings and toggles for probe volume dynamic GI * missed files for previous checkin * small optimizations * turn on optimizations in key dynamic gi shaders for perf * Custom dynamic GI light list that also includes off screen lights * Explicitly set dataUpdated when data is uploaded to the atlas instead of setting it in GetPayload() of the volume. To simplify communication with the DOTS version. * use shadows for dynamic GI lights. This still has a bug where off screen lights get their shadow indexes reset to -1 * Better disposing of propagation buffers Cleaned up global compute buffers for SH L012 and validity buffers, and reusing those per probe volume for propagation to reduce memory usage * possible mem leak fix & piping light bounce intensity through to dynamic GI * Some PR feedback and distance checks to probe hit & propagation phases * Added basic distance checks to entire probe volume to dispatch dynamic GI jobs or not * directional lights are weird, maybe the shadows, we should avoid them * PR feedback * Refactored ProbeVolumeBuffers cleanup to keep GameObject and DOTS logic similar. * Attempt to reduce white space conflicts * Profiler marker for Dynamic GI Slight optimization in light loop * Optimized C# by not doing SetData calls on Buffers unnecessarily Co-authored-by: Andrew Saraev <andrew.saraev@unity3d.com> Bug fixes from Dynamic GI. Cleanup buffers after bakes, and only dispatch dynamic GI for scene or game cameras Dynamic GI Spherical Harmonic from Spherical Gaussian Modes (#9) * Implemented SH from SG Modes which can be toggled between in the Probe Dynamic GI volume settings. SamplePeakAndProject is the same mode we are used to: Spherical gaussians will simply be evaluated at their peak and projected to convert to spherical harmonics. SHFromSGFit: A spherical gaussian to spherical harmonic function fit is used, which is physically plausible. SHFromSGFitWithCosineWindow: A spherical gaussian with an additional cosine window to spherical harmonic function fit is used, which is physically plausible. Less directional blur than SHFromSGFit. * Cleanup pass on SG to SH supporting math. Created Zonal Harmonic data type with supporting functions to add type saftey to the transforms as we have done with the other spherical harmonic functions. Created specialized zonal harmonic rotation functions which significantly reduces the work required for rotation. It's possible the compiler was handling this already by stripping out work on zero coefficients, and by automatically using floats instead of float3s when all channels are the same - but better to not put too much pressure on the compiler. This should also make it easier in the future to create specialized rotation functions for cardinal rotations (which will introduce additional zeros). Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Dynamic GI: Fix a bunch of shader warnings in DynamicGI shaders. Bug fix so that lights can act as dynamic GI only lights Probe Volumes: Created a proper Probe Volume probe rendering shader. All probes in a selected probe volume are rendered in a single DrawProcedural call, 2 triangle per probe (screen space quads). Allows me to get rid of a lot of nasty mesh setup logic that was previously happening. The new Draw Probes debug shader currently has two additional options: Draw Validity, and Highlight Ringing (#14) Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Probe Volumes: Use GlobalObjectId.targetObjectId (#16) * Probe Volumes: Use GlobalObjectId.targetObjectId to uniquely identify Probe Volumes, and Probe Volume Asset ownership, rather than GetInstanceID() - which was not guarenteed to be persistent. This PR cleans up the related logic, allowing us to guarentee non-colliding bake ids, avoids hanging on to asset references during duplication of probe volumes, and, in the case where you have intentionally referenced a probe volume asset on a probe volume that does not own it, avoids baking that asset, which would previously stomp source data. * Probe Volumes: GlobalUniqueID: Use a custom stack-only + packed representation of the full GlobalObjectId, rather than only using GlobalObjectID.targetObjectId to avoid collisions when different scene probe volumes happen to have the same targetObjectId. This also allows full backwards asset lookup in the future if necessary, which should help debugging + build tools. Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Probe Volumes: Make all bake requests go through the AdditionalGIBakeRequestsManager. Track the generationIndex in the least significant 8 bits of the lightmapperBakeID, and talk to the lightmapper with this composite ID. This ensures that anytime we call SetAdditionalBakeProbes we generate a completely unique bake request from the perspective of the lightmapper, ensuring that we will always bake this data (because the lightmapper will hash these IDs to determine if it has any work to do). Previously, if we set an ID with new data, or if we cleared an ID then set it with new data, the lightmapper wouldnt track these data changes, and so it would skip baking these actually new bake requests. (#17) Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Probe Volumes: Fix Debug Colors display mode - shader line got erroneously commented out in a PR a few months back (#18) Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Probe Volumes: Fix exposure in Probe Volume debug modes (ensure no exposure is applied (#19) Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Probe Volumes: Maintain user specified absolute world space positive and negative fade while resizing bounds handle. This makes Probe Volumes resize behavior match behavior of Density Volumes and Reflection Probes. (#20) Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Probe Volumes: Fix PROBE_VOLUMES_SAMPLING_MODE defines in GetReflectionPRobeNormalizationFactor (#23) Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Probe Volume: Add RenderGraph support for Probe Volumes. Originally this was implemented in this PR: Partner/crazyhunter 10.6.0 custom.1 rendergraph 1a835fd However, the PR contained some fairly large code divergences from mainline - so it was split out into multiple new commits during this upgrade, and divergence was minimized. Mask Volumes: Mask Volumes. An ability to place volumes with 3D textures into the world, paint custom color into them and sample this data in any Shader Graph. To be used as a global volumetric splat map. (#16) (cherry picked from commit f68dc61b5c92ccea7f249e7f58aab1583799ddcb) Mask Volumes tools update (#22) * Fixed the issue when the scene view camera moves on selecting the painting tool. * Use normalized values for color and opacity settings. Fixed the effect of opacity and hardness. * Added the brush color inversion while Ctrl is pressed, for quick erasing. * Replaced the Recreate Asset button with Resample Asset. The data is not lost after resizing or changing voxel density now. * Fixed a Mask Volume resampling error when old resolution has 1 on any axis. * Mask Volume: Use resolution from MaskVolumeAsset instead of MaskVolumeArtistParameters for rendering. Resolution in parameters is just for creating new assets or resampling to a new resolution. * Mask Volume: Use normal bias in painting. * Mask Volume: Use input pressure as opacity. * Mask Volume: Added inner radius and normal bias brush gizmos. Mask Volume: Hotfix: Avoid attempting to upload degenerate data to the atlas by extending IsDataAssigned() check to include a Length > 0 test Fixed the case when a Mask Volume asset is saved to a file empty. The "Resample Asset" button can process an empty asset and fill it with valid data now. (#23) Mask Volumes binary serialization and minor fixes * Fixed the case when the painted Mask Volume asset is not saved. Updated the default brush settings based on the user feedback. * Prefer binary serialization of Mask Volume assets. * Added "Reserialize All" action to context menus of MaskVolumeAsset to be able to convert all assets in a project to binary format. Mask Volume: Fixed minor bug where emptyUAV would silently fail to bind to _MaskVolumeAtlas - using emptyVolumeUAV instead Mask Volume: Mask Volume: Make Mask Volume internals visible to Unity.Entities.Hybrid.HybridComponents Mask Volumes: Set methods for Mask Volume exposed that allows us to use them to do deep copies of Scenes DOTS Mask Volume (#6) Refactored the access to Mask Volume instanced to be able to feed a DOTS version to the system. Probe Volumes: Probe Volumes: Delete meta file for empty folder accidentially created a while back. Cleans up a warning when the project is first imported (#34) Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Probe Volumes: Cleanup the state when HDRP has Probe Volumes disabled in the HDRenderPipelineAsset or FrameSettings. Previously we would hit some null reference errors because the disabled paths were not well tested. These fixes should improve the process of setting up Probe Volumes / Mask Volumes in a new project Probe Volumes: Upadte ProbeVolumeAtlasKey to additionally unique on volume position if the volume is simulating dynamic GI. If dynamic GI is enabled, two probe volumes that point to the same asset, streamed in at different locations need unique space in the atlas (because their dynamic GI component is different). If dynamic GI is disabled, two probe volumes that point to the same asset, streamed in at different locations should share space in the atlas, since their baked data is identical. Probe Volume: VolumeGlobalUniqueID and atlas allocation stats Probe Volumes: Probe Volumes: Remove Ambient Sky fallback which was used when accumulated probe volume weight was < 1. In our project we never want to fall back to the ambient sky, we want to fallback to black. (#40) Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Probe Volumes: Fix bug where tiles would receive no probe volume lighting if they contained no direct light sources, and if compute based deferred was enabled. (#41) Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Probe Volume: Fix Probe Volume Visibility API Probe Volume: Fixed compilation error when Probe Volumes are not encoded with SHL2. Mask Volume: Mask Volume Feature Parity: Mask Volumes use Global Unique ID system … (#32) * Mask Volume Feature Parity: Mask Volumes use Global Unique ID system just like Probe Volumes, follow the same eviction scheme as probe volumes, have the same debug rendering options as probe volumes (where relevant) and have dead code paths cleaned out. Global Distance Fade Start / End exposed on the Volume System Probe Volume Controller and new Mask Volume Controller to limit atlas subscription when zoomed way out in large scenes. Volumes are now evicted from the atlas when they are culled in the prepare probe volume / mask volume lists stage. * Add atlas allocation stats for Mask Volumes Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Mask Volumes: Cleanup the state when HDRP has Mask Volumes disabled in the HDRenderPipelineAsset or FrameSettings. Previously we would hit some null reference errors because the disabled paths were not well tested. These fixes should improve the process of setting up Probe Volumes / Mask Volumes in a new project Dynamic GI: Probe Volumes: Dynamic GI: Fix null reference when Draw Neighbors is true, but no probeVolumeAsset has been baked yet. (#30) Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Fix for dynamic GI to disable gracefully at runtime Ported MaskVolumes and Dynamic GI to RenderGraph (#27) * Ported MaskVolumes to RenderGraph * Made MaskVolume light lists work with RenderGraph * Made ProbeVolumes DynamicGI work with RenderGraph * Remove accidentially introduced extra space (to avoid merge conflicts in the future) Dynamic GI: Partner/crazyhunter 10.7.0 custom.1.pvdgi cross volumes (#38) * Scaffolding for testing how sampling neighbor probe volumes around edges of dynamic GI volumes can help with propagating GI from neighbors. Needs to be filled in * typo * work in progress * Probe Volumes: Fix up case where ProbeVolume.hlsl is included and LIGHTLOOP_DISABLE_TILE_AND_CLUSTER is defined. Add support for dynamic GI border axes sampling all other probe volumes in order to propagate dynamic GI across volume boundaries. * Fix fade calculation * Fix warning about sign / unsign mismatch. * cache and respect the HDRP asset Dynamic GI toggle at runtime for perf testing * Probe Volumes: Dynamic GI: Add Neighboring Volume Propagation Mode to Probe Dynamic GI Volume Override for selecting which algorithm is used to inject dynamic GI from neighboring probe volumes at boundaries. Options include Disabled, Sample Neighbors Direction Only (reccomended), and Sample Neighbors Position and Direction * Probe Volumes: Dynamic GI: If Dynamic GI is on, and Neighboring Volume Propagation is on, force probe volumes to upload to structured buffers and the atlas if they are within the rangeInFrontOfCamera or rangeBehindCamera distance. * Probe Volume GI: neighboringVolumePropagationMode - change default to SampleNeighborsPositionAndDirection Co-authored-by: Szymon Swistun <szymon@bonfirestudios.com> Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Define GetDiffuseOrDefaultColor() for the Unlit BSDF to fix compilati… (#39) * Define GetDiffuseOrDefaultColor() for the Unlit BSDF to fix compilation errors in Unlit shaders in the DynamicGIDataSample pass. * Define DynamicGIDataSample pass for AxF and Unlit shaders. Remove now unnecessary #if UNLIT define in ShaderPassDynamicGIDataSample. Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Blow out fix for new cross volume GI propagation, plus big fix in directional only version to much closer match to pos + directino one Dynamic GI: Optimizations to Dynamic GI, with minimal, but some, quality loss Rename volume setting parameter, and set default to directional only, it looks fine, and a better default Pre-computed & sorted relevant neighbor axis per axis and precomputed sgWeights. Found the best tradeoff for highest weighted axis / relevancy wise based on sgWeight and used 9 to help with perf. prior merge fix 10 axis loops to catch all relevant axis Shader variant for when inf bounce scale is set to 0 to remove the work entirely Bump Shadergraph ScriptedImporter version to attempt to cleanly regenerate all shadergraphs after fixing bugs in dynamic GI extraction pass hlsl includes. (#42) Co-authored-by: pastasfuture <nickb@bonfirestudios.com> Mask Volume albedo baking (#37) * Fixed dynamic GI albedo sampling inputs. Set up all Mask Volume data globally (camera-independent) before albedo baking. Signed-off-by: Andrew Saraev <andrew.saraev@unity3d.com> * Fixed Mask Volume rendering after merging. * Fixed rendering after the merge. * Fix Mask Volume preparation for baking with Render Graph enabled. * Dynamic GI baking optimization. Mask Volume rendering clean-up. Mask Volume: Mask Volume visibility fixes (#84) * Don't render Mask Volume hidden in scene. * Fixed Mask Volume flickering when two volume instances are trying to render the same asset. Mask Volumes: Remove an unnecessary editor only GC.Alloc Dynamic GI: Max Sim Per Frame Control per Probe Volumes Dynamic GI (#44) * Control over max # of probe volume dynamic GI simulation's per frame * fixed issues with static value construction * More direct control of perf controls to dynamic GI Less GC allocations and better cleanup Cleanup and removed the need entirely clearing radiance cache on first frame of probe volume dynamic GI sim. compute shaders just handle that first frame case via variant instead. Removes hitches this way Sometimes we got NaN's, so added an extra safe clear on radiance data but via compute dispatch when needed slight bug fix to previous commit Quality variants for propagation axis amounts Dynamic GI: Added basic probe volume dynamic GI stats more dynamic GI stats Optimize GI data layout (#45) * Optimized the layout of the dynamic GI data. * Added migration of existing baked data to new layout. Context menu item "Reserialize (All)" on Probe Volume Asset now also runs the migration. Had to move the migration code from Probe Volume to Probe Volume Asset for this. Limitation: Context menu migration is skipped for assets of version < 3, since updating to v.3 requires rotation from an object in a scene. * Apply inverse-square law to propagation axis weights to get a more correct distribution for diagonal axes. Dynamic GI: Dynamic GI baked emission (#51) * Bake emission into dynamic GI neighbors and use it in the propagation. * Use 2x2 pixel blocks per baking request to control texture lods with uv and position gradients within these blocks. * Added the logic to control the material sampling lod for neighbor baking. * Added support of any Probe Volume rotation while baking dynamic GI neighbors and combining dynamic and baked SH. * Respect the Baked Emission material toggle when baking the dynamic GI neighbors. * Added a volume component setting to scale baked emission for dynamic GI. * Provide ddx and ddy for position and UV of a hit when baking neighbor materials. * Set the camera position shader property to zero before baking neighbors to support position-based effects in materials. * Clean-up. Work in progress for dgi optimization - setup new compute buffer Work in progress. Populate new neighbor axis lookups buffer and switch to reading from it. Remove old neighbour axis lookup array. Order members in NeighborAxisLookup by type size. adding safety cleanup to help trigger the sorted axis set after cleanup call Dynamic GI: Bind white texture for HVSSS in dynamic GI light loop New reflection normalization (#62) * Use roughest cubemap sample instead of baked SH to calculate Probe Volume reflection normalization. * Removed luminance SH baking for Reflection Probes. Dynamic GI: Dynamic GI sky lighting (#53) * Sample sky lighting on the edges of Probe Volumes for dynamic GI propagation. * Added Sky Contribution setting to Probe Dynamic GI volume component. * Renamed "Sky Contribution" to "Sky Multiplier" to fit better with "Baked Emission Multiplier". * Removed the Direct Contribution setting and normalization that led to all bounces being effectively multiplied by 0.5 with default settings. * Rotate axes in ProbePropagationCombine in the way consistent with other stages. * Added Max Albedo setting for dynamic GI to prevent infinite bounces from blowing up the lighting. * Apply validity to emission. Cleanup. * Changed default Max Albedo to 0.9. * Divide dynamic GI direct lighting by Pi to fix the look. * Experimental changes to skylight and direct hit injection before looking deeper into our SG-to-SH conversion. * Replaced weight normalization in hit and miss passes with prenormalized amplitudes. Experimental. * Added the inv-pi normalization to infinite bounces. * Finish fixing up normalization of hits, misses, and sky. Additionally, add amplitude adjustment for edge and diagonal SGs * Fixed StackLit shader graphs compilation by adding missing ComputeReflectionProbeNormalizationDirection function, expected by the LightLoop. * WIP Dynamic GI bases: Windowed Spherical Gaussian and Ambient Dice * Turn back on sky contribution * More iteration * Latest * Cleanup dynamic gi propagation bases defines into their own header that exposes an api so that callers do not have to know the specifics of the basis. Expose all bases as options on the Probe Dynamic GI volume override * Miss integral * Fix hit and miss lobe creation to the more subtle, but correct implementation that got lost during the cleanup. * Formalize the logic for injecting light from neighboring probe volumes / sky into a basis axis. Convolve the incoming irradiance with the zonal harmonic representation of the neighbor basis lobe in order to analytically evaluate the incoming irradiance over the entire lobe, rather than just the point sample. I compared this against a brute force monte carlo sampling of the SH over the neighbor axis lobe and the results are almost completely indestringuishable. The accuracy is based on how accurate the ZH fit of the neighbor axis lobe is. * remove some dead code * delete more dead code * Add back a line of code I accidentally deleted in the cleanup * Split up the basis options into a basis dropdown and a basis propagation override dropdown. Removed the not useful no diagonal basis options. Added ambient dice wrapped options to the propagation override modes * Remove old option for SH from SG Mode: We now always use the correct SH From SG via zonal harmonic fit conversion. Changed the default propagation override to Basis Ambient Dice Wrapped Super Soft. Fixed a subtle bug with skylight propagation - use the current axis lobe direction for sampling the sky, not the neighbor direction. This makes it consistent with how hits are propagated (and cleans up a little code in the process) Co-authored-by: pastasfuture <pastasfuture@gmail.com> Dynamic GI: Dynamic GI: Fixed Dynamic GI and the neighborhood debug draw when there are 0 hits in a volume (no geometry was hit). Renormalize axes of Dynamic GI bases to support different quality (#61) * Added frame settings for Dynamic GI quality to be able to preview it in edit mode. * Precalculate and normalize axis weights on CPU. New DGI validity baking and ProbeVolume interface (#66) * Added a button to Probe Volume to bake dynamic GI without the lightmapper. Then, validity is computed with the same rays that used for hits, so it only "sees" backfaces that are one voxel away or closer. * Simplified IProbeVolumeList by grouping all runtime data the pipeline may need to write to into ProbeVolumePipelineData and ProbeVolumePropagationPipelineData structs. * Replaced single dataUpdated on ProbeVolume with dataVersion on ProbeVolumeAsset to detect changes of baked data for already loaded volumes and keep baked lighting buffers, dynamic lighting buffers, atlas slot and content — all up to date regardless of the order they are used. Fix crash in il2cpp build (#67) Co-authored-by: Paulm-Unity <paulm@unity3d.com> Fix another crash in il2cpp build DGI Fix Leak Mitigation (#68) * Fixed DGI axis bit packing. * Store neighbor validity in axis and limit propagation from an invalid probe instead of limiting propagation towards an invalid probe. * Set default Baked Emission Multiplier, Sky Multiplier and Leak Multiplier to 1.0. rename leak multiplier to leak mitigation for consistency DGI Mixed Lights (#76) * Mark mixed lights when Probe Volume is baked to filter them out of the dynamic GI light list. * Added mixed lights data to DGI neighborhood and rendering. Using manual baking steps for now. * Update and save mixed lights baked status when lights are processed by the pipeline in the baking mode. * Added frame settings to pick a combination of realtime and mixed lights to use for dynamic GI. * Force shadow rendering regardless of distances when preparing for mixed lights baking. * Restored dynamic GI basic support for all mixed light modes after the light list merge. Now need to restore forced shadowmap rendering while mixed baking is prepared. * Restored after merge: force shadowmap rendering while mixed baking is prepared by dynamic GI. * Make dynamic GI mixed lighting preview show correct expected result for the current indirect scale setting. Probe Volume, Mask Volume, Dynamic GI Dynamic GI: DGI per volume mixed lights (#79) * Added a per-volume property defining if mixed lights were baked for this volume. Add all lights to the light list and skip mixed lights in shaders when required. * Revert to the previous way of uncapping shadow distance when baking dynamic GI mixed lights. Fix two misc DynamicGI shader warnings. (#89) Expose key hooks and controls for automated dynamic GI baking Exposing seperate prepareForBaking option for probe volumes for more control over baking one more fix for better dynamic GI bakes Probe Volume: Fix ProbeVolume buffers not being reset after disable (#95) Fixed ProbeVolume BuffersDataVersion not being reset on disable. Dynamic GI: Dynamic GI: clear EngineDataIndex and simulationFrameTick. Unified clearing methods. DGI fallback radiance baking for low end settings (#92) * Added the way to copy prepared radiance into baked data of a Probe Volume and use it at runtime as a fallback for when DGI is disabled. * Changed the way of updating and tracking data version for Probe Volume assets to not reupload it on every asset reimport and validation (needed to maintain propagated radiance while baking reflections and saving assets). Toggle for Dynamic GI for low quality baked mode testing in editor DGI smaller encoding (#96) * Experiment with storing DGI hit emission and probe radiance with half-float precision. * Trying RGBM32 encoding for DGI propogation. * Moved DGI radiance encoding functions to separate from emission to quickly iterate with it without touching the baked emission data. * Use LogLUV encoding for DGI hit and probe radiance. * Added YCoCg encoding for DGI radiance for testing. * Faster and more precise LogLuv radiance encoding with lower range. * Added a radiance encoding setting to Probe Dynamic GI volume component to switch between RGB Float and LogLuv. * Fixed hit radiance decoding for different encodings when baking mixed lighting. * Moved the radiance encoding setting from the volume component to frame settings. * Dynamic GI: Added HalfLUV, and R11G11B10 encoding modes Co-authored-by: pastasfuture <pastasfuture@gmail.com> Support DGI mixed lights baking for HalfLuv and R11G11B10 radiance encodings. (#98) DGI initial state from baked (#99) * A prototype of DGI radiance initialization from baked SH. * Disable ZHWindow in ProbePropagationInitialize for now as it gives too smooth and dark radiance to axes. * Minor fixes in propagation and a cleanup. * Partner/crazyhunter 10.7.0 custom.1 dgi initial state from baked sh to from basis improvement (#107) Improve ambient dice basis coefficients, improve basis normalization, and improve methods for projection from and to SH, choosing the right method for the context. Dynamic GI: Ambient Dice to ZH: Switched over to using a raw ZH fit instead of deringed zh fit. It results in significantly lower error when compared to a ground truth monte carlo projection, which means slightly punchier + higher contrast + less washed out GI. And the ringing concern seems to not be an issue due to the way light is propagated. Across a number of test scenes no ringing is present. Co-authored-by: Nicholas Brancaccio <pastasfuture@gmail.com> Probe Volume: Probe Volumes: Fix case when ShaderConfig enables them, but they have not yet been enabled in the frame settings. Previously this case would spill errors about unassigned compute parameters like _ProbeVolumeAtlasSH - this comes up when creating standalone HDRP template projects for repro demos Probe Volume sampling quality (#102) * Added a frame setting for Probe Volume lighting sampling quality between SHL0, SHL1 and SHL2. * Probe Volume sampling quality cleanup. * WIP switch Probe Volume spherical harmonics level with global keywords. L0 and L1 are not supported by Dynamic GI yet. * Implemented missing SH L0 and L1 modes for Dynamic GI. * Removed Probe Volume SHL0 option to save shader variants. Fixed Volumetric Lighting. * Fixed VFX shaders after introducing different Probe Volume encodings. * Support baking SHL2 fallback radiance from within the SHL1 mode. Cleanup. Check if probeVolumeAtlas is null before trying to release a slot from it. The atlas could be not created yet as we are doing it later in a rendering now to match the selected SH encoding for a given frame. (#108) Probe Volumes: Remove an unnecessary editor only GC.Alloc Reflection Probe Normalization: Fix bad rebase merge of reflection probe normalization code Fix recursive mutation bug in ZH Fit version of ProbePropagationInitialize projection. Dynamic GI Propagation: Sample Neighbors: Use ZH-Fit to convert from SH to our 26-axis basis - it produces results that are a bit closer to our monte carlo naive projection ground truth Dynamic GI: Fix Infinite Bounce calculation after we changed our basis coefficients. We were missing scaling each lobe contribution by that lobes normalized integral. Also delete some dead code that was hanging around in the dynamic GI area for too long, and fix some code erroneously included inside of an ifdef (#109) Dynamic GI probe dirty flag (#111) * Store a dirty flag for each light probe in a volume, update only the ones that had reasons to change since the last update. * Added a setting to Frame Setting to be able to disable dirty flags. * Added debug visualisation of dirty probes of all active volumes. DGI propagation fixes (#112) * Fixed fallback radiance baking when dirty flags are enabled. * Fixed noticeable intensity loss for lower propagation quality due to axis weights renormalization error. * Separate radiance comparison for LogLUV encoding that avoids many false positives in dirty flags. * Fixed propagation data not being cleared when Frame Settings are changed via the settings window causing the pipeline to be destroyed. critical exception fix that was firing on domain reloads & enter play mode transitions Dynamic GI: Copy over some warning fixes to dynamic GI that were lost in the rebase shuffle
Tspk91
pushed a commit
to Tspk91/QuestGraphics
that referenced
this pull request
Jun 13, 2023
…onality of the baked lightmap lighting. (PR Unity-Technologies#2) Derives the correct, but un-normalized light direction vector from the lightmap. (PR Unity-Technologies#2) Adds extra debug functions, and remapping functions. (PR Unity-Technologies#2) Decreases smoothness of materials in the non-directional light, to simulate specular scattering. (PR Unity-Technologies#2) Add warning about extra texture fetch. (PR Unity-Technologies#3) Fix up shadergraph lit shader to populate the lightmap direction vector.
unity-emilk
pushed a commit
that referenced
this pull request
Jul 2, 2024
This PR fixes https://jira.unity3d.com/browse/UUM-60387 The bug requires a few things to be true in order to reproduce: have URP with RenderGraph enabled, use Vulkan, have MSAA disabled. In this case, when the two repro projects were set up in a way that causes CopyDepthPass to be executed (specifically with CopyToDepth=false), the depth was not getting copied correctly, causing subsequent depth tests to fail, resulting in missing objects. When Vulkan validation layers were enabled, the following error was output: ``` VULKAN: VALIDATION ERROR: Validation Error: [ VUID-vkCmdDraw-None-06886 ] Object 0: handle = 0xab7c3f0000001d62, type = VK_OBJECT_TYPE_PIPELINE; Object 1: handle = 0xceb68d0000001d60, name = ExecuteRenderGraph (C0:C/S, C1:L/S, DS:L/S), type = VK_OBJECT_TYPE_RENDER_PASS; Object 2: handle = 0x14239304030, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0xf157442b | vkCmdDraw: depthWriteEnable is VK_TRUE, while the layout (VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL) of the depth aspect of the depth/stencil attachment in the render pass is read only. The Vulkan spec states: If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled (https://vulkan.lunarg.com/doc/view/1.3.243.0/windows/1.3-extensions/vkspec.html#VUID-vkCmdDraw-None-06886) CommandBuffer labels: CopyDepth | CopyDepthPass Objects: #0: { type = VK_OBJECT_TYPE_PIPELINE, handle = 0xab7c3f0000001d62 } #1: { name = ExecuteRenderGraph (C0:C/S, C1:L/S, DS:L/S), type = VK_OBJECT_TYPE_RENDER_PASS, handle = 0xceb68d0000001d60 } #2: { type = VK_OBJECT_TYPE_COMMAND_BUFFER, handle = 0x14239304030 } ``` The reason for this error is that the render state is being setup in an inconsistent way: - `depthWriteEnable=true` because `CopyDepth.shader` contains `ZWrite On`, but - because we don't bind a depth attachment, the RenderGraph compiler sets `SubPassFlags.ReadOnlyDepth` flag which causes Vulkan backend to use the `VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL` layout. To fix this conflicting setup we set ZWrite to On/Off depending on whether depth output is active or not. This fixes the validation error, and the incorrect rendering in the original repro project, and makes the new graphics test pass. Shoutout to @eduardas-vitkus for creating the new graphics test that catches this specific case, and providing a ton of relevant information on the issue, including the Vulkan validation error!
unity-emilk
pushed a commit
that referenced
this pull request
Feb 19, 2025
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Same as https://github.com/Unity-Technologies/ScriptableRenderPipeline/pull/6407