diff --git a/TestProjects/HDRP_DXR_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/203_LocalAmbientOcclusionNoisy.png b/TestProjects/HDRP_DXR_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/203_LocalAmbientOcclusionNoisy.png index cf05f36faa9..0d1101241d2 100644 --- a/TestProjects/HDRP_DXR_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/203_LocalAmbientOcclusionNoisy.png +++ b/TestProjects/HDRP_DXR_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/203_LocalAmbientOcclusionNoisy.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:67a7152f306af4a22ce50281d593efa8b6cbd726266f3ade39c1afd1f0124b02 -size 208153 +oid sha256:123dd32f2ac09b5063c84f97de2b6e2dd008e79d90713ef1a3febe7334281509 +size 207947 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/2601_SSAO_HalfRes.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/2601_SSAO_HalfRes.png index 1b47629eb32..325a149f8e7 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/2601_SSAO_HalfRes.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/2601_SSAO_HalfRes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c2bef3ec9102ba88d4528177c5939622ba6128ba7a9c385319a46c9c7b98a008 -size 129030 +oid sha256:a24b4140640ff01407b48788fac1125554d945b055adc501bba84cdce71486c0 +size 140150 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/2602_SSAO_FullRes.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/2602_SSAO_FullRes.png index 84043a1bc20..0061a05a919 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/2602_SSAO_FullRes.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/2602_SSAO_FullRes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c359e2eb9ab101493d8ba99e3d7b7a00e487667c30681a9bee9a86d670d4159 -size 123513 +oid sha256:5d349b1d39e2cc5f5a37d91aa78c9a75111e88195081abfd5b8575082a6cc09e +size 129101 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png index fb2471aaf42..fee171ce9c4 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61e43150e332dd0e548592a334019530c03bd4a7437fcec241a5a6d014e34dc5 -size 118602 +oid sha256:46bb0edb6982f39f913aa771651a61bec129f59c4c5e71486478a9ec5c020f5a +size 118528 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/2307_Shadow_VeryHigh.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/2307_Shadow_VeryHigh.png index 2c49d677c79..8d3588cdca2 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/2307_Shadow_VeryHigh.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/2307_Shadow_VeryHigh.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:642c7bedc2c603783330d25dac90ecf9fcafc063341c7bcfd9a47961beadcaf4 -size 42439 +oid sha256:767836066d3f31bc209694d47d106a15200d8a594016a53d098bb9ed9f0e1837 +size 42820 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/2601_SSAO_HalfRes.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/2601_SSAO_HalfRes.png index 1d7de206073..b06ddbf4bce 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/2601_SSAO_HalfRes.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/2601_SSAO_HalfRes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d547eed61395925657ef8b42ba68df9e6d839fec396509517a7ca87bb97f3079 -size 127567 +oid sha256:ba068a78864db0503ae197c271d059b8d1f8dfaab1721b6a03e22790e867401d +size 137191 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/2602_SSAO_FullRes.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/2602_SSAO_FullRes.png index 77128b247f1..6f9c337ffe0 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/2602_SSAO_FullRes.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/2602_SSAO_FullRes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1cff8dbb88c907abc104eedc9428454c69b65fc79dec88f778ef820fe0e7726a -size 119720 +oid sha256:25f2885235b70c089bdd4fe7bc2948c6f700dcfe499de5bfaeb75a5842af6d07 +size 125407 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/2601_SSAO_HalfRes.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/2601_SSAO_HalfRes.png index 1c4dda1feaa..dc111bd0ba1 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/2601_SSAO_HalfRes.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/2601_SSAO_HalfRes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4516c8f5ddc09b59da9b8c0a65f3022f1e0cbda10080c7558b733dd8f5e046eb -size 129010 +oid sha256:95751eb08ddc041d0bef148d32e565b5b6d531325e5fa37af48d48d5aa67039f +size 140032 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/2602_SSAO_FullRes.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/2602_SSAO_FullRes.png index 147e9b8c45d..74a2706c315 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/2602_SSAO_FullRes.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/2602_SSAO_FullRes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f1533fca59c0a07ca44e4f69d456102e52e18598273ee484a7dfab25e0e0776e -size 123612 +oid sha256:71fde6ae5e2adb2fa722ee5f34012cd012e474dc660e8ca832b473d41eaac841 +size 129183 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 1c90ad42926..a33415d364f 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:89501e3ae3046817b57569dcc749ef798c7d19091a2044750c645c22e7cfa383 -size 348 +oid sha256:c7c673c515babdf7b5e9178210fe113882285ee374694ac97ef3300b15515fe7 +size 255743 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/2601_SSAO_HalfRes.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/2601_SSAO_HalfRes.png index c9bb100e9ef..dc111bd0ba1 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/2601_SSAO_HalfRes.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/2601_SSAO_HalfRes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:262d38331cec1c629a44210f664f923f71159f8ebae98d62de5e0491989eb369 -size 128945 +oid sha256:95751eb08ddc041d0bef148d32e565b5b6d531325e5fa37af48d48d5aa67039f +size 140032 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/2602_SSAO_FullRes.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/2602_SSAO_FullRes.png index 69f68ed50b9..74a2706c315 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/2602_SSAO_FullRes.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/2602_SSAO_FullRes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f2721a0d666d9634c75af8ff1cfcfacfc3f51eae5fed582269bfb2a4973faf1d -size 123933 +oid sha256:71fde6ae5e2adb2fa722ee5f34012cd012e474dc660e8ca832b473d41eaac841 +size 129183 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/2601_SSAO_HalfRes.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/2601_SSAO_HalfRes.png index 9b4e9aba2c3..8fdb393e243 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/2601_SSAO_HalfRes.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/2601_SSAO_HalfRes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57244bf744e069318e3a9b20c02daeeb813b91b7b3420740da0d9183f77a32c5 -size 129058 +oid sha256:349163a2562153edf2ce026f2b739f1bd9f22ed855eca8171b2125f3b6f4701a +size 140132 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/2602_SSAO_FullRes.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/2602_SSAO_FullRes.png index 31bf724385f..9d59aa28c9c 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/2602_SSAO_FullRes.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/2602_SSAO_FullRes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d59d91ba64ad9b16a7cfe0f4225900e4cea582984c13f35c24d4515c17672f28 -size 123470 +oid sha256:bfae42c31be11cce69969093617064408c84078d9485e53b71415bbd1e040b87 +size 129124 diff --git a/com.unity.render-pipelines.high-definition/CHANGELOG.md b/com.unity.render-pipelines.high-definition/CHANGELOG.md index e8b4b9a5473..5e035662b81 100644 --- a/com.unity.render-pipelines.high-definition/CHANGELOG.md +++ b/com.unity.render-pipelines.high-definition/CHANGELOG.md @@ -13,6 +13,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Fixed Probe volume debug exposure compensation to match the Lighting debug one. - Fixed misleading text and improving the eye scene material samples. (case 1368665) - MaterialReimporter.ReimportAllMaterials and MaterialReimporter.ReimportAllHDShaderGraphs now batch the asset database changes to improve performance. +- Fixed missing DisallowMultipleComponent annotations in HDAdditionalReflectionData and HDAdditionalLightData (case 1365879). +- Fixed support for light/shadow dimmers (volumetric or not) in path tracing. +- Fixed ambient occlusion strenght incorrectly using GTAOMultiBounce ## [12.0.0] - 2021-01-11 diff --git a/com.unity.render-pipelines.high-definition/Documentation~/Images/hair-kajiya.PNG b/com.unity.render-pipelines.high-definition/Documentation~/Images/hair-kajiya.PNG new file mode 100644 index 00000000000..da634dfcd5d --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Documentation~/Images/hair-kajiya.PNG @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e51995abc78310db8b64dd6a4216ec86a481f1b1381555991a9c0789e31c578f +size 2550877 diff --git a/com.unity.render-pipelines.high-definition/Documentation~/Images/hair-marschner.PNG b/com.unity.render-pipelines.high-definition/Documentation~/Images/hair-marschner.PNG new file mode 100644 index 00000000000..f928aea9a94 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Documentation~/Images/hair-marschner.PNG @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b079d191291670db899e287931f0b66d7a64b24c5dad716a1bc3a59bd7d67c3 +size 2630828 diff --git a/com.unity.render-pipelines.high-definition/Documentation~/Images/hair-multiple-scattering.png b/com.unity.render-pipelines.high-definition/Documentation~/Images/hair-multiple-scattering.png new file mode 100644 index 00000000000..09bc5ddd5b1 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Documentation~/Images/hair-multiple-scattering.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a04b3f54922fb836e015cabbbcb44ead3d2721df383ff502d4fccb3e5538cb52 +size 5259605 diff --git a/com.unity.render-pipelines.high-definition/Documentation~/Ray-Tracing-Path-Tracing.md b/com.unity.render-pipelines.high-definition/Documentation~/Ray-Tracing-Path-Tracing.md index c4cf357c3db..3b09699a959 100644 --- a/com.unity.render-pipelines.high-definition/Documentation~/Ray-Tracing-Path-Tracing.md +++ b/com.unity.render-pipelines.high-definition/Documentation~/Ray-Tracing-Path-Tracing.md @@ -84,6 +84,18 @@ Single-sided or no Transmission Double-sided + Transmission +### Hair + +Path tracing can easily compute the complex multiple scattering events that occur within a head of hair, crucial for producing the volumetric look of lighter colored hair. + +The [Hair Master Stack](master-stack-hair.md) allows the choice between an **Approximate** and **Physical** material mode and parameterization. Currently, it is required for a Hair Material to be configured with the **Physical** mode to participate in path tracing. The reason for this is due to the physically-based parameterization of the model (and the model itself) which produces far more accurate results in a path traced setting. Moreover, the **Approximate** material mode is a non energy-conserving model, better suited for performant rasterization after careful artist tuning. + +Representing hair strand geometry is traditionally done via ray-aligned "ribbons", or tubes. Currently, the acceleration structure is not equipped to handle ray-aligned ribbons, so hair must be represented with tube geometry to achieve a good result. + +The path traced **Physical** hair mode shares the exact same meaning for its parameters as its rasterized counterpart. However, the underlying model for path tracing differs: it performs a much more rigorous evaluation of the scattering within the fiber, while the rasterized version is only an approximated version of this result. Additionally, path tracing a volume of densely packed hair fibers allows you to compute the complex multiple scattering "for free", whereas in rasterizing we again must approximate this. + +You can read more about the parameterization details of the **Physical** hair mode [here](master-stack-hair.md). + ## Limitations This section contains information on the limitations of HDRP's path tracing implementation. Mainly, this is a list of features that HDRP supports in its rasterized render pipeline, but not in its path-traced render pipeline. diff --git a/com.unity.render-pipelines.high-definition/Documentation~/Upgrading-from-2021.1-to-2021.2.md b/com.unity.render-pipelines.high-definition/Documentation~/Upgrading-from-2021.1-to-2021.2.md index 8bd7aefeb2f..0bfa3488f92 100644 --- a/com.unity.render-pipelines.high-definition/Documentation~/Upgrading-from-2021.1-to-2021.2.md +++ b/com.unity.render-pipelines.high-definition/Documentation~/Upgrading-from-2021.1-to-2021.2.md @@ -24,11 +24,13 @@ HDRP 2021.2 has various tessellation shader code to enable tessellation support * HDRP has improved support of motion vectors for tessellation. Only `previousPositionRWS` is part of the varyings. HDRP also added the `MotionVectorTessellation()` function. For more information, see the `MotionVectorVertexShaderCommon.hlsl` file. * HDRP now evaluates the `tessellationFactor` in the vertex shader and passes it to the hull shader as an interpolator. For more information, see the `VaryingMesh.hlsl` and `VertMesh.hlsl` files. -### Specular Occlusion +### Ambient Occlusion and Specular Occlusion The algorithm for computing specular occlusion from bent normals and ambient occlusion has been changed to improve visual results. To use the old algorithm, function calls to `GetSpecularOcclusionFromBentAO` should be replaced by calls to `GetSpecularOcclusionFromBentAO_ConeCone` +The algorithm to calculate the contribution of ambient occlusion and specular occlusion to direct lighting have been change from taking into account the multi-bounce contribution (GTAOMultiBounce) to not using the multi-bounce which is more correct. + ### Light list The previous `g_vLightListGlobal` uniform have been rename to explicit `g_vLightListTile` and `g_vLightListCluster` light list name. This work required to fix a wrong behavior on console. diff --git a/com.unity.render-pipelines.high-definition/Documentation~/master-stack-hair.md b/com.unity.render-pipelines.high-definition/Documentation~/master-stack-hair.md index 1e92dec3aa4..d28276161bd 100644 --- a/com.unity.render-pipelines.high-definition/Documentation~/master-stack-hair.md +++ b/com.unity.render-pipelines.high-definition/Documentation~/master-stack-hair.md @@ -16,6 +16,38 @@ To create a Hair material in Shader Graph, you can either: * Create a new Shader Graph. 1. Go to **Assets > Create >Shader Graph > HDRP** and click **Hair Shader Graph**. +## Approximate and Physically Based Models + +The Hair Master Stack offers two model sub-types: **Approximate** and **Physical**. By default, a newly created Hair Shader Graph is configured to use the **Approximate** mode. To change it, simply navigate to the Graph Inspector and change the Hair's **Material Type** from **Approximate** to **Physical**. It's important to note that the **Physical** model is currently recommended to only be used when representing hair with strand geometry. + +![](Images/hair-kajiya.png) + +The **Approximate** mode is a non energy-conserving model that was originally crafted against perceptual observations of human hair. Effective use of this model requires the artist to carefully balance the energy between the specular terms using multiple color parameters. Generally, the **Approximate** mode is accurate enough for darker hair, but falls short for lighter hair. Additionally, it is the faster of the two models to compute. The **Approximate** mode is based upon the Kajiya-Kay hair shading model. + +![](Images/hair-marschner.png) + +The **Physical** mode puts parameters in much simpler and meaningful terms. This model is considered to be physically-based due to its considerations for how incident light has been measured to scatter in a hair fiber. While the **Approximate** variant requires four color parameters to tune overall appearance, the **Physical** variant only requires one. The **Base Color** parameter defines the hair cortex absorption, the fibrous structure underlying the cuticle scale. Additionally, the model is energy conserving, so no careful balancing of inputs should be required for your hair to fit naturally into any lighting scenario. The **Physical** mode is based on the Marschner human hair fiber reflectance model. + +A crucial component to the appearance of (especially light colored) hair is *multiple scattering*. Almost always, we never shade just a single hair fiber, but typically many thousands of fibers within close adjacency to one another. Because of this, coupled with the fact that light colored (lower absorbing) hair transmits large amount of light, the overall effect is a volumetric appearance to a head of light colored hair. + +![](Images/hair-multiple-scattering.png) + +When using the **Physical Material Type**, a **Scattering Mode** option will appear in the Graph Inspector. The **Scattering Mode** also comes with an **Approximate** and **Physical** option to choose from. By default, the **Physical Material Type** is configured to use the **Approximate Scattering Mode**. + +The **Approximate Scattering Mode** is a diffuse approximation term that extremely coarsely estimates the multiple scattering phenomenon (seen left). The approximation is coarse because it does not take into account the propogation and attenuation of light through a hair volume due to transmittance, and ignores the effect that a hair's roughness has on the spread of light. + +The **Physical Scattering Mode** performs a physically based simulation of light propogating through a volume of hair (seen right). This mode is only allowed for the **Physical Material Type** since the computation is dependant on the physically based nature of the model. + +The computation of the **Physical Scattering Mode** is dependent on the use of a strand geometry representation. Additionally, this approach has a dependency on important precomputed information stored in a **Strand Count Probe**. The **Strand Count Probe** is an L1 Band Spherical Harmonic of the directional hair fiber densities at a point in a hair volume. While it can be computed manually, this data is not readily available at the moment. The accessibility of the **Physical Scattering Mode** will be improved in future releases. + +## Geometry Type + +Geometric representation of Hair and Fur in computer graphics is accomplished in one of three common ways: shells, cards, or strands. In the **Hair Master Stack**, the **Geometry Type** option allows you to specify which of these geometric representations you are using for your hair. Choosing the corresponding options to your geometry type allows appropriate assumptions to be made when compute the shading model. Currently, the **Geometry Type** allows you to specify between **Cards** and **Strands**. + +The **Cards** representation is a common approach for games. The concept of hair cards is to project a high resolution hair groom down onto a simplified proxy mesh (composed of the "cards"). This is a favorable approach for games since it greatly simplifies the complexity of strands while still producing good and performant results. + +The **Strands** representation is a growing trend in real-time graphics, as modern compute processing power continues to increase. The concept of hair strand geometry is to fully represent each individual hair fiber, either in the shape of "tube" geometry or a screen-aligned "ribbon". + ## Contexts [!include[](snippets/master-stacks-contexts-intro.md)] @@ -110,6 +142,7 @@ Depending on the [Graph Settings](#graph-settings) you use, Shader Graph can add [!include[](snippets/shader-graph-blocks/smoothness-radial.md)] [!include[](snippets/shader-graph-blocks/cuticle-angle.md)] [!include[](snippets/shader-graph-blocks/strand-count-probe.md)] +[!include[](snippets/shader-graph-blocks/strand-shadow-bias.md)] ## Graph Settings @@ -120,6 +153,7 @@ Depending on the [Graph Settings](#graph-settings) you use, Shader Graph can add Property Description +[!include[](snippets/shader-properties/surface-options/material-type-hair.md)] [!include[](snippets/shader-properties/surface-options/surface-type.md)] [!include[](snippets/shader-properties/surface-options/rendering-pass.md)] [!include[](snippets/shader-properties/surface-options/blending-mode.md)] @@ -160,5 +194,4 @@ Depending on the [Graph Settings](#graph-settings) you use, Shader Graph can add [!include[](snippets/shader-properties/advanced-options/add-precomputed-velocity.md)] [!include[](snippets/shader-properties/advanced-options/geometry-type.md)] [!include[](snippets/shader-properties/advanced-options/scattering-mode.md)] -[!include[](snippets/shader-properties/advanced-options/allow-radial-smoothness.md)] diff --git a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/cuticle-angle.md b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/cuticle-angle.md index 02fb9b9fde0..b2807fa1385 100644 --- a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/cuticle-angle.md +++ b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/cuticle-angle.md @@ -1,6 +1,6 @@ **Cuticle Angle** The angle (in degrees) that the scales on a hair fiber tilt from the strand direction. For human hair, this value is usually between 2 to 3 degrees. Use this property to “shift” the highlight. -None +• **Material Type** set to **Physical** 3 diff --git a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/smoothness-radial.md b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/smoothness-radial.md index 60ebeebf3bc..8dac3837c9a 100644 --- a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/smoothness-radial.md +++ b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/smoothness-radial.md @@ -1,6 +1,6 @@ **Radial Smoothness** -Controls the internal scattering of light paths and the amount of light the hair fiber absorbs. To use this property, enable **Allow Radial Smoothness**. -None -0.5 +Controls the internal scattering of light paths and the amount of light the hair fiber absorbs. +• **Material Type** set to **Physical** +0.7 diff --git a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/strand-count-probe.md b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/strand-count-probe.md index f791e531b43..eeea1accaba 100644 --- a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/strand-count-probe.md +++ b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/strand-count-probe.md @@ -1,6 +1,6 @@ **Strand Count Probe** The four coefficients of an L0 and L1 spherical harmonic near the shading position. Encoded with the strand count on the sphere of directions. -None +• **Material Type** set to **Physical**• **Scattering Mode** set to **Advanced** 0.0 diff --git a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/strand-shadow-bias.md b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/strand-shadow-bias.md new file mode 100644 index 00000000000..b31ebc46f86 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/strand-shadow-bias.md @@ -0,0 +1,6 @@ + +**Strand Shadow Bias** +The extent (in meters) at which the spline is biased toward the light to prevent scattering occlusion. +• **Material Type** set to **Physical**• **Scattering Mode** set to **Advanced** +0.0 + diff --git a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/allow-radial-smoothness.md b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/allow-radial-smoothness.md deleted file mode 100644 index c86a4939be0..00000000000 --- a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/allow-radial-smoothness.md +++ /dev/null @@ -1,4 +0,0 @@ - -**Allow Radial Smoothness** -Adds a secondary **Radial Smoothness** block to the target that controls the internal scattering of light paths and the amount of light the hair fiber absorbs. Enabling this option makes the shader use slightly more resources on the GPU. When this property is disabled, the shader approximates internal scattering. - diff --git a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/scattering-mode.md b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/scattering-mode.md index 92148f291b5..e9ee166ce5b 100644 --- a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/scattering-mode.md +++ b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/scattering-mode.md @@ -1,6 +1,6 @@ **Scattering Mode** -Indicates the method by which the scattering of light is calculated in a volume of hair. Requires the "Marschner" Material Type and "Strands" Geometry Type to use: -
• **Approximate**: Fall back to a simplified diffuse component to approximate hair color. This is generally acceptable for high-absorbent (dark) hair. -
• **Advanced**: Simulate the scattering of light through a volume of hair strands. This is important for depicting low-absorbent (light) hair. Adds the Strand Probe Volume block parameter. +Indicates the light scattering method in a volume of hair. Requires the **Physical** Material Type and **Strands** Geometry Type to use: +
• **Approximate**: Fall back to a simplified diffuse component to approximate hair color. This is generally acceptable for high-absorbent (dark) hair. This is the default for both Material types. +
• **Advanced**: Simulate the scattering of light through a volume of hair strands. This is important for depicting low-absorbent (light) hair. Adds the **Strand Probe Volume** parameter. diff --git a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/surface-options/material-type-hair.md b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/surface-options/material-type-hair.md new file mode 100644 index 00000000000..df55c607357 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/surface-options/material-type-hair.md @@ -0,0 +1,4 @@ + +**Material Type** +Specifies the type of Material the Hair Shader represents. The options are:
• **Basic**: A lightweight, non energy-conserving variant based on the Kajiya-Kay model. Suitable for hair card geometry.
• **Physical**: A more computationally intensive physically-based variant inspired by the Marschner model. Suitable for hair strand geometry. + diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs index ff7f33aa037..b7f9b095d7f 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs @@ -8,8 +8,14 @@ class HairData : HDTargetData { public enum MaterialType { - KajiyaKay, - Marschner + Approximate, + Physical + } + + public enum ScatteringMode + { + Approximate, + Physical } public enum ColorParameterization @@ -25,12 +31,6 @@ public enum GeometryType Strands } - public enum ScatteringMode - { - Approximate, - Advanced - } - [SerializeField] MaterialType m_MaterialType; public MaterialType materialType diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs index b6587b23865..c2e681ad7ed 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs @@ -17,7 +17,7 @@ class HairSurfaceOptionPropertyBlock : SurfaceOptionPropertyBlock { class Styles { - public static GUIContent materialType = new GUIContent("Material Type", "TODO"); + public static GUIContent materialType = new GUIContent("Material Type", "Indicates the type of Shading Model used to evaluate lighting."); } HairData hairData; @@ -39,7 +39,7 @@ class Styles { public static GUIContent colorParameterization = new GUIContent("Color Mode", "Indicates the way the hair fiber cortex color is parameterized."); public static GUIContent geometryType = new GUIContent("Geometry Type", "Indicates the type of geometry being used to represent the hair, allowing the shading model to make informed approximations."); - public static GUIContent scatteringMode = new GUIContent("Scattering Mode", "TODO"); + public static GUIContent scatteringMode = new GUIContent("Scattering Mode", "Indicates the light scattering method in a volume of hair."); } HairData hairData; @@ -56,7 +56,7 @@ protected override void CreatePropertyGUI() // Hair specific properties GUI AddProperty(Styles.geometryType, () => hairData.geometryType, (newValue) => hairData.geometryType = newValue); - if (hairData.materialType == HairData.MaterialType.Marschner) + if (hairData.materialType == HairData.MaterialType.Physical) { // For now only allow scattering mode for strands, as the multiple scattering was developed against this for 21.2. if (hairData.geometryType == HairData.GeometryType.Strands) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs index 0b57c4dd62d..ecd63988826 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs @@ -37,9 +37,9 @@ sealed partial class HairSubTarget : LightingSubTarget, ILegacyTarget, IRequires // Only allow advanced scattering for Marschner Strands explicitly set to advanced. private bool useAdvancedMultipleScattering => - hairData.materialType == ShaderGraph.HairData.MaterialType.Marschner && + hairData.materialType == ShaderGraph.HairData.MaterialType.Physical && hairData.geometryType == HairData.GeometryType.Strands && - hairData.scatteringMode == HairData.ScatteringMode.Advanced; + hairData.scatteringMode == HairData.ScatteringMode.Physical; HairData m_HairData; @@ -72,8 +72,8 @@ public override void GetFields(ref TargetFieldContext context) var descs = context.blocks.Select(x => x.descriptor); // Hair specific properties: - context.AddField(KajiyaKay, hairData.materialType == HairData.MaterialType.KajiyaKay); - context.AddField(Marschner, hairData.materialType == HairData.MaterialType.Marschner); + context.AddField(KajiyaKay, hairData.materialType == HairData.MaterialType.Approximate); + context.AddField(Marschner, hairData.materialType == HairData.MaterialType.Physical); context.AddField(HairStrandDirection, descs.Contains(HDBlockFields.SurfaceDescription.HairStrandDirection) && context.pass.validPixelBlocks.Contains(HDBlockFields.SurfaceDescription.HairStrandDirection)); context.AddField(RimTransmissionIntensity, descs.Contains(HDBlockFields.SurfaceDescription.RimTransmissionIntensity) && context.pass.validPixelBlocks.Contains(HDBlockFields.SurfaceDescription.RimTransmissionIntensity)); context.AddField(UseLightFacingNormal, hairData.geometryType == HairData.GeometryType.Strands); @@ -96,7 +96,7 @@ public override void GetActiveBlocks(ref TargetActiveBlockContext context) context.AddBlock(HDBlockFields.SurfaceDescription.HairStrandDirection); // Parametrization for Kajiya-Kay and Marschner models. - if (hairData.materialType == HairData.MaterialType.KajiyaKay) + if (hairData.materialType == HairData.MaterialType.Approximate) { context.AddBlock(HDBlockFields.SurfaceDescription.Transmittance); context.AddBlock(HDBlockFields.SurfaceDescription.RimTransmissionIntensity); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/AtmosphericScattering/Fog.cs b/com.unity.render-pipelines.high-definition/Runtime/Lighting/AtmosphericScattering/Fog.cs index d879ea6c8ea..6a354faf4e0 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/AtmosphericScattering/Fog.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/AtmosphericScattering/Fog.cs @@ -239,6 +239,7 @@ void UpdateShaderVariablesGlobalCBFogParameters(ref ShaderVariablesGlobal cb, HD cb._HeightFogBaseHeight = crBaseHeight; cb._GlobalFogAnisotropy = anisotropy.value; cb._VolumetricFilteringEnabled = ((int)denoisingMode.value & (int)FogDenoisingMode.Gaussian) != 0 ? 1 : 0; + cb._FogDirectionalOnly = directionalLightsOnly.value ? 1 : 0; } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Light/HDAdditionalLightData.cs b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Light/HDAdditionalLightData.cs index 37bae930a9e..fb53d6b68ad 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Light/HDAdditionalLightData.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Light/HDAdditionalLightData.cs @@ -31,6 +31,7 @@ struct TimelineWorkaround /// [HDRPHelpURLAttribute("Light-Component")] [AddComponentMenu("")] // Hide in menu + [DisallowMultipleComponent] [RequireComponent(typeof(Light))] [ExecuteAlways] public partial class HDAdditionalLightData : MonoBehaviour, ISerializationCallbackReceiver, IAdditionalData diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Reflection/HDAdditionalReflectionData.cs b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Reflection/HDAdditionalReflectionData.cs index 3c8bfee527d..9184be08427 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Reflection/HDAdditionalReflectionData.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Reflection/HDAdditionalReflectionData.cs @@ -5,6 +5,7 @@ namespace UnityEngine.Rendering.HighDefinition /// [HDRPHelpURLAttribute("Reflection-Probe")] [AddComponentMenu("")] // Hide in menu + [DisallowMultipleComponent] [RequireComponent(typeof(ReflectionProbe))] public sealed partial class HDAdditionalReflectionData : HDProbe, IAdditionalData { diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialEvaluation.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialEvaluation.hlsl index 02da404572b..2714f4e042f 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialEvaluation.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialEvaluation.hlsl @@ -44,9 +44,9 @@ void AccumulateIndirectLighting(IndirectLighting src, inout AggregateLighting ds struct AmbientOcclusionFactor { real3 indirectAmbientOcclusion; - real3 directAmbientOcclusion; + real directAmbientOcclusion; real3 indirectSpecularOcclusion; - real3 directSpecularOcclusion; + real directSpecularOcclusion; }; // Get screen space ambient occlusion only: @@ -105,8 +105,9 @@ void GetScreenSpaceAmbientOcclusionMultibounce(float2 positionSS, float NdotV, f aoFactor.indirectSpecularOcclusion = GTAOMultiBounce(min(specularOcclusionFromData, indirectSpecularOcclusion), fresnel0); aoFactor.indirectAmbientOcclusion = GTAOMultiBounce(min(ambientOcclusionFromData, indirectAmbientOcclusion), diffuseColor); - aoFactor.directSpecularOcclusion = GTAOMultiBounce(directSpecularOcclusion, fresnel0); - aoFactor.directAmbientOcclusion = GTAOMultiBounce(directAmbientOcclusion, diffuseColor); + // Note: when affecting direct lighting we don't used the fake bounce. + aoFactor.directSpecularOcclusion = directSpecularOcclusion; + aoFactor.directAmbientOcclusion = directAmbientOcclusion; } void ApplyAmbientOcclusionFactor(AmbientOcclusionFactor aoFactor, inout BuiltinData builtinData, inout AggregateLighting lighting) diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingLight.hlsl b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingLight.hlsl index faa8e3e75bf..f4a5cc2f65e 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingLight.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingLight.hlsl @@ -12,6 +12,7 @@ #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/ShaderVariablesRaytracingLightLoop.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Shadows/SphericalQuad.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Common/AtmosphericScatteringRayTracing.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingSampling.hlsl" // How many lights (at most) do we support at one given shading point // FIXME: hardcoded limits are evil, this LightList should instead be put together in C# @@ -327,6 +328,11 @@ float3 GetAreaEmission(LightData lightData, float centerU, float centerV, float return emission; } +float3 GetLightTransmission(float3 transmission, float shadowOpacity) +{ + return lerp(float3(1.0, 1.0, 1.0), transmission, shadowOpacity); +} + bool SampleLights(LightList lightList, float3 inputSample, float3 position, @@ -335,7 +341,8 @@ bool SampleLights(LightList lightList, out float3 outgoingDir, out float3 value, out float pdf, - out float dist) + out float dist, + out float shadowOpacity) { if (!GetLightCount(lightList)) return false; @@ -404,7 +411,15 @@ bool SampleLights(LightList lightList, } if (isVolume) + { value *= lightData.volumetricLightDimmer; + shadowOpacity = lightData.volumetricShadowDimmer; + } + else + { + value *= lightData.lightDimmer; + shadowOpacity = lightData.shadowDimmer; + } #ifndef LIGHT_EVALUATION_NO_HEIGHT_FOG ApplyFogAttenuation(position, outgoingDir, dist, value); @@ -435,7 +450,15 @@ bool SampleLights(LightList lightList, dist = FLT_INF; if (isVolume) + { value *= lightData.volumetricLightDimmer; + shadowOpacity = lightData.volumetricShadowDimmer; + } + else + { + value *= lightData.lightDimmer; + shadowOpacity = lightData.shadowDimmer; + } #ifndef LIGHT_EVALUATION_NO_HEIGHT_FOG ApplyFogAttenuation(position, outgoingDir, value); @@ -759,13 +782,13 @@ float PickLocalLightInterval(float3 rayOrigin, float3 rayDirection, inout float tMin = tLightMin; tMax = tLightMax; - inputSample /= wLight; + inputSample = RescaleSampleUnder(inputSample, wLight); } else { lightWeight *= 1.0 - wLight; - inputSample = (inputSample - wLight) / (1.0 - wLight); + inputSample = RescaleSampleOver(inputSample, wLight); } localCount++; @@ -793,13 +816,13 @@ float PickLocalLightInterval(float3 rayOrigin, float3 rayDirection, inout float tMin = tLightMin; tMax = tLightMax; - inputSample /= wLight; + inputSample = RescaleSampleUnder(inputSample, wLight); } else { lightWeight *= 1.0 - wLight; - inputSample = (inputSample - wLight) / (1.0 - wLight); + inputSample = RescaleSampleOver(inputSample, wLight); } localCount++; diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingSampling.hlsl b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingSampling.hlsl index 0f327d72cac..aaa48fbd0d9 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingSampling.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingSampling.hlsl @@ -44,4 +44,15 @@ bool RussianRouletteTest(float threshold, float value, float rand, out float fac return true; } +float RescaleSampleUnder(float inputSample, float threshold) +{ + return inputSample / threshold; +} + +float RescaleSampleOver(float inputSample, float threshold) +{ + // Make sure we never reach 1.0 due to numerical imprecision + return min((inputSample - threshold) / (1.0 - threshold), 0.99999); +} + #endif // UNITY_PATH_TRACING_SAMPLING_INCLUDED diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingVolume.hlsl b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingVolume.hlsl index f52a62edf15..58e699a74b2 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingVolume.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingVolume.hlsl @@ -1,9 +1,7 @@ #ifndef UNITY_PATH_TRACING_VOLUME_INCLUDED #define UNITY_PATH_TRACING_VOLUME_INCLUDED -#ifdef HAS_LIGHTLOOP #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingLight.hlsl" -#endif float ComputeHeightFogMultiplier(float height) { @@ -17,42 +15,46 @@ bool SampleVolumeScatteringPosition(uint2 pixelCoord, inout float inputSample, i if (!_FogEnabled || !_EnableVolumetricFog) return false; - // This will determin the interval in which volumetric scattering can occur + // This will determine the interval in which volumetric scattering can occur float tMin, tMax; float pdfVol = 1.0; float tFog = min(t, _MaxFogDistance); -#ifdef HAS_LIGHTLOOP - - float pickedLightWeight; - float localWeight = PickLocalLightInterval(WorldRayOrigin(), WorldRayDirection(), inputSample, lightPosition, pickedLightWeight, tMin, tMax); - - if (localWeight < 0.0) - return false; - - sampleLocalLights = inputSample < localWeight; - if (sampleLocalLights) + if (_FogDirectionalOnly) { - tMax = min(tMax, tFog); - if (tMin >= tMax) + if (!_DirectionalLightCount) return false; - inputSample /= localWeight; - pdfVol *= localWeight * pickedLightWeight; - } - else - { tMin = 0.0; tMax = tFog; + } + else // Directional and local lights + { + float pickedLightWeight; + float localWeight = PickLocalLightInterval(WorldRayOrigin(), WorldRayDirection(), inputSample, lightPosition, pickedLightWeight, tMin, tMax); + + if (localWeight < 0.0) + return false; - inputSample -= localWeight; - inputSample /= 1.0 - localWeight; - pdfVol *= 1.0 - localWeight; + sampleLocalLights = inputSample < localWeight; + if (sampleLocalLights) + { + tMax = min(tMax, tFog); + if (tMin >= tMax) + return false; + + inputSample = RescaleSampleUnder(inputSample, localWeight); + pdfVol *= localWeight * pickedLightWeight; + } + else + { + tMin = 0.0; + tMax = tFog; + + inputSample = RescaleSampleOver(inputSample, localWeight); + pdfVol *= 1.0 - localWeight; + } } -#else - tMin = 0.0; - tMax = tFog; -#endif // FIXME: not quite sure what the sigmaT value is supposed to be... const float sigmaT = _HeightFogBaseExtinction; @@ -62,27 +64,18 @@ bool SampleVolumeScatteringPosition(uint2 pixelCoord, inout float inputSample, i if (inputSample >= transmittanceThreshold) { - // Re-scale the sample - inputSample -= transmittanceThreshold; - inputSample /= 1.0 - transmittanceThreshold; - - // Adjust the pdf + inputSample = RescaleSampleOver(inputSample, transmittanceThreshold); pdf *= 1.0 - transmittanceThreshold; return false; } - // Re-scale the sample - inputSample /= transmittanceThreshold; - - // Adjust the pdf + inputSample = RescaleSampleUnder(inputSample, transmittanceThreshold); pdf *= pdfVol * transmittanceThreshold; // Exponential sampling float transmittance = transmittanceTMax + inputSample * (transmittanceTMin - transmittanceTMax); t = -log(transmittance) / sigmaT; - - // Adjust the pdf pdf *= sigmaT * transmittance / (transmittanceTMin - transmittanceTMax); return true; @@ -94,8 +87,6 @@ void ComputeVolumeScattering(inout PathIntersection pathIntersection : SV_RayPay // Reset the ray intersection color, which will store our final result pathIntersection.value = 0.0; -#ifdef HAS_LIGHTLOOP - // Grab depth information uint currentDepth = _RaytracingMaxRecursion - pathIntersection.remainingDepth; @@ -108,8 +99,7 @@ void ComputeVolumeScattering(inout PathIntersection pathIntersection : SV_RayPay // Create the list of active lights (a local light can be forced by providing its position) LightList lightList = CreateLightList(scatteringPosition, sampleLocalLights, lightPosition); - // Bunch of variables common to material and light sampling - float pdf; + float pdf, shadowOpacity; float3 value; RayDesc ray; @@ -121,7 +111,7 @@ void ComputeVolumeScattering(inout PathIntersection pathIntersection : SV_RayPay // Light sampling if (computeDirect) { - if (SampleLights(lightList, inputSample, scatteringPosition, 0.0, true, ray.Direction, value, pdf, ray.TMax)) + if (SampleLights(lightList, inputSample, scatteringPosition, 0.0, true, ray.Direction, value, pdf, ray.TMax, shadowOpacity)) { // FIXME: Apply phase function and divide by pdf (only isotropic for now, and not sure about sigmaS value) value *= _HeightFogBaseScattering.xyz * ComputeHeightFogMultiplier(scatteringPosition.y) * INV_FOUR_PI / pdf; @@ -137,12 +127,11 @@ void ComputeVolumeScattering(inout PathIntersection pathIntersection : SV_RayPay TraceRay(_RaytracingAccelerationStructure, RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH | RAY_FLAG_FORCE_NON_OPAQUE | RAY_FLAG_SKIP_CLOSEST_HIT_SHADER, RAYTRACINGRENDERERFLAG_CAST_SHADOW, 0, 1, 1, ray, nextPathIntersection); - pathIntersection.value += value * nextPathIntersection.value; + pathIntersection.value += value * GetLightTransmission(nextPathIntersection.value, shadowOpacity); } } } -#endif // HAS_LIGHTLOOP } #endif // UNITY_PATH_TRACING_VOLUME_INCLUDED diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassPathTracing.hlsl b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassPathTracing.hlsl index 1f34b464bb1..552a7276c75 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassPathTracing.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassPathTracing.hlsl @@ -4,10 +4,8 @@ // Path tracing includes #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingIntersection.hlsl" -#include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingVolume.hlsl" #ifdef HAS_LIGHTLOOP -#include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingLight.hlsl" -#include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingSampling.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingVolume.hlsl" #endif float PowerHeuristic(float f, float b) @@ -36,9 +34,9 @@ float ComputeVisibility(float3 position, float3 normal, float3 inputSample) // We will ignore value and pdf here, as we only want to catch occluders (no distance falloffs, cosines, etc.) float3 value; - float pdf; + float pdf, shadowOpacity; - if (SampleLights(lightList, inputSample, rayDescriptor.Origin, normal, false, rayDescriptor.Direction, value, pdf, rayDescriptor.TMax)) + if (SampleLights(lightList, inputSample, rayDescriptor.Origin, normal, false, rayDescriptor.Direction, value, pdf, rayDescriptor.TMax, shadowOpacity)) { // Shoot a transmission ray (to mark it as such, purposedly set remaining depth to an invalid value) PathIntersection intersection; @@ -50,7 +48,7 @@ float ComputeVisibility(float3 position, float3 normal, float3 inputSample) TraceRay(_RaytracingAccelerationStructure, RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH | RAY_FLAG_FORCE_NON_OPAQUE | RAY_FLAG_SKIP_CLOSEST_HIT_SHADER, RAYTRACINGRENDERERFLAG_CAST_SHADOW, 0, 1, 1, rayDescriptor, intersection); - visibility = Luminance(intersection.value); + visibility = Luminance(GetLightTransmission(intersection.value, shadowOpacity)); } return visibility; @@ -143,8 +141,7 @@ void ComputeSurfaceScattering(inout PathIntersection pathIntersection : SV_RayPa #endif LightList lightList = CreateLightList(shadingPosition, lightNormal, builtinData.renderingLayers); - // Bunch of variables common to material and light sampling - float pdf; + float pdf, shadowOpacity; float3 value; MaterialResult mtlResult; @@ -157,7 +154,7 @@ void ComputeSurfaceScattering(inout PathIntersection pathIntersection : SV_RayPa // Light sampling if (computeDirect) { - if (SampleLights(lightList, inputSample.xyz, rayDescriptor.Origin, lightNormal, false, rayDescriptor.Direction, value, pdf, rayDescriptor.TMax)) + if (SampleLights(lightList, inputSample.xyz, rayDescriptor.Origin, lightNormal, false, rayDescriptor.Direction, value, pdf, rayDescriptor.TMax, shadowOpacity)) { EvaluateMaterial(mtlData, rayDescriptor.Direction, mtlResult); @@ -174,7 +171,7 @@ void ComputeSurfaceScattering(inout PathIntersection pathIntersection : SV_RayPa RAYTRACINGRENDERERFLAG_CAST_SHADOW, 0, 1, 1, rayDescriptor, nextPathIntersection); float misWeight = PowerHeuristic(pdf, mtlResult.diffPdf + mtlResult.specPdf); - pathIntersection.value += value * nextPathIntersection.value * misWeight; + pathIntersection.value += value * GetLightTransmission(nextPathIntersection.value, shadowOpacity) * misWeight; } } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariablesGlobal.cs b/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariablesGlobal.cs index ee4c7a6ce4e..7b25f4a358d 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariablesGlobal.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariablesGlobal.cs @@ -130,7 +130,7 @@ unsafe struct ShaderVariablesGlobal public float _FogColorMode; public float _GlobalMipBias; public float _GlobalMipBiasPow2; - public float _Pad2; + public float _Pad0; public Vector4 _MipFogParameters; public Vector4 _HeightFogBaseScattering; public float _HeightFogBaseExtinction; @@ -138,8 +138,8 @@ unsafe struct ShaderVariablesGlobal public float _GlobalFogAnisotropy; public int _VolumetricFilteringEnabled; public Vector2 _HeightFogExponents; // { 1/H, H } - public float _Pad4; - public float _Pad5; + public int _FogDirectionalOnly; + public float _Pad1; // VBuffer public Vector4 _VBufferViewportSize; // { w, h, 1/w, 1/h } diff --git a/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariablesGlobal.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariablesGlobal.cs.hlsl index c21c0b38fca..701c9f45e54 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariablesGlobal.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariablesGlobal.cs.hlsl @@ -58,7 +58,7 @@ GLOBAL_CBUFFER_START(ShaderVariablesGlobal, b0) float _FogColorMode; float _GlobalMipBias; float _GlobalMipBiasPow2; - float _Pad2; + float _Pad0; float4 _MipFogParameters; float4 _HeightFogBaseScattering; float _HeightFogBaseExtinction; @@ -66,8 +66,8 @@ GLOBAL_CBUFFER_START(ShaderVariablesGlobal, b0) float _GlobalFogAnisotropy; int _VolumetricFilteringEnabled; float2 _HeightFogExponents; - float _Pad4; - float _Pad5; + int _FogDirectionalOnly; + float _Pad1; float4 _VBufferViewportSize; float4 _VBufferLightingViewportScale; float4 _VBufferLightingViewportLimit; diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Materials/General/DecalPuddle_Mat.mat b/com.unity.template-hd/Assets/SampleSceneAssets/Materials/General/DecalPuddle_Mat.mat index e8a5b95c4a4..68de31a1b6c 100644 --- a/com.unity.template-hd/Assets/SampleSceneAssets/Materials/General/DecalPuddle_Mat.mat +++ b/com.unity.template-hd/Assets/SampleSceneAssets/Materials/General/DecalPuddle_Mat.mat @@ -14,7 +14,7 @@ Material: m_LightmapFlags: 4 m_EnableInstancingVariants: 1 m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 + m_CustomRenderQueue: 2000 stringTagMap: {} disabledShaderPasses: - DistortionVectors diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Materials/General/DecalWearDark_Mat.mat b/com.unity.template-hd/Assets/SampleSceneAssets/Materials/General/DecalWearDark_Mat.mat index 845197cb3b9..2f5bd817848 100644 --- a/com.unity.template-hd/Assets/SampleSceneAssets/Materials/General/DecalWearDark_Mat.mat +++ b/com.unity.template-hd/Assets/SampleSceneAssets/Materials/General/DecalWearDark_Mat.mat @@ -30,7 +30,7 @@ Material: m_LightmapFlags: 4 m_EnableInstancingVariants: 1 m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 + m_CustomRenderQueue: 2010 stringTagMap: {} disabledShaderPasses: - DistortionVectors diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Materials/General/DecalWear_Mat.mat b/com.unity.template-hd/Assets/SampleSceneAssets/Materials/General/DecalWear_Mat.mat index 15aa096a225..4d7a4da0a08 100644 --- a/com.unity.template-hd/Assets/SampleSceneAssets/Materials/General/DecalWear_Mat.mat +++ b/com.unity.template-hd/Assets/SampleSceneAssets/Materials/General/DecalWear_Mat.mat @@ -30,7 +30,7 @@ Material: m_LightmapFlags: 4 m_EnableInstancingVariants: 1 m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 + m_CustomRenderQueue: 2010 stringTagMap: {} disabledShaderPasses: - DistortionVectors diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Materials/General/Decal_Mat.mat b/com.unity.template-hd/Assets/SampleSceneAssets/Materials/General/Decal_Mat.mat index 55464960a7e..4679b858ed8 100644 --- a/com.unity.template-hd/Assets/SampleSceneAssets/Materials/General/Decal_Mat.mat +++ b/com.unity.template-hd/Assets/SampleSceneAssets/Materials/General/Decal_Mat.mat @@ -13,7 +13,7 @@ Material: m_LightmapFlags: 4 m_EnableInstancingVariants: 1 m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 + m_CustomRenderQueue: 1999 stringTagMap: {} disabledShaderPasses: - DistortionVectors diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Materials/General/WallDirt_Mat.mat b/com.unity.template-hd/Assets/SampleSceneAssets/Materials/General/WallDirt_Mat.mat index ae3d6265247..b16cf2c30ac 100644 --- a/com.unity.template-hd/Assets/SampleSceneAssets/Materials/General/WallDirt_Mat.mat +++ b/com.unity.template-hd/Assets/SampleSceneAssets/Materials/General/WallDirt_Mat.mat @@ -14,7 +14,7 @@ Material: m_LightmapFlags: 4 m_EnableInstancingVariants: 1 m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 + m_CustomRenderQueue: 2000 stringTagMap: {} disabledShaderPasses: - DistortionVectors diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Meshes/Structure/Model/SR_SectionFloor_01.fbx.meta b/com.unity.template-hd/Assets/SampleSceneAssets/Meshes/Structure/Model/SR_SectionFloor_01.fbx.meta index e78fcb24f9b..daadfce4ef4 100644 --- a/com.unity.template-hd/Assets/SampleSceneAssets/Meshes/Structure/Model/SR_SectionFloor_01.fbx.meta +++ b/com.unity.template-hd/Assets/SampleSceneAssets/Meshes/Structure/Model/SR_SectionFloor_01.fbx.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: a613aa8222f19e441ba4840c930f7489 ModelImporter: - serializedVersion: 21202 + serializedVersion: 22101 internalIDToNameTable: [] externalObjects: - first: @@ -77,9 +77,10 @@ ModelImporter: secondaryUVMinObjectScale: 1 secondaryUVPackMargin: 4 useFileScale: 1 + strictVertexDataChecks: 0 tangentSpace: normalSmoothAngle: 60 - normalImportMode: 0 + normalImportMode: 1 tangentImportMode: 3 normalCalculationMode: 4 legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Meshes/Structure/Model/TR_SectionA_01.fbx.meta b/com.unity.template-hd/Assets/SampleSceneAssets/Meshes/Structure/Model/TR_SectionA_01.fbx.meta index 30ad8b2ee36..9d9e74b5df2 100644 --- a/com.unity.template-hd/Assets/SampleSceneAssets/Meshes/Structure/Model/TR_SectionA_01.fbx.meta +++ b/com.unity.template-hd/Assets/SampleSceneAssets/Meshes/Structure/Model/TR_SectionA_01.fbx.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 78ec04c4abf3e224fa4403171c5420d0 ModelImporter: - serializedVersion: 21202 + serializedVersion: 22101 internalIDToNameTable: [] externalObjects: - first: @@ -127,6 +127,7 @@ ModelImporter: secondaryUVMinObjectScale: 1 secondaryUVPackMargin: 16 useFileScale: 1 + strictVertexDataChecks: 0 tangentSpace: normalSmoothAngle: 60 normalImportMode: 0 diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene.unity b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene.unity index 8314cf60ec2..e73ae786441 100644 --- a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene.unity +++ b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 1481.7334, g: 1836.25, b: 2431.4434, a: 1} + m_IndirectSpecularColor: {r: 2177.4492, g: 2307.7363, b: 2757.1465, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -1186,6 +1186,35 @@ MonoBehaviour: m_CaptureRotation: {x: 0, y: 0, z: 0, w: 0} m_FieldOfView: 0 m_Aspect: 0 + m_SHForNormalization: + sh[ 0]: 0 + sh[ 1]: 0 + sh[ 2]: 0 + sh[ 3]: 0 + sh[ 4]: 0 + sh[ 5]: 0 + sh[ 6]: 0 + sh[ 7]: 0 + sh[ 8]: 0 + sh[ 9]: 0 + sh[10]: 0 + sh[11]: 0 + sh[12]: 0 + sh[13]: 0 + sh[14]: 0 + sh[15]: 0 + sh[16]: 0 + sh[17]: 0 + sh[18]: 0 + sh[19]: 0 + sh[20]: 0 + sh[21]: 0 + sh[22]: 0 + sh[23]: 0 + sh[24]: 0 + sh[25]: 0 + sh[26]: 0 + m_HasValidSHForNormalization: 0 m_HDProbeVersion: 3 m_ObsoleteInfiniteProjection: 1 m_ObsoleteInfluenceVolume: @@ -3199,6 +3228,35 @@ MonoBehaviour: m_CaptureRotation: {x: 0, y: 0, z: 0, w: 0} m_FieldOfView: 0 m_Aspect: 0 + m_SHForNormalization: + sh[ 0]: 0 + sh[ 1]: 0 + sh[ 2]: 0 + sh[ 3]: 0 + sh[ 4]: 0 + sh[ 5]: 0 + sh[ 6]: 0 + sh[ 7]: 0 + sh[ 8]: 0 + sh[ 9]: 0 + sh[10]: 0 + sh[11]: 0 + sh[12]: 0 + sh[13]: 0 + sh[14]: 0 + sh[15]: 0 + sh[16]: 0 + sh[17]: 0 + sh[18]: 0 + sh[19]: 0 + sh[20]: 0 + sh[21]: 0 + sh[22]: 0 + sh[23]: 0 + sh[24]: 0 + sh[25]: 0 + sh[26]: 0 + m_HasValidSHForNormalization: 0 m_HDProbeVersion: 3 m_ObsoleteInfiniteProjection: 1 m_ObsoleteInfluenceVolume: @@ -3368,6 +3426,7 @@ MonoBehaviour: m_Profile: {fileID: 11400000, guid: 7f342610b85f4164f808a1f380dcc668, type: 2} m_StaticLightingSkyUniqueID: 1 m_StaticLightingCloudsUniqueID: 0 + m_StaticLightingVolumetricClouds: 0 --- !u!4 &313761475 Transform: m_ObjectHideFlags: 1 @@ -3683,6 +3742,35 @@ MonoBehaviour: m_CaptureRotation: {x: 0, y: 0, z: 0, w: 0} m_FieldOfView: 0 m_Aspect: 0 + m_SHForNormalization: + sh[ 0]: 0 + sh[ 1]: 0 + sh[ 2]: 0 + sh[ 3]: 0 + sh[ 4]: 0 + sh[ 5]: 0 + sh[ 6]: 0 + sh[ 7]: 0 + sh[ 8]: 0 + sh[ 9]: 0 + sh[10]: 0 + sh[11]: 0 + sh[12]: 0 + sh[13]: 0 + sh[14]: 0 + sh[15]: 0 + sh[16]: 0 + sh[17]: 0 + sh[18]: 0 + sh[19]: 0 + sh[20]: 0 + sh[21]: 0 + sh[22]: 0 + sh[23]: 0 + sh[24]: 0 + sh[25]: 0 + sh[26]: 0 + m_HasValidSHForNormalization: 0 m_HDProbeVersion: 3 m_ObsoleteInfiniteProjection: 1 m_ObsoleteInfluenceVolume: @@ -3878,7 +3966,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} m_Name: m_EditorClassIdentifier: - isGlobal: 0 + m_IsGlobal: 0 priority: 3 blendDistance: 3 weight: 1 @@ -4042,7 +4130,7 @@ MonoBehaviour: useOcclusionCulling: 1 cullingMask: serializedVersion: 2 - m_Bits: 4294967295 + m_Bits: 311 sceneCullingMaskOverride: 0 invertFaceCulling: 0 flipYMode: 0 @@ -4183,6 +4271,35 @@ MonoBehaviour: m_CaptureRotation: {x: 0, y: 0, z: 0, w: 0} m_FieldOfView: 0 m_Aspect: 0 + m_SHForNormalization: + sh[ 0]: 0 + sh[ 1]: 0 + sh[ 2]: 0 + sh[ 3]: 0 + sh[ 4]: 0 + sh[ 5]: 0 + sh[ 6]: 0 + sh[ 7]: 0 + sh[ 8]: 0 + sh[ 9]: 0 + sh[10]: 0 + sh[11]: 0 + sh[12]: 0 + sh[13]: 0 + sh[14]: 0 + sh[15]: 0 + sh[16]: 0 + sh[17]: 0 + sh[18]: 0 + sh[19]: 0 + sh[20]: 0 + sh[21]: 0 + sh[22]: 0 + sh[23]: 0 + sh[24]: 0 + sh[25]: 0 + sh[26]: 0 + m_HasValidSHForNormalization: 0 m_HDProbeVersion: 3 m_ObsoleteInfiniteProjection: 1 m_ObsoleteInfluenceVolume: @@ -4447,7 +4564,7 @@ GameObject: - component: {fileID: 398789244} - component: {fileID: 398789246} - component: {fileID: 398789245} - m_Layer: 0 + m_Layer: 9 m_Name: FloatingDust Cage m_TagString: Untagged m_Icon: {fileID: 0} @@ -5538,6 +5655,35 @@ MonoBehaviour: m_CaptureRotation: {x: 0, y: 0, z: 0, w: 0} m_FieldOfView: 0 m_Aspect: 0 + m_SHForNormalization: + sh[ 0]: 0 + sh[ 1]: 0 + sh[ 2]: 0 + sh[ 3]: 0 + sh[ 4]: 0 + sh[ 5]: 0 + sh[ 6]: 0 + sh[ 7]: 0 + sh[ 8]: 0 + sh[ 9]: 0 + sh[10]: 0 + sh[11]: 0 + sh[12]: 0 + sh[13]: 0 + sh[14]: 0 + sh[15]: 0 + sh[16]: 0 + sh[17]: 0 + sh[18]: 0 + sh[19]: 0 + sh[20]: 0 + sh[21]: 0 + sh[22]: 0 + sh[23]: 0 + sh[24]: 0 + sh[25]: 0 + sh[26]: 0 + m_HasValidSHForNormalization: 0 m_HDProbeVersion: 3 m_ObsoleteInfiniteProjection: 1 m_ObsoleteInfluenceVolume: @@ -5856,6 +6002,7 @@ MonoBehaviour: taaAntiFlicker: 0.5 taaMotionVectorRejection: 0 taaAntiHistoryRinging: 0 + taaBaseBlendFactor: 0.875 physicalParameters: m_Iso: 200 m_ShutterSpeed: 0.005 @@ -7178,7 +7325,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} m_Name: m_EditorClassIdentifier: - isGlobal: 1 + m_IsGlobal: 1 priority: 0 blendDistance: 0 weight: 1 @@ -8343,6 +8490,7 @@ MonoBehaviour: taaAntiFlicker: 0.5 taaMotionVectorRejection: 0 taaAntiHistoryRinging: 0 + taaBaseBlendFactor: 0.875 physicalParameters: m_Iso: 200 m_ShutterSpeed: 0.005 @@ -9086,6 +9234,7 @@ MonoBehaviour: taaAntiFlicker: 0.5 taaMotionVectorRejection: 0 taaAntiHistoryRinging: 0 + taaBaseBlendFactor: 0.875 physicalParameters: m_Iso: 200 m_ShutterSpeed: 0.005 @@ -9496,7 +9645,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} m_Name: m_EditorClassIdentifier: - isGlobal: 0 + m_IsGlobal: 0 priority: 3 blendDistance: 4 weight: 1 @@ -9630,7 +9779,7 @@ GameObject: - component: {fileID: 766848765} - component: {fileID: 766848767} - component: {fileID: 766848766} - m_Layer: 0 + m_Layer: 9 m_Name: FloatingDust Corridor m_TagString: Untagged m_Icon: {fileID: 0} @@ -9900,7 +10049,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} m_Name: m_EditorClassIdentifier: - isGlobal: 0 + m_IsGlobal: 0 priority: 3 blendDistance: 3 weight: 1 @@ -10020,7 +10169,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} m_Name: m_EditorClassIdentifier: - isGlobal: 1 + m_IsGlobal: 1 priority: 0 blendDistance: 0 weight: 1 @@ -10174,7 +10323,7 @@ GameObject: - component: {fileID: 819419776} - component: {fileID: 819419778} - component: {fileID: 819419777} - m_Layer: 0 + m_Layer: 9 m_Name: FloatingDust Sitting Area m_TagString: Untagged m_Icon: {fileID: 0} @@ -10730,7 +10879,7 @@ GameObject: - component: {fileID: 896213161} - component: {fileID: 896213163} - component: {fileID: 896213162} - m_Layer: 0 + m_Layer: 9 m_Name: FloatingDust Bar m_TagString: Untagged m_Icon: {fileID: 0} @@ -11707,7 +11856,7 @@ GameObject: - component: {fileID: 961646058} - component: {fileID: 961646060} - component: {fileID: 961646059} - m_Layer: 0 + m_Layer: 9 m_Name: Butterflies m_TagString: Untagged m_Icon: {fileID: 0} @@ -12267,6 +12416,35 @@ MonoBehaviour: m_CaptureRotation: {x: 0, y: 0, z: 0, w: 0} m_FieldOfView: 0 m_Aspect: 0 + m_SHForNormalization: + sh[ 0]: 0 + sh[ 1]: 0 + sh[ 2]: 0 + sh[ 3]: 0 + sh[ 4]: 0 + sh[ 5]: 0 + sh[ 6]: 0 + sh[ 7]: 0 + sh[ 8]: 0 + sh[ 9]: 0 + sh[10]: 0 + sh[11]: 0 + sh[12]: 0 + sh[13]: 0 + sh[14]: 0 + sh[15]: 0 + sh[16]: 0 + sh[17]: 0 + sh[18]: 0 + sh[19]: 0 + sh[20]: 0 + sh[21]: 0 + sh[22]: 0 + sh[23]: 0 + sh[24]: 0 + sh[25]: 0 + sh[26]: 0 + m_HasValidSHForNormalization: 0 m_HDProbeVersion: 3 m_ObsoleteInfiniteProjection: 1 m_ObsoleteInfluenceVolume: @@ -12891,6 +13069,35 @@ MonoBehaviour: m_CaptureRotation: {x: 0, y: 0, z: 0, w: 0} m_FieldOfView: 0 m_Aspect: 0 + m_SHForNormalization: + sh[ 0]: 0 + sh[ 1]: 0 + sh[ 2]: 0 + sh[ 3]: 0 + sh[ 4]: 0 + sh[ 5]: 0 + sh[ 6]: 0 + sh[ 7]: 0 + sh[ 8]: 0 + sh[ 9]: 0 + sh[10]: 0 + sh[11]: 0 + sh[12]: 0 + sh[13]: 0 + sh[14]: 0 + sh[15]: 0 + sh[16]: 0 + sh[17]: 0 + sh[18]: 0 + sh[19]: 0 + sh[20]: 0 + sh[21]: 0 + sh[22]: 0 + sh[23]: 0 + sh[24]: 0 + sh[25]: 0 + sh[26]: 0 + m_HasValidSHForNormalization: 0 m_HDProbeVersion: 3 m_ObsoleteInfiniteProjection: 1 m_ObsoleteInfluenceVolume: @@ -14639,6 +14846,7 @@ MonoBehaviour: taaAntiFlicker: 0.5 taaMotionVectorRejection: 0 taaAntiHistoryRinging: 0 + taaBaseBlendFactor: 0.875 physicalParameters: m_Iso: 200 m_ShutterSpeed: 0.005 @@ -17379,6 +17587,7 @@ MonoBehaviour: taaAntiFlicker: 0.5 taaMotionVectorRejection: 0 taaAntiHistoryRinging: 0 + taaBaseBlendFactor: 0.875 physicalParameters: m_Iso: 200 m_ShutterSpeed: 0.005 @@ -17681,7 +17890,7 @@ MonoBehaviour: invertFade: 0 distanceFadeStart: 50 distanceFadeEnd: 60 - textureOffset: {x: -0, y: -202.36209, z: 0} + textureOffset: {x: -0, y: -35.753643, z: 0} falloffMode: 0 m_Version: 2 --- !u!1001 &1504255721 @@ -17969,6 +18178,7 @@ MonoBehaviour: taaAntiFlicker: 0.5 taaMotionVectorRejection: 0 taaAntiHistoryRinging: 0 + taaBaseBlendFactor: 0.875 physicalParameters: m_Iso: 200 m_ShutterSpeed: 0.005 @@ -18843,6 +19053,35 @@ MonoBehaviour: m_CaptureRotation: {x: 0, y: 0, z: 0, w: 0} m_FieldOfView: 0 m_Aspect: 0 + m_SHForNormalization: + sh[ 0]: 0 + sh[ 1]: 0 + sh[ 2]: 0 + sh[ 3]: 0 + sh[ 4]: 0 + sh[ 5]: 0 + sh[ 6]: 0 + sh[ 7]: 0 + sh[ 8]: 0 + sh[ 9]: 0 + sh[10]: 0 + sh[11]: 0 + sh[12]: 0 + sh[13]: 0 + sh[14]: 0 + sh[15]: 0 + sh[16]: 0 + sh[17]: 0 + sh[18]: 0 + sh[19]: 0 + sh[20]: 0 + sh[21]: 0 + sh[22]: 0 + sh[23]: 0 + sh[24]: 0 + sh[25]: 0 + sh[26]: 0 + m_HasValidSHForNormalization: 0 m_HDProbeVersion: 3 m_ObsoleteInfiniteProjection: 1 m_ObsoleteInfluenceVolume: @@ -19113,6 +19352,7 @@ MonoBehaviour: taaAntiFlicker: 0.7 taaMotionVectorRejection: 0 taaAntiHistoryRinging: 0 + taaBaseBlendFactor: 0.875 physicalParameters: m_Iso: 200 m_ShutterSpeed: 0.005 @@ -19365,7 +19605,7 @@ GameObject: - component: {fileID: 1605415970} - component: {fileID: 1605415972} - component: {fileID: 1605415971} - m_Layer: 0 + m_Layer: 9 m_Name: FloatingDust Recessed Light m_TagString: Untagged m_Icon: {fileID: 0} @@ -19567,7 +19807,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} m_Name: m_EditorClassIdentifier: - isGlobal: 0 + m_IsGlobal: 0 priority: 1 blendDistance: 0 weight: 1 @@ -19994,6 +20234,35 @@ MonoBehaviour: m_CaptureRotation: {x: 0, y: 0, z: 0, w: 0} m_FieldOfView: 0 m_Aspect: 0 + m_SHForNormalization: + sh[ 0]: 0 + sh[ 1]: 0 + sh[ 2]: 0 + sh[ 3]: 0 + sh[ 4]: 0 + sh[ 5]: 0 + sh[ 6]: 0 + sh[ 7]: 0 + sh[ 8]: 0 + sh[ 9]: 0 + sh[10]: 0 + sh[11]: 0 + sh[12]: 0 + sh[13]: 0 + sh[14]: 0 + sh[15]: 0 + sh[16]: 0 + sh[17]: 0 + sh[18]: 0 + sh[19]: 0 + sh[20]: 0 + sh[21]: 0 + sh[22]: 0 + sh[23]: 0 + sh[24]: 0 + sh[25]: 0 + sh[26]: 0 + m_HasValidSHForNormalization: 0 m_HDProbeVersion: 3 m_ObsoleteInfiniteProjection: 1 m_ObsoleteInfluenceVolume: @@ -20431,6 +20700,35 @@ MonoBehaviour: m_CaptureRotation: {x: 0, y: 0, z: 0, w: 0} m_FieldOfView: 0 m_Aspect: 0 + m_SHForNormalization: + sh[ 0]: 0 + sh[ 1]: 0 + sh[ 2]: 0 + sh[ 3]: 0 + sh[ 4]: 0 + sh[ 5]: 0 + sh[ 6]: 0 + sh[ 7]: 0 + sh[ 8]: 0 + sh[ 9]: 0 + sh[10]: 0 + sh[11]: 0 + sh[12]: 0 + sh[13]: 0 + sh[14]: 0 + sh[15]: 0 + sh[16]: 0 + sh[17]: 0 + sh[18]: 0 + sh[19]: 0 + sh[20]: 0 + sh[21]: 0 + sh[22]: 0 + sh[23]: 0 + sh[24]: 0 + sh[25]: 0 + sh[26]: 0 + m_HasValidSHForNormalization: 0 m_HDProbeVersion: 3 m_ObsoleteInfiniteProjection: 1 m_ObsoleteInfluenceVolume: @@ -21206,6 +21504,35 @@ MonoBehaviour: m_CaptureRotation: {x: 0, y: 0, z: 0, w: 0} m_FieldOfView: 0 m_Aspect: 0 + m_SHForNormalization: + sh[ 0]: 0 + sh[ 1]: 0 + sh[ 2]: 0 + sh[ 3]: 0 + sh[ 4]: 0 + sh[ 5]: 0 + sh[ 6]: 0 + sh[ 7]: 0 + sh[ 8]: 0 + sh[ 9]: 0 + sh[10]: 0 + sh[11]: 0 + sh[12]: 0 + sh[13]: 0 + sh[14]: 0 + sh[15]: 0 + sh[16]: 0 + sh[17]: 0 + sh[18]: 0 + sh[19]: 0 + sh[20]: 0 + sh[21]: 0 + sh[22]: 0 + sh[23]: 0 + sh[24]: 0 + sh[25]: 0 + sh[26]: 0 + m_HasValidSHForNormalization: 0 m_HDProbeVersion: 3 m_ObsoleteInfiniteProjection: 1 m_ObsoleteInfluenceVolume: @@ -21832,6 +22159,35 @@ MonoBehaviour: m_CaptureRotation: {x: 0, y: 0, z: 0, w: 0} m_FieldOfView: 0 m_Aspect: 0 + m_SHForNormalization: + sh[ 0]: 0 + sh[ 1]: 0 + sh[ 2]: 0 + sh[ 3]: 0 + sh[ 4]: 0 + sh[ 5]: 0 + sh[ 6]: 0 + sh[ 7]: 0 + sh[ 8]: 0 + sh[ 9]: 0 + sh[10]: 0 + sh[11]: 0 + sh[12]: 0 + sh[13]: 0 + sh[14]: 0 + sh[15]: 0 + sh[16]: 0 + sh[17]: 0 + sh[18]: 0 + sh[19]: 0 + sh[20]: 0 + sh[21]: 0 + sh[22]: 0 + sh[23]: 0 + sh[24]: 0 + sh[25]: 0 + sh[26]: 0 + m_HasValidSHForNormalization: 0 m_HDProbeVersion: 3 m_ObsoleteInfiniteProjection: 1 m_ObsoleteInfluenceVolume: @@ -22530,7 +22886,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1766869843} - m_Layer: 0 + m_Layer: 9 m_Name: VFX m_TagString: Untagged m_Icon: {fileID: 0} @@ -22962,6 +23318,7 @@ MonoBehaviour: taaAntiFlicker: 0.5 taaMotionVectorRejection: 0 taaAntiHistoryRinging: 0 + taaBaseBlendFactor: 0.875 physicalParameters: m_Iso: 200 m_ShutterSpeed: 0.005 @@ -23706,7 +24063,7 @@ MonoBehaviour: m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 1 - capturePositionProxySpace: {x: -3.2577028, y: -0.24340966, z: -0.12483591} + capturePositionProxySpace: {x: -1.9018308, y: -0.24341021, z: -0.12483591} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} @@ -23913,6 +24270,35 @@ MonoBehaviour: m_CaptureRotation: {x: 0, y: 0, z: 0, w: 0} m_FieldOfView: 0 m_Aspect: 0 + m_SHForNormalization: + sh[ 0]: 0 + sh[ 1]: 0 + sh[ 2]: 0 + sh[ 3]: 0 + sh[ 4]: 0 + sh[ 5]: 0 + sh[ 6]: 0 + sh[ 7]: 0 + sh[ 8]: 0 + sh[ 9]: 0 + sh[10]: 0 + sh[11]: 0 + sh[12]: 0 + sh[13]: 0 + sh[14]: 0 + sh[15]: 0 + sh[16]: 0 + sh[17]: 0 + sh[18]: 0 + sh[19]: 0 + sh[20]: 0 + sh[21]: 0 + sh[22]: 0 + sh[23]: 0 + sh[24]: 0 + sh[25]: 0 + sh[26]: 0 + m_HasValidSHForNormalization: 0 m_HDProbeVersion: 3 m_ObsoleteInfiniteProjection: 1 m_ObsoleteInfluenceVolume: @@ -24027,7 +24413,7 @@ ReflectionProbe: m_Enabled: 1 serializedVersion: 2 m_Type: 0 - m_Mode: 2 + m_Mode: 1 m_RefreshMode: 2 m_TimeSlicingMode: 0 m_Resolution: 128 @@ -24831,7 +25217,7 @@ GameObject: - component: {fileID: 1879258401} - component: {fileID: 1879258403} - component: {fileID: 1879258402} - m_Layer: 0 + m_Layer: 9 m_Name: FallingLeaves m_TagString: Untagged m_Icon: {fileID: 0} @@ -25473,6 +25859,35 @@ MonoBehaviour: m_CaptureRotation: {x: 0, y: 0, z: 0, w: 0} m_FieldOfView: 0 m_Aspect: 0 + m_SHForNormalization: + sh[ 0]: 0 + sh[ 1]: 0 + sh[ 2]: 0 + sh[ 3]: 0 + sh[ 4]: 0 + sh[ 5]: 0 + sh[ 6]: 0 + sh[ 7]: 0 + sh[ 8]: 0 + sh[ 9]: 0 + sh[10]: 0 + sh[11]: 0 + sh[12]: 0 + sh[13]: 0 + sh[14]: 0 + sh[15]: 0 + sh[16]: 0 + sh[17]: 0 + sh[18]: 0 + sh[19]: 0 + sh[20]: 0 + sh[21]: 0 + sh[22]: 0 + sh[23]: 0 + sh[24]: 0 + sh[25]: 0 + sh[26]: 0 + m_HasValidSHForNormalization: 0 m_HDProbeVersion: 3 m_ObsoleteInfiniteProjection: 1 m_ObsoleteInfluenceVolume: @@ -25673,6 +26088,7 @@ MonoBehaviour: taaAntiFlicker: 0.5 taaMotionVectorRejection: 0 taaAntiHistoryRinging: 0 + taaBaseBlendFactor: 0.875 physicalParameters: m_Iso: 200 m_ShutterSpeed: 0.005 @@ -25881,6 +26297,7 @@ MonoBehaviour: taaAntiFlicker: 0.5 taaMotionVectorRejection: 0 taaAntiHistoryRinging: 0 + taaBaseBlendFactor: 0.875 physicalParameters: m_Iso: 200 m_ShutterSpeed: 0.005 @@ -26144,6 +26561,7 @@ MonoBehaviour: taaAntiFlicker: 0.7 taaMotionVectorRejection: 0 taaAntiHistoryRinging: 0 + taaBaseBlendFactor: 0.875 physicalParameters: m_Iso: 200 m_ShutterSpeed: 0.005 @@ -27257,6 +27675,7 @@ MonoBehaviour: taaAntiFlicker: 0.5 taaMotionVectorRejection: 0 taaAntiHistoryRinging: 0 + taaBaseBlendFactor: 0.875 physicalParameters: m_Iso: 200 m_ShutterSpeed: 0.005 @@ -27687,6 +28106,35 @@ MonoBehaviour: m_CaptureRotation: {x: 0, y: 0, z: 0, w: 0} m_FieldOfView: 0 m_Aspect: 0 + m_SHForNormalization: + sh[ 0]: 0 + sh[ 1]: 0 + sh[ 2]: 0 + sh[ 3]: 0 + sh[ 4]: 0 + sh[ 5]: 0 + sh[ 6]: 0 + sh[ 7]: 0 + sh[ 8]: 0 + sh[ 9]: 0 + sh[10]: 0 + sh[11]: 0 + sh[12]: 0 + sh[13]: 0 + sh[14]: 0 + sh[15]: 0 + sh[16]: 0 + sh[17]: 0 + sh[18]: 0 + sh[19]: 0 + sh[20]: 0 + sh[21]: 0 + sh[22]: 0 + sh[23]: 0 + sh[24]: 0 + sh[25]: 0 + sh[26]: 0 + m_HasValidSHForNormalization: 0 m_HDProbeVersion: 3 m_ObsoleteInfiniteProjection: 1 m_ObsoleteInfluenceVolume: @@ -30057,6 +30505,35 @@ MonoBehaviour: m_CaptureRotation: {x: 0, y: 0, z: 0, w: 0} m_FieldOfView: 0 m_Aspect: 0 + m_SHForNormalization: + sh[ 0]: 0 + sh[ 1]: 0 + sh[ 2]: 0 + sh[ 3]: 0 + sh[ 4]: 0 + sh[ 5]: 0 + sh[ 6]: 0 + sh[ 7]: 0 + sh[ 8]: 0 + sh[ 9]: 0 + sh[10]: 0 + sh[11]: 0 + sh[12]: 0 + sh[13]: 0 + sh[14]: 0 + sh[15]: 0 + sh[16]: 0 + sh[17]: 0 + sh[18]: 0 + sh[19]: 0 + sh[20]: 0 + sh[21]: 0 + sh[22]: 0 + sh[23]: 0 + sh[24]: 0 + sh[25]: 0 + sh[26]: 0 + m_HasValidSHForNormalization: 0 m_HDProbeVersion: 3 m_ObsoleteInfiniteProjection: 1 m_ObsoleteInfluenceVolume: @@ -30499,7 +30976,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} m_Name: m_EditorClassIdentifier: - isGlobal: 0 + m_IsGlobal: 0 priority: 2 blendDistance: 1 weight: 1 @@ -30937,6 +31414,35 @@ MonoBehaviour: m_CaptureRotation: {x: 0, y: 0, z: 0, w: 0} m_FieldOfView: 0 m_Aspect: 0 + m_SHForNormalization: + sh[ 0]: 0 + sh[ 1]: 0 + sh[ 2]: 0 + sh[ 3]: 0 + sh[ 4]: 0 + sh[ 5]: 0 + sh[ 6]: 0 + sh[ 7]: 0 + sh[ 8]: 0 + sh[ 9]: 0 + sh[10]: 0 + sh[11]: 0 + sh[12]: 0 + sh[13]: 0 + sh[14]: 0 + sh[15]: 0 + sh[16]: 0 + sh[17]: 0 + sh[18]: 0 + sh[19]: 0 + sh[20]: 0 + sh[21]: 0 + sh[22]: 0 + sh[23]: 0 + sh[24]: 0 + sh[25]: 0 + sh[26]: 0 + m_HasValidSHForNormalization: 0 m_HDProbeVersion: 3 m_ObsoleteInfiniteProjection: 1 m_ObsoleteInfluenceVolume: @@ -31308,6 +31814,35 @@ MonoBehaviour: m_CaptureRotation: {x: 0, y: 0, z: 0, w: 0} m_FieldOfView: 0 m_Aspect: 0 + m_SHForNormalization: + sh[ 0]: 0 + sh[ 1]: 0 + sh[ 2]: 0 + sh[ 3]: 0 + sh[ 4]: 0 + sh[ 5]: 0 + sh[ 6]: 0 + sh[ 7]: 0 + sh[ 8]: 0 + sh[ 9]: 0 + sh[10]: 0 + sh[11]: 0 + sh[12]: 0 + sh[13]: 0 + sh[14]: 0 + sh[15]: 0 + sh[16]: 0 + sh[17]: 0 + sh[18]: 0 + sh[19]: 0 + sh[20]: 0 + sh[21]: 0 + sh[22]: 0 + sh[23]: 0 + sh[24]: 0 + sh[25]: 0 + sh[26]: 0 + m_HasValidSHForNormalization: 0 m_HDProbeVersion: 3 m_ObsoleteInfiniteProjection: 1 m_ObsoleteInfluenceVolume: @@ -31424,7 +31959,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} m_Name: m_EditorClassIdentifier: - isGlobal: 0 + m_IsGlobal: 0 priority: 2 blendDistance: 0 weight: 1 diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-0.exr b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-0.exr index 7526395fa07..0300bf3ff8b 100644 Binary files a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-0.exr and b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-0.exr differ diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-1.exr b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-1.exr index 7304ae24284..1b0811000ab 100644 Binary files a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-1.exr and b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-1.exr differ diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-10.exr b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-10.exr index dd4db3747cf..201ab821c48 100644 Binary files a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-10.exr and b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-10.exr differ diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-11.exr b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-11.exr index d6e1987c2a1..828decc5234 100644 Binary files a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-11.exr and b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-11.exr differ diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-12.exr b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-12.exr index cd04a9076a4..26621569385 100644 Binary files a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-12.exr and b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-12.exr differ diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-13.exr b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-13.exr index 67eb8de85a4..a19d6708afc 100644 Binary files a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-13.exr and b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-13.exr differ diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-14.exr b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-14.exr index f9c6078ebb6..a3de8ad9ce8 100644 Binary files a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-14.exr and b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-14.exr differ diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-15.exr b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-15.exr index eae66ca35da..232a986e4b8 100644 Binary files a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-15.exr and b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-15.exr differ diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-16.exr b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-16.exr index 9aea57a6dd9..a2678d9fc06 100644 Binary files a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-16.exr and b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-16.exr differ diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-17.exr b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-17.exr index e28ed256ebf..404332ccf68 100644 Binary files a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-17.exr and b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-17.exr differ diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-2.exr b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-2.exr index 3933a1e2968..0e4507af123 100644 Binary files a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-2.exr and b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-2.exr differ diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-3.exr b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-3.exr index 7c5d3b56738..5b6f9076057 100644 Binary files a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-3.exr and b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-3.exr differ diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-4.exr b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-4.exr index c7ccd425497..22b4d39c29c 100644 Binary files a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-4.exr and b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-4.exr differ diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-5.exr b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-5.exr index 6e45c783473..6417e66e85f 100644 Binary files a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-5.exr and b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-5.exr differ diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-6.exr b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-6.exr index 1943a8f0117..98b33917320 100644 Binary files a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-6.exr and b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-6.exr differ diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-7.exr b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-7.exr index 1660ced992f..3d45974df3d 100644 Binary files a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-7.exr and b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-7.exr differ diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-8.exr b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-8.exr index c4fec7beade..f62af72d3d4 100644 Binary files a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-8.exr and b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-8.exr differ diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-9.exr b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-9.exr index 6bd8c141f09..f1b76d47fd0 100644 Binary files a/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-9.exr and b/com.unity.template-hd/Assets/SampleSceneAssets/Scenes/SampleScene/ReflectionProbe-9.exr differ diff --git a/com.unity.template-hd/Assets/SampleSceneAssets/Settings/Volumes/VolumeGlobal.asset b/com.unity.template-hd/Assets/SampleSceneAssets/Settings/Volumes/VolumeGlobal.asset index 5df93ed7b20..35735d87983 100644 --- a/com.unity.template-hd/Assets/SampleSceneAssets/Settings/Volumes/VolumeGlobal.asset +++ b/com.unity.template-hd/Assets/SampleSceneAssets/Settings/Volumes/VolumeGlobal.asset @@ -711,6 +711,15 @@ MonoBehaviour: cloudThickness: m_OverrideState: 0 m_Value: 8000 + fadeInMode: + m_OverrideState: 0 + m_Value: 0 + fadeInStart: + m_OverrideState: 0 + m_Value: 0 + fadeInDistance: + m_OverrideState: 0 + m_Value: 0 numPrimarySteps: m_OverrideState: 0 m_Value: 48 @@ -903,12 +912,9 @@ MonoBehaviour: shapeScale: m_OverrideState: 0 m_Value: 2.5 - shapeOffsetX: + shapeOffset: m_OverrideState: 0 - m_Value: 0 - shapeOffsetZ: - m_OverrideState: 0 - m_Value: 0 + m_Value: {x: 0, y: 0, z: 0} erosionFactor: m_OverrideState: 0 m_Value: 0.5 @@ -921,6 +927,9 @@ MonoBehaviour: ambientLightProbeDimmer: m_OverrideState: 0 m_Value: 1 + sunLightDimmer: + m_OverrideState: 0 + m_Value: 1 erosionOcclusion: m_OverrideState: 0 m_Value: 0.1 @@ -950,9 +959,18 @@ MonoBehaviour: erosionSpeedMultiplier: m_OverrideState: 0 m_Value: 0.25 + verticalShapeWindSpeed: + m_OverrideState: 0 + m_Value: 0 + verticalErosionWindSpeed: + m_OverrideState: 0 + m_Value: 0 temporalAccumulationFactor: m_OverrideState: 0 m_Value: 0.95 + ghostingReduction: + m_OverrideState: 0 + m_Value: 0 shadows: m_OverrideState: 0 m_Value: 0 @@ -971,13 +989,22 @@ MonoBehaviour: shadowOpacityFallback: m_OverrideState: 0 m_Value: 0 - m_Version: 1 + m_Version: 2 m_ObsoleteWindSpeed: m_OverrideState: 1 m_Value: 0 m_ObsoleteOrientation: m_OverrideState: 0 m_Value: 0 + m_ObsoleteShapeOffsetX: + m_OverrideState: 0 + m_Value: 0 + m_ObsoleteShapeOffsetY: + m_OverrideState: 0 + m_Value: 0 + m_ObsoleteShapeOffsetZ: + m_OverrideState: 0 + m_Value: 0 --- !u!114 &8049981929359091865 MonoBehaviour: m_ObjectHideFlags: 3