diff --git a/Packages/com.unity.render-pipelines.core/Documentation~/render-graph-writing-a-render-pipeline.md b/Packages/com.unity.render-pipelines.core/Documentation~/render-graph-writing-a-render-pipeline.md index 4d3ede8ac0b..eb48ea8c003 100644 --- a/Packages/com.unity.render-pipelines.core/Documentation~/render-graph-writing-a-render-pipeline.md +++ b/Packages/com.unity.render-pipelines.core/Documentation~/render-graph-writing-a-render-pipeline.md @@ -7,6 +7,7 @@ This page covers the process of how to use the RenderGraph API to write a render To begin, your render pipeline needs to maintain at least one instance of [RenderGraph](../api/UnityEngine.Experimental.Rendering.RenderGraphModule.RenderGraph.html). This is the main entry point for the API. You can use more than one instance of a render graph, but be aware that Unity does not share resources across `RenderGraph` instances so for optimal memory usage, only use one instance. ```c# +using UnityEngine.Rendering; using UnityEngine.Experimental.Rendering.RenderGraphModule; public class MyRenderPipeline : RenderPipeline @@ -21,8 +22,11 @@ public class MyRenderPipeline : RenderPipeline void CleanupRenderGraph() { m_RenderGraph.Cleanup(); - m_RenderGraph = null; + m_RenderGraph = null; } + + ... + } ``` diff --git a/Packages/com.unity.render-pipelines.core/Editor/Gizmo/HierarchicalSphere.cs b/Packages/com.unity.render-pipelines.core/Editor/Gizmo/HierarchicalSphere.cs index 75bb33fb7c9..5aabac07689 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Gizmo/HierarchicalSphere.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Gizmo/HierarchicalSphere.cs @@ -118,6 +118,9 @@ public HierarchicalSphere(Color baseColor, HierarchicalSphere parent = null) /// If true, also draw the surface of the hull's sphere public void DrawHull(bool filled) { + if (Event.current.type != EventType.Repaint) + return; + Color wireframeColor = m_HandleColor; wireframeColor.a = 0.8f; using (new Handles.DrawingScope(m_WireframeColor, Matrix4x4.TRS((Vector3)Handles.matrix.GetColumn(3) + center, Quaternion.identity, Vector3.one))) diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/AOVs.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/AOVs.md index 69cef847aab..f273c7eb665 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/AOVs.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/AOVs.md @@ -42,7 +42,7 @@ You can use AOVs to output the contribution from a selected list of [Lights](Lig ## Custom Pass AOVs Finally, you can use AOVs to output the results of [custom passes](Custom-Pass.md). In particular, you can output the cumulative results of all custom passes that are active on every custom pass injection point. This can be useful to output arbitrary information that custom passes compute, such as the Object ID of the Scene GameObjects. -## Rendering Precission +## Rendering precision By default AOVs are rendering at the precision and format selected in the HDRP asset. If the AOVRequest is configured with *SetOverrideRenderFormat* option set to true, then rendering will use the same precision as the user allocated AOV output buffer. ## Scripting API example diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Default-Settings-Window.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Default-Settings-Window.md index 34cb9c93aac..401a5457db7 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Default-Settings-Window.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Default-Settings-Window.md @@ -15,7 +15,7 @@ You can use the **Volume Profiles** section to assign and edit a [Volume Profile The **Default Volume Profile Asset** (A) references a Volume Profile in the HDRP package folder called `DefaultSettingsVolumeProfile` by default. Below it, you can add [Volume overrides](Volume-Components.md), and edit their properties. You can assign your own Volume Profile to this property field. Be aware that this property must always reference a Volume Profile. If you assign your own Volume Profile and then delete it, HDRP automatically re-assigns the `DefaultSettingsVolumeProfile` from the HDRP package folder. -The **LookDev Volume Profile Asset** (B) references the Volume Profile HDRP uses in the [LookDev window](Look-Dev.md). This Asset works in almost the same way as the Default Volume Profile Asset, except that it overrides [Visual Environment Components](Override-Visual-Environment.md) and sky components.![](Images/HDRPgs_Volume_Profiles.png) +The **LookDev Volume Profile Asset** (B) references the Volume Profile HDRP uses in the [LookDev window](Look-Dev.md). This Asset works in almost the same way as the Default Volume Profile Asset, except it overrides [Visual Environment Components](Override-Visual-Environment.md) and sky components. ## Frame Settings (Default Values) @@ -36,8 +36,6 @@ Use this section to select which custom post processing effect HDRP uses in the HDRP provides one list for each post processing injection point. See the [Custom Post Process](Custom-Post-Process.md) documentation for more details. -![](Images/HDRPgs_Custom_PP.png) - ## Miscellaneous | **Property** | **Description** | @@ -54,7 +52,7 @@ HDRP provides one list for each post processing injection point. See the [Custom | **Property** | **Description** | | --------------------------| ------------------------------------------------------------ | | Shader Variant Log Level | Use the drop-down to select what information HDRP logs about Shader variants when you build your Unity Project. • Disabled: HDRP doesn’t log any Shader variant information.• Only SRP Shaders: Only log Shader variant information for HDRP Shaders.• All Shaders: Log Shader variant information for every Shader type. | -| Export Shader Variants | Controls whether to output shader variant information to a file. | +| Export Shader Variants | Controls whether to output shader variant information to a file. Unity saves the information to the folder with your project files, in `Temp/graphics-settings-stripping.json` and `Temp/shader-stripping.json`. | ## Resources diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Forward-And-Deferred-Rendering.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Forward-And-Deferred-Rendering.md index c1f43ecdf8f..de7b90bc3cf 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Forward-And-Deferred-Rendering.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Forward-And-Deferred-Rendering.md @@ -53,7 +53,7 @@ Forward and Deferred rendering both implement the same features, but the quality ## Differences between Forward and Deferred rendering in HDRP -| **Feature** | **Forward Rendering** | **Defferred** | +| **Feature** | **Forward Rendering** | **Deferred** | |---|---|---| | **Normal shadow bias** | HDRP uses the geometric normal (the vertex normal) of the Material for shadow bias, so Forward Rendering produces fewer shadow artifacts. | HDRP uses the pixel normal of the Material for shadow bias, so Deferred Rendering produces more shadow artifacts. | | **Emissive Color** | Ambient Occlusion doesn't affect Emissive Color. | Ambient Occlusion affects Emissive Color due to technical constraints. | diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Frame-Settings.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Frame-Settings.md index 917a2984a31..ff64b182b28 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Frame-Settings.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Frame-Settings.md @@ -2,8 +2,6 @@ Frame Settings are settings HDRP uses to render Cameras, real-time, baked, and custom reflections. You can set the default values for Frame Settings for each of these three individually from within the [HDRP Global Settings](Default-Settings-Window.md) tab (menu: **Edit** > **Project Settings** > **Graphics** > **HDRP Global Settings**). -![](Images/FrameSettings1.png) - To make Cameras and Reflection Probes use their respective default values for Frame Settings, disable the **Custom Frame Settings** checkbox under the **General** settings of Cameras or under **Capture Settings** of Reflection Probes. You can override the default value of a Frame Setting on a per component basis. Enable the **Custom Frame Settings** checkbox to set specific Frame Settings for individual Cameras and Reflection Probes. This exposes the Frame Settings Override which gives you access to the same settings as within the HDRP Global Settings. Edit the settings within the Frame Settings Override to create a Frame Settings profile for an individual component. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Menu-Items.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Menu-Items.md index 5fe5d15c811..7be4754b70d 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Menu-Items.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Menu-Items.md @@ -21,6 +21,8 @@ This section includes all the menu items under the **Edit > Rendering > Decal La This section includes all the menu items under the **Edit > Rendering > Materials** menu fold-out. +For more information, refer to [Convert materials and shaders](convert-from-built-in-convert-materials-and-shaders). + | **Item** | **Description** | | ----------------------------------------------- | ------------------------------------------------------------ | | **Upgrade HDRP Materials to Latest Version** | Upgrades all HDRP Materials in the project to the latest version. This is useful if HDRP's automatic Material upgrade process fails to upgrade a Material. | diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Contact-Shadows.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Contact-Shadows.md index 33be56f0059..54afb583254 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Contact-Shadows.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Contact-Shadows.md @@ -19,8 +19,6 @@ The property to enable in your Frame Settings is: **Lighting > Contact Shadows** You can enable Contact Shadows on a per Light basis for Directional, Point, and Spot Lights. Tick the **Enable** checkbox under the **Contact Shadows** drop-down in the **Shadows** section of each Light to indicate that HDRP should calculate Contact Shadows for that Light. -Only one Light can cast Contact Shadows at a time. This means that, if you have more than one Light that casts Contact Shadows visible on the screen, only the dominant Light renders Contact Shadows. HDRP chooses the dominant Light using the screen space size of the Light’s bounding box. A Directional Light that casts Contact Shadows is always the dominant Light. - **Note**: A Light casts Contact Shadows for every Mesh Renderer that uses a Material that writes to the depth buffer. This is regardless of whether you enable or disable the **Cast Shadows** property on the Mesh Renderer. This means that you can disable **Cast Shadows** on small GameObjects/props and still have them cast Contact Shadows. This is good if you do not want HDRP to render these GameObjects in shadow maps. If you do not want this behavior, use Shader Graph to author a Material that does not write to the depth buffer. [!include[](snippets/volume-override-api.md)] diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Micro-Shadows.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Micro-Shadows.md index d9e07165821..e857aa6a10c 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Micro-Shadows.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Micro-Shadows.md @@ -1,6 +1,8 @@ # Micro Shadows -Micro shadows are shadows that the High Definition Render Pipeline (HDRP) simulates for small details embedded in the Material of a GameObject, but not in its Mesh geometry. HDRP uses the details from the normal map and the ambient occlusion map to estimate the shadows those maps would cast if they were Meshes. +Micro shadows are shadows that the High Definition Render Pipeline (HDRP) simulates for small details embedded in the Material of a GameObject, but not in its Mesh geometry. + +HDRP uses the details from the normal map, the ambient occlusion map, and specular occlusion to estimate the shadows those details would cast if they were meshes. In this image, the different layers of details in the Material shadow each other. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Volumetric-Clouds.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Volumetric-Clouds.md index d1df2e0c5e9..f0ff4d75b97 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Volumetric-Clouds.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Volumetric-Clouds.md @@ -19,7 +19,7 @@ Using these three things, HDRP generates volumetric clouds in a two-step process [!include[](snippets/Volume-Override-Enable-Override.md)] -* In your [HDRP Asset](HDRP Asset) go to **Lighting > Volumetrics > Volumetric Clouds**. +* In your [HDRP Asset](HDRP-Asset.md) go to **Lighting > Volumetrics > Volumetric Clouds**. * In your [Frame Settings](Frame-Settings.md) go to **Lighting > Volumetric Clouds**. @@ -126,6 +126,7 @@ When importing these two map Textures, disable **sRGB**. For best results, do no | -------------------------------- | ------------------------------------------------------------ | | **Temporal Accumulation Factor** | The amount of temporal accumulation to apply to the clouds. Temporal accumulation increases the visual quality of clouds by decreasing the noise. A higher value produces better quality clouds, but can create [ghosting](Glossary.md#ghosting). | | **Ghosting Reduction** | When you enable this property, HDRP removes the ghosting caused by temporal accumulation. This effect might cause a flickering effect when the **Temporal Accumulation Factor** value is low. | +| **Perceptual Blending** | Blend the clouds with the environment. This might cause artifacts if the sky is overexposed. This setting only has an effect when you disable multi-sample antialiasing (MSAA). | | **Num Primary Steps** | The number of steps to use to evaluate the clouds' transmittance. Higher values linearly increase the resource intensity of the effect. | | **Num Light Steps** | The number of steps to use to evaluate the clouds' lighting. Higher values exponent increase the resource intensity of the effect. | diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/System-Requirements.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/System-Requirements.md index 98ea8d338d4..c1aedc06ea8 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/System-Requirements.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/System-Requirements.md @@ -33,8 +33,6 @@ For more information, see [System requirements for Unity](https://docs.unity3d.c HRDP is only compatible with the following platforms: - Windows and Windows Store, with DirectX 11 or DirectX 12 and Shader Model 5.0 -- Google - - Stadia - Sony - PlayStation 4 - PlayStation 5 diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Upgrading-To-HDRP.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Upgrading-To-HDRP.md index 7f71e28c12d..4bec55fb873 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Upgrading-To-HDRP.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Upgrading-To-HDRP.md @@ -43,6 +43,7 @@ To upgrade the Materials in your Scene to HDRP-compatible Materials: The automatic upgrade options described above can't upgrade all Materials to HDRP correctly: * You can't automatically upgrade custom Materials or Shaders to HDRP. You must [convert custom Materials and Shaders manually](#ManualConversion). +* HDRP can only convert materials from the **Assets** folder of your project. HDRP uses the [error shader](xref:shader-error) for GameObjects that use the default read-only material from the Built-In Render Pipeline, for example [primitives](xref:um-primitive-objects). * Height mapped Materials might look incorrect. This is because HDRP supports more height map displacement techniques and decompression options than the Built-in Render Pipeline. To upgrade a Material that uses a heightmap, modify the Material's **Amplitude** and **Base** properties until the result more closely matches the Built-in Render Pipeline version. * You can't upgrade particle shaders. HDRP doesn't support particle shaders, but it does provide Shader Graphs that are compatible with the [Built-in Particle System](https://docs.unity3d.com/Manual/Built-inParticleSystem.html). These Shader Graphs work in a similar way to the built-in particle shaders. To use these Shader Graphs, import the **Particle System Shader Samples** sample: diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/VR-Overview.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/VR-Overview.md index 19b06553734..b963973e5c3 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/VR-Overview.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/VR-Overview.md @@ -17,9 +17,9 @@ You can also watch the presentation from Unite Copenhagen (October 2019) to lear * **PC with DX11**: * Oculus Rift & Rift S (Oculus XR Plugin, Windows 10, DirectX 11) * Windows Mixed Reality (Windows XR Plugin, Windows 10, DirectX 11) + * Open VR * **PS4**: * PlayStationVR - * Open VR* **Note**: Valve is currently developing their OpenVR Unity XR plugin for 2019.3 and beyond. For more information, see [Unity XR platform updates](https://blogs.unity3d.com/2020/01/24/unity-xr-platform-updates/) on the Unity blog, and [XR Plugin Architecture](https://docs.unity3d.com/Manual/XRPluginArchitecture.html) in the Unity Manual. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/WaterSystem-underwater.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/WaterSystem-underwater.md index 2f0be2af5ed..e019c49de00 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/WaterSystem-underwater.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/WaterSystem-underwater.md @@ -1,8 +1,18 @@ # Underwater view -To view non-infinite water surfaces from underwater, you have to specify a [collider](https://docs.unity3d.com/Manual/Glossary.html#Collider). You can either use the box collider HDRP automatically provides or select a box collider in the scene to use for this purpose. +To change the area where the camera displays an underwater view for a non-infinite water surface, use the **Volume Bounds** setting. Follow these steps: -To view infinite water surfaces from underwater, you have to specify a **Volume Depth**. +1. Create a GameObject with a collider component, for example a cube with a **Box Collider** component. +2. Place the GameObject where you want the underwater view to be visible. +3. In the collider component, select **Edit Collider** to set the size of the visible underwater area. +4. Select the water GameObject. +5. In the **Inspector** window, under **Appearance**, under **Underwater**, set **Volume Bounds** to the GameObject you created. + +To set the area of the underwater view for an ocean, follow these steps: + +1. Select the ocean GameObject. +2. In the **Inspector** window, under **Appearance**, enable **Underwater**. +3. Adjust **Volume Depth**. If you look directly upward at the water surface from below, you may see a square border around the scene view. This is normal. It is because HDRP can only use screenspace data underwater. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/WaterSystem-use.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/WaterSystem-use.md index 0f104b2ad62..6ebebee2ad2 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/WaterSystem-use.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/WaterSystem-use.md @@ -24,10 +24,7 @@ This is especially important when you upgrade your project from an earlier versi 1. Select a global Volume in your scene, such as the **Sky and Fog Volume**. 2. Click **Add Override**. 3. Select **Lighting** > **Water Rendering**. -4. Set the Water **Enable** property to True. - -![](Images/WaterSystem-EnableTrue.png) - +4. In the **Water Rendering** component, set **State** to **Enabled**. This is especially important when you upgrade your project from an earlier version of Unity, because water is inactive by default. If your project originates in HDRP 14 (Unity 2022.2) or later, the water implementation may work even if you only enable it in the **Quality** settings. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/fullscreen-shader.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/fullscreen-shader.md index 1df306967de..83b8691cb8d 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/fullscreen-shader.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/fullscreen-shader.md @@ -83,7 +83,7 @@ To set a source material for the `Blit()` command to use in shader graph: 5. In **Node Settings**, enable the **Exposed** toggle so `Blit()`can bind the texture. 4. Drag the **MainTex** node into your shader graph. 5. Press the Spacebar to open the **Create Node** window -6. In the **Create Node** window, search for the **Texture 2D Array** node and select it to create it in your scene. +6. In the **Create Node** window, search for the **Sample Texture 2D Array** node and select it to create it in your scene. 7. Connect the **MainTex** node to the **Texture Array** port of the **Sample Texture 2D Array** node. 8. Connect the **RBGA** output port of the **Sample Texture 2D Array** to the **Base Color** block in the **Fragment** context. 9. `Blit()` automatically binds the source texture inside the `_MainTex` property. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-use.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-use.md index b83e2089bf1..1612b1255ea 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-use.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-use.md @@ -27,9 +27,9 @@ To make sure Reflection Probes also capture lighting data from Probe Volumes, yo ### Adjust your Light and Mesh Renderer settings -1. To include a Light in a Probe Volume's baked lighting data, open the Inspector for the Light then set the **Light Mode** to **Mixed** or **Baked**. -2. To include an object in a Probe Volume's baked lighting data, open the Inspector for the object and enable **Contribute Global Illumination**. -3. To make an object receive baked lighting, open the Inspector for the object and set **Receive Global Illumination** to **Light Probes**. +1. To include a Light in an Adaptive Probe Volume's baked lighting data, open the Inspector for the Light then set the **Light Mode** to **Mixed** or **Baked**. +2. To include a GameObject in an Adaptive Probe Volume's baked lighting data, open the Inspector for the GameObject and enable **Contribute Global Illumination**. +3. To make a GameObject receive baked lighting, open the Inspector for the GameObject, then in the **Mesh Renderer** component set **Receive Global Illumination** to **Light Probes**. ### Bake your lighting diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightEvaluation.hlsl b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightEvaluation.hlsl index b7dbd8ed50b..975107cd0c9 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightEvaluation.hlsl +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightEvaluation.hlsl @@ -269,9 +269,6 @@ SHADOW_TYPE EvaluateShadow_Directional( LightLoopContext lightLoopContext, Posit shadow = lightLoopContext.shadowValue; #ifdef SHADOWS_SHADOWMASK - float3 camToPixel = posInput.positionWS - GetPrimaryCameraPosition(); - float distanceCamToPixel2 = dot(camToPixel, camToPixel); - int shadowSplitIndex = lightLoopContext.shadowContext.shadowSplitIndex; if (shadowSplitIndex < 0) { @@ -279,7 +276,12 @@ SHADOW_TYPE EvaluateShadow_Directional( LightLoopContext lightLoopContext, Posit } else if (shadowSplitIndex == int(_CascadeShadowCount) - 1) { - float fade = lightLoopContext.shadowContext.fade; + // float fade = lightLoopContext.shadowContext.fade; + float3 camToPixel = posInput.positionWS - GetPrimaryCameraPosition(); + float distanceCamToPixel2 = dot(camToPixel, camToPixel); + + HDDirectionalShadowData dsd = lightLoopContext.shadowContext.directionalShadowData; + float fade = saturate(distanceCamToPixel2 * dsd.fadeScale + dsd.fadeBias); // In the transition code (both dithering and blend) we use shadow = lerp( shadow, 1.0, fade ) for last transition // mean if we expend the code we have (shadow * (1 - fade) + fade). Here to make transition with shadow mask // we will remove fade and add fade * shadowMask which mean we do a lerp with shadow mask diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/HDRenderPipeline.AmbientOcclusion.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/HDRenderPipeline.AmbientOcclusion.cs index 9ce562f3383..a6bc5a28514 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/HDRenderPipeline.AmbientOcclusion.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/HDRenderPipeline.AmbientOcclusion.cs @@ -48,7 +48,8 @@ RenderAOParameters PrepareRenderAOParameters(HDCamera camera, Vector2 historySiz } else { - parameters.runningRes = new Vector2(Mathf.RoundToInt(camera.actualWidth * 0.5f), Mathf.RoundToInt(camera.actualHeight * 0.5f)); + // Ceil is needed because we upsample the AO too, round would loose a pixel is the resolution is odd + parameters.runningRes = new Vector2(Mathf.CeilToInt(camera.actualWidth * 0.5f), Mathf.CeilToInt(camera.actualHeight * 0.5f)); cb._AOBufferSize = new Vector4(parameters.runningRes.x, parameters.runningRes.y, 1.0f / parameters.runningRes.x, 1.0f / parameters.runningRes.y); } diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/HDShadowManager.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/HDShadowManager.cs index 3fdaace4c39..4e686b9df1c 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/HDShadowManager.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/HDShadowManager.cs @@ -98,6 +98,9 @@ unsafe struct HDDirectionalShadowData [HLSLArray(4, typeof(float))] [SurfaceDataAttributes(precision = FieldPrecision.Real)] public fixed float cascadeBorders[4]; + + public float fadeScale; + public float fadeBias; } class HDShadowRequest @@ -789,7 +792,10 @@ unsafe public void PrepareGPUShadowDatas(CullingResults cullResults, HDCamera ca else m_DirectionalShadowData.cascadeDirection = Vector4.zero; - m_DirectionalShadowData.cascadeDirection.w = camera.volumeStack.GetComponent().cascadeShadowSplitCount.value; + HDShadowSettings shadowSettings = camera.volumeStack.GetComponent(); + m_DirectionalShadowData.cascadeDirection.w = shadowSettings.cascadeShadowSplitCount.value; + + GetShadowFadeScaleAndBias(shadowSettings, out m_DirectionalShadowData.fadeScale, out m_DirectionalShadowData.fadeBias); if (m_ShadowRequestCount > 0) { @@ -800,6 +806,45 @@ unsafe public void PrepareGPUShadowDatas(CullingResults cullResults, HDCamera ca } } + void GetShadowFadeScaleAndBias(HDShadowSettings shadowSettings, out float scale, out float bias) + { + float maxShadowDistance = shadowSettings.maxShadowDistance.value; + float maxShadowDistanceSq = maxShadowDistance * maxShadowDistance; + float cascadeBorder; + int splitCount = shadowSettings.cascadeShadowSplitCount.value; + if (splitCount == 4) + cascadeBorder = shadowSettings.cascadeShadowBorder3.value; + else if (splitCount == 3) + cascadeBorder = shadowSettings.cascadeShadowBorder2.value; + else if (splitCount == 2) + cascadeBorder = shadowSettings.cascadeShadowBorder1.value; + else + cascadeBorder = shadowSettings.cascadeShadowBorder0.value; + + GetScaleAndBiasForLinearDistanceFade(maxShadowDistanceSq, cascadeBorder, out scale, out bias); + } + + void GetScaleAndBiasForLinearDistanceFade(float fadeDistance, float border, out float scale, out float bias) + { + // To avoid division from zero + // This values ensure that fade within cascade will be 0 and outside 1 + if (border < 0.0001f) + { + float multiplier = 1000f; // To avoid blending if difference is in fractions + scale = multiplier; + bias = -fadeDistance * multiplier; + return; + } + + border = 1 - border; + border *= border; + + // Fade with distance calculation is just a linear fade from 90% of fade distance to fade distance. 90% arbitrarily chosen but should work well enough. + float distanceFadeNear = border * fadeDistance; + scale = 1.0f / (fadeDistance - distanceFadeNear); + bias = -distanceFadeNear / (fadeDistance - distanceFadeNear); + } + public void PushGlobalParameters(CommandBuffer cmd) { // This code must be in sync with HDShadowContext.hlsl diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/HDShadowManager.cs.hlsl b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/HDShadowManager.cs.hlsl index 134ece0fcf1..7b19a0d9dd3 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/HDShadowManager.cs.hlsl +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/HDShadowManager.cs.hlsl @@ -11,6 +11,8 @@ struct HDDirectionalShadowData float4 sphereCascades[4]; real4 cascadeDirection; real cascadeBorders[4]; + float fadeScale; + float fadeBias; }; // Generated from UnityEngine.Rendering.HighDefinition.HDShadowData diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 2cc336b2982..45df91c7c38 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -601,8 +601,9 @@ void GetHairAngleLocal(float3 wo, float3 wi, inout HairAngle angles) void GetHairAngleWorld(float3 V, float3 L, float3 T, inout HairAngle angles) { - angles.sinThetaO = dot(T, V); - angles.sinThetaI = dot(T, L); + // It might exceed the range [-1, 1], so explicitly clamp here to prevent nan output from FastASin. + angles.sinThetaO = clamp(dot(T, V), -1.0, 1.0); + angles.sinThetaI = clamp(dot(T, L), -1.0, 1.0); float thetaO = FastASin(angles.sinThetaO); float thetaI = FastASin(angles.sinThetaI); diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl b/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl index 793e6ab3858..b366fe5e4df 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl @@ -1852,7 +1852,7 @@ IndirectLighting EvaluateBSDF_ScreenSpaceReflection(PositionInputs posInput, // // Note that the SSR with clear coat is a binary state, which means we should never enter the if condition if we don't have an active // clear coat (which is not guaranteed by the HasFlag condition in deferred mode in some cases). We then need to make sure that coatMask is actually non zero. - if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_LIT_CLEAR_COAT) && bsdfData.coatMask > 0.0) + if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_LIT_CLEAR_COAT) && bsdfData.coatMask >= 0.0) { // We use the coat-traced light according to how similar the base lobe roughness is to the coat roughness // (we can assume the coat is always smoother): diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Camera/HDCamera.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Camera/HDCamera.cs index 723513e0870..207f7685c38 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Camera/HDCamera.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Camera/HDCamera.cs @@ -1134,12 +1134,12 @@ internal void GetPixelCoordToViewDirWS(Vector4 resolution, float aspect, ref Mat { for (int viewIndex = 0; viewIndex < viewCount; ++viewIndex) { - transforms[viewIndex] = ComputePixelCoordToWorldSpaceViewDirectionMatrix(m_XRViewConstants[viewIndex], resolution, aspect); + transforms[viewIndex] = ComputePixelCoordToWorldSpaceViewDirectionMatrix(m_XRViewConstants[viewIndex], resolution, aspect, ShaderConfig.s_CameraRelativeRendering); } } else { - transforms[0] = ComputePixelCoordToWorldSpaceViewDirectionMatrix(mainViewConstants, resolution, aspect); + transforms[0] = ComputePixelCoordToWorldSpaceViewDirectionMatrix(mainViewConstants, resolution, aspect, ShaderConfig.s_CameraRelativeRendering); } } @@ -1720,7 +1720,7 @@ void UpdateViewConstants(ref ViewConstants viewConstants, Matrix4x4 projMatrix, viewConstants.viewProjectionNoCameraTrans = gpuVPNoTrans; var gpuProjAspect = HDUtils.ProjectionMatrixAspect(gpuProj); - viewConstants.pixelCoordToViewDirWS = ComputePixelCoordToWorldSpaceViewDirectionMatrix(viewConstants, screenSize, gpuProjAspect); + viewConstants.pixelCoordToViewDirWS = ComputePixelCoordToWorldSpaceViewDirectionMatrix(viewConstants, screenSize, gpuProjAspect, ShaderConfig.s_CameraRelativeRendering); if (updatePreviousFrameConstants) { @@ -1957,8 +1957,9 @@ internal Matrix4x4 GetJitteredProjectionMatrix(Matrix4x4 origProj) /// /// It is different from the aspect ratio of for anamorphic projections. /// + /// If non-zero, then assume Camera Relative Rendering is enabled. /// - Matrix4x4 ComputePixelCoordToWorldSpaceViewDirectionMatrix(ViewConstants viewConstants, Vector4 resolution, float aspect = -1) + internal Matrix4x4 ComputePixelCoordToWorldSpaceViewDirectionMatrix(ViewConstants viewConstants, Vector4 resolution, float aspect = -1, int cameraRelativeRendering = 1) { // In XR mode, or if explicitely required, use a more generic matrix to account for asymmetry in the projection var useGenericMatrix = xr.enabled || frameSettings.IsEnabled(FrameSettingsField.AsymmetricProjection); @@ -1977,7 +1978,20 @@ Matrix4x4 ComputePixelCoordToWorldSpaceViewDirectionMatrix(ViewConstants viewCon new Vector4(0.0f, 0.0f, 1.0f, 0.0f), new Vector4(0.0f, 0.0f, 0.0f, 1.0f)); - var transformT = viewConstants.invViewProjMatrix.transpose * Matrix4x4.Scale(new Vector3(-1.0f, -1.0f, -1.0f)); + Matrix4x4 transformT; + if (cameraRelativeRendering == 0) + { + // In case we are not camera relative, the view matrix used to calculate viewConstants.invViewProjMatrix + // contains translation component, so we need to remove it. + var viewNoTrans = viewConstants.viewMatrix; + viewNoTrans.SetColumn(3, new Vector4(0, 0, 0, 1)); + var invViewProj = (viewConstants.projMatrix * viewNoTrans).inverse; + transformT = invViewProj.transpose * Matrix4x4.Scale(new Vector3(-1.0f, -1.0f, -1.0f)); + } + else + { + transformT = viewConstants.invViewProjMatrix.transpose * Matrix4x4.Scale(new Vector3(-1.0f, -1.0f, -1.0f)); + } return viewSpaceRasterTransform * transformT; } diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPass.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPass.cs index 336a7c3130d..96014484f1f 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPass.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPass.cs @@ -177,6 +177,7 @@ class ExecutePassData public CullingResults cullingResult; public CullingResults cameraCullingResult; public HDCamera hdCamera; + public ShaderVariablesGlobal shaderVariablesGlobal; } RenderTargets ReadRenderTargets(in RenderGraphBuilder builder, in RenderTargets targets) @@ -218,6 +219,7 @@ virtual internal void ExecuteInternal(RenderGraph renderGraph, HDCamera hdCamera passData.cullingResult = cullingResult; passData.cameraCullingResult = cameraCullingResult; passData.hdCamera = hdCamera; + passData.shaderVariablesGlobal = HDRenderPipeline.currentPipeline.GetShaderVariablesGlobalCB(); this.currentRenderTarget = ReadRenderTargets(builder, targets); @@ -262,7 +264,7 @@ virtual internal void ExecuteInternal(RenderGraph renderGraph, HDCamera hdCamera customPass.currentRenderTarget.customColorBuffer, customPass.currentRenderTarget.customDepthBuffer, ctx.renderGraphPool.GetTempMaterialPropertyBlock(), - customPass.injectionPoint + customPass.injectionPoint, data.shaderVariablesGlobal ); customPass.isExecuting = true; diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPassContext.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPassContext.cs index 108654238cd..9199c662614 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPassContext.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPassContext.cs @@ -68,6 +68,10 @@ public struct CustomPassContext public readonly MaterialPropertyBlock propertyBlock; internal readonly CustomPassInjectionPoint injectionPoint; + // This represent the state of HDRP globals at the point of recording the custom passes. + // Using GetShaderVariablesGlobals() from HDRP inside the execute of the custom pass would give invalid result + // because the execute of custom passes is called during the render graph execution, after the recording of all passes. + internal readonly ShaderVariablesGlobal currentGlobalState; internal CustomPassContext( ScriptableRenderContext renderContext, CommandBuffer cmd, @@ -77,7 +81,7 @@ internal CustomPassContext( RTHandle cameraNormalBuffer, RTHandle cameraMotionVectorsBuffer, Lazy customColorBuffer, Lazy customDepthBuffer, MaterialPropertyBlock propertyBlock, - CustomPassInjectionPoint injectionPoint) + CustomPassInjectionPoint injectionPoint, ShaderVariablesGlobal currentGlobalState) { this.renderContext = renderContext; this.cmd = cmd; @@ -92,6 +96,7 @@ internal CustomPassContext( this.customDepthBuffer = customDepthBuffer; this.propertyBlock = propertyBlock; this.injectionPoint = injectionPoint; + this.currentGlobalState = currentGlobalState; } } } diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPassUtils.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPassUtils.cs index 1ad072cf991..81046b8a398 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPassUtils.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPassUtils.cs @@ -727,7 +727,8 @@ public struct OverrideCameraRendering : IDisposable HDCamera overrideHDCamera; float originalAspect; - static Stack overrideCameraStack = new Stack(); + static Stack overrideCameraStack = new(); + static Stack overrideGlobalVariablesStack = new(); /// /// Overrides the current camera, changing all the matrices and view parameters for the new one. @@ -817,12 +818,13 @@ void Init(CustomPassContext ctx, Camera overrideCamera, float overrideAspectRati overrideHDCamera.Update(overrideHDCamera.frameSettings, hdrp, XRSystem.emptyPass, allocateHistoryBuffers: false); // Reset the reference size as it could have been changed by the override camera ctx.hdCamera.SetReferenceSize(); - var globalCB = hdrp.GetShaderVariablesGlobalCB(); + var globalCB = ctx.currentGlobalState; overrideHDCamera.UpdateShaderVariablesGlobalCB(ref globalCB); ConstantBuffer.PushGlobal(ctx.cmd, globalCB, HDShaderIDs._ShaderVariablesGlobal); overrideCameraStack.Push(overrideHDCamera); + overrideGlobalVariablesStack.Push(globalCB); } static bool IsContextValid(CustomPassContext ctx, Camera overrideCamera) @@ -848,22 +850,23 @@ void IDisposable.Dispose() overrideCamera.aspect = originalAspect; // Set back the settings of the previous camera - var globalCB = HDRenderPipeline.currentPipeline.GetShaderVariablesGlobalCB(); overrideCameraStack.Pop(); if (overrideCameraStack.Count > 0) { var previousHDCamera = overrideCameraStack.Peek(); previousHDCamera.SetReferenceSize(); - previousHDCamera.UpdateShaderVariablesGlobalCB(ref globalCB); } else // If we don't have any nested override camera, then we go back to the original one. { // Reset the reference size as it could have been changed by the override camera ctx.hdCamera.SetReferenceSize(); - ctx.hdCamera.UpdateShaderVariablesGlobalCB(ref globalCB); } - ConstantBuffer.PushGlobal(ctx.cmd, globalCB, HDShaderIDs._ShaderVariablesGlobal); + overrideGlobalVariablesStack.Pop(); + if (overrideGlobalVariablesStack.Count > 0) + ConstantBuffer.PushGlobal(ctx.cmd, overrideGlobalVariablesStack.Peek(), HDShaderIDs._ShaderVariablesGlobal); + else + ConstantBuffer.PushGlobal(ctx.cmd, ctx.currentGlobalState, HDShaderIDs._ShaderVariablesGlobal); } } diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Sky/SkyManager.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/Sky/SkyManager.cs index c3a8945101e..fea01b6f208 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Sky/SkyManager.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Sky/SkyManager.cs @@ -637,6 +637,12 @@ internal ComputeBuffer GetDiffuseAmbientProbeBuffer(HDCamera hdCamera) return m_BlackAmbientProbeBuffer; } + // If a camera is a material preview camera, don't use the scene's ambient spherical harmonics to render it. + if (hdCamera.camera.cameraType == CameraType.Preview) + { + return m_BlackAmbientProbeBuffer; + } + return GetDiffuseAmbientProbeBuffer(GetLightingSky(hdCamera)); } diff --git a/Packages/com.unity.render-pipelines.high-definition/Tests/Editor/HDCameraTests.cs b/Packages/com.unity.render-pipelines.high-definition/Tests/Editor/HDCameraTests.cs new file mode 100644 index 00000000000..f9af53b10ab --- /dev/null +++ b/Packages/com.unity.render-pipelines.high-definition/Tests/Editor/HDCameraTests.cs @@ -0,0 +1,55 @@ +using NUnit.Framework; +using UnityEngine.Experimental.Rendering; + +namespace UnityEngine.Rendering.HighDefinition.Tests +{ + class HDCameraTests + { + [SetUp] + public void Setup() + { + if (GraphicsSettings.currentRenderPipeline is not HDRenderPipelineAsset) + Assert.Ignore("This is an HDRP Tests, and the current pipeline is not HDRP."); + } + + [Test] + public void TestCameraRelativeRendering() + { + GameObject cameraGameObject = new GameObject("Camera"); + var camera = cameraGameObject.AddComponent(); + var hdCamera = new HDCamera(camera); + + var positionSettings = new CameraPositionSettings(); + positionSettings.position = new Vector3(100.0f, 300.0f, 500.0f); + positionSettings.rotation = Quaternion.Euler(62.34f, 185.53f, 323.563f); + + var resolution = new Vector4(1920.0f, 1080.0f, 1.0f / 1920.0f, 1.0f / 1080.0f); + float aspect = resolution.x * resolution.w; + + camera.worldToCameraMatrix = positionSettings.ComputeWorldToCameraMatrix(); + camera.projectionMatrix = Matrix4x4.Perspective(75.0f, aspect, 0.1f, 1000.0f); + + var view = camera.worldToCameraMatrix; + var proj = camera.projectionMatrix; + + // Minimal setup for ComputePixelCoordToWorldSpaceViewDirectionMatrix(). + var viewConstants = new HDCamera.ViewConstants(); + viewConstants.viewMatrix = view; + viewConstants.projMatrix = proj; + viewConstants.invViewProjMatrix = (proj * view).inverse; + + // hdCamera.xr must be initialized for ComputePixelCoordToWorldSpaceViewDirectionMatrix(). + var hdrp = HDRenderPipeline.currentPipeline; + hdCamera.Update(hdCamera.frameSettings, hdrp, XRSystem.emptyPass, allocateHistoryBuffers: false); + + var matrix0 = hdCamera.ComputePixelCoordToWorldSpaceViewDirectionMatrix(viewConstants, resolution, aspect, 0); + var matrix1 = hdCamera.ComputePixelCoordToWorldSpaceViewDirectionMatrix(viewConstants, resolution, aspect, 1); + + // These matrices convert a clip space position to a world space view direction, + // therefore should be same regardless of Camera Relative Rendering. + Assert.AreEqual(matrix0, matrix1, $"{matrix0} != {matrix1}"); + + CoreUtils.Destroy(cameraGameObject); + } + } +} diff --git a/Packages/com.unity.render-pipelines.high-definition/Tests/Editor/HDCameraTests.cs.meta b/Packages/com.unity.render-pipelines.high-definition/Tests/Editor/HDCameraTests.cs.meta new file mode 100644 index 00000000000..c0a9e3f79d1 --- /dev/null +++ b/Packages/com.unity.render-pipelines.high-definition/Tests/Editor/HDCameraTests.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 599a7e24f19b4c38a8f23735cf98b54f +timeCreated: 1735265964 \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/Images/Fullscreen-shader-rain.png b/Packages/com.unity.render-pipelines.universal/Documentation~/Images/Fullscreen-shader-rain.png new file mode 100644 index 00000000000..9a2a4c8e70d Binary files /dev/null and b/Packages/com.unity.render-pipelines.universal/Documentation~/Images/Fullscreen-shader-rain.png differ diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/Images/rendering-debugger-play-mode.jpg b/Packages/com.unity.render-pipelines.universal/Documentation~/Images/rendering-debugger-play-mode.jpg new file mode 100644 index 00000000000..c09fb500017 Binary files /dev/null and b/Packages/com.unity.render-pipelines.universal/Documentation~/Images/rendering-debugger-play-mode.jpg differ diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/Lights-2D-intro.md b/Packages/com.unity.render-pipelines.universal/Documentation~/Lights-2D-intro.md index 08372d452bc..098f2a428a0 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/Lights-2D-intro.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/Lights-2D-intro.md @@ -13,7 +13,7 @@ The 2D lighting systems includes its own set of 2D Light components, [Shader Gra The 2D lighting model was designed specifically to work with 2D worlds that are coplanar and multi-layered. A 2D Light does not require depth separation between it and the object it is lighting. The 2D shadow system also works in coplanar and does not require depth separation. ### Not physically based -The lighting calculation in 2D Lights is not physics based as it is with 3D Lights. The details of the lighting model calculation can be found here. +The lighting calculation in 2D Lights is not physics-based as it is with 3D Lights. The details of the lighting model calculation can be found here. ### No interoperability with 3D Lights and 3D Renderers 3D and 2D Lights can only affect 3D and 2D Renderers respectively. 2D Lighting does not work on or effect 3D Renderers such as the [Mesh Renderer](https://docs.unity3d.com/Manual/class-MeshRenderer.html), while 3D Lighting will similarly have no effect on 2D Renderers such as the [Sprite Renderer](https://docs.unity3d.com/Manual/class-SpriteRenderer.html). Currently, to achieve a combination of 2D and 3D Lights and 2D and 3D Renderers in a single Scene, you can use multiple cameras and have one of the cameras render to a [Render Texture](https://docs.unity3d.com/Manual/class-RenderTexture.html), and sample that texture in a material rendered by another camera. diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/ShaderGraph.md b/Packages/com.unity.render-pipelines.universal/Documentation~/ShaderGraph.md index d50f56c1f9c..f103e76146f 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/ShaderGraph.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/ShaderGraph.md @@ -30,7 +30,12 @@ 7. Drag each of the **Texture 2D** properties onto the editor window. Attach each of the properties to the **Input Slots** of the Sample Texture 2D Nodes as shown below. Note that the 'NormalMap' property must be attached to the **Normal Type** Node only. ![](Images/2D/2d-urp12-3-attach-properties.png)
-8. Select **Save Asset** to save the Shader. + +8. Select the **NormalMap** property, then in the **Graph Inspector** set **Mode** to **Normal Map**. + +9. If your sprite texture has transparency, attach the alpha (**A**) output of the **Base Color** texture to the **Alpha** input of the **Fragment** context. + +10. Select **Save Asset** to save the Shader. ![](Images/2D/2d-urp12-3-save-shader.png) You can now apply the newly built Shader to materials. diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/TableOfContents.md b/Packages/com.unity.render-pipelines.universal/Documentation~/TableOfContents.md index b5660876df1..62c2c716619 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/TableOfContents.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/TableOfContents.md @@ -101,9 +101,12 @@ * [Vignette](post-processing-vignette.md) * [White Balance](Post-Processing-White-Balance.md) * [Lens Flare](shared/lens-flare/lens-flare-component.md) - * [Custom Post-processing](post-processing/custom-post-processing.md) - * [How to create a custom post-processing effect](post-processing/post-processing-custom-effect-low-code.md) - + * [Custom post-processing](post-processing/custom-post-processing.md) + * [Create a custom post-processing effect in URP](post-processing/post-processing-custom-effect-low-code.md) + * [Full Screen Pass Renderer Feature reference for URP](renderer-features/renderer-feature-full-screen-pass.md) + * [Creating a full-screen shader in Shader Graph in URP](urp-shaders/fullscreen-master-stack-urp.md) + * [Fullscreen Master Stack for Shader Graph in URP](urp-shaders/fullscreen-master-stack-shader-graph.md) + * [Fullscreen Master Stack in Shader Graph reference for URP](urp-shaders/fullscreen-master-stack-reference.md) * [Shaders and Materials](shaders-in-universalrp.md) * [Shading Models](shading-model.md) * [Material Variants](materialvariant-URP.md) @@ -145,10 +148,9 @@ * [Introduction to Scriptable Renderer Features](renderer-features/scriptable-renderer-features/intro-to-scriptable-renderer-features.md) * [Inject a custom render pass using a Scriptable Renderer Feature](renderer-features/scriptable-renderer-features/inject-a-pass-using-a-scriptable-renderer-feature.md) * [Apply a Scriptable Renderer Feature to a specific camera type](renderer-features/scriptable-renderer-features/apply-scriptable-feature-to-specific-camera.md) - * [Example of a complete Scriptable Renderer Feature](renderer-features/create-custom-renderer-feature.md) + * [Example of a complete Scriptable Renderer Feature](renderer-features/how-to-fullscreen-blit.md) * [Using textures](working-with-textures.md) - * [URP blit best practices](customize/blit-overview.md) - * [Perform a full screen blit in URP](renderer-features/how-to-fullscreen-blit.md) + * [Blit](customize/blit-overview.md) * [Blit input and output textures](customize/blit-to-rthandle.md) * [Blit multiple RTHandle textures](customize/blit-multiple-rthandles.md) * [Injection points reference](customize/custom-pass-injection-points.md) diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/customize/blit-overview.md b/Packages/com.unity.render-pipelines.universal/Documentation~/customize/blit-overview.md index 11614be5ded..7b0f84f6fc2 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/customize/blit-overview.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/customize/blit-overview.md @@ -1,25 +1,23 @@ -# URP blit best practices +# Blit in URP -A blit operation is a process of copying a source texture to a destination texture. +To blit from one texture to another in a custom render pass in the Universal Render Pipeline (URP), use the [Blitter API](https://docs.unity3d.com/Packages/com.unity.render-pipelines.core@latest?subfolder=/api/UnityEngine.Rendering.Blitter.html) from the Core Scriptable Render Pipeline (SRP). -This page provides an overview of different ways to perform a blit operation in URP and best practices to follow when writing custom render passes. +The shader you use with the `Blitter` API must be a hand-coded shader. [Shader Graph](https://docs.unity3d.com/2022.3/Documentation/Manual/shader-graph.html) shaders aren't compatible with the `Blitter` API. -## The legacy CommandBuffer.Blit API +**Note:** The recommended best practice is not to use the `CommandBuffer.Blit` or `Graphics.Blit` APIs with URP, or APIs that use them internally such as `RenderingUtils.Blit`. These APIs might break XR rendering, and aren't compatible with native render passes. You can still use `CommandBuffer.Blit` and `Graphics.Blit` with the Built-In Render Pipeline. -Avoid using the [CommandBuffer.Blit](https://docs.unity3d.com/2022.1/Documentation/ScriptReference/Rendering.CommandBuffer.Blit.html) API in URP projects. +For example, add the following: -The [CommandBuffer.Blit](https://docs.unity3d.com/2022.1/Documentation/ScriptReference/Rendering.CommandBuffer.Blit.html) API is the legacy API. It implicitly runs extra operations related to changing states, binding textures, and setting render targets. Those operations happen under the hood in SRP projects and are not transparent to the user. +```c# +{ + Blitter.BlitCameraTexture(commandBuffer, sourceTexture, destinationTexture, materialToUse, passNumber); +} +``` -The API has compatibility issues with the URP XR integration. Using `cmd.Blit` might implicitly enable or disable XR shader keywords, which breaks XR SPI rendering. +For a full example, refer to [Example of a complete Scriptable Renderer Feature](../renderer-features/how-to-fullscreen-blit.md). -The [CommandBuffer.Blit](https://docs.unity3d.com/2022.1/Documentation/ScriptReference/Rendering.CommandBuffer.Blit.html) API is not compatible with `NativeRenderPass` and `RenderGraph`. +## Additional resources -Similar considerations apply to any utilities or wrappers relying on `cmd.Blit` internally, `RenderingUtils.Blit` is one such example. - -## SRP Blitter API - -Use the [Blitter API](https://docs.unity3d.com/Packages/com.unity.render-pipelines.core@13.1/api/UnityEngine.Rendering.Blitter.html) in URP projects. This API does not rely on legacy logic, and is compatible with XR, native Render Passes, and other SRP APIs. - -## Custom full-screen blit example - -The [How to perform a full screen blit in URP](../renderer-features/how-to-fullscreen-blit.md) example shows how to create a custom Renderer Feature that performs a full screen blit. The example works in XR and is compatible with SRP APIs. +- The blit examples in the [URP Package Samples](../package-sample-urp-package-samples.md) +- [Custom render pass workflow](../renderer-features/custom-rendering-pass-workflow-in-urp.md) +- [Using textures](../working-with-textures.md) diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/customize/inject-render-pass-via-script.md b/Packages/com.unity.render-pipelines.universal/Documentation~/customize/inject-render-pass-via-script.md index 721eb80da90..56ec5236e94 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/customize/inject-render-pass-via-script.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/customize/inject-render-pass-via-script.md @@ -93,3 +93,4 @@ To follow the steps in this example, create a [new Unity project using the **Uni 6. To raise a call to the `OnDisable()` method: In the Play mode, select Example Cube and clear the checkbox next to the script component title. Unity unsubscribes `WriteLogMessage` from the `RenderPipelineManager.beginCameraRendering` event and stops printing the message in the Console window. ![Deactivate the script component. Clear the checkbox next to the script component title.](../Images/customizing-urp/deactivate-script-component.png) + diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/customizing-urp.md b/Packages/com.unity.render-pipelines.universal/Documentation~/customizing-urp.md index ddaa8fe937f..b2c05697118 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/customizing-urp.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/customizing-urp.md @@ -7,8 +7,8 @@ Customize and extend the rendering process in the Universal Render Pipeline (URP |[Custom render passes](renderer-features/custom-rendering-passes.md)|Create a custom render pass in a C# script and inject it into the URP frame rendering loop.| |[Injection points reference](customize/custom-pass-injection-points.md)|The injection points you can use to inject render passes into the frame rendering loop.| |[Scriptable Renderer Feature and Scriptable Render Pass API reference](renderer-features/scriptable-renderer-features/scriptable-renderer-feature-reference.md)|Common methods you can use to write Scriptable Renderer Passes and Scriptable Renderer Features.| +| [Custom post-processing](post-processing/custom-post-processing.md) | Different approaches to creating custom post-processing effects. | ## Additional resources - [Pre-built effects (Renderer Features)](urp-renderer-feature.md) -- [How to create a custom post-processing effect](post-processing/post-processing-custom-effect-low-code.md) diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/features/rendering-debugger.md b/Packages/com.unity.render-pipelines.universal/Documentation~/features/rendering-debugger.md index f27a3505dd2..feb8f6ee690 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/features/rendering-debugger.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/features/rendering-debugger.md @@ -28,6 +28,8 @@ The Rendering Debugger window is available in the following modes: | Runtime | Console | Yes (only in Development builds) | Press L3 and R3 (Left Stick and Right Stick) | | Runtime | Mobile | Yes (only in Development builds) | Use a three-finger double tap | +![The Rendering Debugger overlay in Play mode.](../Images/rendering-debugger-play-mode.jpg) + To enable all the sections of the **Rendering Debugger** in your built application, disable **Strip Debug Variants** in **Project Settings > Graphics > URP Global Settings**. Otherwise, you can only use the [Display Stats](#display-stats) section. To disable the runtime UI, use the [enableRuntimeUI](https://docs.unity3d.com/Packages/com.unity.render-pipelines.core@17.0/api/UnityEngine.Rendering.DebugManager.html#UnityEngine_Rendering_DebugManager_enableRuntimeUI) property. diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/features/rendering-layers.md b/Packages/com.unity.render-pipelines.universal/Documentation~/features/rendering-layers.md index c5334054a96..d121a21beae 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/features/rendering-layers.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/features/rendering-layers.md @@ -140,4 +140,8 @@ This section contains information related to the impact of Rendering Layers on p * When using Rendering Layers only for Lights in the Forward Rendering Path, the performance impact is insignificant. -* Performance impact grows more significantly when the Rendering Layer count exceeds a multiple of 8. For example: increasing the layer count from 8 to 9 layers has a bigger relative impact than increasing the layer count from 9 to 10 layers. The same consideration applies to increasing the count from 16 to 17, from 24 to 25 and so on. \ No newline at end of file +* Performance impact grows more significantly when the Rendering Layer count exceeds a multiple of 8. For example: increasing the layer count from 8 to 9 layers has a bigger relative impact than increasing the layer count from 9 to 10 layers. The same consideration applies to increasing the count from 16 to 17, from 24 to 25 and so on. + +## Additional resources + +- [`RenderingLayerMask` API](ScriptRef:RenderingLayerMask) diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/post-processing-ssao.md b/Packages/com.unity.render-pipelines.universal/Documentation~/post-processing-ssao.md index e06a0e6bc4c..ecb32e98fd6 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/post-processing-ssao.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/post-processing-ssao.md @@ -141,7 +141,7 @@ The reduction in resolution of the Ambient Occlusion Pass by a factor of two red ### After Opaque -When you enable **After Opaque**, Unity calculates and applies the SSAO effect after the opaque render pass. This can increase performance when used with **Depth** as the **Source** for normal vector values as Unity does not perform the skips depth prepass to calculate SSAO and instead uses the existing depth values. +When you enable **After Opaque**, Unity calculates and applies the SSAO effect after the opaque render pass. This can increase performance when used with **Depth** as the **Source** for normal vector values as Unity does not perform the depth prepass to calculate SSAO and instead uses the existing depth values. However, this can cause over-darkening of the areas that receive baked occlusion and real-time occlusion. **After Opaque** can also increase performance on mobile devices that use tile-based rendering. diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/post-processing/custom-post-processing.md b/Packages/com.unity.render-pipelines.universal/Documentation~/post-processing/custom-post-processing.md index 1daed0228e4..43997f0fba9 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/post-processing/custom-post-processing.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/post-processing/custom-post-processing.md @@ -1,13 +1,20 @@ +--- +uid: urp-custom-post-processing +--- + # Custom post-processing -The Universal Render Pipeline (URP) provides a variety of pre-built [post-processing effects](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@15.0/manual/integration-with-post-processing.html) that you can adjust to create a particular visual effect or style. URP also lets you create custom post-processing effects using the [Full Screen Pass Renderer Feature](../renderer-features/renderer-feature-full-screen-pass.md). For example, you can implement a grayscale effect to indicate when a player has run out of health. +The Universal Render Pipeline (URP) provides a variety of pre-built [post-processing effects](../integration-with-post-processing) that you can adjust to create a particular visual effect or style. URP also lets you create custom post-processing effects. + +The following pages describe different approaches to creating custom post-processing effects. -![Scene with no post-processing effects.](../Images/post-proc/custom-effect/no-custom-effect.png) -
*Scene with no post-processing effects.* +| Page | Description | +|-|-| +| [Create a low-code custom post-processing effect](post-processing-custom-effect-low-code.md) | How to use a Full Screen Render Pass to create a low-code custom post-processing effect. | +| [Full Screen Pass Renderer Feature reference](../renderer-features/renderer-feature-full-screen-pass.md) | Understand the Full Screen Pass Renderer Feature. | +| [Creating a full-screen shader in Shader Graph in URP](../urp-shaders/fullscreen-master-stack-urp.md) | Resources for working with the Fullscreen Master Stack to create full screen shaders in Shader Graph. | -![Scene with grayscale custom post-processing effect.](../Images/post-proc/custom-effect/grayscale-custom-effect.png) -
*Scene with grayscale custom post-processing effect.* +## Additional resources -The following page describes how to create a custom post-processing effect using the [Full Screen Pass Renderer Feature](../renderer-features/renderer-feature-full-screen-pass.md). +- [Example of a complete Scriptable Renderer Feature](../renderer-features/how-to-fullscreen-blit.md) -* [How to create a custom post-processing effect](post-processing-custom-effect-low-code.md). \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/post-processing/post-processing-custom-effect-low-code.md b/Packages/com.unity.render-pipelines.universal/Documentation~/post-processing/post-processing-custom-effect-low-code.md index 2e8f13040f4..7ac65468bd6 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/post-processing/post-processing-custom-effect-low-code.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/post-processing/post-processing-custom-effect-low-code.md @@ -1,14 +1,20 @@ -# How to create a custom post-processing effect +--- +uid: urp-post-processing-custom-effect-low-code +--- -The example on this page shows how to use a Full Screen Render Pass to create a grayscale custom post-processing effect. +# Create a low-code custom post-processing effect in URP + +The example on this page shows how to use the Full Screen Render Pass Renderer Feature to create a grayscale custom post-processing effect. + +For more information on the Full Screen Render Pass Renderer Feature, refer to the [Full Screen Pass Renderer Feature reference](../renderer-features/renderer-feature-full-screen-pass.md). ## Prerequisites This example requires the following: -- A Unity project with the URP package installed. +* A Unity project with the URP package installed. -- The **Scriptable Render Pipeline Settings** property refers to a URP asset (**Project Settings** > **Graphics** > **Scriptable Render Pipeline Settings**). +* The **Scriptable Render Pipeline Settings** property refers to a URP asset (**Project Settings** > **Graphics** > **Scriptable Render Pipeline Settings**). ## Create a Fullscreen Shader Graph @@ -19,9 +25,9 @@ You must create a Fullscreen Shader Graph to create a custom post-processing eff 3. In the **URP Sample Buffer** node's **Source Buffer** dropdown menu, select **BlitSource**. 4. Add a **Vector 3** node. 5. Assign the **Vector 3** node the following values: - - **X** = 0.2126 - - **Y** = 0.7152 - - **Z** = 0.0722 + * **X** = 0.2126 + * **Y** = 0.7152 + * **Z** = 0.0722 6. Add a **Dot Product** node. 7. Connect the nodes as shown below. @@ -41,13 +47,15 @@ You must create a Fullscreen Shader Graph to create a custom post-processing eff Once you've created a compatible Shader Graph and Material, you can use the Material with a Full Screen Pass Renderer Feature to create a custom post-processing effect. -1. In the Project window, select a URP Renderer. -2. In the Inspector, click **Add Renderer Feature** and select **Full Screen Pass Renderer Feature**. For more information on adding Renderer Features refer to [How to add a Renderer Feature to a Renderer](./../urp-renderer-feature-how-to-add.md). -3. Set the **Post Process Material** to the Material you created with the Fullscreen Shader Graph. +1. Select your project's Universal Renderer. + + If you created your project using the **Universal 3D** template, you can find the Universal Renderers in the following project folder: **Assets** > **Settings**. + +2. In the Inspector, click **Add Renderer Feature** and select **Full Screen Pass Renderer Feature**. For more information on adding Renderer Features refer to [How to add a Renderer Feature to a Renderer](../urp-renderer-feature-how-to-add.md). +3. Set the **Pass Material** field to the Material you created with the Fullscreen Shader Graph. 4. Set **Injection Point** to **After Rendering Post Processing**. 5. Set **Requirements** to **Color**. -You should now see the effect in both Scene view and Game view. +You should now notice the effect in both Scene view and Game view. ![Example scene with a grayscale custom post-processing effect.](../Images/post-proc/custom-effect/grayscale-custom-effect.png) -
*Example scene with a grayscale custom post-processing effect.* diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/create-custom-renderer-feature.md b/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/create-custom-renderer-feature.md deleted file mode 100644 index 0091a76e859..00000000000 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/create-custom-renderer-feature.md +++ /dev/null @@ -1,709 +0,0 @@ -# Example of a complete Scriptable Renderer Feature - -This section describes how to create a complete [Scriptable Renderer Feature](./scriptable-renderer-features/intro-to-scriptable-renderer-features.md) for a URP Renderer. - -This walkthrough contains the following sections: - -* [Overview of this example implementation](#example-implementation-overview) -* [Create example Scene and GameObjects](#example-scene) -* [Create a scriptable Renderer Feature and add it to the Universal Renderer](#scriptable-renderer-feature) - * [Add the Renderer Feature to the the Universal Renderer asset](#add-renderer-feature-to-asset) -* [Create the scriptable Render Pass](#scriptable-render-pass) -* [Implement the settings for the custom render pass](#implement-the-settings-for-the-custom-render-pass) -* [Enqueue the render pass in the custom renderer feature](#enqueue-the-render-pass-in-the-custom-renderer-feature) -* [Implement the volume component](#volume-component) -* [Complete code for the scripts in this example](#complete-code-for-the-scripts-in-this-example) - * [Custom Renderer Feature code](#code-renderer-feature) - * [Custom render pass code](#code-render-pass) - * [Volume Component code](#code-volume-component) -* [The custom shader for the blur effect](#example-shader) - -## Overview of this example implementation - -The example workflow on this page implements a custom Renderer Feature that uses [custom Render Passes](./intro-to-scriptable-render-passes.md) to add a blur effect to the camera output. - -The implementation consists of the following parts: - -* A `ScriptableRendererFeature` instance that enqueues a `ScriptableRenderPass` instance every frame. - -* A `ScriptableRenderPass` instance that performs the following steps: - - * Creates a temporary render texture using the `RenderTextureDescriptor` API. - - * Applies two passes of the [custom shader](#example-shader) to the camera output using the `RTHandle` and the `Blit` API. - -## Create example Scene and GameObjects - -To set your project up for this example workflow: - -1. Create a new Scene. - -1. Create two GameObjects: a Cube GameObject called `Cube`, and a Sphere GameObject called `Sphere`. - -2. Create two Materials with a shader that lets you specify the base color (for example, the `Universal Render Pipeline/Lit` shader). Call the Materials `Blue` and `Red`, and set the base colors of the Materials to blue and red respectively. - -3. Assign the `Red` Material to the cube and the `Blue` Material to the sphere. - -3. Position the camera so that it has the cube and the sphere in its view. - -The sample scene should look like the following image: - -![Sample scene](../Images/customizing-urp/custom-renderer-feature/sample-scene.png) - -## Create a scriptable Renderer Feature and add it to the Universal Renderer - -1. Create a new C# script and name it `BlurRendererFeature.cs`. - -2. In the script, remove the code that Unity inserted in the `BlurRendererFeature` class. - -3. Add the following `using` directive: - - ```C# - using UnityEngine.Rendering.Universal; - ``` - -3. Create the `BlurRendererFeature` class that inherits from the **ScriptableRendererFeature** class. - - ```C# - public class BlurRendererFeature : ScriptableRendererFeature - ``` - -4. In the `BlurRendererFeature` class, implement the following methods: - - * `Create`: Unity calls this method on the following events: - - * When the Renderer Feature loads the first time. - - * When you enable or disable the Renderer Feature. - - * When you change a property in the inspector of the Renderer Feature. - - * `AddRenderPasses`: Unity calls this method every frame, once for each camera. This method lets you inject `ScriptableRenderPass` instances into the scriptable Renderer. - -Now you have the custom `BlurRendererFeature` Renderer Feature with its main methods. - -Below is the complete code for this step. - -```C# -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Rendering.Universal; - -public class BlurRendererFeature : ScriptableRendererFeature -{ - public override void Create() - { - - } - - public override void AddRenderPasses(ScriptableRenderer renderer, - ref RenderingData renderingData) - { - - } -} -``` - -### Add the Renderer Feature to the the Universal Renderer asset - -Add the Renderer Feature you created to the the Universal Renderer asset. For information on how to do this, refer to the page [How to add a Renderer Feature to a Renderer](../urp-renderer-feature-how-to-add.md). - -## Create the scriptable Render Pass - -This section demonstrates how to create a scriptable Render Pass and enqueue its instance into the scriptable Renderer. - -1. Create a new C# script and name it `BlurRenderPass.cs`. - -2. In the script, remove the code that Unity inserted in the `BlurRenderPass` class. Add the following `using` directive: - - ```C# - using UnityEngine.Rendering; - using UnityEngine.Rendering.Universal; - ``` - -3. Create the `BlurRenderPass` class that inherits from the **ScriptableRenderPass** class. - - ```C# - public class BlurRenderPass : ScriptableRenderPass - ``` - -4. Add the `Execute` method to the class. Unity calls this method every frame, once for each camera. This method lets you implement the rendering logic of the scriptable Render Pass. - - ```C# - public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) - { } - ``` - -Below is the complete code for the BlurRenderPass.cs file from this section. - -```C# -using UnityEngine.Rendering; -using UnityEngine.Rendering.Universal; - -public class BlurRenderPass : ScriptableRenderPass -{ - public override void Execute(ScriptableRenderContext context, - ref RenderingData renderingData) - { - - } -} -``` - -## Implement the settings for the custom render pass - -This section demonstrates how to implement the settings for the custom blur render pass. - -1. The Renderer Feature in this example uses the [shader](#example-shader) that performs the blur horizontally in one pass, and vertically in another pass. To let users control the blur value for each pass, add the following `BlurSettings` class to the `BlurRendererFeature.cs` script. - - ```C# - [Serializable] - public class BlurSettings - { - [Range(0,0.4f)] public float horizontalBlur; - [Range(0,0.4f)] public float verticalBlur; - } - ``` - -2. In the `BlurRendererFeature` class, declare the following fields: - - ```C# - [SerializeField] private BlurSettings settings; - [SerializeField] private Shader shader; - private Material material; - private BlurRenderPass blurRenderPass; - ``` - -3. In the `BlurRenderPass` class, add the fields for the settings, the Material, and the constructor that uses those fields. - - ```C# - private BlurSettings defaultSettings; - private Material material; - - public BlurRenderPass(Material material, BlurSettings defaultSettings) - { - this.material = material; - this.defaultSettings = defaultSettings; - } - ``` - -4. In the `BlurRenderPass` class, add the `RenderTextureDescriptor` field and initialize it in the constructor: - - ```C# - using UnityEngine; - - private RenderTextureDescriptor blurTextureDescriptor; - - public BlurRenderPass(Material material, BlurSettings defaultSettings) - { - this.material = material; - this.defaultSettings = defaultSettings; - - blurTextureDescriptor = new RenderTextureDescriptor(Screen.width, - Screen.height, RenderTextureFormat.Default, 0); - } - ``` - -5. In the `BlurRenderPass` class, declare the `RTHandle` field to store the reference to the temporary blur texture. - - ```C# - private RTHandle blurTextureHandle; - ``` - -6. In the `BlurRenderPass` class, implement the `Configure` method. Unity calls this method before executing the render pass. - - ```C# - public override void Configure(CommandBuffer cmd, - RenderTextureDescriptor cameraTextureDescriptor) - { - //Set the blur texture size to be the same as the camera target size. - blurTextureDescriptor.width = cameraTextureDescriptor.width; - blurTextureDescriptor.height = cameraTextureDescriptor.height; - - //Check if the descriptor has changed, and reallocate the RTHandle if necessary. - RenderingUtils.ReAllocateIfNeeded(ref blurTextureHandle, blurTextureDescriptor); - } - ``` - -7. In the `BlurRenderPass` class, implement the `UpdateBlurSettings` method that updates the shader values. - - Use the `Blit` method to apply the two passes from the custom shader to the camera output. - - ```C# - private static readonly int horizontalBlurId = - Shader.PropertyToID("_HorizontalBlur"); - private static readonly int verticalBlurId = - Shader.PropertyToID("_VerticalBlur"); - - ... - - private void UpdateBlurSettings() - { - if (material == null) return; - - material.SetFloat(horizontalBlurId, defaultSettings.horizontalBlur); - material.SetFloat(verticalBlurId, defaultSettings.verticalBlur); - } - ``` - -8. Call the `UpdateBlurSettings` method in the `Execute` method. - - ```C# - public override void Execute(ScriptableRenderContext context, - ref RenderingData renderingData) - { - //Get a CommandBuffer from pool. - CommandBuffer cmd = CommandBufferPool.Get(); - - RTHandle cameraTargetHandle = - renderingData.cameraData.renderer.cameraColorTargetHandle; - - UpdateBlurSettings(); - - // Blit from the camera target to the temporary render texture, - // using the first shader pass. - Blit(cmd, cameraTargetHandle, blurTextureHandle, material, 0); - // Blit from the temporary render texture to the camera target, - // using the second shader pass. - Blit(cmd, blurTextureHandle, cameraTargetHandle, material, 1); - - //Execute the command buffer and release it back to the pool. - context.ExecuteCommandBuffer(cmd); - CommandBufferPool.Release(cmd); - } - ``` - -9. Implement the `Dispose` method that destroys the Material and the temporary render texture after the render pass execution. - - ```C# - public void Dispose() - { - #if UNITY_EDITOR - if (EditorApplication.isPlaying) - { - Object.Destroy(material); - } - else - { - Object.DestroyImmediate(material); - } - #else - Object.Destroy(material); - #endif - - if (blurTextureHandle != null) blurTextureHandle.Release(); - } - ``` - -The complete code for this part is in section [Custom render pass code](#code-render-pass). - -## Enqueue the render pass in the custom renderer feature - -In this section, you instantiate the render pass in the `Create` method of the `BlurRendererFeature` class, and enqueue it in the `AddRenderPasses` method. - -1. In the `Create` method of the `BlurRendererFeature` class, instantiate the `BlurRenderPass` class. - - In the method, use the `renderPassEvent` field to specify when to execute the render pass. - - ```C# - public override void Create() - { - if (shader == null) - { - return; - } - material = new Material(shader); - blurRenderPass = new BlurRenderPass(material, settings); - - renderPassEvent = RenderPassEvent.AfterRenderingSkybox; - } - ``` - -2. In the `AddRenderPasses` method of the `BlurRendererFeature` class, enqueue the render pass with the `EnqueuePass` method. - - ```C# - public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) - { - if (renderingData.cameraData.cameraType == CameraType.Game) - { - renderer.EnqueuePass(blurRenderPass); - } - } - ``` - -3. Implement the `Dispose` method that destroys the material instance that the Renderer Feature creates. The method also calls the `Dispose` method from the render pass class. - - ```C# - protected override void Dispose(bool disposing) - { - blurRenderPass.Dispose(); - #if UNITY_EDITOR - if (EditorApplication.isPlaying) - { - Destroy(material); - } - else - { - DestroyImmediate(material); - } - #else - Destroy(material); - #endif - } - ``` - -For the complete Renderer Feature code, refer to section [Custom Renderer Feature code](#code-renderer-feature). - -The Scriptable Renderer Feature is now complete. The following image shows the effect of the feature in the Game view and the example settings. - -![The effect of the Scriptable Renderer Feature in the Game view](../Images/customizing-urp/custom-renderer-feature/final-effect.png)
*The effect of the Scriptable Renderer Feature in the Game view.* - -## Implement the volume component - -This section shows how to implement a volume component that lets you control the input values for the custom renderer feature. - -1. Create a new C# script and name it `CustomVolumeComponent.cs`. - -1. Inherit the `CustomVolumeComponent` class from the `VolumeComponent` class, add the `[Serializable]` attribute to the class. Add the `using UnityEngine.Rendering;` directive. - - ```C# - using System; - using UnityEngine.Rendering; - - [Serializable] - public class CustomVolumeComponent : VolumeComponent - { - - } - ``` - -2. Add the `BoolParameter` field to the `CustomVolumeComponent` class. This field lets you enable or disable the custom renderer feature. - - ```C# - public class BlurVolumeComponent : VolumeComponent - { - public BoolParameter isActive = new BoolParameter(true); - } - ``` - -3. Add the fields to control the blur settings defined in the custom renderer feature. - - ```C# - [Serializable] - public class CustomVolumeComponent : VolumeComponent - { - public BoolParameter isActive = new BoolParameter(true); - public ClampedFloatParameter horizontalBlur = - new ClampedFloatParameter(0.05f, 0, 0.5f); - public ClampedFloatParameter verticalBlur = - new ClampedFloatParameter(0.05f, 0, 0.5f); - } - ``` - -4. In the `BlurRenderPass` script, change the `UpdateBlurSettings` method so that it uses the settings defined in a Volume or the default settings if no Volume is set. - - ```C# - private void UpdateBlurSettings() - { - if (material == null) return; - - // Use the Volume settings or the default settings if no Volume is set. - var volumeComponent = - VolumeManager.instance.stack.GetComponent(); - float horizontalBlur = volumeComponent.horizontalBlur.overrideState ? - volumeComponent.horizontalBlur.value : defaultSettings.horizontalBlur; - float verticalBlur = volumeComponent.verticalBlur.overrideState ? - volumeComponent.verticalBlur.value : defaultSettings.verticalBlur; - material.SetFloat(horizontalBlurId, horizontalBlur); - material.SetFloat(verticalBlurId, verticalBlur); - } - ``` - -5. In the Unity scene, create a [local Box Volume](../Volumes.md). If a [Volume Profile](../VolumeProfile.md) is missing, create a new one by clicking **New** next to the **Profile** property. Add the `Custom Volume Component` [override](../VolumeOverrides.md) to the Volume. - - ![Box Volume properties](../Images/customizing-urp/custom-renderer-feature/local-volume.png) - -6. Enable the settings in the `Custom Volume Component` override and set the values for this Volume. Move the Volume so that the camera is inside it. The settings from the Volume override the default settings from the custom renderer feature. - -## All complete code for the scripts in this example - -This section contains the complete code for all the scripts in this example. - -### Custom Renderer Feature code - -Below is the complete code for the custom Renderer Feature script. - -```C# -using System; -using UnityEditor; -using UnityEngine; -using UnityEngine.Rendering.Universal; - -public class BlurRendererFeature : ScriptableRendererFeature -{ - [SerializeField] private BlurSettings settings; - [SerializeField] private Shader shader; - private Material material; - private BlurRenderPass blurRenderPass; - - public override void Create() - { - if (shader == null) - { - return; - } - material = new Material(shader); - blurRenderPass = new BlurRenderPass(material, settings); - - blurRenderPass.renderPassEvent = RenderPassEvent.AfterRenderingSkybox; - } - - public override void AddRenderPasses(ScriptableRenderer renderer, - ref RenderingData renderingData) - { - if (renderingData.cameraData.cameraType == CameraType.Game) - { - renderer.EnqueuePass(blurRenderPass); - } - } - - protected override void Dispose(bool disposing) - { - blurRenderPass.Dispose(); - #if UNITY_EDITOR - if (EditorApplication.isPlaying) - { - Destroy(material); - } - else - { - DestroyImmediate(material); - } - #else - Destroy(material); - #endif - } -} - -[Serializable] -public class BlurSettings -{ - [Range(0, 0.4f)] public float horizontalBlur; - [Range(0, 0.4f)] public float verticalBlur; -} -``` - -### Custom render pass code - -Below is the complete code for the custom Render Pass script. - -```C# -using UnityEditor; -using UnityEngine; -using UnityEngine.Rendering; -using UnityEngine.Rendering.Universal; - -public class BlurRenderPass : ScriptableRenderPass -{ - private static readonly int horizontalBlurId = - Shader.PropertyToID("_HorizontalBlur"); - private static readonly int verticalBlurId = - Shader.PropertyToID("_VerticalBlur"); - - private BlurSettings defaultSettings; - private Material material; - - private RenderTextureDescriptor blurTextureDescriptor; - private RTHandle blurTextureHandle; - - public BlurRenderPass(Material material, BlurSettings defaultSettings) - { - this.material = material; - this.defaultSettings = defaultSettings; - - blurTextureDescriptor = new RenderTextureDescriptor(Screen.width, - Screen.height, RenderTextureFormat.Default, 0); - } - - public override void Configure(CommandBuffer cmd, - RenderTextureDescriptor cameraTextureDescriptor) - { - // Set the blur texture size to be the same as the camera target size. - blurTextureDescriptor.width = cameraTextureDescriptor.width; - blurTextureDescriptor.height = cameraTextureDescriptor.height; - - // Check if the descriptor has changed, and reallocate the RTHandle if necessary - RenderingUtils.ReAllocateIfNeeded(ref blurTextureHandle, blurTextureDescriptor); - } - - private void UpdateBlurSettings() - { - if (material == null) return; - - // Use the Volume settings or the default settings if no Volume is set. - var volumeComponent = - VolumeManager.instance.stack.GetComponent(); - float horizontalBlur = volumeComponent.horizontalBlur.overrideState ? - volumeComponent.horizontalBlur.value : defaultSettings.horizontalBlur; - float verticalBlur = volumeComponent.verticalBlur.overrideState ? - volumeComponent.verticalBlur.value : defaultSettings.verticalBlur; - material.SetFloat(horizontalBlurId, horizontalBlur); - material.SetFloat(verticalBlurId, verticalBlur); - } - - public override void Execute(ScriptableRenderContext context, - ref RenderingData renderingData) - { - //Get a CommandBuffer from pool. - CommandBuffer cmd = CommandBufferPool.Get(); - - RTHandle cameraTargetHandle = - renderingData.cameraData.renderer.cameraColorTargetHandle; - - UpdateBlurSettings(); - - // Blit from the camera target to the temporary render texture, - // using the first shader pass. - Blit(cmd, cameraTargetHandle, blurTextureHandle, material, 0); - // Blit from the temporary render texture to the camera target, - // using the second shader pass. - Blit(cmd, blurTextureHandle, cameraTargetHandle, material, 1); - - //Execute the command buffer and release it back to the pool. - context.ExecuteCommandBuffer(cmd); - CommandBufferPool.Release(cmd); - } - - public void Dispose() - { - #if UNITY_EDITOR - if (EditorApplication.isPlaying) - { - Object.Destroy(material); - } - else - { - Object.DestroyImmediate(material); - } - #else - Object.Destroy(material); - #endif - - if (blurTextureHandle != null) blurTextureHandle.Release(); - } -} -``` - -### Volume Component code - -Below is the complete code for the Volume Component script. - -```C# -using System; -using UnityEngine.Rendering; - -[Serializable] -public class CustomVolumeComponent : VolumeComponent -{ - public BoolParameter isActive = new BoolParameter(true); - public ClampedFloatParameter horizontalBlur = - new ClampedFloatParameter(0.05f, 0, 0.5f); - public ClampedFloatParameter verticalBlur = - new ClampedFloatParameter(0.05f, 0, 0.5f); -} -``` - -## The custom shader for the blur effect - -This section contains the code for the custom shader that implements the blur effect. - -```c++ -Shader "CustomEffects/Blur" -{ - HLSLINCLUDE - - #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" - // The Blit.hlsl file provides the vertex shader (Vert), - // the input structure (Attributes), and the output structure (Varyings) - #include "Packages/com.unity.render-pipelines.core/Runtime/Utilities/Blit.hlsl" - - float _VerticalBlur; - float _HorizontalBlur; - - float4 _BlitTexture_TexelSize; - - float4 BlurVertical (Varyings input) : SV_Target - { - const float BLUR_SAMPLES = 64; - const float BLUR_SAMPLES_RANGE = BLUR_SAMPLES / 2; - - float3 color = 0; - float blurPixels = _VerticalBlur * _ScreenParams.y; - - for(float i = -BLUR_SAMPLES_RANGE; i <= BLUR_SAMPLES_RANGE; i++) - { - float2 sampleOffset = - float2 (0, (blurPixels / _BlitTexture_TexelSize.w) * - (i / BLUR_SAMPLES_RANGE)); - color += - SAMPLE_TEXTURE2D(_BlitTexture, sampler_LinearClamp, - input.texcoord + sampleOffset).rgb; - } - - return float4(color.rgb / (BLUR_SAMPLES + 1), 1); - } - - float4 BlurHorizontal (Varyings input) : SV_Target - { - const float BLUR_SAMPLES = 64; - const float BLUR_SAMPLES_RANGE = BLUR_SAMPLES / 2; - - UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); - float3 color = 0; - float blurPixels = _HorizontalBlur * _ScreenParams.x; - for(float i = -BLUR_SAMPLES_RANGE; i <= BLUR_SAMPLES_RANGE; i++) - { - float2 sampleOffset = - float2 ((blurPixels / _BlitTexture_TexelSize.z) * - (i / BLUR_SAMPLES_RANGE), 0); - color += - SAMPLE_TEXTURE2D(_BlitTexture, sampler_LinearClamp, - input.texcoord + sampleOffset).rgb; - } - return float4(color / (BLUR_SAMPLES + 1), 1); - } - - ENDHLSL - - SubShader - { - Tags { "RenderType"="Opaque" "RenderPipeline" = "UniversalPipeline"} - LOD 100 - ZWrite Off Cull Off - Pass - { - Name "BlurPassVertical" - - HLSLPROGRAM - - #pragma vertex Vert - #pragma fragment BlurVertical - - ENDHLSL - } - - Pass - { - Name "BlurPassHorizontal" - - HLSLPROGRAM - - #pragma vertex Vert - #pragma fragment BlurHorizontal - - ENDHLSL - } - } -} -``` \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/how-to-fullscreen-blit.md b/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/how-to-fullscreen-blit.md index 9781ae79a60..f73a33ec183 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/how-to-fullscreen-blit.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/how-to-fullscreen-blit.md @@ -1,207 +1,183 @@ -# Perform a full screen blit in URP +# Example of a complete Scriptable Renderer Feature -The example on this page describes how to create a custom Renderer Feature that performs a full screen blit. +The example on this page performs a full-screen blit that tints the screen green. -## Example overview +To use the examples, follow these steps: -This example implements the following solution: +1. To create the custom render pass, create a new C# script called `ColorBlitPass.cs`, then paste in the code from the [Example custom render pass](#render-pass) section. -* A [custom Renderer Feature](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@12.0/api/UnityEngine.Rendering.Universal.ScriptableRendererFeature.html) calls a custom [Render Pass](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@12.0/api/UnityEngine.Rendering.Universal.ScriptableRenderPass.html). + **Note:** The example uses the `Blitter` API. Don't use the `CommandBuffer.Blit` API in URP. Refer to [Blit](../customize/blit-overview) for more information. -* The [Render Pass](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@12.0/api/UnityEngine.Rendering.Universal.ScriptableRenderPass.html) blits the Opaque Texture to the the [Camera color target](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@7.0/api/UnityEngine.Rendering.Universal.ScriptableRenderer.html#UnityEngine_Rendering_Universal_ScriptableRenderer_cameraColorTarget) for the current renderer. The render pass uses the command buffer to draw a full screen mesh for both eyes. +2. To create the Scriptable Renderer Feature that adds the custom render pass to the render loop, create a new C# script called `ColorBlitRendererFeature.cs`, then paste in the code from the [Example Scriptable Renderer Feature](#scriptable-renderer-feature) section. -The example includes [the shader](#shader) that performs the GPU side of the rendering. The shader samples the color buffer using XR sampler macros. +3. To create the shader code that tints the pixels green, [create a shader file](https://docs.unity3d.com/2022.3/Documentation/Manual/class-Shader.html), then paste in the code from the [Example shader](#shader) section. -## Prerequisites +4. Add the `ColorBlitRendererFeature` to the current URP Renderer asset. For more information, refer to [Add a Renderer Feature to a URP Renderer](../urp-renderer-feature.md). -This example requires the following: +To change the brightness, adjust the **Intensity** property in the **Color Blit Renderer Feature** component. -* The **Scriptable Render Pipeline Settings** property refers to a URP asset (**Project Settings** > **Graphics** > **Scriptable Render Pipeline Settings**). +**Note:** To visualize the example if your project uses XR, install the [MockHMD XR Plugin](https://docs.unity3d.com/Packages/com.unity.xr.mock-hmd@latest/) package in your project, then set the **Render Mode** property to **Single Pass Instanced**. -## Create example Scene and GameObjects + +## Example custom render pass -To follow the steps in this example, create a new Scene with the following GameObjects: +```C# +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; -1. Create a Cube. Ensure that the Cube is clearly visible from the main Camera. +internal class ColorBlitPass : ScriptableRenderPass +{ + ProfilingSampler m_ProfilingSampler = new ProfilingSampler("ColorBlit"); + Material m_Material; + RTHandle m_CameraColorTarget; + float m_Intensity; - ![](../Images/how-to/blit/example-scene.png) - -Now you have the Scene necessary to follow the steps in this example. - -## Example implementation - -This section assumes that you created a Scene as described in section [Create example Scene and GameObjects](#example-objects). - -Follow these steps to create a [custom Renderer Feature](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@12.0/api/UnityEngine.Rendering.Universal.ScriptableRendererFeature.html) with a custom [Render Pass](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@12.0/api/UnityEngine.Rendering.Universal.ScriptableRenderPass.html). - -1. Create a new C# script. Call it `ColorBlitRendererFeature.cs`. This script implements the custom Renderer Feature. - - ```C# - using UnityEngine; - using UnityEngine.Rendering; - using UnityEngine.Rendering.Universal; - - internal class ColorBlitRendererFeature : ScriptableRendererFeature + public ColorBlitPass(Material material) { - public Shader m_Shader; - public float m_Intensity; + m_Material = material; + renderPassEvent = RenderPassEvent.BeforeRenderingPostProcessing; + } - Material m_Material; + public void SetTarget(RTHandle colorHandle, float intensity) + { + m_CameraColorTarget = colorHandle; + m_Intensity = intensity; + } - ColorBlitPass m_RenderPass = null; + public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderingData) + { + ConfigureTarget(m_CameraColorTarget); + } - public override void AddRenderPasses(ScriptableRenderer renderer, - ref RenderingData renderingData) - { - if (renderingData.cameraData.cameraType == CameraType.Game) - renderer.EnqueuePass(m_RenderPass); - } + public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) + { + var cameraData = renderingData.cameraData; + if (cameraData.camera.cameraType != CameraType.Game) + return; - public override void SetupRenderPasses(ScriptableRenderer renderer, - in RenderingData renderingData) - { - if (renderingData.cameraData.cameraType == CameraType.Game) - { - // Calling ConfigureInput with the ScriptableRenderPassInput.Color argument - // ensures that the opaque texture is available to the Render Pass. - m_RenderPass.ConfigureInput(ScriptableRenderPassInput.Color); - m_RenderPass.SetTarget(renderer.cameraColorTargetHandle, m_Intensity); - } - } + if (m_Material == null) + return; - public override void Create() + CommandBuffer cmd = CommandBufferPool.Get(); + using (new ProfilingScope(cmd, m_ProfilingSampler)) { - m_Material = CoreUtils.CreateEngineMaterial(m_Shader); - m_RenderPass = new ColorBlitPass(m_Material); + m_Material.SetFloat("_Intensity", m_Intensity); + Blitter.BlitCameraTexture(cmd, m_CameraColorTarget, m_CameraColorTarget, m_Material, 0); } + context.ExecuteCommandBuffer(cmd); + cmd.Clear(); - protected override void Dispose(bool disposing) - { - CoreUtils.Destroy(m_Material); - } + CommandBufferPool.Release(cmd); } - ``` +} +``` -2. Create a new C# script. Call it `ColorBlitPass.cs`. This script implements the custom Render Pass that performs the custom blit draw call. + +## Example Scriptable Renderer Feature - This Render Pass uses the `Blitter.BlitCameraTexture` method to draw a full-screen quad and perform the blit operation. +The Scriptable Renderer Feature adds the render pass to the render loop. - > **NOTE:** Do not use the `cmd.Blit` method in URP XR projects because that method has compatibility issues with the URP XR integration. Using `cmd.Blit` might implicitly enable or disable XR shader keywords, which breaks XR SPI rendering. +```C# +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; - ```C# - using UnityEngine; - using UnityEngine.Rendering; - using UnityEngine.Rendering.Universal; +internal class ColorBlitRendererFeature : ScriptableRendererFeature +{ + public Shader m_Shader; + public float m_Intensity; - internal class ColorBlitPass : ScriptableRenderPass - { - ProfilingSampler m_ProfilingSampler = new ProfilingSampler("ColorBlit"); - Material m_Material; - RTHandle m_CameraColorTarget; - float m_Intensity; + Material m_Material; - public ColorBlitPass(Material material) - { - m_Material = material; - renderPassEvent = RenderPassEvent.BeforeRenderingPostProcessing; - } + ColorBlitPass m_RenderPass = null; - public void SetTarget(RTHandle colorHandle, float intensity) - { - m_CameraColorTarget = colorHandle; - m_Intensity = intensity; - } + public override void AddRenderPasses(ScriptableRenderer renderer, + ref RenderingData renderingData) + { + if (renderingData.cameraData.cameraType == CameraType.Game) + renderer.EnqueuePass(m_RenderPass); + } - public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderingData) + public override void SetupRenderPasses(ScriptableRenderer renderer, + in RenderingData renderingData) + { + if (renderingData.cameraData.cameraType == CameraType.Game) { - ConfigureTarget(m_CameraColorTarget); + // Calling ConfigureInput with the ScriptableRenderPassInput.Color argument + // ensures that the opaque texture is available to the Render Pass. + m_RenderPass.ConfigureInput(ScriptableRenderPassInput.Color); + m_RenderPass.SetTarget(renderer.cameraColorTargetHandle, m_Intensity); } + } - public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) - { - var cameraData = renderingData.cameraData; - if (cameraData.camera.cameraType != CameraType.Game) - return; + public override void Create() + { + m_Material = CoreUtils.CreateEngineMaterial(m_Shader); + m_RenderPass = new ColorBlitPass(m_Material); + } - if (m_Material == null) - return; + protected override void Dispose(bool disposing) + { + CoreUtils.Destroy(m_Material); + } +} +``` - CommandBuffer cmd = CommandBufferPool.Get(); - using (new ProfilingScope(cmd, m_ProfilingSampler)) - { - m_Material.SetFloat("_Intensity", m_Intensity); - Blitter.BlitCameraTexture(cmd, m_CameraColorTarget, m_CameraColorTarget, m_Material, 0); - } - context.ExecuteCommandBuffer(cmd); - cmd.Clear(); + +## Example shader - CommandBufferPool.Release(cmd); - } - } - ``` +The shader performs the GPU side of the rendering. It samples the color texture from the camera, then outputs the color with the green value set to the chosen intensity. -3. Create the shader that performs the blit operation. Call the shader file `ColorBlit.shader`. The vertex function outputs the full-screen quad position. The fragment function samples the color buffer and returns the `color * float4(0, _Intensity, 0, 1)` value to the render target. +**Note:** The shader you use with the `Blitter` API must be a hand-coded shader. [Shader Graph](xref:um-shader-graph) shaders aren't compatible with the `Blitter` API. - ```c++ - Shader "ColorBlit" +```c++ +Shader "ColorBlit" +{ + SubShader { - SubShader + Tags { "RenderType"="Opaque" "RenderPipeline" = "UniversalPipeline"} + LOD 100 + ZWrite Off Cull Off + Pass { - Tags { "RenderType"="Opaque" "RenderPipeline" = "UniversalPipeline"} - LOD 100 - ZWrite Off Cull Off - Pass - { - Name "ColorBlitPass" + Name "ColorBlitPass" - HLSLPROGRAM - #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" - // The Blit.hlsl file provides the vertex shader (Vert), - // input structure (Attributes) and output strucutre (Varyings) - #include "Packages/com.unity.render-pipelines.core/Runtime/Utilities/Blit.hlsl" + HLSLPROGRAM + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + + // The Blit.hlsl file provides the vertex shader (Vert), + // the input structure (Attributes) and the output structure (Varyings) + #include "Packages/com.unity.render-pipelines.core/Runtime/Utilities/Blit.hlsl" - #pragma vertex Vert - #pragma fragment frag + #pragma vertex Vert + #pragma fragment frag - TEXTURE2D_X(_CameraOpaqueTexture); - SAMPLER(sampler_CameraOpaqueTexture); + // Set the color texture from the camera as the input texture + TEXTURE2D_X(_CameraOpaqueTexture); + SAMPLER(sampler_CameraOpaqueTexture); - float _Intensity; + // Set up an intensity parameter + float _Intensity; - half4 frag (Varyings input) : SV_Target - { - UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); - float4 color = SAMPLE_TEXTURE2D_X(_CameraOpaqueTexture, sampler_CameraOpaqueTexture, input.texcoord); - return color * float4(0, _Intensity, 0, 1); - } - ENDHLSL + half4 frag (Varyings input) : SV_Target + { + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + + // Sample the color from the input texture + float4 color = SAMPLE_TEXTURE2D_X(_CameraOpaqueTexture, sampler_CameraOpaqueTexture, input.texcoord); + + // Output the color from the texture, with the green value set to the chosen intensity + return color * float4(0, _Intensity, 0, 1); } + ENDHLSL } } - ``` - -4. Add the `ColorBlitRendererFeature` to the Universal Renderer asset. - - ![Add Renderer Feature](../Images/how-to/blit/add-renderer-feature.png) - - For information on how to add a Renderer Feature, refer to the page [How to add a Renderer Feature to a Renderer](../urp-renderer-feature-how-to-add.md). - - For this example, set the Intensity property to 1.5. - -5. Unity shows the following views: - - ![Final Scene and Game views](../Images/how-to/blit/final-scene-and-game-view.png) - - > **NOTE:** To visualize the example in XR, configure the project to use XR SDK. [Add the MockHMD XR Plugin to the project](https://docs.unity3d.com/Packages/com.unity.xr.mock-hmd@latest/index.html). Set the **Render Mode** property to **Single Pass Instanced**. - -The example is complete. +} +``` ## Additional resources -* [Blit Camera color texture to RTHandle](../customize/blit-to-rthandle.md) - - This page describes how to blit a camera color texture to an output texture, and set the output texture as a global property. - -* [Blit multiple RTHandle textures and draw them on the screen](../customize/blit-multiple-rthandles.md) - - This page describes a more complex blit operation that uses multiple textures defined as `RTHandle`. \ No newline at end of file +- [Custom render pass workflow](../renderer-features/custom-rendering-pass-workflow-in-urp.md) +- [Injecting a render pass via a Scriptable Renderer Feature](../renderer-features/scriptable-renderer-features/scriptable-renderer-features-landing.md) +- [Writing custom shaders in URP](../writing-custom-shaders-urp.md) diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/intro-to-scriptable-render-passes.md b/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/intro-to-scriptable-render-passes.md index 59cc3fbdd66..387630c1245 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/intro-to-scriptable-render-passes.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/intro-to-scriptable-render-passes.md @@ -33,6 +33,6 @@ For example, if you have two Cameras and you add the Scriptable Render Pass in t ## Additional resources -* [How to create a Custom Renderer Feature](create-custom-renderer-feature.md) +* [Example of a complete Scriptable Renderer Feature](how-to-fullscreen-blit.md) * [Scriptable Renderer Feature Reference](scriptable-renderer-features/scriptable-renderer-feature-reference.md) * [How to inject a Custom Render Pass via scripting](../customize/custom-pass-injection-points.md) diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/renderer-feature-full-screen-pass.md b/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/renderer-feature-full-screen-pass.md index 60fb0ddd76c..93720f2406d 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/renderer-feature-full-screen-pass.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/renderer-feature-full-screen-pass.md @@ -1,6 +1,22 @@ -# Full Screen Pass Renderer Feature reference +--- +uid: urp-renderer-feature-full-screen-pass +--- -Refer to [How to create a custom post-processing effect](../post-processing/post-processing-custom-effect-low-code.md) for information on how to create a full screen effect using the Full Screen Pass Renderer Feature. +# Full Screen Pass Renderer Feature reference for URP + +The Full Screen Pass Renderer Feature lets you inject full screen render passes at pre-defined injection points to create full screen effects. + +You can use this Renderer Feature to create [custom post-processing effects](../post-processing/custom-post-processing.md). + +## How to use the feature + +To add the Renderer Feature to your scene: + +1. [Add the Full Screen Pass Renderer Feature](../urp-renderer-feature.md) to the URP Renderer. + +Refer to the following page for an example of how to use this feature: + +* [How to create a custom post-processing effect](../post-processing/post-processing-custom-effect-low-code.md). ## Properties @@ -11,5 +27,5 @@ The Full Screen Pass Renderer Feature contains the following properties. | **Name** | Name of the Full Screen Pass Renderer Feature. | | **Pass Material** | The Material the Renderer Feature uses to render the effect. | | **Injection Point** | Select when the effect is rendered:
  • **Before Rendering Transparents**: Add the effect after the skybox pass and before the transparents pass.
  • **Before Rendering Post Processing**: Add the effect after the transparents pass and before the post-processing pass.
  • **After Rendering Post Processing**: Add the effect after the post-processing pass and before AfterRendering pass.
**After Rendering Post Processing** is the default setting. | -| **Requirements** | Select one or more of the following passes for the Renderer Feature to use:
  • **None**: Add no additional passes.
  • **Everything**: Adds all additional passes available (Depth, Normal, Color, and Motion).
  • **Depth**: Adds a depth prepass to enable the use of depth values.
  • **Normal**: Enables the use of normal vector data.
  • **Color**: Copies color data of a screen to the _BlitTexture texture inside the shader.
  • **Motion**: Enables the use of motion vectors.
**Color** is the default setting. | -| **Pass Index** | Select a specific pass inside the Pass Material's shader for the Pass Material to use.

This option is hidden by default. To access this option, click ⋮ in the Renderer Feature section of the Inspector and select **Show Additional Properties**. | \ No newline at end of file +| **Requirements** | Select one or more of the following passes for the Renderer Feature to use:
  • **None**: Add no additional passes.
  • **Everything**: Adds all additional passes available (Depth, Normal, Color, and Motion).
  • **Depth**: Adds a depth prepass to enable the use of depth values. For more information, refer to **Depth Texture** in [Camera Inspector window reference](../camera-component-reference)
  • **Normal**: Enables the use of normal vector data.
  • **Color**: Copies color data of a screen to the _BlitTexture texture inside the shader.
  • **Motion**: Enables the use of motion vectors.
**Color** is the default setting. | +| **Pass Index** | Select a specific pass inside the Pass Material's shader for the Pass Material to use.

This option is hidden by default. To access this option, click ⋮ in the Renderer Feature section of the Inspector and select **Show Additional Properties**. | diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/scriptable-renderer-features/apply-scriptable-feature-to-specific-camera.md b/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/scriptable-renderer-features/apply-scriptable-feature-to-specific-camera.md index 1bb9064e88e..d909ac2b1ee 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/scriptable-renderer-features/apply-scriptable-feature-to-specific-camera.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/scriptable-renderer-features/apply-scriptable-feature-to-specific-camera.md @@ -13,7 +13,7 @@ This guide is split into the following sections: ## Prerequisites -This guide assumes that you already have a complete Scriptable Renderer Feature to work with. If you do not, refer to [How to Create a Custom Renderer Feature](../create-custom-renderer-feature.md). +This guide assumes that you already have a complete Scriptable Renderer Feature to work with. If you do not, refer to [Example of a complete Scriptable Renderer Feature](../how-to-fullscreen-blit.md). ## Apply Scriptable Renderer Feature to Game Cameras @@ -43,4 +43,4 @@ This Scriptable Renderer Feature now only applies to Cameras with the Game camer * [Introduction to Scriptable Renderer Features](./intro-to-scriptable-renderer-features.md) * [Introduction to Scriptable Render Passes](../intro-to-scriptable-render-passes.md) -* [How to create a Custom Renderer Feature](../create-custom-renderer-feature.md) +* [Example of a complete Scriptable Renderer Feature](../how-to-fullscreen-blit.md) diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/scriptable-renderer-features/inject-a-pass-using-a-scriptable-renderer-feature.md b/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/scriptable-renderer-features/inject-a-pass-using-a-scriptable-renderer-feature.md index 6ec7e259f6f..5c0f475f052 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/scriptable-renderer-features/inject-a-pass-using-a-scriptable-renderer-feature.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/scriptable-renderer-features/inject-a-pass-using-a-scriptable-renderer-feature.md @@ -115,49 +115,6 @@ This section uses the example `RedTintRenderPass` Scriptable Render Pass from th } ``` -## Custom Renderer Feature code +You can now add the Scriptable Renderer Feature to the active URP asset. -Below is the complete code for the custom Renderer Feature script. - -```C# -using System; -using UnityEditor; -using UnityEngine; -using UnityEngine.Rendering; -using UnityEngine.Rendering.Universal; - -public class MyRendererFeature : ScriptableRendererFeature -{ - [SerializeField] private Shader shader; - private Material material; - private RedTintRenderPass redTintRenderPass; - - public override void Create() - { - if (shader == null) - { - Debug.LogError("Ensure that you've set a shader in the Scriptable Renderer Feature."); - return; - } - material = CoreUtils.CreateEngineMaterial(shader); - redTintRenderPass = new RedTintRenderPass(material); - - redTintRenderPass.renderPassEvent = RenderPassEvent.AfterRenderingSkybox; - } - - public override void AddRenderPasses(ScriptableRenderer renderer, - ref RenderingData renderingData) - { - if (redTintRenderPass != null && - renderingData.cameraData.cameraType == CameraType.Game) - { - renderer.EnqueuePass(redTintRenderPass); - } - } - protected override void Dispose(bool disposing) - { - CoreUtils.Destroy(material); - } -} - -``` +For a full example, refer to [Example of a complete Scriptable Renderer Feature](../how-to-fullscreen-blit.md). diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/scriptable-renderer-features/intro-to-scriptable-renderer-features.md b/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/scriptable-renderer-features/intro-to-scriptable-renderer-features.md index 0e29e2063c3..13b3b31020f 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/scriptable-renderer-features/intro-to-scriptable-renderer-features.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/scriptable-renderer-features/intro-to-scriptable-renderer-features.md @@ -26,4 +26,4 @@ Alternately, the injection of individual Scriptable Render Passes offers the abi ## Additional resources * [Introduction to Scriptable Render Passes](../intro-to-scriptable-render-passes.md) -* [How to create a Custom Renderer Feature](../create-custom-renderer-feature.md) +* [Example of a complete Scriptable Renderer Feature](../how-to-fullscreen-blit.md) diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/scriptable-renderer-features/scriptable-renderer-feature-reference.md b/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/scriptable-renderer-features/scriptable-renderer-feature-reference.md index ecccb76e058..55a9ab97996 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/scriptable-renderer-features/scriptable-renderer-feature-reference.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/scriptable-renderer-features/scriptable-renderer-feature-reference.md @@ -32,4 +32,4 @@ You can use the following methods within a Scriptable Renderer Pass to handle it * [Introduction to Scriptable Renderer Features](./intro-to-scriptable-renderer-features.md) * [Introduction to Scriptable Render Passes](intro-to-scriptable-renderer-features.md) -* [How to create a Custom Renderer Feature](../create-custom-renderer-feature.md) +* [Example of a complete Scriptable Renderer Feature](../how-to-fullscreen-blit.md) diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/scriptable-renderer-features/scriptable-renderer-features-landing.md b/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/scriptable-renderer-features/scriptable-renderer-features-landing.md index d4dfc6ac915..c12bc7b9608 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/scriptable-renderer-features/scriptable-renderer-features-landing.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/scriptable-renderer-features/scriptable-renderer-features-landing.md @@ -7,4 +7,4 @@ Scriptable Renderer Features are components you can add to a renderer to alter h |[Introduction to Scriptable Renderer Features](intro-to-scriptable-renderer-features.md)|What a Scriptable Renderer Feature is, and how a Scriptable Renderer Feature relates to a Scriptable Render Pass.| |[Inject a custom pass using a Scriptable Renderer Feature](inject-a-pass-using-a-scriptable-renderer-feature.md)|Create a Scriptable Renderer Feature, add it to the Universal Renderer, and enqueue a render pass.| |[Apply a Scriptable Renderer Feature to a specific camera type](apply-scriptable-feature-to-specific-camera.md)|Control which cameras the effect of a Scriptable Renderer Feature applies to.| -|[Example of a complete Scriptable Renderer Feature](../create-custom-renderer-feature.md)|An example of a complete Scriptable Renderer Feature with a Scriptable Render Pass that creates a blur effect.| +|[Example of a complete Scriptable Renderer Feature](../how-to-fullscreen-blit.md)|An example of a complete Scriptable Renderer Feature with a Scriptable Render Pass that creates a blur effect.| diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/write-a-scriptable-render-pass.md b/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/write-a-scriptable-render-pass.md index a4c96defdbf..16c32334725 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/write-a-scriptable-render-pass.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/write-a-scriptable-render-pass.md @@ -1,288 +1,72 @@ -# Write a Scriptable Render Pass +# Write a Scriptable Render Pass in URP -The following example is a `ScriptableRenderPass` instance that performs the following steps: +To create a Scriptable Render Pass in the Universal Render Pipeline (URP), follow these steps: -1. Creates a temporary render texture using the `RenderTextureDescriptor` API. -2. Applies two passes of the [custom shader](#example-shader) to the camera output using the `RTHandle` and the `Blit` API. - -After you write a Scriptable Render Pass, you can inject the pass using one of the following methods: - -- [Use the `RenderPipelineManager` API](../customize/inject-render-pass-via-script.md) -- [Use a Scriptable Renderer Feature](scriptable-renderer-features/inject-a-pass-using-a-scriptable-renderer-feature.md) - -## Create the scriptable Render Pass - -This section demonstrates how to create a scriptable Render Pass. - -1. Create a new C# script and name it `RedTintRenderPass.cs`. - -2. In the script, remove the code that Unity inserted in the `RedTintRenderPass` class. Add the following `using` directive: +1. Create a C# script that inherits the `ScriptableRenderPass` class. For example: ```C# using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; - ``` - -3. Create the `RedTintRenderPass` class that inherits from the **ScriptableRenderPass** class. - - ```C# - public class RedTintRenderPass : ScriptableRenderPass - ``` - -4. Add the `Execute` method to the class. Unity calls this method every frame, once for each camera. This method lets you implement the rendering logic of the scriptable Render Pass. - - ```C# - public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) - { } - ``` - -Below is the complete code for the RedTintRenderPass.cs file from this section. - -```C# -using UnityEngine.Rendering; -using UnityEngine.Rendering.Universal; - -public class RedTintRenderPass : ScriptableRenderPass -{ - public override void Execute(ScriptableRenderContext context, - ref RenderingData renderingData) - { - - } -} -``` - -## Implement the settings for the custom render pass - -1. Add a field for the Material, and the constructor that uses the field. - - ```C# - private Material material; - public RedTintRenderPass(Material material) + public class ExampleRenderPass : ScriptableRenderPass { - this.material = material; } ``` -2. Add the `RenderTextureDescriptor` field and initialize it in the constructor: +2. In the class, add variables for the materials and textures you use in the render pass. - ```C# - using UnityEngine; + For example, the following code sets up a handle to a texture, and a descriptor to configure the texture. + ```c# + private RTHandle textureHandle; private RenderTextureDescriptor textureDescriptor; - - public RedTintRenderPass(Material material) - { - this.material = material; - - textureDescriptor = new RenderTextureDescriptor(Screen.width, - Screen.height, RenderTextureFormat.Default, 0); - } ``` -3. Declare the `RTHandle` field to store the reference to the temporary red tint texture. - - ```C# - private RTHandle textureHandle; - ``` +4. Override the `Configure` method to set up the render pass. Unity calls this method before executing the render pass. -4. Implement the `Configure` method. Unity calls this method before executing the render pass. + For example: - ```C# - public override void Configure(CommandBuffer cmd, - RenderTextureDescriptor cameraTextureDescriptor) + ```c# + public override void Configure(CommandBuffer cmd, RenderTextureDescriptor cameraTextureDescriptor) { - //Set the red tint texture size to be the same as the camera target size. + //Set the texture size to be the same as the camera target size. textureDescriptor.width = cameraTextureDescriptor.width; textureDescriptor.height = cameraTextureDescriptor.height; - //Check if the descriptor has changed, and reallocate the RTHandle if necessary. + //Check if the descriptor has changed, and reallocate the texture handle if necessary. RenderingUtils.ReAllocateIfNeeded(ref textureHandle, textureDescriptor); } ``` -5. Use the Blit method to apply the two passes from the custom shader to the camera output. - - ```C# - public override void Execute(ScriptableRenderContext context, - ref RenderingData renderingData) - { - //Get a CommandBuffer from pool. - CommandBuffer cmd = CommandBufferPool.Get(); - - RTHandle cameraTargetHandle = - renderingData.cameraData.renderer.cameraColorTargetHandle; - - // Blit from the camera target to the temporary render texture, - // using the first shader pass. - Blit(cmd, cameraTargetHandle, textureHandle, material, 0); - // Blit from the temporary render texture to the camera target, - // using the second shader pass. - Blit(cmd, textureHandle, cameraTargetHandle, material, 1); - - //Execute the command buffer and release it back to the pool. - context.ExecuteCommandBuffer(cmd); - CommandBufferPool.Release(cmd); - } - ``` - -6. Implement the `Dispose` method that destroys the Material and the temporary render texture after the render pass execution. - - ```C# - public void Dispose() - { - #if UNITY_EDITOR - if (EditorApplication.isPlaying) - { - Object.Destroy(material); - } - else - { - Object.DestroyImmediate(material); - } - #else - Object.Destroy(material); - #endif - - if (textureHandle != null) textureHandle.Release(); - } - ``` - -### Custom render pass code - -Below is the complete code for the custom Render Pass script. - -```C# -using UnityEditor; -using UnityEngine; -using UnityEngine.Rendering; -using UnityEngine.Rendering.Universal; - -public class RedTintRenderPass : ScriptableRenderPass -{ - private Material material; - - private RenderTextureDescriptor textureDescriptor; - private RTHandle textureHandle; - - public RedTintRenderPass(Material material) - { - this.material = material; - - textureDescriptor = new RenderTextureDescriptor(Screen.width, - Screen.height, RenderTextureFormat.Default, 0); - } +5. Override the `Execute` method with your rendering commands. Unity calls this method every frame, once for each camera. - public override void Configure(CommandBuffer cmd, - RenderTextureDescriptor cameraTextureDescriptor) - { - // Set the texture size to be the same as the camera target size. - textureDescriptor.width = cameraTextureDescriptor.width; - textureDescriptor.height = cameraTextureDescriptor.height; + For example: - // Check if the descriptor has changed, and reallocate the RTHandle if necessary - RenderingUtils.ReAllocateIfNeeded(ref textureHandle, textureDescriptor); - } - - public override void Execute(ScriptableRenderContext context, - ref RenderingData renderingData) + ```c# + public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) { - //Get a CommandBuffer from pool. + // Get a CommandBuffer from pool CommandBuffer cmd = CommandBufferPool.Get(); - RTHandle cameraTargetHandle = - renderingData.cameraData.renderer.cameraColorTargetHandle; - - // Blit from the camera target to the temporary render texture, - // using the first shader pass. - Blit(cmd, cameraTargetHandle, textureHandle, material, 0); - // Blit from the temporary render texture to the camera target, - // using the second shader pass. - Blit(cmd, textureHandle, cameraTargetHandle, material, 1); + // Add rendering commands to the CommandBuffer + ... - //Execute the command buffer and release it back to the pool. + // Execute the command buffer and release it back to the pool context.ExecuteCommandBuffer(cmd); CommandBufferPool.Release(cmd); } + ``` - public void Dispose() - { - #if UNITY_EDITOR - if (EditorApplication.isPlaying) - { - Object.Destroy(material); - } - else - { - Object.DestroyImmediate(material); - } - #else - Object.Destroy(material); - #endif - - if (textureHandle != null) textureHandle.Release(); - } -} -``` - -## The custom shader for the red tint effect - -This section contains the code for the custom shader that implements the red tint effect. +## Inject a render pass into the render loop -```c++ -Shader "CustomEffects/RedTint" -{ - HLSLINCLUDE - - #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" - // The Blit.hlsl file provides the vertex shader (Vert), - // the input structure (Attributes), and the output structure (Varyings) - #include "Packages/com.unity.render-pipelines.core/Runtime/Utilities/Blit.hlsl" +To inject a render pass into the render loop, refer to the following: - - float4 RedTint (Varyings input) : SV_Target - { - float3 color = SAMPLE_TEXTURE2D(_BlitTexture, sampler_LinearClamp, input.texcoord).rgb; - return float4(1, color.gb, 1); - } +- [Use the `RenderPipelineManager` API](../customize/inject-render-pass-via-script.md) +- [Use a Scriptable Renderer Feature](scriptable-renderer-features/inject-a-pass-using-a-scriptable-renderer-feature.md) - float4 SimpleBlit (Varyings input) : SV_Target - { - float3 color = SAMPLE_TEXTURE2D(_BlitTexture, sampler_LinearClamp, input.texcoord).rgb; - return float4(color.rgb, 1); - } - - ENDHLSL - - SubShader - { - Tags { "RenderType"="Opaque" "RenderPipeline" = "UniversalPipeline"} - LOD 100 - ZTest Always ZWrite Off Cull Off - Pass - { - Name "RedTint" +For a complete example, refer to [Example of a complete Scriptable Renderer Feature](../renderer-features/how-to-fullscreen-blit.md). - HLSLPROGRAM - - #pragma vertex Vert - #pragma fragment RedTint - - ENDHLSL - } - - Pass - { - Name "SimpleBlit" +## Additional resources - HLSLPROGRAM - - #pragma vertex Vert - #pragma fragment SimpleBlit - - ENDHLSL - } - } -} -``` \ No newline at end of file +- [Custom render pass workflow](../renderer-features/custom-rendering-pass-workflow-in-urp.md) +- [Writing custom shaders in URP](../writing-custom-shaders-urp.md) \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/snippets/shader-graph-blocks/alpha.md b/Packages/com.unity.render-pipelines.universal/Documentation~/snippets/shader-graph-blocks/alpha.md new file mode 100644 index 00000000000..862355ba6e4 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/snippets/shader-graph-blocks/alpha.md @@ -0,0 +1,6 @@ + +Alpha +The Material's alpha value. This determines how transparent the material is. The expected range is 0 - 1. +None +1.0 + diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/snippets/shader-graph-blocks/base-color.md b/Packages/com.unity.render-pipelines.universal/Documentation~/snippets/shader-graph-blocks/base-color.md new file mode 100644 index 00000000000..6ec06ab8abf --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/snippets/shader-graph-blocks/base-color.md @@ -0,0 +1,6 @@ + +Base Color +The base color of the material. +None +Color.grey + diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/snippets/shader-graph-blocks/eye-depth.md b/Packages/com.unity.render-pipelines.universal/Documentation~/snippets/shader-graph-blocks/eye-depth.md new file mode 100644 index 00000000000..a1dd6f77cb3 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/snippets/shader-graph-blocks/eye-depth.md @@ -0,0 +1,8 @@ + +Eye Depth +Scales a value to world space to represent the depth from the near plane. This value represents a point in world space, determined by the platform you use. For more information, refer to The Depth (Z) direction in Shaders. +In Graph Settings:
+• Enable Depth Write.
• Set Depth Write Mode to LinearEye. +0 + + diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/snippets/shader-graph-blocks/linear01-depth.md b/Packages/com.unity.render-pipelines.universal/Documentation~/snippets/shader-graph-blocks/linear01-depth.md new file mode 100644 index 00000000000..846d503088e --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/snippets/shader-graph-blocks/linear01-depth.md @@ -0,0 +1,8 @@ + +Linear 01 Depth +Uses a linear depth value between 0 and 1. +In Graph Settings:
+• Enable Depth Write.
• Set Depth Write Mode to Linear01. +0 + + diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/snippets/shader-graph-blocks/raw-depth.md b/Packages/com.unity.render-pipelines.universal/Documentation~/snippets/shader-graph-blocks/raw-depth.md new file mode 100644 index 00000000000..e5e31919c0d --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/snippets/shader-graph-blocks/raw-depth.md @@ -0,0 +1,8 @@ + +Raw Depth +Samples the depth value from the depth buffer. You can also use this setting with a nonlinear depth value. +In Graph Settings:
+• Enable Depth Write.
• Set Depth Write Mode to Raw. +0 + + diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/urp-shaders/birp-urp-custom-shader-upgrade-guide.md b/Packages/com.unity.render-pipelines.universal/Documentation~/urp-shaders/birp-urp-custom-shader-upgrade-guide.md index eea5c33ead7..a6a5462c6c4 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/urp-shaders/birp-urp-custom-shader-upgrade-guide.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/urp-shaders/birp-urp-custom-shader-upgrade-guide.md @@ -95,7 +95,7 @@ The following steps show how to solve these issues and make a shader compatible > **Note**: URP does not support all ShaderLab tags. For more information on which tags URP supports, refer to [URP ShaderLab Pass tags](./urp-shaderlab-pass-tags.md). -4. Replace the `struct v2f` code block with the following `struct Varyings` code block. This changes the struct to use the URP naming convention of `Varyings` instead of `v2f`, and updates the shader to use the correct variables for URP. +4. Replace the `struct v2f` code block with the following `struct Varyings` code block. This changes the struct to use the URP name of `Varyings` instead of `v2f`, and updates the shader to use the correct variables for URP. ```c++ struct Varyings @@ -106,7 +106,7 @@ The following steps show how to solve these issues and make a shader compatible }; ``` -5. Beneath the include statement and above the `Varyings` struct, define a new struct with the name `Attributes`. This is equivalent to the Built-In Render Pipeline's appdata structs but with the new URP naming conventions. +5. Beneath the include statement and above the `Varyings` struct, define a new struct with the name `Attributes`. This is equivalent to the Built-In Render Pipeline's `appdata` struct. 6. Add the variables shown below to the `Attributes` struct. ```c++ @@ -169,7 +169,7 @@ This custom unlit shader is now compatible with the SRP Batcher and ready for us Although the shader is now compatible with URP and the SRP Batcher, you can't use use the **Tiling** and **Offset** properties without further changes. To add this functionality to the custom unlit shader, use the following steps. -1. Rename the property `_MainTex` to `_BaseMap` along with any references to this property. This brings the shader code closer to standard URP shader conventions. +1. Rename the property `_MainTex` to `_BaseMap` along with any references to this property. 2. Remove the `[NoScaleOffset]` ShaderLab attribute from the `_BaseMap` property. You can now see **Tiling** and **Offset** properties in the shader's Inspector window. 3. Add the `[MainTexture]` ShaderLab attribute to the `_BaseMap` property and the `[MainColor]` attribute to the `_Color` property. This tells the Editor which property to return when you request the main texture or main color from another part of your project or in the Editor. The `Properties` section of your shader should now look as follows: diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/urp-shaders/fullscreen-master-stack-reference.md b/Packages/com.unity.render-pipelines.universal/Documentation~/urp-shaders/fullscreen-master-stack-reference.md new file mode 100644 index 00000000000..05d718828c9 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/urp-shaders/fullscreen-master-stack-reference.md @@ -0,0 +1,100 @@ +--- +uid: um-fullscreen-master-stack-reference +--- + +# Fullscreen Master Stack in Shader Graph reference for URP + +The Fullscreen Master Stack has a variety of properties in the Graph Settings window which control the overall appearance of the Fullscreen shader. + +## Surface Options + +| **Property** | **Description** | +| ------------ | --------------- | +| **Allow Override Material** | Exposes the Graph Settings properties in the Material’s **Surface Options**. **Note:** You can only expose properties that you enable in **Graph Settings.** If you enable one of these properties, you can’t disable it in the Inspector under the Material’s **Surface Options.** | +| **Blend Mode** | Specifies the blend mode to use when Unity renders the full-screen shader. Each option has an equivalent [`BlendMode`](https://docs.unity3d.com/ScriptReference/Rendering.BlendMode.html) operation. **Note**: When you write to a Blit shader, disable this property to avoid undesired effects. | +|     **Alpha** | Uses the shader’s alpha value to control its opacity. `BlendMode` operation: `Blend SrcAlpha OneMinusSrcAlpha` | +|     **Premultiply** | Multiplies the RGB values of the transparent shader by its alpha value, then applies a similar effect to the shader as **Alpha**. `BlendMode` operation: `Blend One OneMinusSrcAlpha` | +|     **Additive** | Adds the color values of the full-screen shader and the Camera output together. `BlendMode` operation: `Blend One One` | +|     **Multiply** | Multiplies the color of the full-screen shader with the color of the Camera’s output. `BlendMode` operation: `Blend DstColor Zero` | +|     **Custom** | Set every parameter of the blending equation manually. For more information, refer to [Custom blend modes](#custom-blend-modes). | +| **Depth Test** | Specifies the function this shader uses to perform the depth test. | +|     **Disabled** | Does not perform a depth test. | +|     **Never** | The depth test never passes. | +|     **Less** | The depth test passes if the pixel's depth value is less than the value stored in the depth buffer. | +|     **Equal** | The depth test passes if the pixel's depth value is equal to the value stored in the depth buffer. | +|     **Less Equal** | The depth test passes if the pixel's depth value is less than or equal to the value stored in the depth buffer. This renders the tested pixel in front of other pixels. | +|     **Greater** | The depth test passes if the pixel's depth value is greater than the value stored in the depth buffer. | +|     **Not Equal** | The depth test passes if the pixel's depth value is not equal to the value stored in the depth buffer. | +|     **Greater Equal** | The depth test passes if the pixel's depth value is greater than or equal to the value stored in the depth buffer. | +|     **Always** | The depth test always passes, and Unity does not compare the pixel's depth value to the value it has stored in the depth buffer. | +| **Depth Write** | Indicates whether Unity writes depth values for GameObjects that use this shader. Enable this property to write the depth value to the depth buffer and use a depth Fragment block. | +| **Depth Write Mode** | Determines the depth value’s input format before Unity passes it to the depth buffer. This property determines which Depth block you can use in the Fragment context. This property appears when you enable **Depth Write**. | +|     **LinearEye** | Converts the depth value into a value scaled to world space. This new value represents the depth (in meters) from the near to the far plane of the Camera. | +|     **Linear01** | Uses a linear depth value range between 0 and 1. | +|     **Raw** | Does not convert the depth buffer value. Use this setting with a nonlinear depth value or when you directly sample the depth value from the depth buffer. | +| **Enable Stencil** | This property gives you control over all stencil fields. Refer to [Stencil properties](#stencil-properties) for information about the options that become available when you enable this property. | +| **Custom Editor GUI** | Accepts the full name of a C# class that inherits [`FullscreenShaderGUI`](https://docs.unity3d.com/Packages/com.unity.shadergraph@14.0/api/UnityEditor.Rendering.Fullscreen.ShaderGraph.FullscreenShaderGUI.html). For information on how to use a custom editor, refer to [ShaderLab: assigning a custom editor](https://docs.unity3d.com/2022.3/Documentation/Manual/SL-CustomEditor.html). | + +## Custom Blend Mode + +Use the **Custom** blend mode to create a blend mode different from those available in [Surface Options](#surface-options). To show these options, set **Blend Mode** to **Custom**. The Custom blend mode properties specify the blending operation to use for this full-screen shader’s alpha and color channels. + +In the blend mode properties, **Src** (source) refers to the full-screen shader itself. **Dst** (destination) refers to the Scene camera’s raw output, which this shader doesn't affect. The blending operation applies the source contents to the destination contents to produce a rendering result. + +For more information on the blending equation, refer to [ShaderLab command: Blend](https://docs.unity3d.com/Manual/SL-Blend.html). + +### Color Blend Mode + +Determines the blending equation Unity uses for the red, green, and blue channels (RGB). Each setting defines one part of the equation. + +| **Property** | **Description** | +| ------------------- | ------------------------------------------------------------ | +| **Src Color** | Sets the blend mode of the source color. | +| **Dst Color** | Sets the blend mode of the destination color. | +| **Color Operation** | Determines how to combine the source and destination color during the blending process. For information on these options refer to [ShaderLab command: BlendOp](https://docs.unity3d.com/Manual/SL-BlendOp.html) | + +### Alpha Blend Mode + +Determines the blending equation Unity uses for the alpha channel. Each setting defines one part of the equation. + +| **Property** | **Description** | +| --------------------- | ------------------------------------------------------------ | +|**Src** | Sets the blend mode of the source alpha. For information on these options, refer to [Valid parameter values](https://docs.unity3d.com/Manual/SL-Blend.html#valid-parameter-values). | +| **Dst** | Sets the blend mode of the destination alpha. For information on these options, refer to [Valid parameter values](https://docs.unity3d.com/Manual/SL-Blend.html). | +| **Blend Operation Alpha** | Determines how to combine the source and destination alpha during the blending process. For more information on these options, refer to [ShaderLab command: BlendOp](https://docs.unity3d.com/Manual/SL-BlendOp.html) | + +## Stencil properties + +These properties affect how this full-screen Shader Graph uses the stencil buffer. For more information on the stencil buffer, refer to [SL-Stencil](https://docs.unity3d.com/Manual/SL-Stencil.html). + +| **Property** | **Description** | +| ------------ | --------------- | +| **Reference** | Determines the stencil reference value this shader uses for all stencil operations. | +| **Read Mask** | Determines which bits this shader can read during the stencil test. | +| **Write Mask** | Determines which bits this shader can write to during the stencil test. | +| **Comparison** | Determines the comparison function this shader uses during the stencil test. | +|     **Disabled** | Does not perform a stencil test. | +|     **Never** | The stencil test never passes. | +|     **Less** | The stencil test passes if the pixel's depth value is less than the value stored in the depth buffer. | +|     **Equal** | The stencil test passes if the pixel's depth value is equal to the value stored in the depth buffer. | +|     **Less Equal** | The stencil test passes if the pixel's depth value is less than or equal to than the depth buffer value. This renders the tested pixel in front of other pixels. | +|     **Greater** | The stencil test passes if the pixel's depth value is greater than the value stored in the depth buffer. | +|     **Not Equal** | The stencil test passes if the pixel's depth value is not equal to the value stored in the depth buffer. | +|     **Greater Equal** | The stencil test passes if the pixel's depth value is greater than or equal to the value stored in the depth buffer. | +|     **Always** | The stencil test always passes, and Unity does not compare the pixel's depth value to the value it has stored in the depth buffer. | +| **Pass** | Determines the operation this shader executes if the stencil test succeeds.
For more information on this property’s options, refer to [pass and fail options](#stencil-pass-fail). | +| **Fail** | Determines the operation this shader executes if the stencil test fails.
For more information on this property’s options, refer to [pass and fail options](#stencil-pass-fail). | +| **Depth Fail** | Determines the operation this shader executes if the depth test fails. This option has no effect if the depth test **Comparison** value is **Never** or **Disabled.**
For more information on this property’s options, refer to [pass and fail options](#stencil-pass-fail). | + +### Pass and Fail options + +| **Option** | **Description** | +| --------------------- | ------------------------------------------------------------ | +| **Keep** | Does not change the current contents of the stencil buffer. | +| **Zero** | Writes a value of 0 into the stencil buffer. | +| **Replace** | Writes the **Reference** value into the buffer. | +| **IncrementSaturate** | Adds a value of 1 to the current value in the buffer. A value of 255 remains 255. | +| **DecrementSaturate** | Subtracts a value of 1 from the current value in the buffer. A value of 0 remains 0. | +| **Invert** | Performs a bitwise NOT operation. This means it negates all the bits of the current value in the buffer.
For example, a decimal value of 59 is 0011 1011 in binary. The NOT operation reverses each bit to 1100 0100, which is a decimal value of 196. | +| **IncrementWrap** | Adds a value of 1 to the current value in the buffer. A value of 255 becomes 0. | +| **DecrementWrap** | Subtracts a value of 1 from the current value in the buffer. A value of 0 becomes 255. | diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/urp-shaders/fullscreen-master-stack-shader-graph.md b/Packages/com.unity.render-pipelines.universal/Documentation~/urp-shaders/fullscreen-master-stack-shader-graph.md new file mode 100644 index 00000000000..a69f1bc877a --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/urp-shaders/fullscreen-master-stack-shader-graph.md @@ -0,0 +1,76 @@ +--- +uid: urp-master-stack-fullscreen +--- +# Fullscreen Master Stack reference for Shader Graph in URP + +Use the Fullscreen Master Stack to create a Shader Graph material to apply to the entire screen at the end of the rendering process. You can use this to create custom post-process and custom pass effects. + +![A full-screen shader that applies a raindrop effect to the screen.](../Images/Fullscreen-shader-rain.png) + +## Contexts + +A shader graph contains the following contexts: + +* [Vertex context](#vertex-context) +* [Fragment context](#fragment-context) + +The Fullscreen Master Stack has its own [Graph Settings](fullscreen-master-stack-reference.md) that determine which blocks you can use in the Shader Graph contexts. + +This section contains information on the blocks that this Master Stack material type uses by default, and which blocks you can use to affect the Graph Settings. + +### Vertex context + +The Vertex context represents the vertex stage of this shader. Unity executes any block you connect to this context in the vertex function of this shader. For more information, refer to [Master Stack](https://docs.unity3d.com/Packages/com.unity.shadergraph@14.0/manual/Master-Stack.html). + +Vertex blocks are not compatible with the Fullscreen Master Stack. + +### Fragment context + +The Fragment context represents the fragment (or pixel) stage of this shader. Unity executes any block you connect to this context in the fragment function of this shader. For more information, refer to [Master Stack](https://docs.unity3d.com/Packages/com.unity.shadergraph@14.0/manual/Master-Stack.html). + +### Default + +When you create a new Fullscreen Master Stack, the Fragment context contains the following blocks by default. + + + + + + + + + + + + +[!include[](../snippets/shader-graph-blocks/base-color.md)] +[!include[](../snippets/shader-graph-blocks/alpha.md)] + + +
PropertyDescriptionSetting DependencyDefault Value
+ +### Relevant + +The following blocks are also compatible with the Fullscreen master stack. + + + + + + + + + + + + +[!include[](../snippets/shader-graph-blocks/eye-depth.md)] +[!include[](../snippets/shader-graph-blocks/linear01-depth.md)] +[!include[](../snippets/shader-graph-blocks/raw-depth.md)] + + +
PropertyDescriptionSetting DependencyDefault Value
+ +## Fullscreen Master Stack reference + +For more information about the properties available in the Fullscreen Master Stack, refer to the [Master Stack Fullscreen reference for URP](fullscreen-master-stack-reference.md). \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/urp-shaders/fullscreen-master-stack-urp.md b/Packages/com.unity.render-pipelines.universal/Documentation~/urp-shaders/fullscreen-master-stack-urp.md new file mode 100644 index 00000000000..d4fbe946d86 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/urp-shaders/fullscreen-master-stack-urp.md @@ -0,0 +1,12 @@ +--- +uid: um-fullscreen-master-stack-urp +--- + +# Creating a full-screen shader in Shader Graph in URP + +The Fullscreen Master Stack creates a Shader Graph material to apply to the entire screen in URP. + +| Page | Description | +| ---- | ----------- | +| [Fullscreen Master Stack for Shader Graph](fullscreen-master-stack-shader-graph.md) | Understand the Fullscreen Master Stack available to Shader Graph in URP. | +| [Fullscreen Master Stack in Shader Graph reference](fullscreen-master-stack-reference.md) | Explore the properties of the Fullscreen Master Stack and how to use it to create a full screen shader in Shader Graph. | diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/urp-universal-renderer.md b/Packages/com.unity.render-pipelines.universal/Documentation~/urp-universal-renderer.md index 8ed78c50009..05d9a38fa1e 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/urp-universal-renderer.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/urp-universal-renderer.md @@ -26,7 +26,7 @@ The following table shows the differences between the Forward and the Deferred R | Feature | Forward | Forward+ | Deferred | |---------|---------|----------|----------| -| Maximum number of real-time lights per object. | 9 | Unlimited. [The per-Camera limit applies](rendering/forward-plus-rendering-path.md). | Unlimited | +| Maximum number of real-time lights per object. | 9 | Unlimited. [The per-Camera limit applies](rendering/forward-plus-rendering-path.md#reduce-build-time). | Unlimited | | Per-pixel normal encoding | No encoding (accurate normal values). | No encoding (accurate normal values). | Two options:
  • Quantization of normals in G-buffer (loss of accuracy, better performance).
  • Octahedron encoding (accurate normals, might have significant performance impact on mobile GPUs).
For more information, refer to the section [Encoding of normals in G-buffer](rendering/deferred-rendering-path.md#accurate-g-buffer-normals). | | MSAA | Yes | Yes | No | | Vertex lighting | Yes | No | No | @@ -62,7 +62,7 @@ This section contains properties related to rendering. | Property | Description | |:-|:-| | **Rendering Path** | Select the Rendering Path.
Options:
  • **Forward**: The Forward Rendering Path.
  • **Forward+**: The [Forward+ Rendering Path](rendering/forward-plus-rendering-path.md).
  • **Deferred**: The [Deferred Rendering Path](rendering/deferred-rendering-path.md).
| -|   **Depth Priming Mode** | This property determines when Unity performs depth priming.
Depth Priming can improve GPU frame timings by reducing the number of pixel shader executions. The performance improvement depends on the amount of overlapping pixels in the opaque pass and the complexity of the pixel shaders that Unity can skip by using depth priming.
The feature has an upfront memory and performance cost. The feature uses a depth prepass to determine which pixel shader invocations Unity can skip, and the feature adds the depth prepass if it's not available yet.
The options are:
  • **Disabled**: Unity does not perform depth priming.
  • **Auto**: If there is a Render Pass that requires a depth prepass, Unity performs the depth prepass and depth priming.
  • **Forced**: Unity always performs depth priming. To do this, Unity also performs a depth prepass for every render pass. **Note**: Depth priming is disabled at runtime on certain hardware (Tile Based Deferred Rendering) regardless of this setting.
On Android, iOS, and Apple TV, Unity performs depth priming only in the Forced mode. On tiled GPUs, which are common to those platforms, depth priming might reduce performance when combined with MSAA.

This property is available only if **Rendering Path** is set to **Forward** | +|   **Depth Priming Mode** | Specify whether Unity uses scene depth data to identify pixels the camera can't see, then skips the shader fragment stage for those pixels. This speeds up rendering, but has an upfront memory and performance cost. The amount rendering speeds up depends on how many pixels are hidden, and the complexity of the fragment shader code Unity skips.

The options are:
  • **Disabled**: Unity doesn't perform depth priming.
  • **Auto**: Unity performs depth priming only if it's already performed a depth prepass. A depth prepass renders scene depth data early in the render pipeline. This option is not supported on Android, iOS, and Apple TV.
  • **Forced**: Unity always performs a depth prepass and depth priming.

Depth priming isn't compatible with the following:
  • Platforms that use tile-based rendering.
  • The Deferred rendering path.
  • Multisample anti-aliasing (MSAA).
| |   **Accurate G-buffer normals** | Indicates whether to use a more resource-intensive normal encoding/decoding method to improve visual quality.

This property is available only if **Rendering Path** is set to **Deferred**. | | **Depth Texture Mode** | Specifies at which stage in the render pipeline URP should copy the scene depth to a depth texture. The options are:
  • **After Opaques**: URP copies the scene depth after the opaques render pass.
  • **After Transparents**: URP copies the scene depth after the transparents render pass.
  • **Force Prepass**: URP does a depth prepass to generate the scene depth texture.
**Note**: On mobile devices, the **After Transparents** option can lead to a significant improvement in memory bandwidth. This is because the Copy Depth pass causes a switch in render target between the Opaque pass and the Transparents pass. When this occurs, Unity stores the contents of the Color Buffer in the main memory, and then loads it again once the Copy Depth pass is complete. The impact increases significantly when MSAA is enabled, because Unity must also store and load the MSAA data alongside the Color Buffer. | diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/working-with-textures.md b/Packages/com.unity.render-pipelines.universal/Documentation~/working-with-textures.md index cb505668cd8..9f866a89731 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/working-with-textures.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/working-with-textures.md @@ -4,7 +4,11 @@ How to access and use textures in a custom render pass in the Universal Render P |Page|Description| |-|-| -|[URP blit best practices](customize/blit-overview.md)|Understand the different ways to perform a blit operation in URP and best practices to follow when writing custom render passes.| -|[Perform a full screen blit in URP](renderer-features/how-to-fullscreen-blit.md)|An example of creating a custom render pass and a custom Scriptable Renderer Feature that performs a full screen blit.| +|[Blit](customize/blit-overview.md)|Understand the different ways to perform a blit operation in URP and best practices to follow when writing custom render passes.| | [Blit input and output textures](customize/blit-to-rthandle.md) | Blit a camera color texture to an output texture, then set the output texture as a global shader property. | -| [Blit multiple RTHandle textures](customize/blit-multiple-rthandles.md) | An example of a blit operation that involves multiple `RTHandle` textures and a custom shader effect. | \ No newline at end of file +| [Blit multiple RTHandle textures](customize/blit-multiple-rthandles.md) | An example of a blit operation that involves multiple `RTHandle` textures and a custom shader effect. | + +## Additional resources + +- The blit examples in the [URP Package Samples](package-sample-urp-package-samples.md) +- [Example of a complete Scriptable Renderer Feature](renderer-features/how-to-fullscreen-blit.md) diff --git a/Packages/com.unity.render-pipelines.universal/Editor/LightExplorer.cs b/Packages/com.unity.render-pipelines.universal/Editor/LightExplorer.cs index 969f1648093..15a8eab9a49 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/LightExplorer.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/LightExplorer.cs @@ -51,6 +51,10 @@ protected override LightingExplorerTableColumn[] GetReflectionProbeColumns() new LightingExplorerTableColumn(LightingExplorerTableColumn.DataType.Enum, Styles.Resolution, "m_Resolution", 100, (r, prop, dep) => { EditorGUI.IntPopup(r, prop, Styles.ReflectionProbeSizeTitles, Styles.ReflectionProbeSizeValues, GUIContent.none); + }, + (lhs, rhs) => + { + return lhs.intValue.CompareTo(rhs.intValue); }), // 4: Probe Resolution new LightingExplorerTableColumn(LightingExplorerTableColumn.DataType.Float, Styles.ShadowDistance, "m_ShadowDistance", 100), // 5: Shadow Distance new LightingExplorerTableColumn(LightingExplorerTableColumn.DataType.Float, Styles.NearPlane, "m_NearClip", 70), // 6: Near Plane diff --git a/Packages/com.unity.render-pipelines.universal/Editor/ShaderBuildPreprocessor.cs b/Packages/com.unity.render-pipelines.universal/Editor/ShaderBuildPreprocessor.cs index 9e520790a2d..9a7b77c0c09 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/ShaderBuildPreprocessor.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/ShaderBuildPreprocessor.cs @@ -70,6 +70,7 @@ enum ShaderFeatures : long SoftShadowsMedium = (1L << 47), SoftShadowsHigh = (1L << 48), + All = ~0 } [Flags] @@ -85,6 +86,7 @@ enum VolumeFeatures DepthOfField = (1 << 6), CameraMotionBlur = (1 << 7), PaniniProjection = (1 << 8), + All = ~0 } @@ -137,7 +139,7 @@ public static VolumeFeatures volumeFeatures { // This can happen for example when building AssetBundles. if (s_VolumeFeatures == VolumeFeatures.None) - GetSupportedFeaturesFromVolumes(); + GetSupportedFeaturesFromVolumes(ref s_VolumeFeatures); return s_VolumeFeatures; } @@ -193,7 +195,6 @@ internal struct RendererRequirements { public int msaaSampleCount; public bool isUniversalRenderer; - public bool needsUnusedVariants; public bool needsProcedural; public bool needsMainLightShadows; public bool needsAdditionalLightShadows; @@ -236,23 +237,24 @@ public void OnPostprocessBuild(BuildReport report) // settings for all URP Assets in the quality settings internal static void GatherShaderFeatures(bool isDevelopmentBuild) { + s_SupportedFeaturesList.Clear(); GetGlobalAndPlatformSettings(isDevelopmentBuild); - GetSupportedFeaturesFromVolumes(); - s_Strip2DPasses = true; - s_SupportedFeaturesList.Clear(); - using (ListPool.Get(out List urpAssets)) - { - bool success = EditorUserBuildSettings.activeBuildTarget.TryGetRenderPipelineAssets(urpAssets); - if (!success) - { - Debug.LogError("Unable to get UniversalRenderPipelineAssets from EditorUserBuildSettings.activeBuildTarget."); - return; - } + // If stripping of unused volume features is disabled, the s_VolumeFeatures + // variable is set to include every keyword used by volumes shaders. + // Otherwise it tries to gather all the volume features used in the project. + if (s_StripUnusedPostProcessingVariants) + GetSupportedFeaturesFromVolumes(ref s_VolumeFeatures); + else + GetEveryVolumeFeatures(ref s_VolumeFeatures); - // Get Supported features & update data used for Shader Prefiltering and Scriptable Stripping - GetSupportedShaderFeaturesFromAssets(ref urpAssets, ref s_SupportedFeaturesList, s_StripUnusedVariants); - } + // If stripping of unused shader variants is disabled, the s_SupportedFeaturesList + // list is set to include one item containing every keyword used by URP. + // Otherwise it tries to gather all the shader features used in the project. + if (s_StripUnusedVariants) + HandleEnabledShaderStripping(); + else + GetEveryShaderFeatureAndUpdateURPAssets(s_SupportedFeaturesList); } // Retrieves the global and platform settings used in the project... @@ -297,13 +299,18 @@ private static void GetGlobalAndPlatformSettings(bool isDevelopmentBuild) #endif } + internal static void GetEveryVolumeFeatures(ref VolumeFeatures volumeFeatures) + { + volumeFeatures = VolumeFeatures.All; + } + // Checks each Volume Profile Assets for used features... - private static void GetSupportedFeaturesFromVolumes() + private static void GetSupportedFeaturesFromVolumes(ref VolumeFeatures volumeFeatures) { if (!s_StripUnusedPostProcessingVariants) return; - s_VolumeFeatures = VolumeFeatures.Calculated; + volumeFeatures = VolumeFeatures.Calculated; string[] guids = AssetDatabase.FindAssets("t:VolumeProfile"); foreach (string guid in guids) { @@ -322,22 +329,78 @@ private static void GetSupportedFeaturesFromVolumes() if (asset.Has()) s_VolumeFeatures |= VolumeFeatures.Bloom; if (asset.Has()) - s_VolumeFeatures |= VolumeFeatures.ToneMapping; + volumeFeatures |= VolumeFeatures.ToneMapping; if (asset.Has()) - s_VolumeFeatures |= VolumeFeatures.FilmGrain; + volumeFeatures |= VolumeFeatures.FilmGrain; if (asset.Has()) - s_VolumeFeatures |= VolumeFeatures.DepthOfField; + volumeFeatures |= VolumeFeatures.DepthOfField; if (asset.Has()) - s_VolumeFeatures |= VolumeFeatures.CameraMotionBlur; + volumeFeatures |= VolumeFeatures.CameraMotionBlur; if (asset.Has()) - s_VolumeFeatures |= VolumeFeatures.PaniniProjection; + volumeFeatures |= VolumeFeatures.PaniniProjection; if (asset.Has()) - s_VolumeFeatures |= VolumeFeatures.ChromaticAberration; + volumeFeatures |= VolumeFeatures.ChromaticAberration; + } + } + + internal static void GetEveryShaderFeatureAndPrefilteringData(List rendererFeaturesList, ref ShaderPrefilteringData spd) + { + // Add one Shader Features item that includes every keyword used by URP Shaders + ShaderFeatures shaderFeatures = ShaderFeatures.All; + rendererFeaturesList.Add(shaderFeatures); + + // Shader Prefiltering + // Get prefiltering data that has every feature enabled + spd = ShaderPrefilteringData.GetDefault(); + } + + // Used when Strip Unused Variants is disabled in the Global Settings. + // One ShaderFeatures item, containing all the keywords used in URP, is added to the + // s_SupportedFeaturesList and then every URP asset is updated so it doesn't prefilter any keywords. + private static void GetEveryShaderFeatureAndUpdateURPAssets(List rendererFeaturesList) + { + ShaderPrefilteringData spd = new(); + GetEveryShaderFeatureAndPrefilteringData(rendererFeaturesList, ref spd); + + // Update each asset so it has every feature enabled + using (ListPool.Get(out List urpAssets)) + { + bool buildingForURP = EditorUserBuildSettings.activeBuildTarget.TryGetRenderPipelineAssets(urpAssets); + if (!buildingForURP) + return; + + for (int urpAssetIndex = 0; urpAssetIndex < urpAssets.Count; urpAssetIndex++) + { + UniversalRenderPipelineAsset urpAsset = urpAssets[urpAssetIndex]; + if (urpAsset == null) + continue; + + // Update the Prefiltering settings for this URP asset + urpAsset.UpdateShaderKeywordPrefiltering(ref spd); + + // Mark the asset dirty so it can be serialized once the build is finished + EditorUtility.SetDirty(urpAsset); + } + } + } + + // The path for gathering shader features for normal shader stripping + private static void HandleEnabledShaderStripping() + { + s_Strip2DPasses = true; + using (ListPool.Get(out List urpAssets)) + { + bool buildingForURP = EditorUserBuildSettings.activeBuildTarget.TryGetRenderPipelineAssets(urpAssets); + if (buildingForURP) + { + // Get Supported features & update data used for Shader Prefiltering and Scriptable Stripping + GetSupportedShaderFeaturesFromAssets(ref urpAssets, ref s_SupportedFeaturesList, s_StripUnusedVariants); + } } } // Checks each Universal Render Pipeline Asset for features used... - internal static void GetSupportedShaderFeaturesFromAssets(ref List urpAssets, ref List rendererFeaturesList, bool stripUnusedVariants) + private static void GetSupportedShaderFeaturesFromAssets(ref List urpAssets, ref List rendererFeaturesList, bool stripUnusedVariants) { List ssaoRendererFeatures = new List(16); for (int urpAssetIndex = 0; urpAssetIndex < urpAssets.Count; urpAssetIndex++) @@ -475,7 +538,7 @@ internal static ShaderFeatures GetSupportedShaderFeaturesFromRenderers( // Get feature requirements from the renderer ScriptableRenderer renderer = urpAsset.GetRenderer(rendererIndex); ScriptableRendererData rendererData = rendererDataArray[rendererIndex]; - RendererRequirements rendererRequirements = GetRendererRequirements(ref urpAsset, ref renderer, ref rendererData, stripUnusedVariants); + RendererRequirements rendererRequirements = GetRendererRequirements(ref urpAsset, ref renderer, ref rendererData); // Get & add Supported features from renderers used for Scriptable Stripping and prefiltering. ShaderFeatures rendererShaderFeatures = GetSupportedShaderFeaturesFromRenderer(ref rendererRequirements, ref rendererData, ref ssaoRendererFeatures, ref containsForwardRenderer, urpAssetShaderFeatures); @@ -494,13 +557,21 @@ internal static ShaderFeatures GetSupportedShaderFeaturesFromRenderers( return combinedURPAssetShaderFeatures; } - internal static RendererRequirements GetRendererRequirements(ref UniversalRenderPipelineAsset urpAsset, ref ScriptableRenderer renderer, ref ScriptableRendererData rendererData, bool stripUnusedVariants) + internal static bool NeedsProceduralKeyword(ref RendererRequirements rendererRequirements, UniversalRendererData universalRendererData) + { + #if ENABLE_VR && ENABLE_XR_MODULE + return rendererRequirements.isUniversalRenderer && universalRendererData.xrSystemData != null; + #else + return false; + #endif + } + + internal static RendererRequirements GetRendererRequirements(ref UniversalRenderPipelineAsset urpAsset, ref ScriptableRenderer renderer, ref ScriptableRendererData rendererData) { UniversalRenderer universalRenderer = renderer as UniversalRenderer; UniversalRendererData universalRendererData = rendererData as UniversalRendererData; RendererRequirements rsd = new(); - rsd.needsUnusedVariants = !stripUnusedVariants; rsd.isUniversalRenderer = universalRendererData != null && universalRenderer != null; rsd.msaaSampleCount = urpAsset.msaaSampleCount; rsd.renderingMode = rsd.isUniversalRenderer ? universalRendererData.renderingMode : RenderingMode.Forward; @@ -515,12 +586,7 @@ internal static RendererRequirements GetRendererRequirements(ref UniversalRender rsd.needsRenderPass = (rsd.isUniversalRenderer && rsd.renderingMode == RenderingMode.Deferred && universalRenderer.useRenderPassEnabled); rsd.needsReflectionProbeBlending = urpAsset.reflectionProbeBlending; rsd.needsReflectionProbeBoxProjection = urpAsset.reflectionProbeBoxProjection; - - #if ENABLE_VR && ENABLE_XR_MODULE - rsd.needsProcedural = rsd.isUniversalRenderer && universalRendererData.xrSystemData != null; - #else - rsd.needsProcedural = false; - #endif + rsd.needsProcedural = NeedsProceduralKeyword(ref rsd, universalRendererData); rsd.needsSHVertexForSHAuto = s_UseSHPerVertexForSHAuto; return rsd; @@ -643,7 +709,7 @@ internal static ShaderFeatures GetSupportedShaderFeaturesFromRendererFeatures(re continue; // We don't add disabled renderer features if "Strip Unused Variants" is enabled. - if (!rendererRequirements.needsUnusedVariants && !rendererFeature.isActive) + if (!rendererFeature.isActive) continue; // Rendering Layers... @@ -658,7 +724,7 @@ internal static ShaderFeatures GetSupportedShaderFeaturesFromRendererFeatures(re if (sssFeature != null) { // Add it if it's enabled or if unused variants should not be stripped... - if (sssFeature.isActive || rendererRequirements.needsUnusedVariants) + if (sssFeature.isActive) shaderFeatures |= ShaderFeatures.ScreenSpaceShadows; continue; @@ -672,21 +738,11 @@ internal static ShaderFeatures GetSupportedShaderFeaturesFromRendererFeatures(re ScreenSpaceAmbientOcclusionSettings ssaoSettings = ssaoFeature.settings; ssaoRendererFeatures.Add(ssaoSettings); - // Keep _SCREEN_SPACE_OCCLUSION and the Off variant when stripping of unused variants is disabled - if (rendererRequirements.needsUnusedVariants) - { - shaderFeatures |= ShaderFeatures.ScreenSpaceOcclusion; - shaderFeatures |= ShaderFeatures.ScreenSpaceOcclusionAfterOpaque; - } - // The feature is active (Tested a few lines above) so check for AfterOpaque + if (ssaoSettings.AfterOpaque) + shaderFeatures |= ShaderFeatures.ScreenSpaceOcclusionAfterOpaque; else - { - if (ssaoSettings.AfterOpaque) - shaderFeatures |= ShaderFeatures.ScreenSpaceOcclusionAfterOpaque; - else - shaderFeatures |= ShaderFeatures.ScreenSpaceOcclusion; - } + shaderFeatures |= ShaderFeatures.ScreenSpaceOcclusion; // Otherwise the keyword will not be used continue; @@ -696,54 +752,32 @@ internal static ShaderFeatures GetSupportedShaderFeaturesFromRendererFeatures(re DecalRendererFeature decal = rendererFeature as DecalRendererFeature; if (decal != null && rendererRequirements.isUniversalRenderer) { - // Keep all Decals variants when stripping of unused variants is disabled - if (rendererRequirements.needsUnusedVariants) - { - shaderFeatures |= ShaderFeatures.DBufferMRT1; - shaderFeatures |= ShaderFeatures.DBufferMRT2; - shaderFeatures |= ShaderFeatures.DBufferMRT3; - shaderFeatures |= ShaderFeatures.DecalScreenSpace; - shaderFeatures |= ShaderFeatures.DecalNormalBlendLow; - shaderFeatures |= ShaderFeatures.DecalNormalBlendMedium; - shaderFeatures |= ShaderFeatures.DecalNormalBlendHigh; - shaderFeatures |= ShaderFeatures.DecalGBuffer; - shaderFeatures |= ShaderFeatures.DecalLayers; - } - else + DecalTechnique technique = decal.GetTechnique(isDeferredRenderer, rendererRequirements.needsGBufferAccurateNormals, false); + switch (technique) { - DecalTechnique technique = decal.GetTechnique(isDeferredRenderer, rendererRequirements.needsGBufferAccurateNormals, false); - switch (technique) - { - case DecalTechnique.DBuffer: - shaderFeatures |= GetFromDecalSurfaceData(decal.GetDBufferSettings().surfaceData); - break; - case DecalTechnique.ScreenSpace: - shaderFeatures |= GetFromNormalBlend(decal.GetScreenSpaceSettings().normalBlend); - shaderFeatures |= ShaderFeatures.DecalScreenSpace; - break; - case DecalTechnique.GBuffer: - shaderFeatures |= GetFromNormalBlend(decal.GetScreenSpaceSettings().normalBlend); - shaderFeatures |= ShaderFeatures.DecalGBuffer; - //data.shaderFeatures |= ShaderFeatures.DecalScreenSpace; // In case deferred is not supported it will fallback to forward - break; - } - - if (decal.requiresDecalLayers) - shaderFeatures |= ShaderFeatures.DecalLayers; + case DecalTechnique.DBuffer: + shaderFeatures |= GetFromDecalSurfaceData(decal.GetDBufferSettings().surfaceData); + break; + case DecalTechnique.ScreenSpace: + shaderFeatures |= GetFromNormalBlend(decal.GetScreenSpaceSettings().normalBlend); + shaderFeatures |= ShaderFeatures.DecalScreenSpace; + break; + case DecalTechnique.GBuffer: + shaderFeatures |= GetFromNormalBlend(decal.GetScreenSpaceSettings().normalBlend); + shaderFeatures |= ShaderFeatures.DecalGBuffer; + //data.shaderFeatures |= ShaderFeatures.DecalScreenSpace; // In case deferred is not supported it will fallback to forward + break; } + + if (decal.requiresDecalLayers) + shaderFeatures |= ShaderFeatures.DecalLayers; } } // If using rendering layers, enable the appropriate feature if (usesRenderingLayers) { - if (rendererRequirements.needsUnusedVariants) - { - shaderFeatures |= ShaderFeatures.GBufferWriteRenderingLayers; - shaderFeatures |= ShaderFeatures.OpaqueWriteRenderingLayers; - shaderFeatures |= ShaderFeatures.DepthNormalPassRenderingLayers; - } - else if (isDeferredRenderer) + if (isDeferredRenderer) { // Rendering layers in both Depth Normal and GBuffer passes are needed // as some object might be rendered in forward and others in deferred. diff --git a/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/Varyings.hlsl b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/Varyings.hlsl index 01648a2599b..9d6e390890c 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/Varyings.hlsl +++ b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/Varyings.hlsl @@ -133,7 +133,7 @@ Varyings BuildVaryings(Attributes input) output.positionCS.z = max(output.positionCS.z, UNITY_NEAR_CLIP_VALUE); #endif #elif (SHADERPASS == SHADERPASS_META) - output.positionCS = UnityMetaVertexPosition(input.positionOS, input.uv1, input.uv2, unity_LightmapST, unity_DynamicLightmapST); + output.positionCS = UnityMetaVertexPosition(input.positionOS, input.uv1.xy, input.uv2.xy, unity_LightmapST, unity_DynamicLightmapST); #else output.positionCS = TransformWorldToHClip(positionWS); #endif diff --git a/Packages/com.unity.render-pipelines.universal/Editor/ShaderScriptableStripper.cs b/Packages/com.unity.render-pipelines.universal/Editor/ShaderScriptableStripper.cs index 7c5ef972ba9..1c4c232b6fe 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/ShaderScriptableStripper.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/ShaderScriptableStripper.cs @@ -1076,28 +1076,31 @@ public bool CanRemoveVariant([DisallowNull] Shader shader, ShaderSnippetData pas }; // All feature sets need to have this variant unused to be stripped out. - bool removeInput = true; - for (var index = 0; index < ShaderBuildPreprocessor.supportedFeaturesList.Count; index++) + bool removeInput = strippingData.stripUnusedVariants; + if (removeInput) { - strippingData.shaderFeatures = ShaderBuildPreprocessor.supportedFeaturesList[index]; + for (var index = 0; index < ShaderBuildPreprocessor.supportedFeaturesList.Count; index++) + { + strippingData.shaderFeatures = ShaderBuildPreprocessor.supportedFeaturesList[index]; - if (StripUnusedShaders(ref strippingData)) - continue; + if (StripUnusedShaders(ref strippingData)) + continue; - if (StripUnusedPass(ref strippingData)) - continue; + if (StripUnusedPass(ref strippingData)) + continue; - if (StripInvalidVariants(ref strippingData)) - continue; + if (StripInvalidVariants(ref strippingData)) + continue; - if (StripUnsupportedVariants(ref strippingData)) - continue; + if (StripUnsupportedVariants(ref strippingData)) + continue; - if (StripUnusedFeatures(ref strippingData)) - continue; + if (StripUnusedFeatures(ref strippingData)) + continue; - removeInput = false; - break; + removeInput = false; + break; + } } // Check PostProcessing variants... diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Renderer2D.cs b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Renderer2D.cs index 4e65e7cf42b..8cb1b34b966 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Renderer2D.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Renderer2D.cs @@ -383,6 +383,11 @@ public override void Setup(ScriptableRenderContext context, ref RenderingData re bool hasPassesAfterPostProcessing = activeRenderPassQueue.Find(x => x.renderPassEvent == RenderPassEvent.AfterRenderingPostProcessing) != null; bool needsColorEncoding = DebugHandler == null || !DebugHandler.HDRDebugViewIsActive(ref cameraData); + // Don't resolve during post processing if there are passes after or pixel perfect camera is used + bool pixelPerfectCameraEnabled = ppc != null && ppc.enabled; + bool hasCaptureActions = cameraData.captureActions != null && lastCameraInStack; + bool resolvePostProcessingToCameraTarget = !hasCaptureActions && !hasPassesAfterPostProcessing && !requireFinalPostProcessPass && !pixelPerfectCameraEnabled; + if (hasPostProcess) { var desc = PostProcessPass.GetCompatibleDescriptor(cameraTargetDescriptor, cameraTargetDescriptor.width, cameraTargetDescriptor.height, cameraTargetDescriptor.graphicsFormat, DepthBits.None); @@ -391,9 +396,10 @@ public override void Setup(ScriptableRenderContext context, ref RenderingData re postProcessPass.Setup( cameraTargetDescriptor, colorTargetHandle, - afterPostProcessColorHandle, + resolvePostProcessingToCameraTarget, depthTargetHandle, colorGradingLutHandle, + null, requireFinalPostProcessPass, afterPostProcessColorHandle.nameID == k_CameraTarget.nameID && needsColorEncoding); @@ -402,7 +408,7 @@ public override void Setup(ScriptableRenderContext context, ref RenderingData re RTHandle finalTargetHandle = colorTargetHandle; - if (ppc != null && ppc.enabled && ppc.cropFrame != PixelPerfectCamera.CropFrame.None) + if (pixelPerfectCameraEnabled && ppc.cropFrame != PixelPerfectCamera.CropFrame.None) { EnqueuePass(m_PixelPerfectBackgroundPass); @@ -422,7 +428,18 @@ public override void Setup(ScriptableRenderContext context, ref RenderingData re finalPostProcessPass.SetupFinalPass(finalTargetHandle, hasPassesAfterPostProcessing, needsColorEncoding); EnqueuePass(finalPostProcessPass); } - else if (lastCameraInStack && finalTargetHandle != k_CameraTarget) + + // If post-processing then we already resolved to camera target while doing post. + // Also only do final blit if camera is not rendering to RT. + bool cameraTargetResolved = + // final PP always blit to camera target + requireFinalPostProcessPass || + // no final PP but we have PP stack. In that case it blit unless there are render pass after PP or pixel perfect camera is used + (hasPostProcess && !hasPassesAfterPostProcessing && !hasCaptureActions && !pixelPerfectCameraEnabled) || + // offscreen camera rendering to a texture, we don't need a blit pass to resolve to screen + colorTargetHandle.nameID == k_CameraTarget.nameID; + + if (!cameraTargetResolved) { m_FinalBlitPass.Setup(cameraTargetDescriptor, finalTargetHandle); EnqueuePass(m_FinalBlitPass); diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs b/Packages/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs index a1f18ef1f1e..7ed5103ddd4 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs @@ -591,6 +591,11 @@ public partial class UniversalRenderPipelineAsset : RenderPipelineAsset, ISerial /// The default value of `additionalLightsShadowResolutionTierHigh`. ///
public static readonly int AdditionalLightsDefaultShadowResolutionTierHigh = 1024; + + /// + /// The list of renderers used by this pipeline asset. + /// + internal ReadOnlySpan renderers => m_Renderers; #if UNITY_EDITOR [NonSerialized] diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAssetPrefiltering.cs b/Packages/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAssetPrefiltering.cs index 92d154e00a3..a3cd00ffa0d 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAssetPrefiltering.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAssetPrefiltering.cs @@ -32,6 +32,7 @@ internal enum PrefilteringModeAdditionalLights SelectVertexAndOff, // Selects Vertex & OFF variant SelectPixel, // Selects Pixel & Removes OFF variant SelectPixelAndOff, // Selects Pixel & OFF variant + SelectAll // Selects Vertex, Pixel & OFF variant } // Platform specific filtering overrides @@ -77,6 +78,7 @@ internal enum PrefilteringModeAdditionalLights [ShaderKeywordFilter.SelectIf(PrefilteringModeAdditionalLights.SelectVertexAndOff,keywordNames: new string[] {"", ShaderKeywordStrings.AdditionalLightsVertex})] [ShaderKeywordFilter.SelectIf(PrefilteringModeAdditionalLights.SelectPixel, keywordNames: ShaderKeywordStrings.AdditionalLightsPixel)] [ShaderKeywordFilter.SelectIf(PrefilteringModeAdditionalLights.SelectPixelAndOff, keywordNames: new string[] {"", ShaderKeywordStrings.AdditionalLightsPixel})] + [ShaderKeywordFilter.SelectIf(PrefilteringModeAdditionalLights.SelectAll, keywordNames: new string[] {"", ShaderKeywordStrings.AdditionalLightsVertex, ShaderKeywordStrings.AdditionalLightsPixel})] [SerializeField] private PrefilteringModeAdditionalLights m_PrefilteringModeAdditionalLight = PrefilteringModeAdditionalLights.SelectPixelAndOff; // Additional Lights Shadows @@ -216,6 +218,19 @@ internal struct ShaderPrefilteringData public bool stripSSAOSampleCountLow; public bool stripSSAOSampleCountMedium; public bool stripSSAOSampleCountHigh; + + public static ShaderPrefilteringData GetDefault() + { + return new ShaderPrefilteringData() + { + forwardPlusPrefilteringMode = PrefilteringMode.Select, + deferredPrefilteringMode = PrefilteringMode.Select, + mainLightShadowsPrefilteringMode = PrefilteringModeMainLightShadows.SelectAll, + additionalLightsPrefilteringMode = PrefilteringModeAdditionalLights.SelectAll, + additionalLightsShadowsPrefilteringMode = PrefilteringMode.Select, + screenSpaceOcclusionPrefilteringMode = PrefilteringMode.Select, + }; + } } /// diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/PostProcessPass.cs b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/PostProcessPass.cs index d9635acc256..cc8792da0cc 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/PostProcessPass.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/PostProcessPass.cs @@ -241,31 +241,6 @@ public void Setup(in RenderTextureDescriptor baseDescriptor, in RTHandle source, m_UseSwapBuffer = true; } - /// - /// Configures the pass. - /// - /// - /// - /// - /// - /// - /// - /// - public void Setup(in RenderTextureDescriptor baseDescriptor, in RTHandle source, RTHandle destination, in RTHandle depth, in RTHandle internalLut, bool hasFinalPass, bool enableColorEncoding) - { - m_Descriptor = baseDescriptor; - m_Descriptor.useMipMap = false; - m_Descriptor.autoGenerateMips = false; - m_Source = source; - m_Destination = destination; - m_Depth = depth; - m_InternalLut = internalLut; - m_IsFinalPass = false; - m_HasFinalPass = hasFinalPass; - m_EnableColorEncodingIfNeeded = enableColorEncoding; - m_UseSwapBuffer = true; - } - /// /// Configures the Final pass. /// @@ -1494,7 +1469,9 @@ void RenderFinalPass(CommandBuffer cmd, ref RenderingData renderingData) { m_Materials.easu.shaderKeywords = null; - var upscaleRtDesc = tempRtDesc; + var upscaleRtDesc = cameraData.cameraTargetDescriptor; + upscaleRtDesc.msaaSamples = 1; + upscaleRtDesc.depthBufferBits = 0; upscaleRtDesc.width = cameraData.pixelWidth; upscaleRtDesc.height = cameraData.pixelHeight; diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalAdditionalCameraData.cs b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalAdditionalCameraData.cs index e47a7606b15..0680fe05b89 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalAdditionalCameraData.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalAdditionalCameraData.cs @@ -818,10 +818,29 @@ public void OnDrawGizmos() /// public void OnDestroy() { - if (camera.cameraType != CameraType.SceneView ) - scriptableRenderer?.ReleaseRenderTargets(); + //You cannot call scriptableRenderer here. If you where not in URP, this will actually create the renderer. + //This can occurs in cross pipeline but also on Dedicated Server where the gfx device do not run. (UUM-75237) + //Use GetRawRenderer() instead. + m_Camera.DestroyVolumeStack(this); + if (camera.cameraType != CameraType.SceneView) + GetRawRenderer()?.ReleaseRenderTargets(); m_TaaPersistentData?.DeallocateTargets(); } + + ScriptableRenderer GetRawRenderer() + { + if (UniversalRenderPipeline.asset is null) + return null; + + ReadOnlySpan renderers = UniversalRenderPipeline.asset.renderers; + if (renderers == null || renderers.IsEmpty) + return null; + + if (m_RendererIndex >= renderers.Length || m_RendererIndex < 0) + return null; + + return renderers[m_RendererIndex]; + } } } diff --git a/Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl b/Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl index 68342dc0e24..83ad5a0565a 100644 --- a/Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl +++ b/Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl @@ -318,15 +318,18 @@ half ComputeCascadeIndex(float3 positionWS) float4 TransformWorldToShadowCoord(float3 positionWS) { -#ifdef _MAIN_LIGHT_SHADOWS_CASCADE - half cascadeIndex = ComputeCascadeIndex(positionWS); +#if defined(_MAIN_LIGHT_SHADOWS_SCREEN) && !defined(_SURFACE_TYPE_TRANSPARENT) + float4 shadowCoord = float4(ComputeNormalizedDeviceCoordinatesWithZ(positionWS, GetWorldToHClipMatrix()), 1.0); #else - half cascadeIndex = half(0.0); + #ifdef _MAIN_LIGHT_SHADOWS_CASCADE + half cascadeIndex = ComputeCascadeIndex(positionWS); + #else + half cascadeIndex = half(0.0); + #endif + + float4 shadowCoord = float4(mul(_MainLightWorldToShadow[cascadeIndex], float4(positionWS, 1.0)).xyz, 0.0); #endif - - float4 shadowCoord = mul(_MainLightWorldToShadow[cascadeIndex], float4(positionWS, 1.0)); - - return float4(shadowCoord.xyz, 0); + return shadowCoord; } half MainLightRealtimeShadow(float4 shadowCoord) diff --git a/Packages/com.unity.render-pipelines.universal/Tests/Editor/ShaderBuildPreprocessorTests.cs b/Packages/com.unity.render-pipelines.universal/Tests/Editor/ShaderBuildPreprocessorTests.cs index 701ba6af971..1f3ba76b8c9 100644 --- a/Packages/com.unity.render-pipelines.universal/Tests/Editor/ShaderBuildPreprocessorTests.cs +++ b/Packages/com.unity.render-pipelines.universal/Tests/Editor/ShaderBuildPreprocessorTests.cs @@ -1,20 +1,20 @@ using System; using System.Collections.Generic; using NUnit.Framework; +using UnityEditor; using UnityEditor.Rendering.Universal; -using UnityEditorInternal; using UnityEngine; using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; -using UnityEngine.TestTools; using RendererRequirements = UnityEditor.Rendering.Universal.ShaderBuildPreprocessor.RendererRequirements; using DecalSettings = UnityEngine.Rendering.Universal.DecalSettings; +using Object = UnityEngine.Object; namespace ShaderStrippingAndPrefiltering { class ShaderBuildPreprocessorTests { - internal class TestHelper + private class TestHelper { internal UniversalRendererData rendererData; internal ScriptableRendererData scriptableRendererData; @@ -27,33 +27,29 @@ internal class TestHelper internal bool stripUnusedVariants; internal bool containsForwardRenderer; internal bool everyRendererHasSSAO; - internal ShaderFeatures defaultURPAssetFeatures = - ShaderFeatures.MainLight - | ShaderFeatures.MixedLighting - | ShaderFeatures.TerrainHoles - | ShaderFeatures.DrawProcedural - | ShaderFeatures.LightCookies - | ShaderFeatures.LODCrossFade - | ShaderFeatures.AutoSHMode - | ShaderFeatures.DataDrivenLensFlare; - - internal RendererRequirements defaultRendererRequirements = new() + + internal ShaderFeatures defaultURPAssetFeatures { - msaaSampleCount = 1, - needsUnusedVariants = false, - isUniversalRenderer = true, - needsProcedural = true, - needsAdditionalLightShadows = false, - needsSoftShadows = false, - needsShadowsOff = false, - needsAdditionalLightsOff = false, - needsGBufferRenderingLayers = false, - needsGBufferAccurateNormals = false, - needsRenderPass = false, - needsReflectionProbeBlending = false, - needsReflectionProbeBoxProjection = false, - renderingMode = RenderingMode.Forward, - }; + get + { + ShaderFeatures defaultFeatures = + ShaderFeatures.MainLight + | ShaderFeatures.MixedLighting + | ShaderFeatures.TerrainHoles + | ShaderFeatures.LightCookies + | ShaderFeatures.LODCrossFade + | ShaderFeatures.AutoSHMode + | ShaderFeatures.DataDrivenLensFlare + | ShaderFeatures.DrawProcedural; + + if (PlayerSettings.allowHDRDisplaySupport) + defaultFeatures |= ShaderFeatures.HdrGrading; + + return defaultFeatures; + } + } + + internal RendererRequirements defaultRendererRequirements; public TestHelper() { @@ -61,7 +57,11 @@ public TestHelper() { rendererData = ScriptableObject.CreateInstance(); scriptableRendererData = rendererData; + urpAsset = UniversalRenderPipelineAsset.Create(rendererData); + urpAsset.name = "TestHelper_URPAsset"; + GraphicsSettings.defaultRenderPipeline = urpAsset; + ScriptableRenderer = urpAsset.GetRenderer(0); universalRenderer = ScriptableRenderer as UniversalRenderer; stripUnusedVariants = true; @@ -81,7 +81,17 @@ public TestHelper() internal RendererRequirements GetRendererRequirements() { - return ShaderBuildPreprocessor.GetRendererRequirements(ref urpAsset, ref ScriptableRenderer, ref scriptableRendererData, stripUnusedVariants); + return ShaderBuildPreprocessor.GetRendererRequirements(ref urpAsset, ref ScriptableRenderer, ref scriptableRendererData); + } + + internal void GetEveryVolumeFeatures(ref VolumeFeatures volumeFeatures) + { + ShaderBuildPreprocessor.GetEveryVolumeFeatures(ref volumeFeatures); + } + + internal void GetEveryShaderFeatureAndPrefilteringData(List rendererFeaturesList, ref UniversalRenderPipelineAsset.ShaderPrefilteringData spd) + { + ShaderBuildPreprocessor.GetEveryShaderFeatureAndPrefilteringData(rendererFeaturesList, ref spd); } internal ShaderFeatures GetSupportedShaderFeaturesFromAsset() @@ -102,7 +112,24 @@ internal ShaderFeatures GetSupportedShaderFeaturesFromRendererFeatures(RendererR private const string k_OnText = "enabled"; private const string k_OffText = "disabled"; - internal void AssertShaderFeaturesAndReset(ShaderFeatures expected, ShaderFeatures actual) + + internal void AssertVolumeFeatures(VolumeFeatures expected, VolumeFeatures actual) + { + foreach (Enum value in Enum.GetValues(typeof(VolumeFeatures))) + { + bool expectedResult = expected.HasFlag(value); + string expectsText = expectedResult ? k_OnText : k_OffText; + bool actualResult = actual.HasFlag(value); + string actualText = actualResult ? k_OnText : k_OffText; + + Assert.AreEqual( + expectedResult, + actualResult, + $"Incorrect Feature flag for ShaderFeatures.{(VolumeFeatures) value}\nThe test expected it to {expectsText} but it was {actualText}\n"); + } + } + + internal void AssertShaderFeatures(ShaderFeatures expected, ShaderFeatures actual) { foreach (Enum value in Enum.GetValues(typeof(ShaderFeatures))) { @@ -116,12 +143,16 @@ internal void AssertShaderFeaturesAndReset(ShaderFeatures expected, ShaderFeatur actualResult, $"Incorrect Feature flag for ShaderFeatures.{(ShaderFeatures) value}\nThe test expected it to {expectsText} but it was {actualText}\n"); } + } + + internal void AssertShaderFeaturesAndReset(ShaderFeatures expected, ShaderFeatures actual) + { + AssertShaderFeatures(expected, actual); ResetData(); } - internal void AssertRendererRequirementsAndReset(RendererRequirements expected, RendererRequirements actual) + internal void AssertRendererRequirements(RendererRequirements expected, RendererRequirements actual) { - Assert.AreEqual(expected.needsUnusedVariants, actual.needsUnusedVariants, "needsUnusedVariants mismatch"); Assert.AreEqual(expected.msaaSampleCount, actual.msaaSampleCount, "msaaSampleCount mismatch"); Assert.AreEqual(expected.isUniversalRenderer, actual.isUniversalRenderer, "isUniversalRenderer mismatch"); Assert.AreEqual(expected.needsProcedural, actual.needsProcedural, "needsProcedural mismatch"); @@ -136,12 +167,30 @@ internal void AssertRendererRequirementsAndReset(RendererRequirements expected, Assert.AreEqual(expected.needsReflectionProbeBoxProjection, actual.needsReflectionProbeBoxProjection, "needsReflectionProbeBoxProjection mismatch"); Assert.AreEqual(expected.renderingMode, actual.renderingMode, "renderingMode mismatch"); Assert.AreEqual(expected, actual, "Some mismatch between the renderer requirements that is not covered in the previous tests."); - + } + internal void AssertRendererRequirementsAndReset(RendererRequirements expected, RendererRequirements actual) + { + AssertRendererRequirements(expected, actual); ResetData(); } internal void ResetData() { + defaultRendererRequirements = new(); + defaultRendererRequirements.msaaSampleCount = 1; + defaultRendererRequirements.isUniversalRenderer = true; + defaultRendererRequirements.needsAdditionalLightShadows = false; + defaultRendererRequirements.needsSoftShadows = false; + defaultRendererRequirements.needsShadowsOff = false; + defaultRendererRequirements.needsAdditionalLightsOff = false; + defaultRendererRequirements.needsGBufferRenderingLayers = false; + defaultRendererRequirements.needsGBufferAccurateNormals = false; + defaultRendererRequirements.needsRenderPass = false; + defaultRendererRequirements.needsReflectionProbeBlending = false; + defaultRendererRequirements.needsReflectionProbeBoxProjection = false; + defaultRendererRequirements.renderingMode = RenderingMode.Forward; + defaultRendererRequirements.needsProcedural = true; + urpAsset.mainLightRenderingMode = LightRenderingMode.Disabled; urpAsset.supportsMainLightShadows = false; urpAsset.additionalLightsRenderingMode = LightRenderingMode.Disabled; @@ -167,548 +216,513 @@ internal void ResetData() internal void Cleanup() { - ScriptableObject.DestroyImmediate(urpAsset); - ScriptableObject.DestroyImmediate(rendererData); + Object.DestroyImmediate(urpAsset); + Object.DestroyImmediate(rendererData); rendererFeatures.Clear(); ssaoRendererFeatures.Clear(); } } - [Test] - public static void TestGetSupportedShaderFeaturesFromAsset_NewAsset() + private RenderPipelineAsset m_PreviousRenderPipelineAssetGraphicsSettings; + private RenderPipelineAsset m_PreviousRenderPipelineAssetQualitySettings; + private TestHelper m_TestHelper; + + [OneTimeSetUp] + public void OneTimeSetup() { - TestHelper helper = new (); - ShaderFeatures actual; - ShaderFeatures expected; + UniversalRenderPipelineGlobalSettings.Ensure(); - actual = helper.GetSupportedShaderFeaturesFromAsset(); - expected = helper.defaultURPAssetFeatures; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_PreviousRenderPipelineAssetGraphicsSettings = GraphicsSettings.defaultRenderPipeline; + m_PreviousRenderPipelineAssetQualitySettings = QualitySettings.renderPipeline; - // Clean up - helper.Cleanup(); + GraphicsSettings.defaultRenderPipeline = null; + QualitySettings.renderPipeline = null; + } + + [SetUp] + public void Setup() + { + m_TestHelper = new(); + m_TestHelper.ResetData(); + } + + [TearDown] + public void TearDown() + { + m_TestHelper.Cleanup(); + } + + [OneTimeTearDown] + public void OneTimeTearDown() + { + GraphicsSettings.defaultRenderPipeline = m_PreviousRenderPipelineAssetGraphicsSettings; + QualitySettings.renderPipeline = m_PreviousRenderPipelineAssetQualitySettings; + } + + [Test] + public void TestGetSupportedShaderFeaturesFromAsset_NewAsset() + { + ShaderFeatures actual = m_TestHelper.GetSupportedShaderFeaturesFromAsset(); + ShaderFeatures expected = m_TestHelper.defaultURPAssetFeatures; + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); } // ShaderFeatures.MainLightShadowsCascade - ShaderFeatures.MainLightShadowsCascade [Test] - public static void TestGetSupportedShaderFeaturesFromAsset_MainLightShadowCascade() + public void TestGetSupportedShaderFeaturesFromAsset_MainLightShadowCascade() { - TestHelper helper = new (); - ShaderFeatures actual; - ShaderFeatures expected; - - helper.urpAsset.mainLightRenderingMode = LightRenderingMode.PerVertex; - helper.urpAsset.supportsMainLightShadows = true; - actual = helper.GetSupportedShaderFeaturesFromAsset(); - expected = helper.defaultURPAssetFeatures; - helper.AssertShaderFeaturesAndReset(expected, actual); - - helper.urpAsset.mainLightRenderingMode = LightRenderingMode.PerPixel; - helper.urpAsset.supportsMainLightShadows = true; - actual = helper.GetSupportedShaderFeaturesFromAsset(); - expected = helper.defaultURPAssetFeatures | ShaderFeatures.MainLightShadows | ShaderFeatures.MainLightShadowsCascade; - helper.AssertShaderFeaturesAndReset(expected, actual); - - // Clean up - helper.Cleanup(); + m_TestHelper.urpAsset.mainLightRenderingMode = LightRenderingMode.PerVertex; + m_TestHelper.urpAsset.supportsMainLightShadows = true; + ShaderFeatures actual = m_TestHelper.GetSupportedShaderFeaturesFromAsset(); + ShaderFeatures expected = m_TestHelper.defaultURPAssetFeatures; + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); + + m_TestHelper.urpAsset.mainLightRenderingMode = LightRenderingMode.PerPixel; + m_TestHelper.urpAsset.supportsMainLightShadows = true; + actual = m_TestHelper.GetSupportedShaderFeaturesFromAsset(); + expected = m_TestHelper.defaultURPAssetFeatures | ShaderFeatures.MainLightShadows | ShaderFeatures.MainLightShadowsCascade; + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); } // ShaderFeatures.AdditionalLightsVertex & ShaderFeatures.AdditionalLights [Test] - public static void TestGetSupportedShaderFeaturesFromAsset_AdditionalLights() + public void TestGetSupportedShaderFeaturesFromAsset_AdditionalLights() { - TestHelper helper = new (); - ShaderFeatures actual; - ShaderFeatures expected; - - helper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerVertex; - actual = helper.GetSupportedShaderFeaturesFromAsset(); - expected = helper.defaultURPAssetFeatures | ShaderFeatures.AdditionalLightsVertex; - helper.AssertShaderFeaturesAndReset(expected, actual); - - helper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerPixel; - actual = helper.GetSupportedShaderFeaturesFromAsset(); - expected = helper.defaultURPAssetFeatures | ShaderFeatures.AdditionalLightsPixel; - helper.AssertShaderFeaturesAndReset(expected, actual); - - // Clean up - helper.Cleanup(); + m_TestHelper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerVertex; + ShaderFeatures actual = m_TestHelper.GetSupportedShaderFeaturesFromAsset(); + ShaderFeatures expected = m_TestHelper.defaultURPAssetFeatures | ShaderFeatures.AdditionalLightsVertex; + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); + + m_TestHelper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerPixel; + actual = m_TestHelper.GetSupportedShaderFeaturesFromAsset(); + expected = m_TestHelper.defaultURPAssetFeatures | ShaderFeatures.AdditionalLightsPixel; + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); } // ShaderFeatures.SoftShadows - _SHADOWS_SOFT [Test] - public static void TestGetSupportedShaderFeaturesFromAsset_SoftShadows() + public void TestGetSupportedShaderFeaturesFromAsset_SoftShadows() { - TestHelper helper = new (); - ShaderFeatures actual; - ShaderFeatures expected; - // Main Light - helper.urpAsset.mainLightRenderingMode = LightRenderingMode.Disabled; - helper.urpAsset.supportsSoftShadows = true; - actual = helper.GetSupportedShaderFeaturesFromAsset(); - expected = helper.defaultURPAssetFeatures; - helper.AssertShaderFeaturesAndReset(expected, actual); - - helper.urpAsset.mainLightRenderingMode = LightRenderingMode.PerVertex; - helper.urpAsset.supportsSoftShadows = true; - actual = helper.GetSupportedShaderFeaturesFromAsset(); - expected = helper.defaultURPAssetFeatures; - helper.AssertShaderFeaturesAndReset(expected, actual); - - helper.urpAsset.mainLightRenderingMode = LightRenderingMode.PerPixel; - helper.urpAsset.supportsMainLightShadows = true; - helper.urpAsset.supportsSoftShadows = false; - expected = helper.defaultURPAssetFeatures | ShaderFeatures.MainLightShadows | ShaderFeatures.MainLightShadowsCascade; - actual = helper.GetSupportedShaderFeaturesFromAsset(); - helper.AssertShaderFeaturesAndReset(expected, actual); - - helper.urpAsset.mainLightRenderingMode = LightRenderingMode.PerPixel; - helper.urpAsset.supportsMainLightShadows = true; - helper.urpAsset.supportsSoftShadows = true; - expected = helper.defaultURPAssetFeatures | ShaderFeatures.MainLightShadows | ShaderFeatures.MainLightShadowsCascade | ShaderFeatures.SoftShadows; - actual = helper.GetSupportedShaderFeaturesFromAsset(); - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.urpAsset.mainLightRenderingMode = LightRenderingMode.Disabled; + m_TestHelper.urpAsset.supportsSoftShadows = true; + ShaderFeatures actual = m_TestHelper.GetSupportedShaderFeaturesFromAsset(); + ShaderFeatures expected = m_TestHelper.defaultURPAssetFeatures; + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); + + m_TestHelper.urpAsset.mainLightRenderingMode = LightRenderingMode.PerVertex; + m_TestHelper.urpAsset.supportsSoftShadows = true; + actual = m_TestHelper.GetSupportedShaderFeaturesFromAsset(); + expected = m_TestHelper.defaultURPAssetFeatures; + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); + + m_TestHelper.urpAsset.mainLightRenderingMode = LightRenderingMode.PerPixel; + m_TestHelper.urpAsset.supportsMainLightShadows = true; + m_TestHelper.urpAsset.supportsSoftShadows = false; + expected = m_TestHelper.defaultURPAssetFeatures | ShaderFeatures.MainLightShadows | ShaderFeatures.MainLightShadowsCascade; + actual = m_TestHelper.GetSupportedShaderFeaturesFromAsset(); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); + + m_TestHelper.urpAsset.mainLightRenderingMode = LightRenderingMode.PerPixel; + m_TestHelper.urpAsset.supportsMainLightShadows = true; + m_TestHelper.urpAsset.supportsSoftShadows = true; + expected = m_TestHelper.defaultURPAssetFeatures | ShaderFeatures.MainLightShadows | ShaderFeatures.MainLightShadowsCascade | ShaderFeatures.SoftShadows; + actual = m_TestHelper.GetSupportedShaderFeaturesFromAsset(); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); // Additional Light - helper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.Disabled; - helper.urpAsset.supportsAdditionalLightShadows = true; - helper.urpAsset.supportsSoftShadows = true; - expected = helper.defaultURPAssetFeatures; - actual = helper.GetSupportedShaderFeaturesFromAsset(); - helper.AssertShaderFeaturesAndReset(expected, actual); - - helper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerVertex; - helper.urpAsset.supportsAdditionalLightShadows = true; - helper.urpAsset.supportsSoftShadows = true; - expected = helper.defaultURPAssetFeatures | ShaderFeatures.AdditionalLightsVertex; - actual = helper.GetSupportedShaderFeaturesFromAsset(); - helper.AssertShaderFeaturesAndReset(expected, actual); - - helper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerPixel; - helper.urpAsset.supportsAdditionalLightShadows = true; - helper.urpAsset.supportsSoftShadows = false; - expected = helper.defaultURPAssetFeatures | ShaderFeatures.AdditionalLightShadows | ShaderFeatures.AdditionalLightsPixel; - actual = helper.GetSupportedShaderFeaturesFromAsset(); - helper.AssertShaderFeaturesAndReset(expected, actual); - - helper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerPixel; - helper.urpAsset.supportsAdditionalLightShadows = true; - helper.urpAsset.supportsSoftShadows = true; - expected = helper.defaultURPAssetFeatures | ShaderFeatures.AdditionalLightShadows | ShaderFeatures.AdditionalLightsPixel | ShaderFeatures.SoftShadows; - actual = helper.GetSupportedShaderFeaturesFromAsset(); - helper.AssertShaderFeaturesAndReset(expected, actual); - - // Clean up - helper.Cleanup(); + m_TestHelper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.Disabled; + m_TestHelper.urpAsset.supportsAdditionalLightShadows = true; + m_TestHelper.urpAsset.supportsSoftShadows = true; + expected = m_TestHelper.defaultURPAssetFeatures; + actual = m_TestHelper.GetSupportedShaderFeaturesFromAsset(); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); + + m_TestHelper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerVertex; + m_TestHelper.urpAsset.supportsAdditionalLightShadows = true; + m_TestHelper.urpAsset.supportsSoftShadows = true; + expected = m_TestHelper.defaultURPAssetFeatures | ShaderFeatures.AdditionalLightsVertex; + actual = m_TestHelper.GetSupportedShaderFeaturesFromAsset(); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); + + m_TestHelper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerPixel; + m_TestHelper.urpAsset.supportsAdditionalLightShadows = true; + m_TestHelper.urpAsset.supportsSoftShadows = false; + expected = m_TestHelper.defaultURPAssetFeatures | ShaderFeatures.AdditionalLightShadows | ShaderFeatures.AdditionalLightsPixel; + actual = m_TestHelper.GetSupportedShaderFeaturesFromAsset(); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); + + m_TestHelper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerPixel; + m_TestHelper.urpAsset.supportsAdditionalLightShadows = true; + m_TestHelper.urpAsset.supportsSoftShadows = true; + expected = m_TestHelper.defaultURPAssetFeatures | ShaderFeatures.AdditionalLightShadows | ShaderFeatures.AdditionalLightsPixel | ShaderFeatures.SoftShadows; + actual = m_TestHelper.GetSupportedShaderFeaturesFromAsset(); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); } [Test] - public static void TestGetSupportedShaderFeaturesFromAsset_HighDynamicRange() + public void TestGetSupportedShaderFeaturesFromAsset_HighDynamicRange() { - TestHelper helper = new (); - ShaderFeatures actual; - ShaderFeatures expected; - - helper.urpAsset.colorGradingMode = ColorGradingMode.LowDynamicRange; - actual = helper.GetSupportedShaderFeaturesFromAsset(); - expected = helper.defaultURPAssetFeatures; - helper.AssertShaderFeaturesAndReset(expected, actual); - - helper.urpAsset.colorGradingMode = ColorGradingMode.HighDynamicRange; - actual = helper.GetSupportedShaderFeaturesFromAsset(); - expected = helper.defaultURPAssetFeatures | ShaderFeatures.HdrGrading; - helper.AssertShaderFeaturesAndReset(expected, actual); - - // Clean up - helper.Cleanup(); + m_TestHelper.urpAsset.colorGradingMode = ColorGradingMode.LowDynamicRange; + ShaderFeatures actual = m_TestHelper.GetSupportedShaderFeaturesFromAsset(); + ShaderFeatures expected = m_TestHelper.defaultURPAssetFeatures; + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); + + m_TestHelper.urpAsset.colorGradingMode = ColorGradingMode.HighDynamicRange; + actual = m_TestHelper.GetSupportedShaderFeaturesFromAsset(); + expected = m_TestHelper.defaultURPAssetFeatures | ShaderFeatures.HdrGrading; + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); } [Test] public void TestGetRendererRequirements() { - TestHelper helper = new (); - RendererRequirements actual; - RendererRequirements expected; - // Forward - actual = helper.GetRendererRequirements(); - helper.AssertRendererRequirementsAndReset(helper.defaultRendererRequirements, actual); + RendererRequirements actual = m_TestHelper.GetRendererRequirements(); + m_TestHelper.AssertRendererRequirementsAndReset(m_TestHelper.defaultRendererRequirements, actual); // MSAA Sample Count - helper.rendererData.renderingMode = RenderingMode.ForwardPlus; - expected = helper.defaultRendererRequirements; - expected.renderingMode = helper.rendererData.renderingMode; - actual = helper.GetRendererRequirements(); - helper.AssertRendererRequirementsAndReset(expected, actual); + m_TestHelper.rendererData.renderingMode = RenderingMode.ForwardPlus; + RendererRequirements expected = m_TestHelper.defaultRendererRequirements; + expected.renderingMode = m_TestHelper.rendererData.renderingMode; + actual = m_TestHelper.GetRendererRequirements(); + m_TestHelper.AssertRendererRequirementsAndReset(expected, actual); // Forward Plus - helper.rendererData.renderingMode = RenderingMode.ForwardPlus; - expected = helper.defaultRendererRequirements; - expected.renderingMode = helper.rendererData.renderingMode; - actual = helper.GetRendererRequirements(); - helper.AssertRendererRequirementsAndReset(expected, actual); + m_TestHelper.rendererData.renderingMode = RenderingMode.ForwardPlus; + expected = m_TestHelper.defaultRendererRequirements; + expected.renderingMode = m_TestHelper.rendererData.renderingMode; + actual = m_TestHelper.GetRendererRequirements(); + m_TestHelper.AssertRendererRequirementsAndReset(expected, actual); // Deferred - helper.rendererData.renderingMode = RenderingMode.Deferred; - expected = helper.defaultRendererRequirements; - expected.renderingMode = helper.rendererData.renderingMode; - actual = helper.GetRendererRequirements(); - helper.AssertRendererRequirementsAndReset(expected, actual); + m_TestHelper.rendererData.renderingMode = RenderingMode.Deferred; + expected = m_TestHelper.defaultRendererRequirements; + expected.renderingMode = m_TestHelper.rendererData.renderingMode; + actual = m_TestHelper.GetRendererRequirements(); + m_TestHelper.AssertRendererRequirementsAndReset(expected, actual); // Native Render Pass - helper.rendererData.renderingMode = RenderingMode.Forward; - helper.ScriptableRenderer.useRenderPassEnabled = true; - expected = helper.defaultRendererRequirements; - expected.renderingMode = helper.rendererData.renderingMode; + m_TestHelper.rendererData.renderingMode = RenderingMode.Forward; + m_TestHelper.ScriptableRenderer.useRenderPassEnabled = true; + expected = m_TestHelper.defaultRendererRequirements; + expected.renderingMode = m_TestHelper.rendererData.renderingMode; expected.needsRenderPass = false; - actual = helper.GetRendererRequirements(); - helper.AssertRendererRequirementsAndReset(expected, actual); + actual = m_TestHelper.GetRendererRequirements(); + m_TestHelper.AssertRendererRequirementsAndReset(expected, actual); - helper.rendererData.renderingMode = RenderingMode.ForwardPlus; - helper.ScriptableRenderer.useRenderPassEnabled = true; - expected = helper.defaultRendererRequirements; - expected.renderingMode = helper.rendererData.renderingMode; + m_TestHelper.rendererData.renderingMode = RenderingMode.ForwardPlus; + m_TestHelper.ScriptableRenderer.useRenderPassEnabled = true; + expected = m_TestHelper.defaultRendererRequirements; + expected.renderingMode = m_TestHelper.rendererData.renderingMode; expected.needsRenderPass = false; - actual = helper.GetRendererRequirements(); - helper.AssertRendererRequirementsAndReset(expected, actual); + actual = m_TestHelper.GetRendererRequirements(); + m_TestHelper.AssertRendererRequirementsAndReset(expected, actual); - helper.rendererData.renderingMode = RenderingMode.Deferred; - helper.ScriptableRenderer.useRenderPassEnabled = true; - expected = helper.defaultRendererRequirements; - expected.renderingMode = helper.rendererData.renderingMode; - expected.needsRenderPass = helper.ScriptableRenderer.useRenderPassEnabled; - actual = helper.GetRendererRequirements(); - helper.AssertRendererRequirementsAndReset(expected, actual); + m_TestHelper.rendererData.renderingMode = RenderingMode.Deferred; + m_TestHelper.ScriptableRenderer.useRenderPassEnabled = true; + expected = m_TestHelper.defaultRendererRequirements; + expected.renderingMode = m_TestHelper.rendererData.renderingMode; + expected.needsRenderPass = m_TestHelper.ScriptableRenderer.useRenderPassEnabled;; + actual = m_TestHelper.GetRendererRequirements(); + m_TestHelper.AssertRendererRequirementsAndReset(expected, actual); // Reflection Probe Blending - helper.urpAsset.reflectionProbeBlending = false; - expected = helper.defaultRendererRequirements; - expected.needsReflectionProbeBlending = helper.urpAsset.reflectionProbeBlending; - actual = helper.GetRendererRequirements(); - helper.AssertRendererRequirementsAndReset(expected, actual); - - helper.urpAsset.reflectionProbeBlending = true; - expected = helper.defaultRendererRequirements; - expected.needsReflectionProbeBlending = helper.urpAsset.reflectionProbeBlending; - actual = helper.GetRendererRequirements(); - helper.AssertRendererRequirementsAndReset(expected, actual); + m_TestHelper.urpAsset.reflectionProbeBlending = false; + expected = m_TestHelper.defaultRendererRequirements; + expected.needsReflectionProbeBlending = m_TestHelper.urpAsset.reflectionProbeBlending; + actual = m_TestHelper.GetRendererRequirements(); + m_TestHelper.AssertRendererRequirementsAndReset(expected, actual); + + m_TestHelper.urpAsset.reflectionProbeBlending = true; + expected = m_TestHelper.defaultRendererRequirements; + expected.needsReflectionProbeBlending = m_TestHelper.urpAsset.reflectionProbeBlending; + actual = m_TestHelper.GetRendererRequirements(); + m_TestHelper.AssertRendererRequirementsAndReset(expected, actual); // Reflection Probe Box Projection - helper.urpAsset.reflectionProbeBoxProjection = false; - expected = helper.defaultRendererRequirements; - expected.needsReflectionProbeBoxProjection = helper.urpAsset.reflectionProbeBoxProjection; - actual = helper.GetRendererRequirements(); - helper.AssertRendererRequirementsAndReset(expected, actual); - - helper.urpAsset.reflectionProbeBoxProjection = true; - expected = helper.defaultRendererRequirements; - expected.needsReflectionProbeBoxProjection = helper.urpAsset.reflectionProbeBoxProjection; - actual = helper.GetRendererRequirements(); - helper.AssertRendererRequirementsAndReset(expected, actual); + m_TestHelper.urpAsset.reflectionProbeBoxProjection = false; + expected = m_TestHelper.defaultRendererRequirements; + expected.needsReflectionProbeBoxProjection = m_TestHelper.urpAsset.reflectionProbeBoxProjection; + actual = m_TestHelper.GetRendererRequirements(); + m_TestHelper.AssertRendererRequirementsAndReset(expected, actual); + + m_TestHelper.urpAsset.reflectionProbeBoxProjection = true; + expected = m_TestHelper.defaultRendererRequirements; + expected.needsReflectionProbeBoxProjection = m_TestHelper.urpAsset.reflectionProbeBoxProjection; + actual = m_TestHelper.GetRendererRequirements(); + m_TestHelper.AssertRendererRequirementsAndReset(expected, actual); // Soft shadows - helper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerVertex; - helper.urpAsset.supportsAdditionalLightShadows = false; - helper.urpAsset.supportsSoftShadows = true; - expected = helper.defaultRendererRequirements; + m_TestHelper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerVertex; + m_TestHelper.urpAsset.supportsAdditionalLightShadows = false; + m_TestHelper.urpAsset.supportsSoftShadows = true; + expected = m_TestHelper.defaultRendererRequirements; expected.needsSoftShadows = false; - actual = helper.GetRendererRequirements(); - helper.AssertRendererRequirementsAndReset(expected, actual); + actual = m_TestHelper.GetRendererRequirements(); + m_TestHelper.AssertRendererRequirementsAndReset(expected, actual); - helper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerPixel; - helper.urpAsset.supportsAdditionalLightShadows = false; - helper.urpAsset.supportsSoftShadows = true; - expected = helper.defaultRendererRequirements; + m_TestHelper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerPixel; + m_TestHelper.urpAsset.supportsAdditionalLightShadows = false; + m_TestHelper.urpAsset.supportsSoftShadows = true; + expected = m_TestHelper.defaultRendererRequirements; expected.needsSoftShadows = false; - actual = helper.GetRendererRequirements(); - helper.AssertRendererRequirementsAndReset(expected, actual); + actual = m_TestHelper.GetRendererRequirements(); + m_TestHelper.AssertRendererRequirementsAndReset(expected, actual); - helper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerVertex; - helper.urpAsset.supportsAdditionalLightShadows = true; - helper.urpAsset.supportsSoftShadows = true; - expected = helper.defaultRendererRequirements; + m_TestHelper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerVertex; + m_TestHelper.urpAsset.supportsAdditionalLightShadows = true; + m_TestHelper.urpAsset.supportsSoftShadows = true; + expected = m_TestHelper.defaultRendererRequirements; expected.needsSoftShadows = false; - actual = helper.GetRendererRequirements(); - helper.AssertRendererRequirementsAndReset(expected, actual); + actual = m_TestHelper.GetRendererRequirements(); + m_TestHelper.AssertRendererRequirementsAndReset(expected, actual); - helper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerPixel; - helper.urpAsset.supportsAdditionalLightShadows = true; - helper.urpAsset.supportsSoftShadows = true; - expected = helper.defaultRendererRequirements; + m_TestHelper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerPixel; + m_TestHelper.urpAsset.supportsAdditionalLightShadows = true; + m_TestHelper.urpAsset.supportsSoftShadows = true; + expected = m_TestHelper.defaultRendererRequirements; expected.needsAdditionalLightShadows = true; expected.needsSoftShadows = true; - actual = helper.GetRendererRequirements(); - helper.AssertRendererRequirementsAndReset(expected, actual); - - helper.rendererData.renderingMode = RenderingMode.ForwardPlus; - helper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerVertex; - helper.urpAsset.supportsAdditionalLightShadows = false; - helper.urpAsset.supportsSoftShadows = true; - expected = helper.defaultRendererRequirements; - expected.renderingMode = helper.rendererData.renderingMode; + actual = m_TestHelper.GetRendererRequirements(); + m_TestHelper.AssertRendererRequirementsAndReset(expected, actual); + + m_TestHelper.rendererData.renderingMode = RenderingMode.ForwardPlus; + m_TestHelper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerVertex; + m_TestHelper.urpAsset.supportsAdditionalLightShadows = false; + m_TestHelper.urpAsset.supportsSoftShadows = true; + expected = m_TestHelper.defaultRendererRequirements; + expected.renderingMode = m_TestHelper.rendererData.renderingMode; expected.needsSoftShadows = false; - actual = helper.GetRendererRequirements(); - helper.AssertRendererRequirementsAndReset(expected, actual); - - helper.rendererData.renderingMode = RenderingMode.ForwardPlus; - helper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerVertex; - helper.urpAsset.supportsAdditionalLightShadows = true; - helper.urpAsset.supportsSoftShadows = true; - expected = helper.defaultRendererRequirements; - expected.renderingMode = helper.rendererData.renderingMode; + actual = m_TestHelper.GetRendererRequirements(); + m_TestHelper.AssertRendererRequirementsAndReset(expected, actual); + + m_TestHelper.rendererData.renderingMode = RenderingMode.ForwardPlus; + m_TestHelper.urpAsset.additionalLightsRenderingMode = LightRenderingMode.PerVertex; + m_TestHelper.urpAsset.supportsAdditionalLightShadows = true; + m_TestHelper.urpAsset.supportsSoftShadows = true; + expected = m_TestHelper.defaultRendererRequirements; + expected.renderingMode = m_TestHelper.rendererData.renderingMode; expected.needsAdditionalLightShadows = true; expected.needsSoftShadows = true; - actual = helper.GetRendererRequirements(); - helper.AssertRendererRequirementsAndReset(expected, actual); + actual = m_TestHelper.GetRendererRequirements(); + m_TestHelper.AssertRendererRequirementsAndReset(expected, actual); // Shadows Off - helper.ScriptableRenderer.stripShadowsOffVariants = false; - expected = helper.defaultRendererRequirements; + m_TestHelper.ScriptableRenderer.stripShadowsOffVariants = false; + expected = m_TestHelper.defaultRendererRequirements; expected.needsShadowsOff = true; - actual = helper.GetRendererRequirements(); - helper.AssertRendererRequirementsAndReset(expected, actual); + actual = m_TestHelper.GetRendererRequirements(); + m_TestHelper.AssertRendererRequirementsAndReset(expected, actual); - helper.ScriptableRenderer.stripShadowsOffVariants = true; - expected = helper.defaultRendererRequirements; + m_TestHelper.ScriptableRenderer.stripShadowsOffVariants = true; + expected = m_TestHelper.defaultRendererRequirements; expected.needsShadowsOff = false; - actual = helper.GetRendererRequirements(); - helper.AssertRendererRequirementsAndReset(expected, actual); + actual = m_TestHelper.GetRendererRequirements(); + m_TestHelper.AssertRendererRequirementsAndReset(expected, actual); // Additional Lights Off - helper.ScriptableRenderer.stripAdditionalLightOffVariants = false; - expected = helper.defaultRendererRequirements; + m_TestHelper.ScriptableRenderer.stripAdditionalLightOffVariants = false; + expected = m_TestHelper.defaultRendererRequirements; expected.needsAdditionalLightsOff = true; - actual = helper.GetRendererRequirements(); - helper.AssertRendererRequirementsAndReset(expected, actual); + actual = m_TestHelper.GetRendererRequirements(); + m_TestHelper.AssertRendererRequirementsAndReset(expected, actual); - helper.ScriptableRenderer.stripAdditionalLightOffVariants = true; - expected = helper.defaultRendererRequirements; + m_TestHelper.ScriptableRenderer.stripAdditionalLightOffVariants = true; + expected = m_TestHelper.defaultRendererRequirements; expected.needsAdditionalLightsOff = false; - actual = helper.GetRendererRequirements(); - helper.AssertRendererRequirementsAndReset(expected, actual); - - // Clean up - helper.Cleanup(); + actual = m_TestHelper.GetRendererRequirements(); + m_TestHelper.AssertRendererRequirementsAndReset(expected, actual); } [Test] public void TestGetSupportedShaderFeaturesFromRenderer() { - TestHelper helper = new (); - ShaderFeatures actual; - ShaderFeatures expected; - RendererRequirements rendererRequirements; - // Initial state - rendererRequirements = helper.defaultRendererRequirements; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); - expected = ShaderFeatures.DrawProcedural; - helper.AssertShaderFeaturesAndReset(expected, actual); + RendererRequirements rendererRequirements = m_TestHelper.defaultRendererRequirements; + ShaderFeatures actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + ShaderFeatures expected = ShaderFeatures.DrawProcedural; + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); // Procedural... - rendererRequirements = helper.defaultRendererRequirements; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.needsProcedural = false; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); expected = ShaderFeatures.None; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); - rendererRequirements = helper.defaultRendererRequirements; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.needsProcedural = true; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); expected = ShaderFeatures.DrawProcedural; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); // Rendering Modes... - rendererRequirements = helper.defaultRendererRequirements; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.renderingMode = RenderingMode.Forward; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); expected = ShaderFeatures.DrawProcedural; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); - rendererRequirements = helper.defaultRendererRequirements; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.renderingMode = RenderingMode.ForwardPlus; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); expected = ShaderFeatures.DrawProcedural | ShaderFeatures.ForwardPlus | ShaderFeatures.AdditionalLightsKeepOffVariants; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); - rendererRequirements = helper.defaultRendererRequirements; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.renderingMode = RenderingMode.Deferred; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); expected = ShaderFeatures.DrawProcedural | ShaderFeatures.DeferredShading; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); // The Off variant for Additional Lights - rendererRequirements = helper.defaultRendererRequirements; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.needsAdditionalLightsOff = false; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); expected = ShaderFeatures.DrawProcedural; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); - rendererRequirements = helper.defaultRendererRequirements; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.needsAdditionalLightsOff = true; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); expected = ShaderFeatures.DrawProcedural | ShaderFeatures.AdditionalLightsKeepOffVariants; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); // The Off variant for Main and Additional Light shadows - rendererRequirements = helper.defaultRendererRequirements; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.needsShadowsOff = false; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); expected = ShaderFeatures.DrawProcedural; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); - rendererRequirements = helper.defaultRendererRequirements; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.needsShadowsOff = true; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); expected = ShaderFeatures.DrawProcedural | ShaderFeatures.ShadowsKeepOffVariants; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); // Soft shadows - rendererRequirements = helper.defaultRendererRequirements; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.needsSoftShadows = false; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); expected = ShaderFeatures.DrawProcedural; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); - rendererRequirements = helper.defaultRendererRequirements; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.needsSoftShadows = true; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); expected = ShaderFeatures.DrawProcedural | ShaderFeatures.SoftShadows; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); // Deferred GBuffer Rendering Layers - rendererRequirements = helper.defaultRendererRequirements; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.needsGBufferRenderingLayers = false; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); expected = ShaderFeatures.DrawProcedural; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); - rendererRequirements = helper.defaultRendererRequirements; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.needsGBufferRenderingLayers = true; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); expected = ShaderFeatures.DrawProcedural | ShaderFeatures.GBufferWriteRenderingLayers; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); // Deferred GBuffer Accurate Normals - rendererRequirements = helper.defaultRendererRequirements; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.needsGBufferAccurateNormals = false; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); expected = ShaderFeatures.DrawProcedural; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); - rendererRequirements = helper.defaultRendererRequirements; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.needsGBufferAccurateNormals = true; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); expected = ShaderFeatures.DrawProcedural | ShaderFeatures.AccurateGbufferNormals; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); // Deferred GBuffer Native Render Pass - rendererRequirements = helper.defaultRendererRequirements; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.needsRenderPass = false; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); expected = ShaderFeatures.DrawProcedural; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); - rendererRequirements = helper.defaultRendererRequirements; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.needsRenderPass = true; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); expected = ShaderFeatures.DrawProcedural | ShaderFeatures.RenderPassEnabled; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); // Reflection Probe Blending - rendererRequirements = helper.defaultRendererRequirements; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.needsReflectionProbeBlending = false; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); expected = ShaderFeatures.DrawProcedural; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); - rendererRequirements = helper.defaultRendererRequirements; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.needsReflectionProbeBlending = true; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); expected = ShaderFeatures.DrawProcedural | ShaderFeatures.ReflectionProbeBlending; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); // Reflection Probe Box Projection - rendererRequirements = helper.defaultRendererRequirements; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.needsReflectionProbeBoxProjection = false; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); expected = ShaderFeatures.DrawProcedural; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); - rendererRequirements = helper.defaultRendererRequirements; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.needsReflectionProbeBoxProjection = true; - actual = helper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRenderer(rendererRequirements, ShaderFeatures.None); expected = ShaderFeatures.DrawProcedural | ShaderFeatures.ReflectionProbeBoxProjection; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); + } - helper.Cleanup(); + [Test] + public void TestStripUnusedPostProcessingVariants_ReturnsAll() + { + VolumeFeatures volumeFeatures = VolumeFeatures.None; + m_TestHelper.GetEveryVolumeFeatures(ref volumeFeatures); + m_TestHelper.AssertVolumeFeatures(VolumeFeatures.All, volumeFeatures); } + [Test] + public void TestStripUnusedVariants_ReturnsAll() + { + List rendererFeaturesList = new List(1); + UniversalRenderPipelineAsset.ShaderPrefilteringData prefilteringData = new(); + m_TestHelper.GetEveryShaderFeatureAndPrefilteringData(rendererFeaturesList, ref prefilteringData); + Assert.AreEqual(1, rendererFeaturesList.Count); + m_TestHelper.AssertShaderFeatures(ShaderFeatures.All, rendererFeaturesList[0]); + } [Test] - public static void TestGetSupportedShaderFeaturesFromRendererFeatures_NoFeatures() + public void TestGetSupportedShaderFeaturesFromRendererFeatures_NoFeatures() { - TestHelper helper = new (); - ShaderFeatures actual; - ShaderFeatures expected; - RendererRequirements rendererRequirements; - // Initial state - rendererRequirements = helper.defaultRendererRequirements; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = ShaderFeatures.None; - helper.AssertShaderFeaturesAndReset(expected, actual); - - helper.Cleanup(); + RendererRequirements rendererRequirements = m_TestHelper.defaultRendererRequirements; + ShaderFeatures actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + ShaderFeatures expected = ShaderFeatures.None; + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); } // Tests if we handle Renderer Features that are null [Test] - public static void TestGetSupportedShaderFeaturesFromRendererFeatures_Null() + public void TestGetSupportedShaderFeaturesFromRendererFeatures_Null() { - TestHelper helper = new (); - ShaderFeatures actual; - ShaderFeatures expected; - RendererRequirements rendererRequirements; - - rendererRequirements = helper.defaultRendererRequirements; - - helper.rendererFeatures.Add(null); - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = ShaderFeatures.None; - helper.AssertShaderFeaturesAndReset(expected, actual); - - helper.rendererFeatures.Add(null); - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = true; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = ShaderFeatures.None; - helper.AssertShaderFeaturesAndReset(expected, actual); - - helper.Cleanup(); + m_TestHelper.rendererFeatures.Add(null); + RendererRequirements rendererRequirements = m_TestHelper.defaultRendererRequirements; + ShaderFeatures actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + ShaderFeatures expected = ShaderFeatures.None; + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); } [Test] - public static void TestGetSupportedShaderFeaturesFromRendererFeatures_RenderingLayers() + public void TestGetSupportedShaderFeaturesFromRendererFeatures_RenderingLayers() { - TestHelper helper = new (); - RendererRequirements rendererRequirements; - ShaderFeatures actual; - ShaderFeatures expected; - ShaderFeatures expectedWithUnused = ShaderFeatures.DBufferMRT1 - | ShaderFeatures.DBufferMRT1 - | ShaderFeatures.DBufferMRT2 - | ShaderFeatures.DBufferMRT3 - | ShaderFeatures.DecalScreenSpace - | ShaderFeatures.DecalNormalBlendLow - | ShaderFeatures.DecalNormalBlendMedium - | ShaderFeatures.DecalNormalBlendHigh - | ShaderFeatures.DecalGBuffer - | ShaderFeatures.DecalLayers; - DecalRendererFeature decalFeature = ScriptableObject.CreateInstance(); decalFeature.settings = new DecalSettings() { @@ -718,123 +732,108 @@ public static void TestGetSupportedShaderFeaturesFromRendererFeatures_Rendering dBufferSettings = new DBufferSettings(), screenSpaceSettings = new DecalScreenSpaceSettings(), }; - helper.rendererFeatures.Add(decalFeature); - - // Needs unused variants - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.DBuffer; - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.decalLayers = false; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = true; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = expectedWithUnused; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.rendererFeatures.Add(decalFeature); // DBuffer - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.DBuffer; - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.decalLayers = false; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = ShaderFeatures.DBufferMRT3; - helper.AssertShaderFeaturesAndReset(expected, actual); - - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.DBuffer; - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.decalLayers = true; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.DBuffer; + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.decalLayers = false; + RendererRequirements rendererRequirements = m_TestHelper.defaultRendererRequirements; + ShaderFeatures actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + ShaderFeatures expected = ShaderFeatures.DBufferMRT3; + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); + + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.DBuffer; + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.decalLayers = true; + rendererRequirements = m_TestHelper.defaultRendererRequirements; + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); expected = ShaderFeatures.DecalLayers | ShaderFeatures.DepthNormalPassRenderingLayers | ShaderFeatures.DBufferMRT3; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.DBuffer; - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.decalLayers = true; - rendererRequirements = helper.defaultRendererRequirements; + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.DBuffer; + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.decalLayers = true; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.renderingMode = RenderingMode.Deferred; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); expected = ShaderFeatures.DecalLayers | ShaderFeatures.DepthNormalPassRenderingLayers | ShaderFeatures.GBufferWriteRenderingLayers | ShaderFeatures.DBufferMRT3; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); // Screenspace - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.ScreenSpace; - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.decalLayers = false; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.ScreenSpace; + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.decalLayers = false; + rendererRequirements = m_TestHelper.defaultRendererRequirements; + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); expected = ShaderFeatures.DecalScreenSpace | ShaderFeatures.DecalNormalBlendLow; - helper.AssertShaderFeaturesAndReset(expected, actual); - - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.ScreenSpace; - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.decalLayers = true; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = ShaderFeatures.DecalScreenSpace | ShaderFeatures.DecalLayers | ShaderFeatures.OpaqueWriteRenderingLayers | ShaderFeatures.DecalNormalBlendLow;; - helper.AssertShaderFeaturesAndReset(expected, actual); - - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.ScreenSpace; - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.decalLayers = true; - rendererRequirements = helper.defaultRendererRequirements; + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); + + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.ScreenSpace; + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.decalLayers = true; + rendererRequirements = m_TestHelper.defaultRendererRequirements; + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + expected = ShaderFeatures.DecalScreenSpace | ShaderFeatures.DecalLayers | ShaderFeatures.OpaqueWriteRenderingLayers | ShaderFeatures.DecalNormalBlendLow; + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); + + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.ScreenSpace; + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.decalLayers = true; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.renderingMode = RenderingMode.Deferred; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); expected = ShaderFeatures.DecalGBuffer | ShaderFeatures.DecalNormalBlendLow | ShaderFeatures.DecalLayers | ShaderFeatures.DepthNormalPassRenderingLayers | ShaderFeatures.GBufferWriteRenderingLayers; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); - // Clean up - helper.Cleanup(); + // Test with DepthNormal prepass enabled (Is enabled implicitly by SSAO f.ex) + ScreenSpaceAmbientOcclusion ssaoFeature = ScriptableObject.CreateInstance(); + ssaoFeature.settings = new ScreenSpaceAmbientOcclusionSettings() + { + AOMethod = ScreenSpaceAmbientOcclusionSettings.AOMethodOptions.BlueNoise, + Downsample = false, + AfterOpaque = false, + Source = ScreenSpaceAmbientOcclusionSettings.DepthSource.DepthNormals, + NormalSamples = ScreenSpaceAmbientOcclusionSettings.NormalQuality.Medium, + Intensity = 3.0f, + DirectLightingStrength = 0.25f, + Radius = 0.035f, + Samples = ScreenSpaceAmbientOcclusionSettings.AOSampleOption.Medium, + BlurQuality = ScreenSpaceAmbientOcclusionSettings.BlurQualityOptions.High, + Falloff = 100f, + }; + ssaoFeature.SetActive(true); + m_TestHelper.rendererFeatures.Add(ssaoFeature); + + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.ScreenSpace; + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.decalLayers = true; + rendererRequirements = m_TestHelper.defaultRendererRequirements; + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + expected = ShaderFeatures.ScreenSpaceOcclusion | ShaderFeatures.DecalScreenSpace | + ShaderFeatures.DecalNormalBlendLow | ShaderFeatures.DecalLayers | + ShaderFeatures.OpaqueWriteRenderingLayers; + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); + + m_TestHelper.rendererFeatures.Remove(ssaoFeature); } [Test] - public static void TestGetSupportedShaderFeaturesFromRendererFeatures_ScreenSpaceShadows() + public void TestGetSupportedShaderFeaturesFromRendererFeatures_ScreenSpaceShadows() { - TestHelper helper = new (); - RendererRequirements rendererRequirements; - ShaderFeatures actual; - ShaderFeatures expected; - ScreenSpaceShadows screenSpaceShadowsFeature = ScriptableObject.CreateInstance(); - helper.rendererFeatures.Add(screenSpaceShadowsFeature); + m_TestHelper.rendererFeatures.Add(screenSpaceShadowsFeature); // Initial - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = ShaderFeatures.ScreenSpaceShadows; - helper.AssertShaderFeaturesAndReset(expected, actual); - - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = true; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = ShaderFeatures.ScreenSpaceShadows; - helper.AssertShaderFeaturesAndReset(expected, actual); - - helper.rendererFeatures[0].SetActive(false); - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + RendererRequirements rendererRequirements = m_TestHelper.defaultRendererRequirements; + ShaderFeatures actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + ShaderFeatures expected = ShaderFeatures.ScreenSpaceShadows; + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); + + m_TestHelper.rendererFeatures[0].SetActive(false); + rendererRequirements = m_TestHelper.defaultRendererRequirements; + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); expected = ShaderFeatures.None; - helper.AssertShaderFeaturesAndReset(expected, actual); - - helper.rendererFeatures[0].SetActive(false); - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = true; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = ShaderFeatures.ScreenSpaceShadows; - helper.AssertShaderFeaturesAndReset(expected, actual); - - helper.Cleanup(); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); } // Screen Space Ambient Occlusion (SSAO)... [Test] - public static void TestGetSupportedShaderFeaturesFromRendererFeatures_SSAO() + public void TestGetSupportedShaderFeaturesFromRendererFeatures_SSAO() { - TestHelper helper = new (); - RendererRequirements rendererRequirements; - ShaderFeatures actual; - ShaderFeatures expected; - ScreenSpaceAmbientOcclusion ssaoFeature = ScriptableObject.CreateInstance(); ssaoFeature.settings = new ScreenSpaceAmbientOcclusionSettings() { @@ -850,90 +849,42 @@ public static void TestGetSupportedShaderFeaturesFromRendererFeatures_SSAO() BlurQuality = ScreenSpaceAmbientOcclusionSettings.BlurQualityOptions.High, Falloff = 100f, }; - helper.rendererFeatures.Add(ssaoFeature); + m_TestHelper.rendererFeatures.Add(ssaoFeature); // Enabled feature - helper.rendererFeatures[0].SetActive(true); - - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = ShaderFeatures.ScreenSpaceOcclusion; - helper.AssertShaderFeaturesAndReset(expected, actual); - - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = true; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = ShaderFeatures.ScreenSpaceOcclusion | ShaderFeatures.ScreenSpaceOcclusionAfterOpaque; - helper.AssertShaderFeaturesAndReset(expected, actual); - - ((ScreenSpaceAmbientOcclusion)helper.rendererFeatures[0]).settings.AfterOpaque = true; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = ShaderFeatures.ScreenSpaceOcclusionAfterOpaque; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.rendererFeatures[0].SetActive(true); + + RendererRequirements rendererRequirements = m_TestHelper.defaultRendererRequirements; + ShaderFeatures actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + ShaderFeatures expected = ShaderFeatures.ScreenSpaceOcclusion; + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); - ((ScreenSpaceAmbientOcclusion)helper.rendererFeatures[0]).settings.AfterOpaque = true; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = true; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = ShaderFeatures.ScreenSpaceOcclusion | ShaderFeatures.ScreenSpaceOcclusionAfterOpaque; - helper.AssertShaderFeaturesAndReset(expected, actual); + ((ScreenSpaceAmbientOcclusion)m_TestHelper.rendererFeatures[0]).settings.AfterOpaque = true; + rendererRequirements = m_TestHelper.defaultRendererRequirements; + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + expected = ShaderFeatures.ScreenSpaceOcclusionAfterOpaque; + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); // Disabled feature - helper.rendererFeatures[0].SetActive(false); - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + m_TestHelper.rendererFeatures[0].SetActive(false); + rendererRequirements = m_TestHelper.defaultRendererRequirements; + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); expected = ShaderFeatures.None; - helper.AssertShaderFeaturesAndReset(expected, actual); - - helper.rendererFeatures[0].SetActive(false); - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = true; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = ShaderFeatures.ScreenSpaceOcclusion | ShaderFeatures.ScreenSpaceOcclusionAfterOpaque; - helper.AssertShaderFeaturesAndReset(expected, actual); - - helper.rendererFeatures[0].SetActive(false); - ((ScreenSpaceAmbientOcclusion)helper.rendererFeatures[0]).settings.AfterOpaque = true; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); + + m_TestHelper.rendererFeatures[0].SetActive(false); + ((ScreenSpaceAmbientOcclusion)m_TestHelper.rendererFeatures[0]).settings.AfterOpaque = true; + rendererRequirements = m_TestHelper.defaultRendererRequirements; + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); expected = ShaderFeatures.None; - helper.AssertShaderFeaturesAndReset(expected, actual); - - helper.rendererFeatures[0].SetActive(false); - ((ScreenSpaceAmbientOcclusion)helper.rendererFeatures[0]).settings.AfterOpaque = true; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = true; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = ShaderFeatures.ScreenSpaceOcclusion | ShaderFeatures.ScreenSpaceOcclusionAfterOpaque; - helper.AssertShaderFeaturesAndReset(expected, actual); - - ScriptableObject.DestroyImmediate(ssaoFeature); - helper.Cleanup(); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); + + Object.DestroyImmediate(ssaoFeature); } [Test] - public static void TestGetSupportedShaderFeaturesFromRendererFeatures_Decals() + public void TestGetSupportedShaderFeaturesFromRendererFeatures_Decals() { - TestHelper helper = new (); - RendererRequirements rendererRequirements; - ShaderFeatures actual; - ShaderFeatures expected; - ShaderFeatures expectedWithUnused = ShaderFeatures.DBufferMRT1 - | ShaderFeatures.DBufferMRT1 - | ShaderFeatures.DBufferMRT2 - | ShaderFeatures.DBufferMRT3 - | ShaderFeatures.DecalScreenSpace - | ShaderFeatures.DecalNormalBlendLow - | ShaderFeatures.DecalNormalBlendMedium - | ShaderFeatures.DecalNormalBlendHigh - | ShaderFeatures.DecalGBuffer - | ShaderFeatures.DecalLayers; - DecalRendererFeature decalFeature = ScriptableObject.CreateInstance(); decalFeature.settings = new DecalSettings() { @@ -943,218 +894,116 @@ public static void TestGetSupportedShaderFeaturesFromRendererFeatures_Decals() dBufferSettings = new DBufferSettings(), screenSpaceSettings = new DecalScreenSpaceSettings(), }; - helper.rendererFeatures.Add(decalFeature); + m_TestHelper.rendererFeatures.Add(decalFeature); // TODO Tests for Automatic // Initial - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = ShaderFeatures.DBufferMRT3; - helper.AssertShaderFeaturesAndReset(expected, actual); - - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = true; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = expectedWithUnused; - helper.AssertShaderFeaturesAndReset(expected, actual); - - helper.rendererFeatures[0].SetActive(false); - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + RendererRequirements rendererRequirements = m_TestHelper.defaultRendererRequirements; + ShaderFeatures actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + ShaderFeatures expected = ShaderFeatures.DBufferMRT3; + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); + + m_TestHelper.rendererFeatures[0].SetActive(false); + rendererRequirements = m_TestHelper.defaultRendererRequirements; + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); expected = ShaderFeatures.None; - helper.AssertShaderFeaturesAndReset(expected, actual); - - helper.rendererFeatures[0].SetActive(false); - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = true; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = expectedWithUnused; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); // DecalTechniqueOption - DBuffer - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.DBuffer; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.DBuffer; + rendererRequirements = m_TestHelper.defaultRendererRequirements; + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); expected = ShaderFeatures.DBufferMRT3; - helper.AssertShaderFeaturesAndReset(expected, actual); - - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.DBuffer; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = true; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = expectedWithUnused; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.DBuffer; - rendererRequirements = helper.defaultRendererRequirements; + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.DBuffer; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.renderingMode = RenderingMode.Deferred; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); expected = ShaderFeatures.DBufferMRT3; - helper.AssertShaderFeaturesAndReset(expected, actual); - - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.DBuffer; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.renderingMode = RenderingMode.Deferred; - rendererRequirements.needsUnusedVariants = true; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = expectedWithUnused; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); // DecalTechniqueOption - ScreenSpace - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.ScreenSpace; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.ScreenSpace; + rendererRequirements = m_TestHelper.defaultRendererRequirements; + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); expected = ShaderFeatures.DecalScreenSpace | ShaderFeatures.DecalNormalBlendLow; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.ScreenSpace; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = true; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = expectedWithUnused; - helper.AssertShaderFeaturesAndReset(expected, actual); - - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.ScreenSpace; - rendererRequirements = helper.defaultRendererRequirements; + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.ScreenSpace; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.renderingMode = RenderingMode.Deferred; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); expected = ShaderFeatures.DecalNormalBlendLow | ShaderFeatures.DecalGBuffer; - helper.AssertShaderFeaturesAndReset(expected, actual); - - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.ScreenSpace; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.renderingMode = RenderingMode.Deferred; - rendererRequirements.needsUnusedVariants = true; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = expectedWithUnused; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); // DBuffer - DecalSurfaceData Albedo - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.DBuffer; + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.DBuffer; - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.dBufferSettings.surfaceData = DecalSurfaceData.Albedo; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.dBufferSettings.surfaceData = DecalSurfaceData.Albedo; + rendererRequirements = m_TestHelper.defaultRendererRequirements; + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); expected = ShaderFeatures.DBufferMRT1; - helper.AssertShaderFeaturesAndReset(expected, actual); - - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.dBufferSettings.surfaceData = DecalSurfaceData.Albedo; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = true; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = expectedWithUnused; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); // DBuffer - DecalSurfaceData AlbedoNormal - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.dBufferSettings.surfaceData = DecalSurfaceData.AlbedoNormal; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.dBufferSettings.surfaceData = DecalSurfaceData.AlbedoNormal; + rendererRequirements = m_TestHelper.defaultRendererRequirements; + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); expected = ShaderFeatures.DBufferMRT2; - helper.AssertShaderFeaturesAndReset(expected, actual); - - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.dBufferSettings.surfaceData = DecalSurfaceData.AlbedoNormal; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = true; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = expectedWithUnused; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); // DBuffer - DecalSurfaceData AlbedoNormalMAOS - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.dBufferSettings.surfaceData = DecalSurfaceData.AlbedoNormalMAOS; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.dBufferSettings.surfaceData = DecalSurfaceData.AlbedoNormalMAOS; + rendererRequirements = m_TestHelper.defaultRendererRequirements; + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); expected = ShaderFeatures.DBufferMRT3; - helper.AssertShaderFeaturesAndReset(expected, actual); - - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.dBufferSettings.surfaceData = DecalSurfaceData.AlbedoNormalMAOS; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = true; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = expectedWithUnused; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); // ScreenSpace - DecalNormalBlend Low - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.ScreenSpace; + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.technique = DecalTechniqueOption.ScreenSpace; - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.screenSpaceSettings.normalBlend = DecalNormalBlend.Low; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.screenSpaceSettings.normalBlend = DecalNormalBlend.Low; + rendererRequirements = m_TestHelper.defaultRendererRequirements; + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); expected = ShaderFeatures.DecalScreenSpace | ShaderFeatures.DecalNormalBlendLow; - helper.AssertShaderFeaturesAndReset(expected, actual); - - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.screenSpaceSettings.normalBlend = DecalNormalBlend.Low; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = true; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = expectedWithUnused; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.screenSpaceSettings.normalBlend = DecalNormalBlend.Low; - rendererRequirements = helper.defaultRendererRequirements; + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.screenSpaceSettings.normalBlend = DecalNormalBlend.Low; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.renderingMode = RenderingMode.Deferred; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); expected = ShaderFeatures.DecalGBuffer | ShaderFeatures.DecalNormalBlendLow; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); // ScreenSpace - DecalNormalBlend Medium - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.screenSpaceSettings.normalBlend = DecalNormalBlend.Medium; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.screenSpaceSettings.normalBlend = DecalNormalBlend.Medium; + rendererRequirements = m_TestHelper.defaultRendererRequirements; + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); expected = ShaderFeatures.DecalScreenSpace | ShaderFeatures.DecalNormalBlendMedium; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.screenSpaceSettings.normalBlend = DecalNormalBlend.Medium; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = true; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = expectedWithUnused; - helper.AssertShaderFeaturesAndReset(expected, actual); - - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.screenSpaceSettings.normalBlend = DecalNormalBlend.Medium; - rendererRequirements = helper.defaultRendererRequirements; + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.screenSpaceSettings.normalBlend = DecalNormalBlend.Medium; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.renderingMode = RenderingMode.Deferred; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); expected = ShaderFeatures.DecalGBuffer | ShaderFeatures.DecalNormalBlendMedium; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); // ScreenSpace - DecalNormalBlend High - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.screenSpaceSettings.normalBlend = DecalNormalBlend.High; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.screenSpaceSettings.normalBlend = DecalNormalBlend.High; + rendererRequirements = m_TestHelper.defaultRendererRequirements; + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); expected = ShaderFeatures.DecalScreenSpace | ShaderFeatures.DecalNormalBlendHigh; - helper.AssertShaderFeaturesAndReset(expected, actual); - - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.screenSpaceSettings.normalBlend = DecalNormalBlend.High; - rendererRequirements = helper.defaultRendererRequirements; - rendererRequirements.needsUnusedVariants = true; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); - expected = expectedWithUnused; - helper.AssertShaderFeaturesAndReset(expected, actual); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); - ((DecalRendererFeature)helper.rendererFeatures[0]).settings.screenSpaceSettings.normalBlend = DecalNormalBlend.High; - rendererRequirements = helper.defaultRendererRequirements; + ((DecalRendererFeature)m_TestHelper.rendererFeatures[0]).settings.screenSpaceSettings.normalBlend = DecalNormalBlend.High; + rendererRequirements = m_TestHelper.defaultRendererRequirements; rendererRequirements.renderingMode = RenderingMode.Deferred; - rendererRequirements.needsUnusedVariants = false; - actual = helper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); + actual = m_TestHelper.GetSupportedShaderFeaturesFromRendererFeatures(rendererRequirements); expected = ShaderFeatures.DecalGBuffer | ShaderFeatures.DecalNormalBlendHigh; - helper.AssertShaderFeaturesAndReset(expected, actual); - - helper.Cleanup(); + m_TestHelper.AssertShaderFeaturesAndReset(expected, actual); } } } diff --git a/Packages/com.unity.shadergraph/Editor/Data/Implementation/NodeUtils.cs b/Packages/com.unity.shadergraph/Editor/Data/Implementation/NodeUtils.cs index c991627d152..19f84024d25 100644 --- a/Packages/com.unity.shadergraph/Editor/Data/Implementation/NodeUtils.cs +++ b/Packages/com.unity.shadergraph/Editor/Data/Implementation/NodeUtils.cs @@ -801,7 +801,8 @@ public static string GetHLSLSafeName(string input) static HashSet m_ShaderGraphKeywords = new HashSet() { - "Gradient", + "_Weight", + "Gradient", "UnitySamplerState", "UnityTexture2D", "UnityTexture2DArray", @@ -848,9 +849,13 @@ public static string ConvertToValidHLSLIdentifier(string originalId, Func new[] { NeededTransform.ObjectToWorld }; } } diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Block-VelocityFromDirectionAndSpeed(ChangeSpeed).md b/Packages/com.unity.visualeffectgraph/Documentation~/Block-VelocityFromDirectionAndSpeed(ChangeSpeed).md index adf7746ed54..521c89111f9 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Block-VelocityFromDirectionAndSpeed(ChangeSpeed).md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Block-VelocityFromDirectionAndSpeed(ChangeSpeed).md @@ -1,5 +1,8 @@ # Velocity from Direction & Speed (Change Speed) +> [!IMPORTANT] +> This feature is experimental. To use this feature, open the **Preferences** window, go to the **Visual Effects** tab, and enable **Experimental Operators/Blocks**. + Menu Path : **Velocity > [Set/Add] Velocity from Direction & Speed (Change Speed)** The **Velocity from Direction And Speed : Change Speed** Block calculates a velocity for the particle based on the direction attribute. diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Block-VelocityFromDirectionAndSpeed(NewDirection).md b/Packages/com.unity.visualeffectgraph/Documentation~/Block-VelocityFromDirectionAndSpeed(NewDirection).md index 663e65f8807..1b16ce6c763 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Block-VelocityFromDirectionAndSpeed(NewDirection).md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Block-VelocityFromDirectionAndSpeed(NewDirection).md @@ -1,5 +1,8 @@ # Velocity from Direction & Speed (New Direction) +> [!IMPORTANT] +> This feature is experimental. To use this feature, open the **Preferences** window, go to the **Visual Effects** tab, and enable **Experimental Operators/Blocks**. + Menu Path : **Velocity > [Set/Add] Velocity from Direction & Speed (New Direction)** The **Velocity from Direction And Speed (New Direction)** Block calculates a velocity for the particle based on a blend ratio between a given direction, and the direction attribute. diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Block-VelocityFromDirectionAndSpeed(RandomDirection).md b/Packages/com.unity.visualeffectgraph/Documentation~/Block-VelocityFromDirectionAndSpeed(RandomDirection).md index cebf390f063..69da873c2b1 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Block-VelocityFromDirectionAndSpeed(RandomDirection).md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Block-VelocityFromDirectionAndSpeed(RandomDirection).md @@ -1,5 +1,8 @@ # Velocity from Direction & Speed (Random Direction) +> [!IMPORTANT] +> This feature is experimental. To use this feature, open the **Preferences** window, go to the **Visual Effects** tab, and enable **Experimental Operators/Blocks**. + Menu Path : **Velocity > [Set/Add] Velocity from Direction & Speed (Random Direction)** The **Velocity from Direction And Speed (Random Direction)** Block calculates a velocity for the particle based on a blend ratio between a random direction (per-particle), and the direction attribute. diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Block-VelocityFromDirectionAndSpeed(Spherical).md b/Packages/com.unity.visualeffectgraph/Documentation~/Block-VelocityFromDirectionAndSpeed(Spherical).md index 303f16ffbe9..c9c6e5e2616 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Block-VelocityFromDirectionAndSpeed(Spherical).md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Block-VelocityFromDirectionAndSpeed(Spherical).md @@ -1,5 +1,8 @@ # Velocity from Direction & Speed (Spherical) +> [!IMPORTANT] +> This feature is experimental. To use this feature, open the **Preferences** window, go to the **Visual Effects** tab, and enable **Experimental Operators/Blocks**. + Menu Path : **Velocity > [Set/Add] Velocity from Direction & Speed (Spherical)** The **Velocity from Direction And Speed (Spherical)** Block calculates a velocity for the particle based on a blend ratio between the direction attribute and a spherical vector. diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Block-VelocityFromDirectionAndSpeed(Tangent).md b/Packages/com.unity.visualeffectgraph/Documentation~/Block-VelocityFromDirectionAndSpeed(Tangent).md index a951cf12914..c9e6e6f332d 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Block-VelocityFromDirectionAndSpeed(Tangent).md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Block-VelocityFromDirectionAndSpeed(Tangent).md @@ -1,5 +1,8 @@ # Velocity from Direction & Speed (Tangent) +> [!IMPORTANT] +> This feature is experimental. To use this feature, open the **Preferences** window, go to the **Visual Effects** tab, and enable **Experimental Operators/Blocks**. + Menu Path : **Velocity > [Set/Add] Velocity from Direction & Speed (Tangent)** The **Velocity from Direction And Speed (Tangent)** Block calculates a velocity for the particle based on a blend ratio between the direction attribute and a tangent vector. diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/ExposedPropertyHelper.md b/Packages/com.unity.visualeffectgraph/Documentation~/ExposedPropertyHelper.md index b77dbc31725..3bc1ad6146d 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/ExposedPropertyHelper.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/ExposedPropertyHelper.md @@ -1,6 +1,7 @@ -
Experimental: This feature is currently experimental and is subject to change in later major versions. To use this feature, enable Experimental Operators/Blocks in the Visual Effects tab of your Project's Preferences.
# Exposed Property class +**Note:** This feature is currently experimental and is subject to change in later major versions. To use this feature, enable **Experimental Operators/Blocks** in the **Visual Effects** tab of your Project's Preferences. + The `ExposedProperty` class is a helper class that stores a property ID based on the property's name. The value that you assign to an `ExposedProperty` is the string name of a Shader property. The class automatically calls the `Shader.PropertyToID(string name)` function with the Shader property name as the parameter and stores the integer ID the function returns. When you use this class in a Property, Event, or EventAttribute method in the [component API](ComponentAPI.md), it implicitly uses this integer. When you want to access a Shader property, you can either use the property's name or its ID. It is often easier to use the name of the property, however it is more efficient to use the property's integer ID. This class is useful because it combines the convenience of using the property name with the efficiency of using the property ID. diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Operator-PointCache.md b/Packages/com.unity.visualeffectgraph/Documentation~/Operator-PointCache.md index e2193371eb2..fbd0d805851 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Operator-PointCache.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Operator-PointCache.md @@ -1,5 +1,8 @@ # Point Cache +> [!IMPORTANT] +> This feature is experimental. To use this feature, open the **Preferences** window, go to the **Visual Effects** tab, and enable **Experimental Operators/Blocks**. + Menu Path : **Operator > Utility > Point Cache** The **Point Cache** Operator exposes the attribute maps and the point count stored into a [Point Cache asset](point-cache-asset.md). diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Operator-SampleAttributeMap.md b/Packages/com.unity.visualeffectgraph/Documentation~/Operator-SampleAttributeMap.md index 2fbb49b1f47..7599862a42e 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Operator-SampleAttributeMap.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Operator-SampleAttributeMap.md @@ -1,5 +1,8 @@ # Sample Attribute Map +> [!IMPORTANT] +> This feature is experimental. To use this feature, open the **Preferences** window, go to the **Visual Effects** tab, and enable **Experimental Operators/Blocks**. + **Menu Path : Operator > Sampling > Attribute Map** The Sample Attribute Map Operator enables you to sample an [attribute map](point-cache-in-vfx-graph.md#attribute-map) from a [Point Cache](point-cache-in-vfx-graph.md). diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Properties.md b/Packages/com.unity.visualeffectgraph/Documentation~/Properties.md index a9c4bfd1da9..4478ae68c0f 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Properties.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Properties.md @@ -45,6 +45,8 @@ Compound Property Types are made from base data types. These types describe more Expand Compound Property Types to access their components. +To access components in a script, add an underscore before the component name. For example to access the `radius` component of `MySphere`, use `MySphere_radius`. + ![](Images/PropertyCompound.png) diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/SpawnerCallbacks.md b/Packages/com.unity.visualeffectgraph/Documentation~/SpawnerCallbacks.md index e919399b646..0e4ae290e7b 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/SpawnerCallbacks.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/SpawnerCallbacks.md @@ -1,6 +1,7 @@ -
Experimental: This feature is currently experimental and is subject to change in later major versions. To use this feature, enable Experimental Operators/Blocks in the Visual Effects tab of your Project's Preferences.
# Spawner Callbacks +**Note:** This feature is currently experimental and is subject to change in later major versions. To use this feature, enable **Experimental Operators/Blocks** in the **Visual Effects** tab of your Project's Preferences. + Spawner Callbacks is a C# API that allows you to define custom runtime behavior and create new Blocks for use in Spawn Contexts. Spawner Callbacks allow you to: diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/VectorFields.md b/Packages/com.unity.visualeffectgraph/Documentation~/VectorFields.md index 449cb814596..1fb79f0d09f 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/VectorFields.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/VectorFields.md @@ -1,6 +1,7 @@ -
Experimental: This feature is currently experimental and is subject to change in later major versions. To use this feature, enable Experimental Operators/Blocks in the Visual Effects tab of your Project's Preferences.
# Vector Fields / Signed Distance Fields +**Note:** This feature is currently experimental and is subject to change in later major versions. To use this feature, enable **Experimental Operators/Blocks** in the **Visual Effects** tab of your Project's Preferences. + Vector Fields and Signed Distance Fields are 3D Fields containing values stored in voxels. These are available as 3D Textures in Visual Effect Graph and can be imported using the Volume File (`.vf`) file format. Volume File is an [Open Source specification](https://github.com/peeweek/VectorFieldFile/blob/master/README.md) that contains basic structure for storing floating point data. Unity automatically imports Volume File files are automatically imported in unity as 3D Textures and can be used in Visual Effect Graph Blocks and Operators that input 3D Textures, such as Vector Field or Signed Distance Field Blocks. diff --git a/Packages/com.unity.visualeffectgraph/Editor/GraphView/VFXComponentBoard.cs b/Packages/com.unity.visualeffectgraph/Editor/GraphView/VFXComponentBoard.cs index 18580b90260..4429a317789 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/GraphView/VFXComponentBoard.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/GraphView/VFXComponentBoard.cs @@ -337,7 +337,7 @@ void DeleteBoundsRecorder() void UpdateBoundsRecorder() { - if (controller != null && m_AttachedComponent != null && m_View.controller.graph != null) + if (controller != null && m_AttachedComponent != null && m_View.controller?.graph != null) { bool wasRecording = false; if (m_BoundsRecorder != null) diff --git a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/VFXView.cs b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/VFXView.cs index d13e18c515b..de92bd911a0 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/VFXView.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/VFXView.cs @@ -647,12 +647,6 @@ public VFXView() toggleBlackboard.value = blackboardVisible; m_ComponentBoard = new VFXComponentBoard(this); -#if _ENABLE_RESTORE_BOARD_VISIBILITY - bool componentBoardVisible = BoardPreferenceHelper.IsVisible(BoardPreferenceHelper.Board.componentBoard, false); - if (componentBoardVisible) - ShowComponentBoard(); - toggleComponentBoard.value = componentBoardVisible; -#endif Add(m_Toolbar); Add(m_LockedElement); diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending.lighting b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending.lighting new file mode 100644 index 00000000000..080f3773f3a --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending.lighting @@ -0,0 +1,66 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: 2324_Shadow_Mask_Directional_Blending + serializedVersion: 6 + m_GIWorkflowMode: 1 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_BakeResolution: 30 + m_Padding: 2 + m_LightmapCompression: 3 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 256 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 16 + m_PVRSampleCount: 128 + m_PVREnvironmentSampleCount: 128 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_PVRTiledBaking: 0 + m_NumRaysToShootPerTexel: -1 + m_RespectSceneVisibilityWhenBakingGI: 0 diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending.lighting.meta b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending.lighting.meta new file mode 100644 index 00000000000..b8136871cea --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c25c59d729edcba40bd2c4921e309ee6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending.meta b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending.meta new file mode 100644 index 00000000000..6c3d557b1fa --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1984282812a713f45b0c95e85c183261 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending.unity b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending.unity new file mode 100644 index 00000000000..3b141e1e39a --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending.unity @@ -0,0 +1,1295 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 112000000, guid: e77744b3ad5f14e4b95dcd93644cc6d7, + type: 2} + m_LightingSettings: {fileID: 4890085278179872738, guid: c25c59d729edcba40bd2c4921e309ee6, + type: 2} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &164434937 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 164434941} + - component: {fileID: 164434940} + - component: {fileID: 164434939} + - component: {fileID: 164434938} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 1 + m_IsActive: 1 +--- !u!65 &164434938 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 164434937} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &164434939 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 164434937} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7313a93bda592af419185a9a15bb991a, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &164434940 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 164434937} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &164434941 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 164434937} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: 0.5, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 289952001} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &267228352 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 267228353} + - component: {fileID: 267228355} + - component: {fileID: 267228354} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &267228353 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 267228352} + serializedVersion: 2 + m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} + m_LocalPosition: {x: -1.4, y: 0, z: -1.6} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2021937674} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!102 &267228354 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 267228352} + m_Text: ' Blending Shadow Mask + + and Cascade Shadows' + m_OffsetZ: 0 + m_CharacterSize: 0.25 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 0 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 306d620c715872046bf76568b7f382d4, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &267228355 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 267228352} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 306d620c715872046bf76568b7f382d4, type: 3} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &289952000 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 289952001} + m_Layer: 0 + m_Name: Geometry + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &289952001 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 289952000} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1776966065} + - {fileID: 1043512983} + - {fileID: 1640068560} + - {fileID: 164434941} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &905841793 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 905841796} + - component: {fileID: 905841795} + - component: {fileID: 905841794} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &905841794 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 905841793} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Intensity: 2 + m_EnableSpotReflector: 1 + m_LuxAtDistance: 1 + m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 + m_LightDimmer: 1 + m_VolumetricDimmer: 1 + m_LightUnit: 2 + m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 + m_AffectDiffuse: 1 + m_AffectSpecular: 1 + m_NonLightmappedOnly: 0 + m_ShapeWidth: 0.5 + m_ShapeHeight: 0.5 + m_AspectRatio: 1 + m_ShapeRadius: 0.025 + m_SoftnessScale: 1 + m_UseCustomSpotLightShadowCone: 0 + m_CustomSpotLightShadowCone: 30 + m_MaxSmoothness: 0.99 + m_ApplyRangeAttenuation: 1 + m_DisplayAreaLightEmissiveMesh: 0 + m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 + m_AreaLightShadowCone: 120 + m_UseScreenSpaceShadows: 0 + m_InteractsWithSky: 1 + m_AngularDiameter: 0.5 + m_FlareSize: 2 + m_FlareTint: {r: 1, g: 1, b: 1, a: 1} + m_FlareFalloff: 4 + m_SurfaceTexture: {fileID: 0} + m_SurfaceTint: {r: 1, g: 1, b: 1, a: 1} + m_Distance: 1.5e+11 + m_UseRayTracedShadows: 0 + m_NumRayTracingSamples: 4 + m_FilterTracedShadow: 1 + m_FilterSizeTraced: 16 + m_SunLightConeAngle: 0.5 + m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 + m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 + m_EvsmExponent: 15 + m_EvsmLightLeakBias: 0 + m_EvsmVarianceBias: 0.00001 + m_EvsmBlurPasses: 0 + m_LightlayersMask: 1 + m_LinkShadowLayers: 1 + m_ShadowNearPlane: 0.1 + m_BlockerSampleCount: 24 + m_FilterSampleCount: 16 + m_MinFilterSize: 0.1 + m_KernelSize: 5 + m_LightAngle: 1 + m_MaxDepthBias: 0.001 + m_ShadowResolution: + m_Override: 512 + m_UseOverride: 1 + m_Level: 0 + m_ShadowDimmer: 1 + m_VolumetricShadowDimmer: 1 + m_ShadowFadeDistance: 10000 + m_UseContactShadow: + m_Override: 0 + m_UseOverride: 1 + m_Level: 0 + m_RayTracedContactShadow: 0 + m_ShadowTint: {r: 0, g: 0, b: 0, a: 1} + m_PenumbraTint: 0 + m_NormalBias: 0.75 + m_SlopeBias: 0.5 + m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 + m_BarnDoorAngle: 90 + m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 + m_OnDemandShadowRenderOnPlacement: 1 + m_ShadowCascadeRatios: + - 0.05 + - 0.2 + - 0.3 + m_ShadowCascadeBorders: + - 0.2 + - 0.2 + - 0.2 + - 0.2 + m_ShadowAlgorithm: 0 + m_ShadowVariant: 0 + m_ShadowPrecision: 0 + useOldInspector: 0 + useVolumetric: 1 + featuresFoldout: 1 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 +--- !u!108 &905841795 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 905841793} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 2 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 1 + m_LightShadowCasterMode: 2 + m_AreaSize: {x: 0.5, y: 0.5} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 1 + m_BoundingSphereOverride: {x: 0, y: 6e-45, z: 0, w: 0.0000015517596} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0.5 +--- !u!4 &905841796 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 905841793} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0.92387956, z: -0.38268343, w: 0} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 45, y: 180, z: 0} +--- !u!1 &957872100 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 957872102} + - component: {fileID: 957872101} + m_Layer: 0 + m_Name: StaticLightingSky + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &957872101 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 957872100} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 441482e8936e35048a1dffac814e3ef8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Profile: {fileID: 11400000, guid: 37aad87d36c1f0948a40c0ffaba772ac, type: 2} + m_StaticLightingSkyUniqueID: 0 + m_StaticLightingCloudsUniqueID: 0 + m_StaticLightingVolumetricClouds: 0 +--- !u!4 &957872102 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 957872100} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1043512979 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1043512983} + - component: {fileID: 1043512982} + - component: {fileID: 1043512981} + - component: {fileID: 1043512980} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 1 + m_IsActive: 1 +--- !u!65 &1043512980 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1043512979} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1043512981 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1043512979} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7313a93bda592af419185a9a15bb991a, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1043512982 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1043512979} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1043512983 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1043512979} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: 0.5, z: -2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 289952001} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1333523458 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1333523459} + - component: {fileID: 1333523461} + - component: {fileID: 1333523460} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1333523459 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1333523458} + serializedVersion: 2 + m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} + m_LocalPosition: {x: -3, y: 0, z: -3.6} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2021937674} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!102 &1333523460 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1333523458} + m_Text: Cascade Shadows + m_OffsetZ: 0 + m_CharacterSize: 0.25 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 0 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 306d620c715872046bf76568b7f382d4, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &1333523461 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1333523458} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 306d620c715872046bf76568b7f382d4, type: 3} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1431081063 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1431081064} + - component: {fileID: 1431081066} + - component: {fileID: 1431081065} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1431081064 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431081063} + serializedVersion: 2 + m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 1.2, y: 0, z: 0.39999998} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2021937674} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!102 &1431081065 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431081063} + m_Text: Shadow Mask + m_OffsetZ: 0 + m_CharacterSize: 0.25 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 0 + m_TabSize: 4 + m_FontSize: 0 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 306d620c715872046bf76568b7f382d4, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &1431081066 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431081063} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 306d620c715872046bf76568b7f382d4, type: 3} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1623273628 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1623273629} + - component: {fileID: 1623273630} + m_Layer: 0 + m_Name: Scene Settings + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1623273629 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1623273628} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1623273630 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1623273628} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IsGlobal: 1 + priority: 0 + blendDistance: 0 + weight: 1 + sharedProfile: {fileID: 11400000, guid: 37aad87d36c1f0948a40c0ffaba772ac, type: 2} +--- !u!1 &1640068556 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1640068560} + - component: {fileID: 1640068559} + - component: {fileID: 1640068558} + - component: {fileID: 1640068557} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 1 + m_IsActive: 1 +--- !u!65 &1640068557 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1640068556} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1640068558 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1640068556} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7313a93bda592af419185a9a15bb991a, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1640068559 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1640068556} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1640068560 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1640068556} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 289952001} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1776966061 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1776966065} + - component: {fileID: 1776966064} + - component: {fileID: 1776966063} + - component: {fileID: 1776966062} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 1 + m_IsActive: 1 +--- !u!64 &1776966062 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1776966061} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &1776966063 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1776966061} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7313a93bda592af419185a9a15bb991a, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1776966064 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1776966061} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1776966065 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1776966061} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 289952001} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1780256919 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1132393308280272, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_Name + value: HDRP_Test_Camera + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalPosition.x + value: -1.6 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalPosition.y + value: 4.61 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalPosition.z + value: -5.41 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalRotation.w + value: 0.891802 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalRotation.x + value: 0.41207024 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalRotation.y + value: 0.16955586 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalRotation.z + value: -0.07834578 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 49.6 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 21.53 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: m_Version + value: 9 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} +--- !u!1 &2021937673 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2021937674} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2021937674 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2021937673} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1333523459} + - {fileID: 267228353} + - {fileID: 1431081064} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1780256919} + - {fileID: 905841796} + - {fileID: 289952001} + - {fileID: 2021937674} + - {fileID: 1623273629} + - {fileID: 957872102} diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending.unity.meta b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending.unity.meta new file mode 100644 index 00000000000..bbd25169bc5 --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f24d300b30af57d49b18a301c0ff2e1c +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/GeometryMaterial.mat b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/GeometryMaterial.mat new file mode 100644 index 00000000000..d011ea7fac8 --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/GeometryMaterial.mat @@ -0,0 +1,276 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: GeometryMaterial + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _DISABLE_SSR_TRANSPARENT + - _NORMALMAP_TANGENT_SPACE + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmissionMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaRemapMax: 1 + - _AlphaRemapMin: 0 + - _AlphaSrcBlend: 1 + - _Anisotropy: 0 + - _BlendMode: 0 + - _CoatMask: 0 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DoubleSidedEnable: 0 + - _DoubleSidedGIMode: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 1 + - _MetallicRemapMin: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _ObjectSpaceUVMapping: 0 + - _ObjectSpaceUVMappingEmissive: 0 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _RayTracing: 0 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _Smoothness: 0.5 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 9 + - _StencilWriteMaskGBuffer: 15 + - _StencilWriteMaskMV: 41 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransmissionMask: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &4376528658724994605 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 13 + hdPluginSubTargetMaterialVersions: + m_Keys: [] + m_Values: diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/GeometryMaterial.mat.meta b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/GeometryMaterial.mat.meta new file mode 100644 index 00000000000..28d5ffbb8e8 --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/GeometryMaterial.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7313a93bda592af419185a9a15bb991a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/LightingData.asset b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/LightingData.asset new file mode 100644 index 00000000000..1e558679a25 Binary files /dev/null and b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/LightingData.asset differ diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/LightingData.asset.meta b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/LightingData.asset.meta new file mode 100644 index 00000000000..106f656708a --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/LightingData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e77744b3ad5f14e4b95dcd93644cc6d7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 112000000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Lightmap-0_comp_dir.png b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Lightmap-0_comp_dir.png new file mode 100644 index 00000000000..6dfb93901f4 Binary files /dev/null and b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Lightmap-0_comp_dir.png differ diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Lightmap-0_comp_dir.png.meta b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Lightmap-0_comp_dir.png.meta new file mode 100644 index 00000000000..fddc9fd80e6 --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Lightmap-0_comp_dir.png.meta @@ -0,0 +1,114 @@ +fileFormatVersion: 2 +guid: 3c6144e57309097458a37b52409abeb0 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 1 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 3 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 12 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Lightmap-0_comp_light.exr b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Lightmap-0_comp_light.exr new file mode 100644 index 00000000000..f86e1e1cae2 Binary files /dev/null and b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Lightmap-0_comp_light.exr differ diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Lightmap-0_comp_light.exr.meta b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Lightmap-0_comp_light.exr.meta new file mode 100644 index 00000000000..0df0e05a651 --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Lightmap-0_comp_light.exr.meta @@ -0,0 +1,114 @@ +fileFormatVersion: 2 +guid: 8b1e98947030115469641b83cc5d138d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 1 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 3 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 6 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Lightmap-0_comp_shadowmask.png b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Lightmap-0_comp_shadowmask.png new file mode 100644 index 00000000000..031731a6000 Binary files /dev/null and b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Lightmap-0_comp_shadowmask.png differ diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Lightmap-0_comp_shadowmask.png.meta b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Lightmap-0_comp_shadowmask.png.meta new file mode 100644 index 00000000000..86f8238938d --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Lightmap-0_comp_shadowmask.png.meta @@ -0,0 +1,114 @@ +fileFormatVersion: 2 +guid: 1f007adb5a176c04a93f91e1e636a1b6 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 1 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 3 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 11 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Scene Settings Profile.asset b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Scene Settings Profile.asset new file mode 100644 index 00000000000..b3455c51fc2 --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Scene Settings Profile.asset @@ -0,0 +1,60 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-9160582307993311291 +MonoBehaviour: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7ddcec8a8eb2d684d833ac8f5d26aebd, type: 3} + m_Name: HDShadowSettings + m_EditorClassIdentifier: + active: 1 + interCascadeBorders: 1 + maxShadowDistance: + m_OverrideState: 1 + m_Value: 5 + directionalTransmissionMultiplier: + m_OverrideState: 1 + m_Value: 1 + cascadeShadowSplitCount: + m_OverrideState: 1 + m_Value: 2 + cascadeShadowSplit0: + m_OverrideState: 1 + m_Value: 0.4 + cascadeShadowSplit1: + m_OverrideState: 0 + m_Value: 0.15 + cascadeShadowSplit2: + m_OverrideState: 0 + m_Value: 0.3 + cascadeShadowBorder0: + m_OverrideState: 1 + m_Value: 0.1 + cascadeShadowBorder1: + m_OverrideState: 1 + m_Value: 0.33333334 + cascadeShadowBorder2: + m_OverrideState: 0 + m_Value: 0 + cascadeShadowBorder3: + m_OverrideState: 0 + m_Value: 0 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} + m_Name: Scene Settings Profile + m_EditorClassIdentifier: + components: + - {fileID: -9160582307993311291} diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Scene Settings Profile.asset.meta b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Scene Settings Profile.asset.meta new file mode 100644 index 00000000000..afc6e0d9e32 --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending/Scene Settings Profile.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 37aad87d36c1f0948a40c0ffaba772ac +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/HDRP_Tests/ProjectSettings/EditorBuildSettings.asset b/Tests/SRPTests/Projects/HDRP_Tests/ProjectSettings/EditorBuildSettings.asset index 23db88e1107..8ad0790140f 100644 --- a/Tests/SRPTests/Projects/HDRP_Tests/ProjectSettings/EditorBuildSettings.asset +++ b/Tests/SRPTests/Projects/HDRP_Tests/ProjectSettings/EditorBuildSettings.asset @@ -416,6 +416,9 @@ EditorBuildSettings: - enabled: 1 path: Assets/GraphicTests/Scenes/2x_Lighting/2321_Shadow_Cascades_CustomProj.unity guid: 879e29801a2c8a445a211d17ece0764a + - enabled: 1 + path: Assets/GraphicTests/Scenes/2x_Lighting/2324_Shadow_Mask_Directional_Blending.unity + guid: f24d300b30af57d49b18a301c0ff2e1c - enabled: 1 path: Assets/GraphicTests/Scenes/2x_Lighting/2401_Area_Light_Meshes.unity guid: 359ded33a047fd540b5e19a98547f5e2 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_PostPro/Assets/Scenes/108_UpscalingFilters/BandingMaterial.mat b/Tests/SRPTests/Projects/UniversalGraphicsTest_PostPro/Assets/Scenes/108_UpscalingFilters/BandingMaterial.mat new file mode 100644 index 00000000000..30b6f439d94 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_PostPro/Assets/Scenes/108_UpscalingFilters/BandingMaterial.mat @@ -0,0 +1,136 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BandingMaterial + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 5f951043386624d62a1d57cf247df28f, type: 3} + m_Scale: {x: 0.1, y: 4} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 5f951043386624d62a1d57cf247df28f, type: 3} + m_Scale: {x: 0.1, y: 4} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &5016658129403020143 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_PostPro/Assets/Scenes/108_UpscalingFilters/BandingMaterial.mat.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_PostPro/Assets/Scenes/108_UpscalingFilters/BandingMaterial.mat.meta new file mode 100644 index 00000000000..6a72da784e2 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_PostPro/Assets/Scenes/108_UpscalingFilters/BandingMaterial.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 47f5bf986eba8b04caaac72bae63c36b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_PostPro/Assets/Scenes/108_UpscalingFilters_FSR_Banding.unity b/Tests/SRPTests/Projects/UniversalGraphicsTest_PostPro/Assets/Scenes/108_UpscalingFilters_FSR_Banding.unity new file mode 100644 index 00000000000..3fef3c58008 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_PostPro/Assets/Scenes/108_UpscalingFilters_FSR_Banding.unity @@ -0,0 +1,576 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.06 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &291658464 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 291658468} + - component: {fileID: 291658467} + - component: {fileID: 291658466} + - component: {fileID: 291658465} + - component: {fileID: 291658469} + m_Layer: 0 + m_Name: Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &291658465 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 291658464} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 1 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 +--- !u!81 &291658466 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 291658464} + m_Enabled: 1 +--- !u!20 &291658467 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 291658464} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 50 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &291658468 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 291658464} + serializedVersion: 2 + m_LocalRotation: {x: 0.27563733, y: 0, z: 0, w: 0.96126175} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 32, y: 0, z: 0} +--- !u!114 &291658469 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 291658464} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73231aa468d81ea49bc3d914080de185, type: 3} + m_Name: + m_EditorClassIdentifier: + ImageComparisonSettings: + TargetWidth: 512 + TargetHeight: 512 + TargetMSAASamples: 1 + PerPixelCorrectnessThreshold: 0.001 + PerPixelGammaThreshold: 0.003921569 + PerPixelAlphaThreshold: 0.003921569 + RMSEThreshold: 0 + AverageCorrectnessThreshold: 0.005 + IncorrectPixelsThreshold: 0.0000038146973 + UseHDR: 0 + UseBackBuffer: 1 + ImageResolution: 0 + ActiveImageTests: 1 + ActivePixelTests: -1 + WaitFrames: 0 + XRCompatible: 1 + gpuDrivenCompatible: 1 + CheckMemoryAllocation: 1 + renderBackendCompatibility: 2 + SetBackBufferResolution: 0 +--- !u!1 &786493371 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 786493373} + - component: {fileID: 786493372} + m_Layer: 0 + m_Name: SelectQualityLevel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &786493372 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 786493371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f1decc188d2f3146ab93291a5c743e9, type: 3} + m_Name: + m_EditorClassIdentifier: + qualityLevelIndex: 4 + callbacks: [] +--- !u!4 &786493373 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 786493371} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1130147643 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1130147646} + - component: {fileID: 1130147645} + - component: {fileID: 1130147644} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1130147644 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1130147643} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 3 + m_UsePipelineSettings: 1 + m_AdditionalLightsShadowResolutionTier: 2 + m_LightLayerMask: 1 + m_RenderingLayers: 1 + m_CustomShadowLayers: 0 + m_ShadowLayerMask: 1 + m_ShadowRenderingLayers: 1 + m_LightCookieSize: {x: 1, y: 1} + m_LightCookieOffset: {x: 0, y: 0} + m_SoftShadowQuality: 0 +--- !u!108 &1130147645 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1130147643} + m_Enabled: 1 + serializedVersion: 11 + m_Type: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 0.2 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 5000 + m_UseColorTemperature: 1 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &1130147646 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1130147643} + serializedVersion: 2 + m_LocalRotation: {x: 0.2743377, y: -0.24816078, z: 0.07350856, w: 0.9261488} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 33, y: -30, z: 0} +--- !u!1 &1948532025 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1948532029} + - component: {fileID: 1948532028} + - component: {fileID: 1948532027} + - component: {fileID: 1948532026} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!64 &1948532026 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1948532025} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &1948532027 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1948532025} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 47f5bf986eba8b04caaac72bae63c36b, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1948532028 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1948532025} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1948532029 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1948532025} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.7113333, y: -0.89, z: -0.41688156} + m_LocalScale: {x: 11.023, y: 11.023, z: 11.023} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 786493373} + - {fileID: 291658468} + - {fileID: 1948532029} + - {fileID: 1130147646} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_PostPro/Assets/Scenes/108_UpscalingFilters_FSR_Banding.unity.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_PostPro/Assets/Scenes/108_UpscalingFilters_FSR_Banding.unity.meta new file mode 100644 index 00000000000..ea47162956f --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_PostPro/Assets/Scenes/108_UpscalingFilters_FSR_Banding.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ea75814344b5aa24c9d981fdd991cd85 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_PostPro/ProjectSettings/EditorBuildSettings.asset b/Tests/SRPTests/Projects/UniversalGraphicsTest_PostPro/ProjectSettings/EditorBuildSettings.asset index f4b9eece61f..27fdcf4c90e 100644 --- a/Tests/SRPTests/Projects/UniversalGraphicsTest_PostPro/ProjectSettings/EditorBuildSettings.asset +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_PostPro/ProjectSettings/EditorBuildSettings.asset @@ -80,6 +80,9 @@ EditorBuildSettings: - enabled: 1 path: Assets/Scenes/108_UpscalingFilters_FSR.unity guid: 39df0b33bc51d7f40b6ee02863991adf + - enabled: 1 + path: Assets/Scenes/108_UpscalingFilters_FSR_Banding.unity + guid: ea75814344b5aa24c9d981fdd991cd85 - enabled: 1 path: Assets/Scenes/108_UpscalingFilters_FSR_Overlay.unity guid: 4a3d5fa0000f96048b95bf35caa3c44c diff --git a/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_Fog.unity b/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_Fog.unity index fc842fc3a99..d7f22cddb5c 100644 --- a/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_Fog.unity +++ b/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_Fog.unity @@ -13,7 +13,7 @@ OcclusionCullingSettings: --- !u!104 &2 RenderSettings: m_ObjectHideFlags: 0 - serializedVersion: 9 + serializedVersion: 10 m_Fog: 1 m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogMode: 3 @@ -38,11 +38,11 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 + m_BakeOnSceneLoad: 0 serializedVersion: 11 m_GIWorkflowMode: 0 m_GISettings: @@ -67,9 +67,6 @@ LightmapSettings: m_LightmapParameters: {fileID: 0} m_LightmapsBakeMode: 1 m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 m_ReflectionCompression: 2 m_MixedBakeMode: 2 m_BakeBackend: 1 @@ -98,13 +95,14 @@ LightmapSettings: m_TrainingDataDestination: TrainingData m_LightProbeSampleCountMultiplier: 4 m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 + m_LightingSettings: {fileID: 4890085278179872738, guid: afc2c4206ad6e62478df7a767a3e7638, + type: 2} --- !u!196 &4 NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 m_BuildSettings: - serializedVersion: 2 + serializedVersion: 3 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 @@ -117,7 +115,9 @@ NavMeshSettings: cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 - accuratePlacement: 0 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 debug: m_Flags: 0 m_NavMeshData: {fileID: 0} @@ -148,9 +148,17 @@ SphereCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 258135519} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Radius: 0.5 m_Center: {x: 0, y: 0, z: 0} --- !u!23 &258135521 @@ -164,10 +172,15 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -192,6 +205,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &258135522 MeshFilter: m_ObjectHideFlags: 0 @@ -207,12 +221,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 258135519} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -18.155, y: 5.969, z: 24.196} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &270514556 GameObject: @@ -256,9 +271,17 @@ Camera: m_projectionMatrixMode: 1 m_GateFitMode: 2 m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 m_SensorSize: {x: 36, y: 24} m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 x: 0 @@ -292,12 +315,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 270514556} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -15.42, y: 5.24, z: 15.99} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &270514560 MonoBehaviour: @@ -403,6 +427,7 @@ GameObject: m_IsActive: 1 --- !u!73398921 &488408418 VFXRenderer: + serializedVersion: 1 m_ObjectHideFlags: 2 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -412,13 +437,17 @@ VFXRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 0 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 m_RenderingLayerMask: 1 m_RendererPriority: 0 - m_Materials: [] m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -452,6 +481,8 @@ VisualEffect: m_InitialEventNameOverriden: 0 m_StartSeed: 0 m_ResetSeedOnPlay: 0 + m_AllowInstancing: 1 + m_ResourceVersion: 1 m_PropertySheet: m_Float: m_Array: [] @@ -488,12 +519,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 488408417} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -18.41, y: 5.19, z: 30} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &669050717 GameObject: @@ -522,11 +554,19 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 669050717} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 3 + serializedVersion: 5 m_Convex: 0 - m_CookingOptions: 14 + m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} --- !u!23 &669050719 MeshRenderer: @@ -539,10 +579,15 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -567,6 +612,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &669050720 MeshFilter: m_ObjectHideFlags: 0 @@ -582,12 +628,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 669050717} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -18.77, y: 1.59, z: 35.26} m_LocalScale: {x: 5, y: 5, z: 5} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &674445795 GameObject: @@ -620,6 +667,8 @@ VisualEffect: m_InitialEventNameOverriden: 0 m_StartSeed: 0 m_ResetSeedOnPlay: 0 + m_AllowInstancing: 1 + m_ResourceVersion: 1 m_PropertySheet: m_Float: m_Array: [] @@ -656,15 +705,17 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 674445795} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -18.41, y: 5.19, z: 24} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!73398921 &674445798 VFXRenderer: + serializedVersion: 1 m_ObjectHideFlags: 2 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -674,21 +725,17 @@ VFXRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 0 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 m_RenderingLayerMask: 1 m_RendererPriority: 0 - m_Materials: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -736,9 +783,17 @@ SphereCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 770590750} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Radius: 0.5 m_Center: {x: 0, y: 0, z: 0} --- !u!23 &770590752 @@ -752,10 +807,15 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -780,6 +840,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &770590753 MeshFilter: m_ObjectHideFlags: 0 @@ -795,12 +856,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 770590750} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -18.32, y: 3.14, z: 28.52} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1208515697 GameObject: @@ -822,6 +884,7 @@ GameObject: m_IsActive: 1 --- !u!73398921 &1208515698 VFXRenderer: + serializedVersion: 1 m_ObjectHideFlags: 2 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -831,13 +894,17 @@ VFXRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 0 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 m_RenderingLayerMask: 1 m_RendererPriority: 0 - m_Materials: [] m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -871,6 +938,8 @@ VisualEffect: m_InitialEventNameOverriden: 0 m_StartSeed: 0 m_ResetSeedOnPlay: 0 + m_AllowInstancing: 1 + m_ResourceVersion: 1 m_PropertySheet: m_Float: m_Array: [] @@ -907,13 +976,128 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1208515697} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -18.41, y: 5.19, z: 33} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 10 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1319315866 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1319315869} + - component: {fileID: 1319315868} + - component: {fileID: 1319315867} + m_Layer: 0 + m_Name: SG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!73398921 &1319315867 +VFXRenderer: + serializedVersion: 1 + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1319315866} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!2083052967 &1319315868 +VisualEffect: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1319315866} + m_Enabled: 1 + m_Asset: {fileID: 8926484042661614526, guid: 20e235b4f4e8aa94386bf3cbe42dbda6, type: 3} + m_InitialEventName: OnPlay + m_InitialEventNameOverriden: 0 + m_StartSeed: 0 + m_ResetSeedOnPlay: 1 + m_AllowInstancing: 1 + m_ResourceVersion: 1 + m_PropertySheet: + m_Float: + m_Array: [] + m_Vector2f: + m_Array: [] + m_Vector3f: + m_Array: [] + m_Vector4f: + m_Array: [] + m_Uint: + m_Array: [] + m_Int: + m_Array: [] + m_Matrix4x4f: + m_Array: [] + m_AnimationCurve: + m_Array: [] + m_Gradient: + m_Array: [] + m_NamedObject: + m_Array: [] + m_Bool: + m_Array: [] +--- !u!4 &1319315869 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1319315866} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: -20, y: 3, z: 21} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} --- !u!1 &1426010828 GameObject: m_ObjectHideFlags: 0 @@ -941,9 +1125,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1426010828} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 1} m_Center: {x: 0, y: 0, z: 0} --- !u!23 &1426010830 @@ -957,10 +1149,15 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -985,6 +1182,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &1426010831 MeshFilter: m_ObjectHideFlags: 0 @@ -1000,12 +1198,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1426010828} + serializedVersion: 2 m_LocalRotation: {x: -0.20829226, y: 0.32973933, z: 0.07485625, w: 0.9177597} m_LocalPosition: {x: -14.19, y: 5.72, z: 26.04} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: -25.575, y: 39.525, z: 0.002} --- !u!1 &1456767456 GameObject: @@ -1027,6 +1226,7 @@ GameObject: m_IsActive: 1 --- !u!73398921 &1456767457 VFXRenderer: + serializedVersion: 1 m_ObjectHideFlags: 2 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -1036,13 +1236,17 @@ VFXRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 0 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 m_RenderingLayerMask: 1 m_RendererPriority: 0 - m_Materials: [] m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -1076,6 +1280,8 @@ VisualEffect: m_InitialEventNameOverriden: 0 m_StartSeed: 0 m_ResetSeedOnPlay: 0 + m_AllowInstancing: 1 + m_ResourceVersion: 1 m_PropertySheet: m_Float: m_Array: [] @@ -1112,12 +1318,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1456767456} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -18.41, y: 5.19, z: 27} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1998512603 GameObject: @@ -1146,9 +1353,8 @@ Light: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1998512603} m_Enabled: 1 - serializedVersion: 10 + serializedVersion: 11 m_Type: 1 - m_Shape: 0 m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} m_Intensity: 3.1415927 m_Range: 10 @@ -1197,8 +1403,13 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 m_ShadowRadius: 0 m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 --- !u!4 &1998512605 Transform: m_ObjectHideFlags: 0 @@ -1206,12 +1417,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1998512603} + serializedVersion: 2 m_LocalRotation: {x: 0.22566822, y: 0.766568, z: -0.089079, w: 0.59456897} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 23.886002, y: 107.642006, z: 15.221001} --- !u!114 &1998512606 MonoBehaviour: @@ -1336,9 +1548,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2067038241} m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 m_IsTrigger: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Size: {x: 1, y: 1, z: 1} m_Center: {x: 0, y: 0, z: 0} --- !u!23 &2067038243 @@ -1352,10 +1572,15 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1380,6 +1605,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &2067038244 MeshFilter: m_ObjectHideFlags: 0 @@ -1395,10 +1621,27 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2067038241} + serializedVersion: 2 m_LocalRotation: {x: -0.20829226, y: 0.32973933, z: 0.07485625, w: 0.9177597} m_LocalPosition: {x: -18.95, y: 4.17, z: 26.04} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: -25.575, y: 39.525, z: 0.002} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 270514559} + - {fileID: 1998512605} + - {fileID: 674445797} + - {fileID: 2067038245} + - {fileID: 1426010832} + - {fileID: 770590754} + - {fileID: 258135523} + - {fileID: 669050721} + - {fileID: 1456767459} + - {fileID: 488408420} + - {fileID: 1208515700} + - {fileID: 1319315869} diff --git a/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_FogSettings.lighting b/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_FogSettings.lighting new file mode 100644 index 00000000000..12bff065735 --- /dev/null +++ b/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_FogSettings.lighting @@ -0,0 +1,63 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: 100_FogSettings + serializedVersion: 9 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_LightmapSizeFixed: 0 + m_UseMipmapLimits: 1 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_EnableWorkerProcessBaking: 1 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_RespectSceneVisibilityWhenBakingGI: 0 diff --git a/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_FogSettings.lighting.meta b/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_FogSettings.lighting.meta new file mode 100644 index 00000000000..ef7f943ae48 --- /dev/null +++ b/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_FogSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: afc2c4206ad6e62478df7a767a3e7638 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_SG_FogMesh.shadergraph b/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_SG_FogMesh.shadergraph new file mode 100644 index 00000000000..7c7df3a5dfa --- /dev/null +++ b/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_SG_FogMesh.shadergraph @@ -0,0 +1,799 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "9ccc4f896a5d474db6b5c0ac55014c09", + "m_Properties": [ + { + "m_Id": "cd93f8cce1c940a29d937ca826962522" + }, + { + "m_Id": "5b16381f8d654de7bb6f4b7d13d1d7d8" + } + ], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "184ed17132ad492aacd720e8e2f71195" + } + ], + "m_Nodes": [ + { + "m_Id": "3798630d81c849a88da458b749fe72f1" + }, + { + "m_Id": "866137325fbb41d5bdb58cc40d213bce" + }, + { + "m_Id": "b48e7c43f2394d398d6af984e91c554e" + }, + { + "m_Id": "38cbb466051d49038603ccae3cd66d8c" + }, + { + "m_Id": "6ad73e556ede413fa3a039c16019631a" + }, + { + "m_Id": "a508a6302f5c4dc6bb1b0f4402274df2" + }, + { + "m_Id": "9923ccfff9854bdbaf6f10c589cd343a" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "6ad73e556ede413fa3a039c16019631a" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9923ccfff9854bdbaf6f10c589cd343a" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "6ad73e556ede413fa3a039c16019631a" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9923ccfff9854bdbaf6f10c589cd343a" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9923ccfff9854bdbaf6f10c589cd343a" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "38cbb466051d49038603ccae3cd66d8c" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a508a6302f5c4dc6bb1b0f4402274df2" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9923ccfff9854bdbaf6f10c589cd343a" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [ + { + "m_Id": "3798630d81c849a88da458b749fe72f1" + }, + { + "m_Id": "866137325fbb41d5bdb58cc40d213bce" + }, + { + "m_Id": "b48e7c43f2394d398d6af984e91c554e" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 200.0 + }, + "m_Blocks": [ + { + "m_Id": "38cbb466051d49038603ccae3cd66d8c" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_SubDatas": [], + "m_ActiveTargets": [ + { + "m_Id": "605d11c9510f4f318e4d244c1de0716f" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "03616d410298401386199fd3b9f9e89d", + "m_Id": 1, + "m_DisplayName": "Density", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Density", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "184ed17132ad492aacd720e8e2f71195", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "cd93f8cce1c940a29d937ca826962522" + }, + { + "m_Id": "5b16381f8d654de7bb6f4b7d13d1d7d8" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "3798630d81c849a88da458b749fe72f1", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "4a612efd0ae342dc8d28d4b3a5728338" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "38cbb466051d49038603ccae3cd66d8c", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "be936f0e28a043d698311534714d74f3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "4a612efd0ae342dc8d28d4b3a5728338", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector3ShaderProperty", + "m_ObjectId": "5b16381f8d654de7bb6f4b7d13d1d7d8", + "m_Guid": { + "m_GuidSerialized": "1b220023-a542-436b-aeb9-b899af4a52f1" + }, + "m_Name": "Vector3", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Vector3", + "m_DefaultReferenceName": "_Vector3", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "5e2bd16ca52f47cca525a00f025d4f55", + "m_Id": 0, + "m_DisplayName": "Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "605d11c9510f4f318e4d244c1de0716f", + "m_Datas": [], + "m_ActiveSubTarget": { + "m_Id": "f364e8ec1c264d1087f498a0220f9421" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 0, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": true, + "m_ReceiveShadows": true, + "m_DisableTint": false, + "m_AdditionalMotionVectorMode": 0, + "m_AlembicMotionVectors": false, + "m_SupportsLODCrossFade": false, + "m_CustomEditorGUI": "", + "m_SupportVFX": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.FogNode", + "m_ObjectId": "6ad73e556ede413fa3a039c16019631a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Fog", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -502.0000305175781, + "y": 312.66668701171877, + "width": 184.0, + "height": 102.66665649414063 + } + }, + "m_Slots": [ + { + "m_Id": "db7e33b6e7fd45f58405c2025ffd5b1a" + }, + { + "m_Id": "f7d2ad6921d748358ee7f60d097c6008" + }, + { + "m_Id": "03616d410298401386199fd3b9f9e89d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "866137325fbb41d5bdb58cc40d213bce", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "cb1dfedb4df04ed38abb2b5b31332bd4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "8e67f3ef5c144c19a70e8e98ad90d8bb", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.LerpNode", + "m_ObjectId": "9923ccfff9854bdbaf6f10c589cd343a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Lerp", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -236.66668701171876, + "y": 290.66668701171877, + "width": 209.33331298828126, + "height": 328.0 + } + }, + "m_Slots": [ + { + "m_Id": "8e67f3ef5c144c19a70e8e98ad90d8bb" + }, + { + "m_Id": "cac0dfabc13c4eb381063f1788770e87" + }, + { + "m_Id": "b8e1e14d119a40fb97dd7abd7d491c77" + }, + { + "m_Id": "c7090fb9369241648a637a3fea312b01" + } + ], + "synonyms": [ + "mix", + "blend", + "linear interpolate" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "a508a6302f5c4dc6bb1b0f4402274df2", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -399.3333740234375, + "y": 38.000057220458987, + "width": 106.66665649414063, + "height": 36.000003814697269 + } + }, + "m_Slots": [ + { + "m_Id": "5e2bd16ca52f47cca525a00f025d4f55" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "cd93f8cce1c940a29d937ca826962522" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "b48e7c43f2394d398d6af984e91c554e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "f4cbe139d5684aea9db37bc96b5ee302" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b8e1e14d119a40fb97dd7abd7d491c77", + "m_Id": 2, + "m_DisplayName": "T", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "T", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.019999999552965165 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "be936f0e28a043d698311534714d74f3", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "c7090fb9369241648a637a3fea312b01", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "cac0dfabc13c4eb381063f1788770e87", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "cb1dfedb4df04ed38abb2b5b31332bd4", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "cd93f8cce1c940a29d937ca826962522", + "m_Guid": { + "m_GuidSerialized": "3bab0927-a75f-4dbc-a23a-170adb02708c" + }, + "m_Name": "Color", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Color", + "m_DefaultReferenceName": "_Color", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 0.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "db7e33b6e7fd45f58405c2025ffd5b1a", + "m_Id": 2, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalUnlitSubTarget", + "m_ObjectId": "f364e8ec1c264d1087f498a0220f9421" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "f4cbe139d5684aea9db37bc96b5ee302", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "f7d2ad6921d748358ee7f60d097c6008", + "m_Id": 0, + "m_DisplayName": "Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Color", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + diff --git a/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_SG_FogMesh.shadergraph.meta b/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_SG_FogMesh.shadergraph.meta new file mode 100644 index 00000000000..2f8f8c05a74 --- /dev/null +++ b/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_SG_FogMesh.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 209dbab2014420141b857eab06bdb72a +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_SG_FogMesh.vfx b/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_SG_FogMesh.vfx new file mode 100644 index 00000000000..a9dd6ce9700 --- /dev/null +++ b/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_SG_FogMesh.vfx @@ -0,0 +1,4108 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &114340500867371532 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d01270efd3285ea4a9d6c555cb0a8027, type: 3} + m_Name: VFXUI + m_EditorClassIdentifier: + groupInfos: [] + stickyNoteInfos: [] + categories: [] + uiBounds: + serializedVersion: 2 + x: -32 + y: -259 + width: 2136 + height: 1529 +--- !u!114 &114350483966674976 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7d4c867f6b72b714dbb5fd1780afe208, type: 3} + m_Name: 100_SG_FogMesh + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661614541} + - {fileID: 8926484042661614547} + - {fileID: 8926484042661614562} + - {fileID: 8926484042661614580} + - {fileID: 8926484042661614582} + - {fileID: 8926484042661614597} + - {fileID: 8926484042661614603} + - {fileID: 8926484042661614625} + - {fileID: 8926484042661614663} + - {fileID: 8926484042661614742} + - {fileID: 8926484042661614766} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_UIInfos: {fileID: 114340500867371532} + m_ParameterInfo: [] + m_ImportDependencies: [] + m_GraphVersion: 12 + m_ResourceVersion: 1 + m_SubgraphDependencies: [] + m_CategoryPath: +--- !u!2058629511 &8926484042661614527 +VisualEffectResource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: 100_SG_FogMesh + m_Graph: {fileID: 114350483966674976} + m_Infos: + m_RendererSettings: + motionVectorGenerationMode: 0 + shadowCastingMode: 1 + receiveShadows: 0 + reflectionProbeUsage: 0 + lightProbeUsage: 0 + m_CullingFlags: 3 + m_UpdateMode: 0 + m_PreWarmDeltaTime: 0.05 + m_PreWarmStepCount: 0 + m_InitialEventName: OnPlay + m_InstancingMode: 0 + m_InstancingCapacity: 64 +--- !u!114 &8926484042661614541 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73a13919d81fb7444849bae8b5c812a2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: + - {fileID: 8926484042661614543} + m_UIPosition: {x: 551, y: -259} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: [] + m_OutputSlots: [] + m_Label: Spawn System + m_Data: {fileID: 8926484042661614542} + m_InputFlowSlot: + - link: [] + - link: [] + m_OutputFlowSlot: + - link: + - context: {fileID: 8926484042661614547} + slotIndex: 0 + loopDuration: 0 + loopCount: 0 + delayBeforeLoop: 0 + delayAfterLoop: 0 +--- !u!114 &8926484042661614542 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f68759077adc0b143b6e1c101e82065e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + title: + m_Owners: + - {fileID: 8926484042661614541} +--- !u!114 &8926484042661614543 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5e382412bb691334bb79457a6c127924, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614541} + m_Children: [] + m_UIPosition: {x: 655.3302, y: 1320.3799} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661614544} + - {fileID: 8926484042661614545} + m_OutputSlots: [] + m_Disabled: 0 + m_ActivationSlot: {fileID: 8926484042661614546} + repeat: 0 + spawnMode: 0 + delayMode: 0 +--- !u!114 &8926484042661614544 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614544} + m_MasterData: + m_Owner: {fileID: 8926484042661614543} + m_Value: + m_Type: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 7 + m_Space: -1 + m_Property: + name: Count + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614545 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614545} + m_MasterData: + m_Owner: {fileID: 8926484042661614543} + m_Value: + m_Type: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 0 + m_Space: -1 + m_Property: + name: Delay + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614546 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614546} + m_MasterData: + m_Owner: {fileID: 8926484042661614543} + m_Value: + m_Type: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: True + m_Space: -1 + m_Property: + name: _vfx_enabled + m_serializedType: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614547 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9dfea48843f53fc438eabc12a3a30abc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: + - {fileID: 8926484042661614573} + m_UIPosition: {x: 551, y: 29} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661614548} + m_OutputSlots: [] + m_Label: Initialize Particles + m_Data: {fileID: 8926484042661614561} + m_InputFlowSlot: + - link: + - context: {fileID: 8926484042661614541} + slotIndex: 0 + m_OutputFlowSlot: + - link: + - context: {fileID: 8926484042661614562} + slotIndex: 0 +--- !u!114 &8926484042661614548 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1b605c022ee79394a8a776c0869b3f9a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661614549} + - {fileID: 8926484042661614553} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614548} + m_MasterData: + m_Owner: {fileID: 8926484042661614547} + m_Value: + m_Type: + m_SerializableType: UnityEditor.VFX.AABox, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"center":{"x":0.0,"y":0.0,"z":0.0},"size":{"x":1.0,"y":1.0,"z":1.0}}' + m_Space: 0 + m_Property: + name: bounds + m_serializedType: + m_SerializableType: UnityEditor.VFX.AABox, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614549 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614548} + m_Children: + - {fileID: 8926484042661614550} + - {fileID: 8926484042661614551} + - {fileID: 8926484042661614552} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614548} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: center + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614550 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614549} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614548} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614551 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614549} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614548} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614552 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614549} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614548} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: z + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614548} + m_Children: + - {fileID: 8926484042661614554} + - {fileID: 8926484042661614555} + - {fileID: 8926484042661614556} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614548} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: size + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614553} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614548} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614555 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614553} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614548} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614556 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614553} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614548} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: z + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614561 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d78581a96eae8bf4398c282eb0b098bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + title: Minimal + m_Owners: + - {fileID: 8926484042661614547} + - {fileID: 8926484042661614562} + - {fileID: 8926484042661614742} + dataType: 0 + capacity: 7 + stripCapacity: 16 + particlePerStripCount: 16 + needsComputeBounds: 0 + boundsMode: 1 + m_Space: 0 +--- !u!114 &8926484042661614562 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2dc095764ededfa4bb32fa602511ea4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: [] + m_UIPosition: {x: 551, y: 427} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: [] + m_OutputSlots: [] + m_Label: Update Particles + m_Data: {fileID: 8926484042661614561} + m_InputFlowSlot: + - link: + - context: {fileID: 8926484042661614547} + slotIndex: 0 + m_OutputFlowSlot: + - link: + - context: {fileID: 8926484042661614742} + slotIndex: 0 + integration: 0 + angularIntegration: 0 + ageParticles: 1 + reapParticles: 1 + skipZeroDeltaUpdate: 0 +--- !u!114 &8926484042661614573 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a971fa2e110a0ac42ac1d8dae408704b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614547} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661614721} + m_OutputSlots: [] + m_Disabled: 0 + m_ActivationSlot: {fileID: 8926484042661614579} + attribute: position + Composition: 0 + Source: 0 + Random: 0 + channels: 6 +--- !u!114 &8926484042661614579 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614579} + m_MasterData: + m_Owner: {fileID: 8926484042661614573} + m_Value: + m_Type: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: True + m_Space: -1 + m_Property: + name: _vfx_enabled + m_serializedType: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614580 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 486e063e1ed58c843942ea4122829ab1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: [] + m_UIPosition: {x: -32, y: 175} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: [] + m_OutputSlots: + - {fileID: 8926484042661614726} + attribute: spawnIndex + location: 0 + mask: xyz +--- !u!114 &8926484042661614582 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b8ee8a7543fa09e42a7c8616f60d2ad7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: [] + m_UIPosition: {x: 285, y: 229} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661614586} + - {fileID: 8926484042661614584} + m_OutputSlots: + - {fileID: 8926484042661614585} + m_Operands: + - name: a + type: + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + - name: b + type: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 +--- !u!114 &8926484042661614584 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614584} + m_MasterData: + m_Owner: {fileID: 8926484042661614582} + m_Value: + m_Type: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: -2.5 + m_Space: -1 + m_Property: + name: b + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614585 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614585} + m_MasterData: + m_Owner: {fileID: 8926484042661614582} + m_Value: + m_Type: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: + m_Space: -1 + m_Property: + name: + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 1 + m_LinkedSlots: + - {fileID: 8926484042661614723} +--- !u!114 &8926484042661614586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c52d920e7fff73b498050a6b3c4404ca, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614586} + m_MasterData: + m_Owner: {fileID: 8926484042661614582} + m_Value: + m_Type: + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 1 + m_Space: -1 + m_Property: + name: a + m_serializedType: + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: + - {fileID: 8926484042661614726} +--- !u!114 &8926484042661614597 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73a13919d81fb7444849bae8b5c812a2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: + - {fileID: 8926484042661614599} + m_UIPosition: {x: 1254, y: -180} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: [] + m_OutputSlots: [] + m_Label: Spawn System + m_Data: {fileID: 8926484042661614598} + m_InputFlowSlot: + - link: [] + - link: [] + m_OutputFlowSlot: + - link: + - context: {fileID: 8926484042661614603} + slotIndex: 0 + loopDuration: 0 + loopCount: 0 + delayBeforeLoop: 0 + delayAfterLoop: 0 +--- !u!114 &8926484042661614598 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f68759077adc0b143b6e1c101e82065e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + title: + m_Owners: + - {fileID: 8926484042661614597} +--- !u!114 &8926484042661614599 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5e382412bb691334bb79457a6c127924, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614597} + m_Children: [] + m_UIPosition: {x: 1504.8304, y: 1808.0043} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661614600} + - {fileID: 8926484042661614601} + m_OutputSlots: [] + m_Disabled: 0 + m_ActivationSlot: {fileID: 8926484042661614602} + repeat: 0 + spawnMode: 0 + delayMode: 0 +--- !u!114 &8926484042661614600 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614600} + m_MasterData: + m_Owner: {fileID: 8926484042661614599} + m_Value: + m_Type: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 1 + m_Space: -1 + m_Property: + name: Count + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614601 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614601} + m_MasterData: + m_Owner: {fileID: 8926484042661614599} + m_Value: + m_Type: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 0 + m_Space: -1 + m_Property: + name: Delay + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614602 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614602} + m_MasterData: + m_Owner: {fileID: 8926484042661614599} + m_Value: + m_Type: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: True + m_Space: -1 + m_Property: + name: _vfx_enabled + m_serializedType: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614603 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9dfea48843f53fc438eabc12a3a30abc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: + - {fileID: 8926484042661614618} + m_UIPosition: {x: 1254, y: 108} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661614604} + m_OutputSlots: [] + m_Label: Initialize Particles + m_Data: {fileID: 8926484042661614617} + m_InputFlowSlot: + - link: + - context: {fileID: 8926484042661614597} + slotIndex: 0 + m_OutputFlowSlot: + - link: + - context: {fileID: 8926484042661614625} + slotIndex: 0 +--- !u!114 &8926484042661614604 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1b605c022ee79394a8a776c0869b3f9a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661614605} + - {fileID: 8926484042661614609} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614604} + m_MasterData: + m_Owner: {fileID: 8926484042661614603} + m_Value: + m_Type: + m_SerializableType: UnityEditor.VFX.AABox, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"center":{"x":0.0,"y":0.0,"z":0.0},"size":{"x":10.0,"y":10.0,"z":10.0}}' + m_Space: 0 + m_Property: + name: bounds + m_serializedType: + m_SerializableType: UnityEditor.VFX.AABox, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614605 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614604} + m_Children: + - {fileID: 8926484042661614606} + - {fileID: 8926484042661614607} + - {fileID: 8926484042661614608} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614604} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: center + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614606 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614605} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614604} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614607 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614605} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614604} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614608 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614605} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614604} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: z + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614609 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614604} + m_Children: + - {fileID: 8926484042661614610} + - {fileID: 8926484042661614611} + - {fileID: 8926484042661614612} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614604} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: size + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614610 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614609} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614604} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614611 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614609} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614604} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614612 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614609} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614604} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: z + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614617 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d78581a96eae8bf4398c282eb0b098bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + title: Minimal + m_Owners: + - {fileID: 8926484042661614603} + - {fileID: 8926484042661614625} + - {fileID: 8926484042661614663} + - {fileID: 8926484042661614766} + dataType: 0 + capacity: 7 + stripCapacity: 16 + particlePerStripCount: 16 + needsComputeBounds: 0 + boundsMode: 1 + m_Space: 0 +--- !u!114 &8926484042661614618 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a971fa2e110a0ac42ac1d8dae408704b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614603} + m_Children: [] + m_UIPosition: {x: 849.50024, y: 487.62436} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661614727} + m_OutputSlots: [] + m_Disabled: 0 + m_ActivationSlot: {fileID: 8926484042661614624} + attribute: position + Composition: 0 + Source: 0 + Random: 0 + channels: 6 +--- !u!114 &8926484042661614624 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614624} + m_MasterData: + m_Owner: {fileID: 8926484042661614618} + m_Value: + m_Type: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: True + m_Space: -1 + m_Property: + name: _vfx_enabled + m_serializedType: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614625 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2dc095764ededfa4bb32fa602511ea4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: [] + m_UIPosition: {x: 1254, y: 506} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: [] + m_OutputSlots: [] + m_Label: Update Particles + m_Data: {fileID: 8926484042661614617} + m_InputFlowSlot: + - link: + - context: {fileID: 8926484042661614603} + slotIndex: 0 + m_OutputFlowSlot: + - link: + - context: {fileID: 8926484042661614663} + slotIndex: 0 + - context: {fileID: 8926484042661614766} + slotIndex: 0 + integration: 0 + angularIntegration: 0 + ageParticles: 1 + reapParticles: 1 + skipZeroDeltaUpdate: 0 +--- !u!114 &8926484042661614663 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e837ba02e1cb47d4394b6c186d164156, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: + - {fileID: 8926484042661614670} + - {fileID: 8926484042661614673} + - {fileID: 8926484042661614707} + m_UIPosition: {x: 1212, y: 704} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661614664} + - {fileID: 8926484042661614665} + - {fileID: 8926484042661614666} + m_OutputSlots: [] + m_Label: + m_Data: {fileID: 8926484042661614617} + m_InputFlowSlot: + - link: + - context: {fileID: 8926484042661614625} + slotIndex: 0 + m_OutputFlowSlot: + - link: [] + blendMode: 3 + cullMode: 0 + zWriteMode: 0 + zTestMode: 0 + useAlphaClipping: 0 + generateMotionVector: 0 + excludeFromTUAndAA: 0 + sortingPriority: 0 + m_SubOutputs: + - {fileID: 8926484042661614668} + colorMapping: 0 + uvMode: 0 + flipbookLayout: 0 + useSoftParticle: 0 + vfxSystemSortPriority: 0 + sort: 0 + sortMode: 0 + revertSorting: 0 + indirectDraw: 0 + computeCulling: 0 + frustumCulling: 0 + castShadows: 0 + useExposureWeight: 0 + needsOwnSort: 0 + shaderGraph: {fileID: 0} + materialSettings: + m_PropertyNames: [] + m_PropertyValues: [] + MeshCount: 1 + lod: 0 +--- !u!114 &8926484042661614664 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b47b8679b468b7347a00cdd50589bc9f, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614664} + m_MasterData: + m_Owner: {fileID: 8926484042661614663} + m_Value: + m_Type: + m_SerializableType: UnityEngine.Mesh, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"obj":{"fileID":10202,"guid":"0000000000000000e000000000000000","type":0}}' + m_Space: -1 + m_Property: + name: mesh + m_serializedType: + m_SerializableType: UnityEngine.Mesh, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614665 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c52d920e7fff73b498050a6b3c4404ca, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614665} + m_MasterData: + m_Owner: {fileID: 8926484042661614663} + m_Value: + m_Type: + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 4294967295 + m_Space: -1 + m_Property: + name: subMeshMask + m_serializedType: + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614666 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 70a331b1d86cc8d4aa106ccbe0da5852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614666} + m_MasterData: + m_Owner: {fileID: 8926484042661614663} + m_Value: + m_Type: + m_SerializableType: UnityEngine.Texture2D, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"obj":{"fileID":2800000,"guid":"127279d577f25ac4ea17dae3782e5074","type":3}}' + m_Space: -1 + m_Property: + name: mainTexture + m_serializedType: + m_SerializableType: UnityEngine.Texture2D, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614668 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 388ad3b1dc9c6ae45b630f914fab638f, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 +--- !u!114 &8926484042661614670 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a971fa2e110a0ac42ac1d8dae408704b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614663} + m_Children: [] + m_UIPosition: {x: 1504.8304, y: 1808.0043} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661614732} + m_OutputSlots: [] + m_Disabled: 0 + m_ActivationSlot: {fileID: 8926484042661614672} + attribute: size + Composition: 0 + Source: 0 + Random: 0 + channels: 6 +--- !u!114 &8926484042661614672 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614672} + m_MasterData: + m_Owner: {fileID: 8926484042661614670} + m_Value: + m_Type: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: True + m_Space: -1 + m_Property: + name: _vfx_enabled + m_serializedType: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614673 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a971fa2e110a0ac42ac1d8dae408704b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614663} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661614733} + m_OutputSlots: [] + m_Disabled: 0 + m_ActivationSlot: {fileID: 8926484042661614678} + attribute: scale + Composition: 0 + Source: 0 + Random: 0 + channels: 6 +--- !u!114 &8926484042661614678 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614678} + m_MasterData: + m_Owner: {fileID: 8926484042661614673} + m_Value: + m_Type: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: True + m_Space: -1 + m_Property: + name: _vfx_enabled + m_serializedType: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614707 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a971fa2e110a0ac42ac1d8dae408704b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614663} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661614737} + m_OutputSlots: [] + m_Disabled: 0 + m_ActivationSlot: {fileID: 8926484042661614713} + attribute: position + Composition: 1 + Source: 0 + Random: 0 + channels: 6 +--- !u!114 &8926484042661614713 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614713} + m_MasterData: + m_Owner: {fileID: 8926484042661614707} + m_Value: + m_Type: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: True + m_Space: -1 + m_Property: + name: _vfx_enabled + m_serializedType: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614721 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5265657162cc1a241bba03a3b0476d99, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661614722} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614721} + m_MasterData: + m_Owner: {fileID: 8926484042661614573} + m_Value: + m_Type: + m_SerializableType: UnityEditor.VFX.Position, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"position":{"x":0.0,"y":0.0,"z":0.0}}' + m_Space: 0 + m_Property: + name: Position + m_serializedType: + m_SerializableType: UnityEditor.VFX.Position, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614722 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614721} + m_Children: + - {fileID: 8926484042661614723} + - {fileID: 8926484042661614724} + - {fileID: 8926484042661614725} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614721} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: position + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614723 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614722} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614721} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: + - {fileID: 8926484042661614585} +--- !u!114 &8926484042661614724 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614722} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614721} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614725 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614722} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614721} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: z + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614726 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c52d920e7fff73b498050a6b3c4404ca, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614726} + m_MasterData: + m_Owner: {fileID: 8926484042661614580} + m_Value: + m_Type: + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 0 + m_Space: 2147483647 + m_Property: + name: spawnIndex + m_serializedType: + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 1 + m_LinkedSlots: + - {fileID: 8926484042661614586} +--- !u!114 &8926484042661614727 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5265657162cc1a241bba03a3b0476d99, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661614728} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614727} + m_MasterData: + m_Owner: {fileID: 8926484042661614618} + m_Value: + m_Type: + m_SerializableType: UnityEditor.VFX.Position, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"position":{"x":-13.539999961853028,"y":0.0,"z":8.380000114440918}}' + m_Space: 0 + m_Property: + name: Position + m_serializedType: + m_SerializableType: UnityEditor.VFX.Position, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614728 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614727} + m_Children: + - {fileID: 8926484042661614729} + - {fileID: 8926484042661614730} + - {fileID: 8926484042661614731} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614727} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: position + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614729 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614728} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614727} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614730 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614728} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614727} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614731 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614728} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614727} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: z + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614732 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614732} + m_MasterData: + m_Owner: {fileID: 8926484042661614670} + m_Value: + m_Type: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 1 + m_Space: 2147483647 + m_Property: + name: Size + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614733 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661614734} + - {fileID: 8926484042661614735} + - {fileID: 8926484042661614736} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614733} + m_MasterData: + m_Owner: {fileID: 8926484042661614673} + m_Value: + m_Type: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"x":30.0,"y":0.5,"z":0.5}' + m_Space: 2147483647 + m_Property: + name: Scale + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614734 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614733} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614733} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614735 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614733} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614733} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614736 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614733} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614733} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: z + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614737 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5265657162cc1a241bba03a3b0476d99, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661614738} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614737} + m_MasterData: + m_Owner: {fileID: 8926484042661614707} + m_Value: + m_Type: + m_SerializableType: UnityEditor.VFX.Position, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"position":{"x":0.0,"y":0.0,"z":-2.75}}' + m_Space: 0 + m_Property: + name: Position + m_serializedType: + m_SerializableType: UnityEditor.VFX.Position, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614738 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614737} + m_Children: + - {fileID: 8926484042661614739} + - {fileID: 8926484042661614740} + - {fileID: 8926484042661614741} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614737} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: position + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614739 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614738} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614737} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614740 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614738} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614737} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614741 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614738} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614737} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: z + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614742 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e837ba02e1cb47d4394b6c186d164156, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: + - {fileID: 8926484042661614756} + - {fileID: 8926484042661614759} + m_UIPosition: {x: 496.4444, y: 813.8709} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661614747} + - {fileID: 8926484042661614752} + - {fileID: 8926484042661614743} + - {fileID: 8926484042661614744} + m_OutputSlots: [] + m_Label: + m_Data: {fileID: 8926484042661614561} + m_InputFlowSlot: + - link: + - context: {fileID: 8926484042661614562} + slotIndex: 0 + m_OutputFlowSlot: + - link: [] + blendMode: 1 + cullMode: 0 + zWriteMode: 0 + zTestMode: 0 + useAlphaClipping: 0 + generateMotionVector: 0 + excludeFromTUAndAA: 0 + sortingPriority: 0 + m_SubOutputs: [] + colorMapping: 0 + uvMode: 0 + flipbookLayout: 0 + useSoftParticle: 0 + vfxSystemSortPriority: 0 + sort: 0 + sortMode: 0 + revertSorting: 0 + indirectDraw: 0 + computeCulling: 0 + frustumCulling: 0 + castShadows: 0 + useExposureWeight: 0 + needsOwnSort: 0 + shaderGraph: {fileID: 4333940904281232215, guid: 209dbab2014420141b857eab06bdb72a, + type: 3} + materialSettings: + m_PropertyNames: + - _QueueOffset + - _QueueControl + m_PropertyValues: + - 0 + - 0 + MeshCount: 1 + lod: 0 +--- !u!114 &8926484042661614743 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b47b8679b468b7347a00cdd50589bc9f, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614743} + m_MasterData: + m_Owner: {fileID: 8926484042661614742} + m_Value: + m_Type: + m_SerializableType: UnityEngine.Mesh, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"obj":{"fileID":10202,"guid":"0000000000000000e000000000000000","type":0}}' + m_Space: 2147483647 + m_Property: + name: mesh + m_serializedType: + m_SerializableType: UnityEngine.Mesh, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614744 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c52d920e7fff73b498050a6b3c4404ca, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614744} + m_MasterData: + m_Owner: {fileID: 8926484042661614742} + m_Value: + m_Type: + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 4294967295 + m_Space: 2147483647 + m_Property: + name: subMeshMask + m_serializedType: + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614747 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c82227d5759e296488798b1554a72a15, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661614748} + - {fileID: 8926484042661614749} + - {fileID: 8926484042661614750} + - {fileID: 8926484042661614751} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614747} + m_MasterData: + m_Owner: {fileID: 8926484042661614742} + m_Value: + m_Type: + m_SerializableType: UnityEngine.Color, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"r":1.0,"g":1.0,"b":1.0,"a":0.0}' + m_Space: 2147483647 + m_Property: + name: _Color + m_serializedType: + m_SerializableType: UnityEngine.Color, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614748 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614747} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614747} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: r + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614749 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614747} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614747} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: g + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614750 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614747} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614747} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: b + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614751 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614747} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614747} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: a + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614752 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661614753} + - {fileID: 8926484042661614754} + - {fileID: 8926484042661614755} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614752} + m_MasterData: + m_Owner: {fileID: 8926484042661614742} + m_Value: + m_Type: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"x":0.0,"y":0.0,"z":0.0}' + m_Space: 2147483647 + m_Property: + name: _Vector3 + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614753 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614752} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614752} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614754 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614752} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614752} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614755 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614752} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614752} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: z + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614756 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a971fa2e110a0ac42ac1d8dae408704b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614742} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661614757} + m_OutputSlots: [] + m_Disabled: 0 + m_ActivationSlot: {fileID: 8926484042661614758} + attribute: size + Composition: 0 + Source: 0 + Random: 0 + channels: 6 +--- !u!114 &8926484042661614757 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614757} + m_MasterData: + m_Owner: {fileID: 8926484042661614756} + m_Value: + m_Type: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 0.5 + m_Space: 2147483647 + m_Property: + name: Size + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614758 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614758} + m_MasterData: + m_Owner: {fileID: 8926484042661614756} + m_Value: + m_Type: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: True + m_Space: 2147483647 + m_Property: + name: _vfx_enabled + m_serializedType: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614759 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a971fa2e110a0ac42ac1d8dae408704b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614742} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661614760} + m_OutputSlots: [] + m_Disabled: 0 + m_ActivationSlot: {fileID: 8926484042661614765} + attribute: position + Composition: 1 + Source: 0 + Random: 0 + channels: 6 +--- !u!114 &8926484042661614760 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5265657162cc1a241bba03a3b0476d99, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661614761} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614760} + m_MasterData: + m_Owner: {fileID: 8926484042661614759} + m_Value: + m_Type: + m_SerializableType: UnityEditor.VFX.Position, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"position":{"x":0.0,"y":0.0,"z":4.25}}' + m_Space: 0 + m_Property: + name: Position + m_serializedType: + m_SerializableType: UnityEditor.VFX.Position, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614761 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614760} + m_Children: + - {fileID: 8926484042661614762} + - {fileID: 8926484042661614763} + - {fileID: 8926484042661614764} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614760} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: position + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614762 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614761} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614760} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614763 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614761} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614760} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614764 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614761} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614760} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: z + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614765 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614765} + m_MasterData: + m_Owner: {fileID: 8926484042661614759} + m_Value: + m_Type: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: True + m_Space: 2147483647 + m_Property: + name: _vfx_enabled + m_serializedType: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614766 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e837ba02e1cb47d4394b6c186d164156, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: + - {fileID: 8926484042661614781} + - {fileID: 8926484042661614775} + - {fileID: 8926484042661614771} + m_UIPosition: {x: 1679, y: 704} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661614767} + - {fileID: 8926484042661614768} + - {fileID: 8926484042661614769} + m_OutputSlots: [] + m_Label: + m_Data: {fileID: 8926484042661614617} + m_InputFlowSlot: + - link: + - context: {fileID: 8926484042661614625} + slotIndex: 0 + m_OutputFlowSlot: + - link: [] + blendMode: 3 + cullMode: 0 + zWriteMode: 0 + zTestMode: 0 + useAlphaClipping: 0 + generateMotionVector: 0 + excludeFromTUAndAA: 0 + sortingPriority: 0 + m_SubOutputs: + - {fileID: 8926484042661614774} + colorMapping: 0 + uvMode: 0 + flipbookLayout: 0 + useSoftParticle: 0 + vfxSystemSortPriority: 0 + sort: 0 + sortMode: 0 + revertSorting: 0 + indirectDraw: 0 + computeCulling: 0 + frustumCulling: 0 + castShadows: 0 + useExposureWeight: 0 + needsOwnSort: 0 + shaderGraph: {fileID: 0} + materialSettings: + m_PropertyNames: [] + m_PropertyValues: [] + MeshCount: 1 + lod: 0 +--- !u!114 &8926484042661614767 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b47b8679b468b7347a00cdd50589bc9f, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614767} + m_MasterData: + m_Owner: {fileID: 8926484042661614766} + m_Value: + m_Type: + m_SerializableType: UnityEngine.Mesh, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"obj":{"fileID":10202,"guid":"0000000000000000e000000000000000","type":0}}' + m_Space: 2147483647 + m_Property: + name: mesh + m_serializedType: + m_SerializableType: UnityEngine.Mesh, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614768 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c52d920e7fff73b498050a6b3c4404ca, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614768} + m_MasterData: + m_Owner: {fileID: 8926484042661614766} + m_Value: + m_Type: + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 4294967295 + m_Space: 2147483647 + m_Property: + name: subMeshMask + m_serializedType: + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614769 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 70a331b1d86cc8d4aa106ccbe0da5852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614769} + m_MasterData: + m_Owner: {fileID: 8926484042661614766} + m_Value: + m_Type: + m_SerializableType: UnityEngine.Texture2D, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"obj":{"fileID":2800000,"guid":"127279d577f25ac4ea17dae3782e5074","type":3}}' + m_Space: 2147483647 + m_Property: + name: mainTexture + m_serializedType: + m_SerializableType: UnityEngine.Texture2D, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614771 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a971fa2e110a0ac42ac1d8dae408704b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614766} + m_Children: [] + m_UIPosition: {x: 2163.727, y: 1910.7292} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661614772} + m_OutputSlots: [] + m_Disabled: 0 + m_ActivationSlot: {fileID: 8926484042661614773} + attribute: size + Composition: 0 + Source: 0 + Random: 0 + channels: 6 +--- !u!114 &8926484042661614772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614772} + m_MasterData: + m_Owner: {fileID: 8926484042661614771} + m_Value: + m_Type: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 1 + m_Space: 2147483647 + m_Property: + name: Size + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614773 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614773} + m_MasterData: + m_Owner: {fileID: 8926484042661614771} + m_Value: + m_Type: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: True + m_Space: 2147483647 + m_Property: + name: _vfx_enabled + m_serializedType: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614774 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 388ad3b1dc9c6ae45b630f914fab638f, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 +--- !u!114 &8926484042661614775 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a971fa2e110a0ac42ac1d8dae408704b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614766} + m_Children: [] + m_UIPosition: {x: 658.8967, y: 102.72504} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661614776} + m_OutputSlots: [] + m_Disabled: 0 + m_ActivationSlot: {fileID: 8926484042661614780} + attribute: scale + Composition: 0 + Source: 0 + Random: 0 + channels: 6 +--- !u!114 &8926484042661614776 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661614777} + - {fileID: 8926484042661614778} + - {fileID: 8926484042661614779} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614776} + m_MasterData: + m_Owner: {fileID: 8926484042661614775} + m_Value: + m_Type: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"x":30.0,"y":0.5,"z":0.5}' + m_Space: 2147483647 + m_Property: + name: Scale + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614777 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614776} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614776} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614778 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614776} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614776} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614779 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614776} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614776} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: z + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614780 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614780} + m_MasterData: + m_Owner: {fileID: 8926484042661614775} + m_Value: + m_Type: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: True + m_Space: 2147483647 + m_Property: + name: _vfx_enabled + m_serializedType: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614781 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a971fa2e110a0ac42ac1d8dae408704b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614766} + m_Children: [] + m_UIPosition: {x: 658.8967, y: 102.72504} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661614782} + m_OutputSlots: [] + m_Disabled: 0 + m_ActivationSlot: {fileID: 8926484042661614787} + attribute: position + Composition: 1 + Source: 0 + Random: 0 + channels: 6 +--- !u!114 &8926484042661614782 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5265657162cc1a241bba03a3b0476d99, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661614783} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614782} + m_MasterData: + m_Owner: {fileID: 8926484042661614781} + m_Value: + m_Type: + m_SerializableType: UnityEditor.VFX.Position, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"position":{"x":0.0,"y":0.0,"z":-0.75}}' + m_Space: 0 + m_Property: + name: Position + m_serializedType: + m_SerializableType: UnityEditor.VFX.Position, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614783 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614782} + m_Children: + - {fileID: 8926484042661614784} + - {fileID: 8926484042661614785} + - {fileID: 8926484042661614786} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614782} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: position + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614784 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614783} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614782} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614785 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614783} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614782} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614786 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661614783} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614782} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: z + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614787 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661614787} + m_MasterData: + m_Owner: {fileID: 8926484042661614781} + m_Value: + m_Type: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: True + m_Space: 2147483647 + m_Property: + name: _vfx_enabled + m_serializedType: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] diff --git a/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_SG_FogMesh.vfx.meta b/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_SG_FogMesh.vfx.meta new file mode 100644 index 00000000000..ba5a1a008ba --- /dev/null +++ b/Tests/SRPTests/Projects/VisualEffectGraph_URP/Assets/GraphicsTests/100_SG_FogMesh.vfx.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 20e235b4f4e8aa94386bf3cbe42dbda6 +VisualEffectImporter: + externalObjects: {} + serializedVersion: 1 + template: + name: + category: + description: + icon: {instanceID: 0} + thumbnail: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: