diff --git a/TestProjects/HDRP_RuntimeTests/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/004-CloudsFlaresDecals.png b/TestProjects/HDRP_RuntimeTests/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/004-CloudsFlaresDecals.png
index 68de28eeffb..71a11e10d6b 100644
--- a/TestProjects/HDRP_RuntimeTests/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/004-CloudsFlaresDecals.png
+++ b/TestProjects/HDRP_RuntimeTests/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/004-CloudsFlaresDecals.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:42acf27136830d9677f49a97e4e823d5b5fe25ab633c21e19fdfe57ccf1bb252
-size 2365588
+oid sha256:9c7bdef970ffd33cc7db52d4419d7c96076d1a0536229a87cbae63d411a178e3
+size 2278108
diff --git a/TestProjects/HDRP_RuntimeTests/Assets/ReferenceImages/Linear/OSXPlayer/Metal/None/004-CloudsFlaresDecals.png b/TestProjects/HDRP_RuntimeTests/Assets/ReferenceImages/Linear/OSXPlayer/Metal/None/004-CloudsFlaresDecals.png
index 21cca1eed09..a6de172febc 100644
--- a/TestProjects/HDRP_RuntimeTests/Assets/ReferenceImages/Linear/OSXPlayer/Metal/None/004-CloudsFlaresDecals.png
+++ b/TestProjects/HDRP_RuntimeTests/Assets/ReferenceImages/Linear/OSXPlayer/Metal/None/004-CloudsFlaresDecals.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:abd975aba11b73067d1a273d9cd858988227a243db976bbec184ef1f3577968e
-size 2379819
+oid sha256:6e36e39f16c00d42764811500f05ea1d5f6afafb35846066efff94375bfb4a88
+size 2311344
diff --git a/TestProjects/HDRP_RuntimeTests/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/004-CloudsFlaresDecals.png b/TestProjects/HDRP_RuntimeTests/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/004-CloudsFlaresDecals.png
index 5ebf8a3ee28..43029e198a7 100644
--- a/TestProjects/HDRP_RuntimeTests/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/004-CloudsFlaresDecals.png
+++ b/TestProjects/HDRP_RuntimeTests/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/004-CloudsFlaresDecals.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:05f67ba5caba7e98e15b2941cae9457f12d66c91e9631ef5aff4bf3801ce1eb2
-size 2350965
+oid sha256:2afedb0a713bbde5675dab9066bda08d0e0098ad3b6f4c8a7fc2a6b8bd5312ed
+size 2303676
diff --git a/TestProjects/HDRP_RuntimeTests/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D12/None/004-CloudsFlaresDecals.png b/TestProjects/HDRP_RuntimeTests/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D12/None/004-CloudsFlaresDecals.png
index 2d3ee94904b..d56f887feb1 100644
--- a/TestProjects/HDRP_RuntimeTests/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D12/None/004-CloudsFlaresDecals.png
+++ b/TestProjects/HDRP_RuntimeTests/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D12/None/004-CloudsFlaresDecals.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a25c2f33952fc6608304b46288446b1ee569fe289f1a20d880d9cd14a07fc51e
-size 2400244
+oid sha256:83cb8ea705a33e5236024e481a9554b1aeac23b88cf4eba811d5bad3b4e9af2c
+size 2309712
diff --git a/TestProjects/HDRP_RuntimeTests/Assets/ReferenceImages/Linear/WindowsPlayer/Vulkan/None/004-CloudsFlaresDecals.png b/TestProjects/HDRP_RuntimeTests/Assets/ReferenceImages/Linear/WindowsPlayer/Vulkan/None/004-CloudsFlaresDecals.png
index ccf938d824a..eed2b559a20 100644
--- a/TestProjects/HDRP_RuntimeTests/Assets/ReferenceImages/Linear/WindowsPlayer/Vulkan/None/004-CloudsFlaresDecals.png
+++ b/TestProjects/HDRP_RuntimeTests/Assets/ReferenceImages/Linear/WindowsPlayer/Vulkan/None/004-CloudsFlaresDecals.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:29e60f6bbb299a2ed9ad7741427160e771dbfe82c1b0700b466f8344f3ce8ebf
-size 2385551
+oid sha256:5b3277f77faf8594edc52b3e01b1effd58b91b957406e59b022f03190fec548f
+size 2297048
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5011_VolumetricClouds.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5011_VolumetricClouds.png
index 1eca37e009f..6c0f010e710 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5011_VolumetricClouds.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5011_VolumetricClouds.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c385009e2fe5d7b2d26710cfd62192515d36b9fe586ff0d82e147f5a797ce3b2
-size 243512
+oid sha256:6fe16ccc92beff90ad5a5aaa7cabbb25b9e28c2254328ce4c9a8e184725219ad
+size 250122
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5011_VolumetricCloudsShadows.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5011_VolumetricCloudsShadows.png
index f32cb3a3d91..ae805a92d7d 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5011_VolumetricCloudsShadows.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5011_VolumetricCloudsShadows.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:67840b167f9a74840596f7d0512320213c4230f04d6db075c63b05ce3b472f8e
-size 174307
+oid sha256:62281c4210d47126405b41cc773e213e67bc37328d6002803f4549007d2c9948
+size 138912
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5011_VolumetricCloudsShadowsBake.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5011_VolumetricCloudsShadowsBake.png
index fd804bdbca1..318ec0d15f5 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5011_VolumetricCloudsShadowsBake.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5011_VolumetricCloudsShadowsBake.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:2014f975cf29583ea5ba8b2de02bd229bff6b3a237c9f7b54382b04caccc1a56
-size 173606
+oid sha256:9e98401b162893e1483d0758bedcb71f92475a374dbe3844273fcd8594ad88be
+size 137424
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5012_VolumetricCloudsRelativeClouds.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5012_VolumetricCloudsRelativeClouds.png
index 07028ea4a8c..ea3b8cbb865 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5012_VolumetricCloudsRelativeClouds.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5012_VolumetricCloudsRelativeClouds.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:388daf53766011508db607b1b72766d5527f27d0c6e504c3bce5820bc8e4885b
-size 120386
+oid sha256:b5ae576de4b1ca94bc2867a349e0546cf1dd6fa2548f7f1c5ab1ff3993499ef0
+size 120093
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5013_VolumetricCloudsShadowsNoExposureControl.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5013_VolumetricCloudsShadowsNoExposureControl.png
index 2a708b96dbc..cc5b6af7f28 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5013_VolumetricCloudsShadowsNoExposureControl.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5013_VolumetricCloudsShadowsNoExposureControl.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ac7f5ba7588a4c8914fd0f5adf858a32ad547914e266a8d5b622757ab874ad8e
-size 162784
+oid sha256:652de01167090196113aed1d6c09eefb358be3a50c615d334ab25b9afe93eae9
+size 128881
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5014_VolumetricCloudsBanding.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5014_VolumetricCloudsBanding.png
index 31244fe15a7..c46601f9dd2 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5014_VolumetricCloudsBanding.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5014_VolumetricCloudsBanding.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:25d2481b30a3b76374c93946b57226279bcd356c2c26e5ce010ec39ed45299c0
-size 185934
+oid sha256:e8affdf024200c95ea00afc56bc295d3fb09dcf0500270feb8076b4de590364b
+size 210114
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5015_VolumetricCloudsProbeAndSky.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5015_VolumetricCloudsProbeAndSky.png
index bd9804145bb..66d2967328a 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5015_VolumetricCloudsProbeAndSky.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5015_VolumetricCloudsProbeAndSky.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:27e53adc1132bfa08902bb5b286c70d9ccfc32a802c98e64a1b1c1d8055052b3
-size 185688
+oid sha256:abbf1f22342973843a9f5b38e30ce02d74cd31f9b0b43530f02c615120bb2c4d
+size 160417
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5015_VolumetricClouds_ProbeGradient.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5015_VolumetricClouds_ProbeGradient.png
index e21c23bd3ce..35c198011b4 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5015_VolumetricClouds_ProbeGradient.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/5015_VolumetricClouds_ProbeGradient.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:5a22834f9c1b0fbf5221592164af0d4329f973355bb0e73a1ce355ec759a226f
-size 178969
+oid sha256:5763abcaba7b1440bb29ef707a979dd7f43c4143345e6ad41a3152b650fe333d
+size 140249
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5011_VolumetricClouds.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5011_VolumetricClouds.png
index 5ed7d4ab573..0e7128d0357 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5011_VolumetricClouds.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5011_VolumetricClouds.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:38ea25bc8c6aa39cd3675b704922ec6f8d19b261f8afe55822edfa1f82826f6a
-size 241994
+oid sha256:a4e806284688ca477bcbb67dcf725a0c656529aa3fb050636ac0e6ff3fd320e5
+size 249334
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5011_VolumetricCloudsShadows.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5011_VolumetricCloudsShadows.png
index ff794cf0a2c..e50eb38caf9 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5011_VolumetricCloudsShadows.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5011_VolumetricCloudsShadows.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:97710fa019810803a76436427c9290cb37b2fc4447659a4a1f5ddb4a441ea7ae
-size 188253
+oid sha256:e52018674ff2b6c2079c732c688b77b0a5d1bc8021d6eb06844b1743238e97b9
+size 161986
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5011_VolumetricCloudsShadowsBake.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5011_VolumetricCloudsShadowsBake.png
index d8d04b3411a..698d7789c3f 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5011_VolumetricCloudsShadowsBake.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5011_VolumetricCloudsShadowsBake.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b15c91bdf69338349752a011971ddc458f5bc9d141d49b0c11fc51de594f7e79
-size 188292
+oid sha256:6691fbd8a7270113c4c9be957db67827c00a6e3583a7d416adf130d527eca644
+size 161026
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5012_VolumetricCloudsRelativeClouds.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5012_VolumetricCloudsRelativeClouds.png
index 4d1d832d8e0..5c7325fd666 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5012_VolumetricCloudsRelativeClouds.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5012_VolumetricCloudsRelativeClouds.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6d5c79ebf42a2f22edb7d2af46fc4c26a7a2a191af6bcfef9942d3d2dee119c2
-size 134246
+oid sha256:dd882f215f34631d3be4673ea2751d8cf6d8420d5208528d0ba515c50d7388d5
+size 137999
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5013_VolumetricCloudsShadowsNoExposureControl.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5013_VolumetricCloudsShadowsNoExposureControl.png
index 9456d7e59e9..7d9337b47f2 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5013_VolumetricCloudsShadowsNoExposureControl.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5013_VolumetricCloudsShadowsNoExposureControl.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:fb755f519388a305d662fa0c48441f9da97a01280eb0df2924e7e6b2094860bb
-size 180374
+oid sha256:c22e0055109ea714ab5af8c5128ba655430587f036209413ee3c4588fe91e9ab
+size 158900
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5014_VolumetricCloudsBanding.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5014_VolumetricCloudsBanding.png
index bdf8ee73437..8a9839179bf 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5014_VolumetricCloudsBanding.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5014_VolumetricCloudsBanding.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3acec65d2837dec77f6d8c52e3aa21381ebd889f5d9cb4f0b8d598a255d9e4da
-size 182460
+oid sha256:e85872b5f0e8ff38b1b3d468dd32aaa9070528bfeedb1ab01732cdc83c275add
+size 207690
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5015_VolumetricCloudsProbeAndSky.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5015_VolumetricCloudsProbeAndSky.png
index d8cc70b5cce..f93b0851fb0 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5015_VolumetricCloudsProbeAndSky.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5015_VolumetricCloudsProbeAndSky.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:5496be764c5bb85fb268956e890ee65eb6df521ad0dcd3f2095e596b6b80e057
-size 184265
+oid sha256:31cb13e7f0985651bcefb8799d90b113d30ccb9bc7f6ef29e05273d6ed78f3e4
+size 151843
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5015_VolumetricClouds_ProbeGradient.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5015_VolumetricClouds_ProbeGradient.png
index 25045c16949..330f334c202 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5015_VolumetricClouds_ProbeGradient.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/5015_VolumetricClouds_ProbeGradient.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:cd049b83db48af9af2325fea5b3811ac8644b9e1cc15b055af81a44ca12bb2f1
-size 177294
+oid sha256:3041f436d06003c0f7c95c99adb40f7afff5b4fdee3b83e71fca0dff36bd7002
+size 138444
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5011_VolumetricClouds.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5011_VolumetricClouds.png
index aa9e4ec3f13..2b457874231 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5011_VolumetricClouds.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5011_VolumetricClouds.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d5ea423d9265403a3e82e5e9ee0aacfab36f5cddaeaf29602d3d7bee9fd000d8
-size 243493
+oid sha256:5062f97c128d27f10e2c5a46bac19ff98183c5f6dc19b42a2d5c9790028a8460
+size 250037
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5011_VolumetricCloudsShadows.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5011_VolumetricCloudsShadows.png
index f87654840d8..3f48973ab14 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5011_VolumetricCloudsShadows.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5011_VolumetricCloudsShadows.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6b156e972d2c563c7351a5573ac9935a7402670477dae2e35d697eac30295e56
-size 174434
+oid sha256:f5efc63cc4bc91009c233065c849d6429ceaa9e5f6799fd1a82f9d0a5f5652b4
+size 138940
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5011_VolumetricCloudsShadowsBake.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5011_VolumetricCloudsShadowsBake.png
index 0c20d10c765..240c6062c9f 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5011_VolumetricCloudsShadowsBake.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5011_VolumetricCloudsShadowsBake.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0d085c76cb19123dbc4730d1c468491d7b761bdf286db3623f20a9c864fea322
-size 174012
+oid sha256:ffabf6f4a8c9303393bac98c61b7bf26ae6ef827538627bdee8d7be3f8918e1d
+size 137319
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5012_VolumetricCloudsRelativeClouds.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5012_VolumetricCloudsRelativeClouds.png
index 0df27f6eb40..088135c566c 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5012_VolumetricCloudsRelativeClouds.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5012_VolumetricCloudsRelativeClouds.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:fc70ea4edb1ec3ed1897de7b0b8f2549446b3400a5e3ec52fabb761cb280f473
-size 120423
+oid sha256:e0e0d58ba691927172e2e841e33b63b7cd4697877bcd96a78bbeb2d8a4d8ae03
+size 120040
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5013_VolumetricCloudsShadowsNoExposureControl.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5013_VolumetricCloudsShadowsNoExposureControl.png
index 20aa7edace1..85f7a45d2e1 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5013_VolumetricCloudsShadowsNoExposureControl.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5013_VolumetricCloudsShadowsNoExposureControl.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:8bfb13696d09c10ca6a54e4269e4db27bf171daa59a3fdb75b164f0e4e93a0b0
-size 162940
+oid sha256:0bf684aa06c1ac0f0f7e71a485876e93d14f937a555a7ca83d0929b72ace0650
+size 128970
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5014_VolumetricCloudsBanding.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5014_VolumetricCloudsBanding.png
index 3ecdac8697c..0403e1be7e6 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5014_VolumetricCloudsBanding.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5014_VolumetricCloudsBanding.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a36212bd4c37bfe73563fbb71420f2989872e0bec91f06b4ac505b10a797d924
-size 185898
+oid sha256:2c959c12a69554c721530c9b20c85c73732e44dc6b1e01901a68dcc9ec9ce4a3
+size 209810
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5015_VolumetricCloudsProbeAndSky.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5015_VolumetricCloudsProbeAndSky.png
index 3016b483ab3..a7968cd54b3 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5015_VolumetricCloudsProbeAndSky.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5015_VolumetricCloudsProbeAndSky.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a3f7f4d046496a6540e8114145c67384b4b5a7f0d8135ea01e4645b3ea946f48
-size 185794
+oid sha256:1d5c5d7157a0de716e317c552c2f641de2dc2412f2519a7655c15e1dae9cae24
+size 160542
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5015_VolumetricClouds_ProbeGradient.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5015_VolumetricClouds_ProbeGradient.png
index a53e0734ccd..b2cd17a53dd 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5015_VolumetricClouds_ProbeGradient.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/5015_VolumetricClouds_ProbeGradient.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:223144ba5e5c54233caceef3704fd8ee38f82860282e5e08d9f3d6add6b50800
-size 179075
+oid sha256:42ddd760d508dad27a663b697a5ce98e46048995fddd86255a9c90b295818f16
+size 140383
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5011_VolumetricClouds.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5011_VolumetricClouds.png
index f50086effd6..553b484e03d 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5011_VolumetricClouds.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5011_VolumetricClouds.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:2f556d02853d119040c548cfa581252259c0db4ece4b3a5134884d0e80ccef0d
-size 243390
+oid sha256:08eb96a5c1b02a8e5ae44328d34d517dccdf4b5f5fb91491bc5b46ff1053253a
+size 250020
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5011_VolumetricCloudsShadows.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5011_VolumetricCloudsShadows.png
index b431a57a281..9bdee23e0fa 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5011_VolumetricCloudsShadows.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5011_VolumetricCloudsShadows.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:8217a18cd51954fda19f93515f58ff4f004601631e6cb23b5570544126c9ea0b
-size 174452
+oid sha256:a8e29f3eb6fcedee5bdfb06b6d64edc8e10eafdc8837eb46d4671a9b933af99c
+size 139127
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5011_VolumetricCloudsShadowsBake.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5011_VolumetricCloudsShadowsBake.png
index 497149c8443..eb498018c5c 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5011_VolumetricCloudsShadowsBake.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5011_VolumetricCloudsShadowsBake.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:175b5114d7ce1d1d0408c48916695acbfd80095d5d9dbdafef910facc3f52012
-size 174092
+oid sha256:3c575a92cecc8d25417b4730e0f13d29048eb842cbbcc4998baf51448a67fd1e
+size 137394
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5012_VolumetricCloudsRelativeClouds.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5012_VolumetricCloudsRelativeClouds.png
index fa4fcf959c2..04e37717578 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5012_VolumetricCloudsRelativeClouds.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5012_VolumetricCloudsRelativeClouds.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:eea1685a7d8b408ad4b3d4c61cf8f84941438870c93286fcb7d006e6633450fd
-size 120339
+oid sha256:078d03af64ae6086e6c2df222970cb40fadc91494dfeea0cb2ffcae03d4b0771
+size 119484
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5013_VolumetricCloudsShadowsNoExposureControl.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5013_VolumetricCloudsShadowsNoExposureControl.png
index 23ff271f6c1..f1144b73ce9 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5013_VolumetricCloudsShadowsNoExposureControl.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5013_VolumetricCloudsShadowsNoExposureControl.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f2be394c8c64f2c78e41497e8a8d0208a5915d4a64c5cb2bb9685196a4969986
-size 162918
+oid sha256:4282047283f3a394b1b9f26580f5d2f48fa5eaebb9ed2864a54ea824a51c3983
+size 128856
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5014_VolumetricCloudsBanding.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5014_VolumetricCloudsBanding.png
index 84490004609..78bc96feac8 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5014_VolumetricCloudsBanding.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5014_VolumetricCloudsBanding.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6d1a36aecf5b1d87ee54f2365437938b60698f15f8622998fd8d6cecb1771f87
-size 186257
+oid sha256:a3b8ff204997653a1dc91c4b8d2bdbc591cb438690eb36f2528c2d1be221a3fb
+size 209386
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5015_VolumetricCloudsProbeAndSky.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5015_VolumetricCloudsProbeAndSky.png
index 8ca5b9b658b..6e52425987f 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5015_VolumetricCloudsProbeAndSky.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5015_VolumetricCloudsProbeAndSky.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:411c487a9f0ff2d8e5f43bf31f7d89938f7aa2c528eb110c35a44ae085ac3c52
-size 185765
+oid sha256:0c55dd362a2715981ce8fd7d5eb89213e257e66bc11dfa3abd63ae168de89b3d
+size 160489
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5015_VolumetricClouds_ProbeGradient.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5015_VolumetricClouds_ProbeGradient.png
index 79974eee7a8..8ddb2627f97 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5015_VolumetricClouds_ProbeGradient.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/5015_VolumetricClouds_ProbeGradient.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:24b24f234b644725761fcbdc845554cfe6c07ea1dbd38fde3c5a9110d0c66976
-size 179012
+oid sha256:31aafff279800a693941372eb3dbfd0a41f425744c5460f98d9eadee5ad11b10
+size 140272
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5011_VolumetricClouds.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5011_VolumetricClouds.png
index b5c05d314e4..f61bfd148bc 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5011_VolumetricClouds.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5011_VolumetricClouds.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f48f49cdb5991242980fb1449ad4ba9848f822b7537cf929c4da492731789a1c
-size 243508
+oid sha256:1dd06ab3bac2674724e0052ac02d8a5897b3f98f645f68456321ca75e6dc575f
+size 250139
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5011_VolumetricCloudsShadows.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5011_VolumetricCloudsShadows.png
index c8db8f26a1a..403a64248cd 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5011_VolumetricCloudsShadows.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5011_VolumetricCloudsShadows.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0a844362bad30e26fa3a3ad3fca18b8c1024e3df0543d079a603c1ab1b0fe64f
-size 174201
+oid sha256:2f78ba9422a5a03b822db5ed75da0c3186957fb691cdb3981cba07c7c06e0f6f
+size 138797
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5011_VolumetricCloudsShadowsBake.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5011_VolumetricCloudsShadowsBake.png
index 2aef85307c7..9864ad76d8f 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5011_VolumetricCloudsShadowsBake.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5011_VolumetricCloudsShadowsBake.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:bddd7faa041d9e538e2c7e8914f3b9869bf75b6a20ba6ffdc2a4c2290166a1c9
-size 173780
+oid sha256:41b5fe3e33e4591444d46c8f31601bcb3c962a5bf098953f5227b67b01f46e63
+size 137428
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5012_VolumetricCloudsRelativeClouds.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5012_VolumetricCloudsRelativeClouds.png
index 36fc9a6b434..018412a41ff 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5012_VolumetricCloudsRelativeClouds.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5012_VolumetricCloudsRelativeClouds.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c8c70898079ef7f1e838323e58cea20677b02a2581f6e771170294094d815313
-size 120257
+oid sha256:ea87f257060ac214c01c99a6bef9365d72864944bfd11a7be5fb00f5cc80201d
+size 120049
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5013_VolumetricCloudsShadowsNoExposureControl.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5013_VolumetricCloudsShadowsNoExposureControl.png
index 2a708b96dbc..cc5b6af7f28 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5013_VolumetricCloudsShadowsNoExposureControl.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5013_VolumetricCloudsShadowsNoExposureControl.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ac7f5ba7588a4c8914fd0f5adf858a32ad547914e266a8d5b622757ab874ad8e
-size 162784
+oid sha256:652de01167090196113aed1d6c09eefb358be3a50c615d334ab25b9afe93eae9
+size 128881
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5014_VolumetricCloudsBanding.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5014_VolumetricCloudsBanding.png
index 5d28af56b1b..edc29ddc3c2 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5014_VolumetricCloudsBanding.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5014_VolumetricCloudsBanding.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:007966553d4de0643547c2f57202dd89a51fa945868d8baec9553ac3be679abf
-size 184825
+oid sha256:98b6eee0e9ed680edbed805c8991217eb1338b7a26945c8652b8413ca50c1927
+size 209305
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5015_VolumetricCloudsProbeAndSky.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5015_VolumetricCloudsProbeAndSky.png
index bd9804145bb..66d2967328a 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5015_VolumetricCloudsProbeAndSky.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5015_VolumetricCloudsProbeAndSky.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:27e53adc1132bfa08902bb5b286c70d9ccfc32a802c98e64a1b1c1d8055052b3
-size 185688
+oid sha256:abbf1f22342973843a9f5b38e30ce02d74cd31f9b0b43530f02c615120bb2c4d
+size 160417
diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5015_VolumetricClouds_ProbeGradient.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5015_VolumetricClouds_ProbeGradient.png
index 8d1421d5f64..8ddc60db475 100644
--- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5015_VolumetricClouds_ProbeGradient.png
+++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/5015_VolumetricClouds_ProbeGradient.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f726ead7ecb755a07ed7e773571ed0a576a42d98357f0fba306bd9a174373241
-size 179115
+oid sha256:85936c4c4e1a74b80489027224dabbd5ac550c674f13b2333d947dfa0b3f4cac
+size 140333
diff --git a/com.unity.render-pipelines.high-definition/CHANGELOG.md b/com.unity.render-pipelines.high-definition/CHANGELOG.md
index fcef4567008..71b1404c70a 100644
--- a/com.unity.render-pipelines.high-definition/CHANGELOG.md
+++ b/com.unity.render-pipelines.high-definition/CHANGELOG.md
@@ -16,6 +16,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- Fixed edge bleeding when rendering volumetric clouds.
- Fixed the performance of the volumetric clouds in non-local mode when large occluders are on screen.
- Fixed a regression that broke punctual and directional raytraced shadows temporal denoiser (case 1360132).
+- Fixed regression in the ambient probe intensity for volumetric clouds.
+- Fixed the sun leaking from behind fully opaque clouds.
+- Fixed artifacts in volumetric cloud shadows.
+- Fixed the missing parameter to control the sun light dimmer (case 1364152).
+- Fixed regression in the clouds presets.
### Changed
- Visual Environment ambient mode is now Dynamic by default.
diff --git a/com.unity.render-pipelines.high-definition/Documentation~/Override-Volumetric-Clouds.md b/com.unity.render-pipelines.high-definition/Documentation~/Override-Volumetric-Clouds.md
index 8e9c4be8998..2844aa1f3af 100644
--- a/com.unity.render-pipelines.high-definition/Documentation~/Override-Volumetric-Clouds.md
+++ b/com.unity.render-pipelines.high-definition/Documentation~/Override-Volumetric-Clouds.md
@@ -128,6 +128,7 @@ When importing these two map Textures, disable **sRGB**. For best results, do no
| **Property** | **Description** |
| ------------------------------ | ------------------------------------------------------------ |
| **Ambient Light Probe Dimmer** | Controls the influence of light probes on the cloud volume. A lower value suppresses the ambient light and produces darker clouds overall. |
+| **Sun Light Dimmer** | Controls the influence of the sun light on the cloud volume. A lower value suppresses the sun light and produces darker clouds overall. |
| **Erosion Occlusion** | Controls how much Erosion Factor is taken into account when computing ambient occlusion. The Erosion Factor parameter is editable in the custom preset, Advanced and Manual Modes. |
| **Scattering Tint** | The color to tint the clouds. |
| **Powder Effect Intensity** | Controls the amount of local scattering in the clouds. When clouds have a lot of local details due to erosion, a value of **1** provides a more powdery aspect. |
diff --git a/com.unity.render-pipelines.high-definition/Editor/Lighting/VolumetricLighting/VolumetricCloudsEditor.cs b/com.unity.render-pipelines.high-definition/Editor/Lighting/VolumetricLighting/VolumetricCloudsEditor.cs
index 9c7114e3115..4a26a56b769 100644
--- a/com.unity.render-pipelines.high-definition/Editor/Lighting/VolumetricLighting/VolumetricCloudsEditor.cs
+++ b/com.unity.render-pipelines.high-definition/Editor/Lighting/VolumetricLighting/VolumetricCloudsEditor.cs
@@ -56,6 +56,7 @@ class VolumetricCloudsEditor : VolumeComponentEditor
SerializedDataParameter m_PowderEffectIntensity;
SerializedDataParameter m_MultiScattering;
SerializedDataParameter m_AmbientLightProbeDimmer;
+ SerializedDataParameter m_SunLightDimmer;
SerializedDataParameter m_ErosionOcclusion;
// Wind
@@ -134,6 +135,7 @@ public override void OnEnable()
m_PowderEffectIntensity = Unpack(o.Find(x => x.powderEffectIntensity));
m_MultiScattering = Unpack(o.Find(x => x.multiScattering));
m_AmbientLightProbeDimmer = Unpack(o.Find(x => x.ambientLightProbeDimmer));
+ m_SunLightDimmer = Unpack(o.Find(x => x.sunLightDimmer));
m_ErosionOcclusion = Unpack(o.Find(x => x.erosionOcclusion));
// Wind
@@ -273,6 +275,7 @@ public override void OnInspectorGUI()
DrawHeader("Lighting");
{
PropertyField(m_AmbientLightProbeDimmer);
+ PropertyField(m_SunLightDimmer);
PropertyField(m_ErosionOcclusion);
PropertyField(m_ScatteringTint);
PropertyField(m_PowderEffectIntensity);
diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/BilateralUpsample.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/BilateralUpsample.hlsl
index 5969696ffe7..fb784dfec71 100644
--- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/BilateralUpsample.hlsl
+++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/BilateralUpsample.hlsl
@@ -170,6 +170,6 @@ float4 BilUpColor3x3(float highDepth, in NeighborhoodUpsampleData3x3 data)
+ data.lowValue6 * combinedWeightsB.z
+ data.lowValue7 * combinedWeightsB.w
+ data.lowValue8 * combinedWeightsC
- + _NoiseFilterStrength;
+ + float4(_NoiseFilterStrength, _NoiseFilterStrength, _NoiseFilterStrength, 0.0);
return WeightedSum / TotalWeight;
}
diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/HDRenderPipeline.VolumetricClouds.cs b/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/HDRenderPipeline.VolumetricClouds.cs
index c78bcca910b..d70f857d7ca 100644
--- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/HDRenderPipeline.VolumetricClouds.cs
+++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/HDRenderPipeline.VolumetricClouds.cs
@@ -7,6 +7,7 @@ public partial class HDRenderPipeline
{
// Intermediate values for ambient probe evaluation
Vector4[] m_PackedCoeffsClouds;
+ ZonalHarmonicsL2 m_PhaseZHClouds;
// Cloud preset maps
Texture2D m_SparsePresetMap;
@@ -89,6 +90,8 @@ void InitializeVolumetricClouds()
// Allocate the buffers for ambient probe evaluation
m_PackedCoeffsClouds = new Vector4[7];
+ m_PhaseZHClouds = new ZonalHarmonicsL2();
+ m_PhaseZHClouds.coeffs = new float[3];
// Grab the kernels we need
ComputeShader volumetricCloudsCS = m_Asset.renderPipelineResources.shaders.volumetricCloudsCS;
@@ -142,15 +145,15 @@ void AllocatePresetTextures()
m_SparsePresetMap.Apply();
m_CloudyPresetMap = new Texture2D(1, 1, GraphicsFormat.R8G8B8A8_UNorm, TextureCreationFlags.None) { name = "Default Cloudy Texture" };
- m_CloudyPresetMap.SetPixel(0, 0, new Color(0.9f, 0.0f, 0.2f, 1.0f));
+ m_CloudyPresetMap.SetPixel(0, 0, new Color(0.9f, 0.0f, 0.25f, 1.0f));
m_CloudyPresetMap.Apply();
m_OvercastPresetMap = new Texture2D(1, 1, GraphicsFormat.R8G8B8A8_UNorm, TextureCreationFlags.None) { name = "Default Overcast Texture" };
- m_OvercastPresetMap.SetPixel(0, 0, new Color(0.5f, 0.0f, 1.0f, 1.0f));
+ m_OvercastPresetMap.SetPixel(0, 0, new Color(0.9f, 0.0f, 0.25f, 1.0f));
m_OvercastPresetMap.Apply();
m_StormyPresetMap = new Texture2D(1, 1, GraphicsFormat.R8G8B8A8_UNorm, TextureCreationFlags.None) { name = "Default Storm Texture" };
- m_StormyPresetMap.SetPixel(0, 0, new Color(1.0f, 0.0f, 0.80f, 1.0f));
+ m_StormyPresetMap.SetPixel(0, 0, new Color(1.0f, 0.0f, 0.85f, 1.0f));
m_StormyPresetMap.Apply();
}
@@ -170,52 +173,52 @@ void GetPresetCloudMapValues(VolumetricClouds.CloudPresets preset, out CloudMode
{
case VolumetricClouds.CloudPresets.Sparse:
{
- cloudModelData.densityMultiplier = 0.2f;
+ cloudModelData.densityMultiplier = 0.25f;
cloudModelData.shapeFactor = 0.9f;
- cloudModelData.shapeScale = 2.0f;
- cloudModelData.erosionFactor = 0.6f;
- cloudModelData.erosionScale = 50.0f;
+ cloudModelData.shapeScale = 3.0f;
+ cloudModelData.erosionFactor = 0.9f;
+ cloudModelData.erosionScale = 75.0f;
cloudModelData.erosionNoise = VolumetricClouds.CloudErosionNoise.Perlin32;
return;
}
case VolumetricClouds.CloudPresets.Cloudy:
{
cloudModelData.densityMultiplier = 0.3f;
- cloudModelData.shapeFactor = 0.85f;
- cloudModelData.shapeScale = 2.5f;
- cloudModelData.erosionFactor = 0.7f;
- cloudModelData.erosionScale = 55.0f;
+ cloudModelData.shapeFactor = 0.9f;
+ cloudModelData.shapeScale = 5.0f;
+ cloudModelData.erosionFactor = 0.9f;
+ cloudModelData.erosionScale = 120.0f;
cloudModelData.erosionNoise = VolumetricClouds.CloudErosionNoise.Perlin32;
return;
}
case VolumetricClouds.CloudPresets.Overcast:
{
cloudModelData.densityMultiplier = 0.25f;
- cloudModelData.shapeFactor = 0.5f;
- cloudModelData.shapeScale = 6.0f;
- cloudModelData.erosionFactor = 0.5f;
- cloudModelData.erosionScale = 40.0f;
+ cloudModelData.shapeFactor = 0.55f;
+ cloudModelData.shapeScale = 8.0f;
+ cloudModelData.erosionFactor = 0.6f;
+ cloudModelData.erosionScale = 80.0f;
cloudModelData.erosionNoise = VolumetricClouds.CloudErosionNoise.Perlin32;
return;
}
case VolumetricClouds.CloudPresets.Stormy:
{
cloudModelData.densityMultiplier = 0.3f;
- cloudModelData.shapeFactor = 0.9f;
- cloudModelData.shapeScale = 2.0f;
- cloudModelData.erosionFactor = 0.8f;
- cloudModelData.erosionScale = 50.0f;
+ cloudModelData.shapeFactor = 0.85f;
+ cloudModelData.shapeScale = 3.0f;
+ cloudModelData.erosionFactor = 0.95f;
+ cloudModelData.erosionScale = 60.0f;
cloudModelData.erosionNoise = VolumetricClouds.CloudErosionNoise.Perlin32;
return;
}
}
// Default unused values
- cloudModelData.densityMultiplier = 0.38729833462f;
- cloudModelData.shapeFactor = 0.6f;
- cloudModelData.shapeScale = 0.33333333333f;
- cloudModelData.erosionFactor = 0.6f;
- cloudModelData.erosionScale = 0.33333333333f;
+ cloudModelData.densityMultiplier = 0.0f;
+ cloudModelData.shapeFactor = 0.0f;
+ cloudModelData.shapeScale = 0.0f;
+ cloudModelData.erosionFactor = 0.0f;
+ cloudModelData.erosionScale = 0.0f;
cloudModelData.erosionNoise = VolumetricClouds.CloudErosionNoise.Perlin32;
}
@@ -379,7 +382,13 @@ void UpdateShaderVariableslClouds(ref ShaderVariablesClouds cb, HDCamera hdCamer
{
// Convert to kilometers
cb._LowestCloudAltitude = settings.lowestCloudAltitude.value;
- cb._HighestCloudAltitude = settings.lowestCloudAltitude.value + settings.cloudThickness.value;
+
+ // When in non local mode, the camera is supposed to be always stricly under the clouds
+ // to avoid artifactss due to precision issues, when in non local, the clouds are always 1 meter above the camera.
+ if (!settings.localClouds.value)
+ cb._LowestCloudAltitude = Mathf.Max(cb._LowestCloudAltitude, 1.0f);
+
+ cb._HighestCloudAltitude = cb._LowestCloudAltitude + settings.cloudThickness.value;
cb._EarthRadius = Mathf.Lerp(1.0f, 0.025f, settings.earthCurvature.value) * k_EarthRadius;
cb._CloudRangeSquared.Set(Square(cb._LowestCloudAltitude + cb._EarthRadius), Square(cb._HighestCloudAltitude + cb._EarthRadius));
@@ -413,7 +422,7 @@ void UpdateShaderVariableslClouds(ref ShaderVariablesClouds cb, HDCamera hdCamer
if (!shadowPass)
{
- cb._SunLightColor = m_lightList.directionalLights[0].color;
+ cb._SunLightColor = m_lightList.directionalLights[0].color * settings.sunLightDimmer.value;
}
}
else
diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/HDRenderPipeline.VolumetricCloudsLighting.cs b/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/HDRenderPipeline.VolumetricCloudsLighting.cs
index fa8f41197bb..ca9373ccb47 100644
--- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/HDRenderPipeline.VolumetricCloudsLighting.cs
+++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/HDRenderPipeline.VolumetricCloudsLighting.cs
@@ -92,7 +92,9 @@ unsafe void SetPreconvolvedAmbientLightProbe(ref ShaderVariablesClouds cb, Volum
{
SphericalHarmonicsL2 probeSH = SphericalHarmonicMath.UndoCosineRescaling(m_CloudsAmbientProbe);
probeSH = SphericalHarmonicMath.RescaleCoefficients(probeSH, settings.ambientLightProbeDimmer.value);
- SphericalHarmonicMath.PackCoefficients(m_PackedCoeffsClouds, probeSH);
+ ZonalHarmonicsL2.GetCornetteShanksPhaseFunction(m_PhaseZHClouds, 0.0f);
+ SphericalHarmonicsL2 finalSH = SphericalHarmonicMath.PremultiplyCoefficients(SphericalHarmonicMath.Convolve(probeSH, m_PhaseZHClouds));
+ SphericalHarmonicMath.PackCoefficients(m_PackedCoeffsClouds, finalSH);
// Evaluate the probe at the top and bottom (above and under the clouds)
cb._AmbientProbeTop = EvaluateAmbientProbe(Vector3.down);
@@ -145,16 +147,23 @@ internal void PreRenderVolumetricClouds_AmbientProbe(RenderGraph renderGraph, HD
builder.SetRenderFunc(
(VolumetricCloudsAmbientProbeData data, RenderGraphContext ctx) =>
{
- // Render the sky into a low resolution cubemap
- data.skyManager.RenderSkyOnlyToCubemap(ctx.cmd, data.skyCubemap, false, data.skyRenderer);
-
- // Evaluate the probe
- ctx.cmd.SetComputeTextureParam(data.computeProbeCS, data.kernel, m_AmbientProbeInputCubemap, data.skyCubemap);
- ctx.cmd.SetComputeBufferParam(data.computeProbeCS, data.kernel, m_AmbientProbeOutputBufferParam, data.ambientProbeBuffer);
- ctx.cmd.DispatchCompute(data.computeProbeCS, data.kernel, 1, 1, 1);
-
- // Enqueue the read back
- ctx.cmd.RequestAsyncReadback(data.ambientProbeBuffer, OnComputeAmbientProbeDone);
+ if (data.skyRenderer != null)
+ {
+ // Render the sky into a low resolution cubemap
+ data.skyManager.RenderSkyOnlyToCubemap(ctx.cmd, data.skyCubemap, false, data.skyRenderer);
+
+ // Evaluate the probe
+ ctx.cmd.SetComputeTextureParam(data.computeProbeCS, data.kernel, m_AmbientProbeInputCubemap, data.skyCubemap);
+ ctx.cmd.SetComputeBufferParam(data.computeProbeCS, data.kernel, m_AmbientProbeOutputBufferParam, data.ambientProbeBuffer);
+ ctx.cmd.DispatchCompute(data.computeProbeCS, data.kernel, 1, 1, 1);
+
+ // Enqueue the read back
+ ctx.cmd.RequestAsyncReadback(data.ambientProbeBuffer, OnComputeAmbientProbeDone);
+ }
+ else
+ {
+ m_CloudsAmbientProbeIsReady = false;
+ }
});
}
}
diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/HDRenderPipeline.VolumetricCloudsShadows.cs b/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/HDRenderPipeline.VolumetricCloudsShadows.cs
index ecd67027d88..521dbf64dc7 100644
--- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/HDRenderPipeline.VolumetricCloudsShadows.cs
+++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/HDRenderPipeline.VolumetricCloudsShadows.cs
@@ -7,23 +7,25 @@ public partial class HDRenderPipeline
{
// Cloud preset maps
RTHandle[] m_VolumetricCloudsShadowTexture = new RTHandle[VolumetricClouds.CloudShadowResolutionCount];
+ RTHandle m_VolumetricCloudsIntermediateShadowTexture;
// The set of kernels that are required
int m_ComputeShadowCloudsKernel;
+ int m_FilterShadowCloudsKernel;
void InitializeVolumetricCloudsShadows()
{
// Grab the kernels we need
ComputeShader volumetricCloudsCS = m_Asset.renderPipelineResources.shaders.volumetricCloudsCS;
m_ComputeShadowCloudsKernel = volumetricCloudsCS.FindKernel("ComputeVolumetricCloudsShadow");
+ m_FilterShadowCloudsKernel = volumetricCloudsCS.FindKernel("FilterVolumetricCloudsShadow");
}
void ReleaseVolumetricCloudsShadows()
{
for (int i = 0; i < VolumetricClouds.CloudShadowResolutionCount; ++i)
- {
RTHandles.Release(m_VolumetricCloudsShadowTexture[i]);
- }
+ RTHandles.Release(m_VolumetricCloudsIntermediateShadowTexture);
}
bool HasVolumetricCloudsShadows(HDCamera hdCamera, in VolumetricClouds settings)
@@ -55,6 +57,7 @@ struct VolumetricCloudsShadowsParameters
// Data common to all volumetric cloud passes
public VolumetricCloudCommonData commonData;
public int shadowsKernel;
+ public int filterShadowsKernel;
}
VolumetricCloudsShadowsParameters PrepareVolumetricCloudsShadowsParameters(HDCamera hdCamera, VolumetricClouds settings)
@@ -68,6 +71,7 @@ VolumetricCloudsShadowsParameters PrepareVolumetricCloudsShadowsParameters(HDCam
FillVolumetricCloudsCommonData(false, settings, TVolumetricCloudsCameraType.Default, in cloudModelData, ref parameters.commonData);
parameters.shadowsKernel = m_ComputeShadowCloudsKernel;
+ parameters.filterShadowsKernel = m_FilterShadowCloudsKernel;
// Update the constant buffer
VolumetricCloudsCameraData cameraData;
@@ -87,7 +91,7 @@ VolumetricCloudsShadowsParameters PrepareVolumetricCloudsShadowsParameters(HDCam
return parameters;
}
- static void TraceVolumetricCloudShadow(CommandBuffer cmd, VolumetricCloudsShadowsParameters parameters, RTHandle shadowTexture)
+ static void TraceVolumetricCloudShadow(CommandBuffer cmd, VolumetricCloudsShadowsParameters parameters, RTHandle intermediateTexture, RTHandle shadowTexture)
{
using (new ProfilingScope(cmd, ProfilingSampler.Get(HDProfileId.VolumetricCloudsShadow)))
{
@@ -111,6 +115,17 @@ static void TraceVolumetricCloudShadow(CommandBuffer cmd, VolumetricCloudsShadow
// Evaluate the shadow
cmd.DispatchCompute(parameters.commonData.volumetricCloudsCS, parameters.shadowsKernel, shadowTX, shadowTY, 1);
+ // Given the low number of steps available and the absence of noise in the integration, we try to reduce the artifacts by doing two consecutive 3x3 blur passes.
+ // Filter the shadow
+ cmd.SetComputeTextureParam(parameters.commonData.volumetricCloudsCS, parameters.filterShadowsKernel, HDShaderIDs._VolumetricCloudsShadow, shadowTexture);
+ cmd.SetComputeTextureParam(parameters.commonData.volumetricCloudsCS, parameters.filterShadowsKernel, HDShaderIDs._VolumetricCloudsShadowRW, intermediateTexture);
+ cmd.DispatchCompute(parameters.commonData.volumetricCloudsCS, parameters.filterShadowsKernel, shadowTX, shadowTY, 1);
+
+ // Filter the shadow
+ cmd.SetComputeTextureParam(parameters.commonData.volumetricCloudsCS, parameters.filterShadowsKernel, HDShaderIDs._VolumetricCloudsShadow, intermediateTexture);
+ cmd.SetComputeTextureParam(parameters.commonData.volumetricCloudsCS, parameters.filterShadowsKernel, HDShaderIDs._VolumetricCloudsShadowRW, shadowTexture);
+ cmd.DispatchCompute(parameters.commonData.volumetricCloudsCS, parameters.filterShadowsKernel, shadowTX, shadowTY, 1);
+
// Bump the texture version
shadowTexture.rt.IncrementUpdateCount();
}
@@ -146,12 +161,15 @@ RTHandle RequestVolumetricCloudsShadowTexture(in VolumetricClouds settings)
case VolumetricClouds.CloudShadowResolution.High512:
shadowResIndex = 3;
break;
+ case VolumetricClouds.CloudShadowResolution.Ultra1024:
+ shadowResIndex = 4;
+ break;
}
if (m_VolumetricCloudsShadowTexture[shadowResIndex] == null)
{
m_VolumetricCloudsShadowTexture[shadowResIndex] = RTHandles.Alloc(shadowResolution, shadowResolution, 1, colorFormat: GraphicsFormat.B10G11R11_UFloatPack32,
- enableRandomWrite: true, useDynamicScale: false, useMipMap: false, wrapMode: TextureWrapMode.Clamp, name: "Volumetric Clouds Shadow Texture");
+ enableRandomWrite: true, useDynamicScale: false, useMipMap: false, filterMode: FilterMode.Bilinear, wrapMode: TextureWrapMode.Clamp, name: "Volumetric Clouds Shadow Texture");
}
return m_VolumetricCloudsShadowTexture[shadowResIndex];
@@ -169,9 +187,18 @@ CookieParameters RenderVolumetricCloudsShadows(CommandBuffer cmd, HDCamera hdCam
// TODO: Right now we can end up with a bunch of textures allocated which should be solved by an other PR.
RTHandle currentHandle = RequestVolumetricCloudsShadowTexture(settings);
+ // Check if the intermediate texture that we need for the filtering has already been allocated
+ if (m_VolumetricCloudsIntermediateShadowTexture == null)
+ {
+ m_VolumetricCloudsIntermediateShadowTexture = RTHandles.Alloc((int)VolumetricClouds.CloudShadowResolution.Ultra1024, (int)VolumetricClouds.CloudShadowResolution.Ultra1024,
+ 1, colorFormat: GraphicsFormat.B10G11R11_UFloatPack32,
+ enableRandomWrite: true, useDynamicScale: false, useMipMap: false,
+ wrapMode: TextureWrapMode.Clamp, name: "Intermediate Volumetric Clouds Shadow Texture");
+ }
+
// Evaluate and return the shadow
var parameters = PrepareVolumetricCloudsShadowsParameters(hdCamera, settings);
- TraceVolumetricCloudShadow(cmd, parameters, currentHandle);
+ TraceVolumetricCloudShadow(cmd, parameters, m_VolumetricCloudsIntermediateShadowTexture, currentHandle);
// Grab the current sun light
Light sunLight = GetMainLight();
diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricClouds.compute b/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricClouds.compute
index ddff329af36..07f36374940 100644
--- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricClouds.compute
+++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricClouds.compute
@@ -23,6 +23,7 @@
// Shadows
#pragma kernel ComputeVolumetricCloudsShadow
+#pragma kernel FilterVolumetricCloudsShadow
#pragma multi_compile _ PHYSICALLY_BASED_SUN
#pragma multi_compile _ LOCAL_VOLUMETRIC_CLOUDS
@@ -599,10 +600,10 @@ float3 EvaluateSunLuminance(float3 positionWS, float3 sunDirection, float3 sunCo
// Collect total density along light ray.
float lastDist = 0;
- for (int j = 1; j <= _NumLightSteps; j++)
+ for (int j = 0; j < _NumLightSteps; j++)
{
// The samples are not linearly distributed along the point-light direction due to their low number. We sample they in a logarithmic way.
- float dist = stepSize * j;
+ float dist = stepSize * (0.25 + j);
// Evaluate the current sample point
float3 currentSamplePointWS = positionWS + sunDirection * dist;
@@ -1559,9 +1560,9 @@ void ComputeVolumetricCloudsShadow(uint3 currentCoords : SV_DispatchThreadID, ui
float startDistance = intersectionO.x;
float totalDistance = intersectionI.x - intersectionO.x;
- float stepSize = totalDistance / 10;
+ float stepSize = totalDistance / 16;
- for (int i = 1; i <= 8; ++i)
+ for (int i = 0; i < 16; ++i)
{
// Compute the sphere intersection position
float3 positionWS = rayOriginWS + rayDirection * (intersectionO.x + stepSize * i);
@@ -1576,7 +1577,7 @@ void ComputeVolumetricCloudsShadow(uint3 currentCoords : SV_DispatchThreadID, ui
if (cloudProperties.density > CLOUD_DENSITY_TRESHOLD)
{
// Apply the extinction
- const float3 currentStepExtinction = exp(- _ScatteringTint.xyz * cloudProperties.density * cloudProperties.sigmaT * stepSize);
+ const float3 currentStepExtinction = exp(-_ScatteringTint.xyz * cloudProperties.density * cloudProperties.sigmaT * stepSize);
transmittance *= Luminance(currentStepExtinction);
}
}
@@ -1584,3 +1585,68 @@ void ComputeVolumetricCloudsShadow(uint3 currentCoords : SV_DispatchThreadID, ui
_VolumetricCloudsShadowRW[currentCoords.xy] = lerp(1.0 - _ShadowIntensity, 1.0, transmittance);
}
+
+// LDS used to pre-fetch the neighborhood data a 8x8 region with a one pixel border (10x10)
+groupshared uint gs_cacheShadow[100];
+
+TEXTURE2D(_VolumetricCloudsShadow);
+
+void FillShadowLDSData(uint elementIndex, uint2 groupOrigin)
+{
+ // Define which value we will be acessing with this worker thread
+ int acessCoordX = elementIndex % 10;
+ int acessCoordY = elementIndex / 10;
+
+ // The initial position of the access
+ int2 originXY = (int2)groupOrigin - int2(1, 1) + int2(acessCoordX, acessCoordY);
+
+ // Compute the sample position
+ int2 tapCoord = int2(clamp(originXY.x, 0, _ShadowCookieResolution - 1), clamp(originXY.y, 0, _ShadowCookieResolution - 1));
+
+ // Read the value from the texture
+ float3 shadowValue = LOAD_TEXTURE2D(_VolumetricCloudsShadow, tapCoord.xy).xyz;
+
+ // Pack it and store it into the LDS
+ gs_cacheShadow[elementIndex] = PackToR11G11B10f(shadowValue);
+}
+
+uint ShadowOffsetToLDSAdress(uint2 groupThreadId, int2 offset)
+{
+ // Compute the tap coordinate in the 10x10 grid
+ uint2 tapAddress = (uint2)((int2)(groupThreadId + 1) + offset);
+ return clamp((uint)(tapAddress.x) % 10 + tapAddress.y * 10, 0, 99);
+}
+
+[numthreads(8, 8, 1)]
+void FilterVolumetricCloudsShadow(uint3 currentCoords : SV_DispatchThreadID, int groupIndex : SV_GroupIndex, uint2 groupThreadId : SV_GroupThreadID, uint2 groupId : SV_GroupID)
+{
+ UNITY_XR_ASSIGN_VIEW_INDEX(currentCoords.z);
+
+ // Fill the LDS with the shadow data
+ if (groupIndex < 50)
+ {
+ FillShadowLDSData(groupIndex * 2, groupId * 8);
+ FillShadowLDSData(groupIndex * 2 + 1, groupId * 8);
+ }
+ GroupMemoryBarrierWithGroupSync();
+
+ // Grab the center pixel
+ float3 centerShadow = UnpackFromR11G11B10f(gs_cacheShadow[ShadowOffsetToLDSAdress(groupThreadId, int2(0, 0))]);
+
+ // Average the 3x3 rgion
+ float3 filteredShadow = UnpackFromR11G11B10f(gs_cacheShadow[ShadowOffsetToLDSAdress(groupThreadId, int2(-1, -1))]);
+ filteredShadow += UnpackFromR11G11B10f(gs_cacheShadow[ShadowOffsetToLDSAdress(groupThreadId, int2(0, -1))]);
+ filteredShadow += UnpackFromR11G11B10f(gs_cacheShadow[ShadowOffsetToLDSAdress(groupThreadId, int2(1, -1))]);
+ filteredShadow += UnpackFromR11G11B10f(gs_cacheShadow[ShadowOffsetToLDSAdress(groupThreadId, int2(-1, 0))]);
+ filteredShadow += centerShadow;
+ filteredShadow += UnpackFromR11G11B10f(gs_cacheShadow[ShadowOffsetToLDSAdress(groupThreadId, int2(1, 0))]);
+ filteredShadow += UnpackFromR11G11B10f(gs_cacheShadow[ShadowOffsetToLDSAdress(groupThreadId, int2(-1, 1))]);
+ filteredShadow += UnpackFromR11G11B10f(gs_cacheShadow[ShadowOffsetToLDSAdress(groupThreadId, int2(0, 1))]);
+ filteredShadow += UnpackFromR11G11B10f(gs_cacheShadow[ShadowOffsetToLDSAdress(groupThreadId, int2(1, 1))]);
+
+ // We have a different behavior if this is a border pixel
+ float borderPixel = currentCoords.x == 0 || currentCoords.y == 0 || ((int)currentCoords.x) == (_ShadowCookieResolution - 1) || ((int)currentCoords.y) == (_ShadowCookieResolution - 1) ? 1.0 : 0.0;
+
+ // Normalize and return the result
+ _VolumetricCloudsShadowRW[currentCoords.xy] = lerp(filteredShadow * 0.1111111, centerShadow, borderPixel);
+}
diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricClouds.cs b/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricClouds.cs
index 57d1a1acbdd..0c0e089fa43 100644
--- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricClouds.cs
+++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricClouds.cs
@@ -80,10 +80,12 @@ public enum CloudShadowResolution
Medium256 = 256,
/// The volumetric clouds shadow will be 512x512.
High512 = 512,
+ /// The volumetric clouds shadow will be 1024x1024.
+ Ultra1024 = 1024,
}
///
- public const int CloudShadowResolutionCount = 4;
+ public const int CloudShadowResolutionCount = 5;
///
/// A that holds a value.
@@ -409,6 +411,12 @@ public CloudFadeInModeParameter(CloudFadeInMode value, bool overrideState = fals
[Tooltip("Controls the influence of the light probes on the cloud volume. A lower value will suppress the ambient light and produce darker clouds overall.")]
public ClampedFloatParameter ambientLightProbeDimmer = new ClampedFloatParameter(1.0f, 0.0f, 1.0f);
+ ///
+ /// Controls the influence of the sun light on the cloud volume. A lower value will suppress the sun light and produce darker clouds overall.
+ ///
+ [Tooltip("Controls the influence of the sun light on the cloud volume. A lower value will suppress the sun light and produce darker clouds overall.")]
+ public ClampedFloatParameter sunLightDimmer = new ClampedFloatParameter(1.0f, 0.0f, 1.0f);
+
///
/// Controls how much Erosion Factor is taken into account when computing ambient occlusion. The Erosion Factor parameter is editable in the custom preset, Advanced and Manual Modes.
///
diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDStringConstants.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDStringConstants.cs
index e06e5d423c9..30890c2390c 100644
--- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDStringConstants.cs
+++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDStringConstants.cs
@@ -481,6 +481,7 @@ static class HDShaderIDs
public static readonly int _CloudsAdditionalTextureRW = Shader.PropertyToID("_CloudsAdditionalTextureRW");
public static readonly int _VolumetricCloudsTexture = Shader.PropertyToID("_VolumetricCloudsTexture");
public static readonly int _VolumetricCloudsTextureRW = Shader.PropertyToID("_VolumetricCloudsTextureRW");
+ public static readonly int _VolumetricCloudsShadow = Shader.PropertyToID("_VolumetricCloudsShadow");
public static readonly int _VolumetricCloudsShadowRW = Shader.PropertyToID("_VolumetricCloudsShadowRW");
public static readonly int _VolumetricCloudsUpscaleTextureRW = Shader.PropertyToID("_VolumetricCloudsUpscaleTextureRW");
public static readonly int _HistoryVolumetricClouds0Texture = Shader.PropertyToID("_HistoryVolumetricClouds0Texture");
diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/Texture/VolumetricClouds/CloudLutRainAO.png b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/Texture/VolumetricClouds/CloudLutRainAO.png
index 50c0121c8ad..3cfb0125353 100644
--- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/Texture/VolumetricClouds/CloudLutRainAO.png
+++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/Texture/VolumetricClouds/CloudLutRainAO.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e65f46c930edffe9abffdd9483803384170e62fe240caa67759fb7d6ddb3d4d6
-size 9171
+oid sha256:97c41e20e707f1fbfc6862e1b891e8808ebf3aea100d3f314e8a558e7d10a08d
+size 7061