From 4cd059188d8a98caa8057b66d3f92bf1afdac73c Mon Sep 17 00:00:00 2001 From: Mark Green Date: Mon, 15 Dec 2025 11:36:10 +0000 Subject: [PATCH 01/27] [Port] [6000.4] DOCG-8161 Document nested properties and keywords --- .../Sub-Graph-Promote-Property.md | 43 +++++++++++++++++++ .../Documentation~/Sub-graphs.md | 1 + .../Documentation~/TableOfContents.md | 1 + 3 files changed, 45 insertions(+) create mode 100644 Packages/com.unity.shadergraph/Documentation~/Sub-Graph-Promote-Property.md diff --git a/Packages/com.unity.shadergraph/Documentation~/Sub-Graph-Promote-Property.md b/Packages/com.unity.shadergraph/Documentation~/Sub-Graph-Promote-Property.md new file mode 100644 index 00000000000..5c8965282e0 --- /dev/null +++ b/Packages/com.unity.shadergraph/Documentation~/Sub-Graph-Promote-Property.md @@ -0,0 +1,43 @@ +# Expose a Sub Graph property in the Inspector window + +To control a [Sub Graph](Sub-graphs.md) property or keyword from the Inspector window of a material, set the property or keyword as belonging to the main shader instead of the Sub Graph. This process is known as promoting the property, or creating a nested property. + +Promoting a property means the Sub Graph automatically exposes the property in the Inspector window of a material, and you don't need to create a duplicate property in the blackboard of the main shader graph. + +**Note:** When you promote a property, it no longer appears as an input port on the Sub Graph node in the parent shader graph. + +## Promote a Sub Graph property or keyword + +Follow these steps: + +1. Open the Sub Graph in the Shader Graph editor. +2. In the Blackboard, select the property or keyword you want to promote. +3. In the **Graph Inspector** window, select the **Node Settings** tab, then enable **Promote to final Shader**. +4. Save the Sub Graph. + +In the compiled shader code, the property or keyword is now promoted out of the Sub Graph and into the main shader. + +**Show In Inspector** is enabled by default, so the property or keyword appears in the Inspector window of any material that uses the Sub Graph. If the property or keyword is at the top level of the Blackboard, it appears under a foldout (triangle) that has the name of the Sub Graph. + +**Note**: You can't promote Gradient, Virtual Texture, or Sampler State property types. + +Enabling **Promote to final Shader** also means the property or keyword inherits the same parameters as a property or keyword in a regular shader graph. For example, you can set the scope as **Global** to control the property or keyword from C# instead of the Inspector window. For more information, refer to [Property types](Property-Types.md) and [Keyword parameter reference](Keywords-reference.md). + +## Expose a single property or keyword for multiple Sub Graphs + +To use the Unity Editor to control a single property or keyword across multiple Sub Graphs, for example to share a single property across Sub Graphs for rain, snow, and mud, follow these steps: + +1. In each Sub Graph, use the same name and type for the property or keyword. + + **Note:** The best practice is to use the same category name for each property or keyword. Otherwise Unity exposes multiple copies of the property or keyword, even though editing one still changes them all. For more information about categories, refer to [Using Blackboard categories](Blackboard.md#using-blackboard-categories). + +2. To promote the property or keyword from each Sub Graph, follow the steps in the previous section. +3. Add the Sub Graphs to a shader graph. Unity exposes a single instance of the promoted property or keyword. + +For an example of a promoted property, open the [template browser](template-browser.md) and select the **Terrain Standard 4 Layers** template. The template uses a nested property in the **Height Based Splat Modify** Sub Graph. + +## Additional resources + +- [Sub Graphs](Sub-graphs.md) +- [Property types](Property-Types.md) +- [Keywords](Keywords.md) diff --git a/Packages/com.unity.shadergraph/Documentation~/Sub-graphs.md b/Packages/com.unity.shadergraph/Documentation~/Sub-graphs.md index 1509138e1bf..4fe4bd50eca 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Sub-graphs.md +++ b/Packages/com.unity.shadergraph/Documentation~/Sub-graphs.md @@ -10,6 +10,7 @@ A Sub Graph is a type of shader graph that you include in other shader graphs. U | [Add inputs and outputs to a Sub Graph](Add-Inputs-Outputs-Sub-Graph.md) | To pass data in and out of a Sub Graph, create input and output ports. | | [Set default inputs for a Sub Graph](Sub-Graph-Default-Property-Values.md) | Add default values for the inputs of a Sub Graph. | | [Change the behavior of a Sub Graph with a dropdown](Change-Behaviour-Sub-Graph-Dropdown.md) | Add a Dropdown node to change the behavior of a Sub Graph using a dropdown menu. | +| [Expose a Sub Graph property in the Inspector window](Sub-Graph-Promote-Property.md) | Set a property or keyword as belonging to the main shader instead of a Sub Graph. This process is known as | [Sub Graph asset](Sub-graph-Asset.md) | Learn about the Sub Graph asset. | ## Additional resources diff --git a/Packages/com.unity.shadergraph/Documentation~/TableOfContents.md b/Packages/com.unity.shadergraph/Documentation~/TableOfContents.md index 82f93c41af4..d9ec437d164 100644 --- a/Packages/com.unity.shadergraph/Documentation~/TableOfContents.md +++ b/Packages/com.unity.shadergraph/Documentation~/TableOfContents.md @@ -32,6 +32,7 @@ * [Add inputs and outputs to a Sub Graph](Add-Inputs-Outputs-Sub-Graph.md) * [Set default inputs for a Sub Graph](Sub-Graph-Default-Property-Values.md) * [Change the behaviour of a Sub Graph](Change-Behaviour-Sub-Graph-Dropdown.md) + * [Expose a Sub Graph property in the Inspector window](Sub-Graph-Promote-Property.md) * [Sub Graph asset](Sub-graph-Asset.md) * [Sticky Notes](Sticky-Notes.md) * [Color Modes](Color-Modes.md) From 898b9b6bd64b191cd458826f2e78b76e858feeb7 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Mon, 15 Dec 2025 17:49:06 +0000 Subject: [PATCH 02/27] [Port] [6000.4] docg-7776: Specify how to select block space --- .../Documentation~/Blocks.md | 10 +++++++++- .../spaceable-properties-dropdown-icon.png | Bin 0 -> 11994 bytes .../Documentation~/Properties.md | 8 ++------ .../Documentation~/Systems.md | 9 ++++++--- 4 files changed, 17 insertions(+), 10 deletions(-) create mode 100644 Packages/com.unity.visualeffectgraph/Documentation~/Images/spaceable-properties-dropdown-icon.png diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Blocks.md b/Packages/com.unity.visualeffectgraph/Documentation~/Blocks.md index 1484f6b0e0c..faa75d66170 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Blocks.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Blocks.md @@ -43,10 +43,18 @@ Blocks are essentially Nodes that have a different workflow logic. Blocks are al ## Configuring Blocks -To change the way that the Block looks and behaves, adjust the Block's [Settings](GraphLogicAndPhilosophy.md#settings) in the Node UI or the Inspector. +To change how the Block looks and behaves, adjust the Block's [Settings](GraphLogicAndPhilosophy.md#settings) in the Node UI or the Inspector. For example, if, in the Inspector, you change the Composition Settings of a **Set Velocity** Block from **Overwrite** to **Blend**, this changes the title of the Node to **Blend Velocity** and adds a **Blend** property to the Node UI. +Some Block inputs, such as **Transform**, **Vector**, **Direction**, and **Position**, are [Spaceable Properties](Properties.md#spaceable-properties). Use the dropdown to select the coordinate space in which VFX Graph interprets the values of the Block inputs. VFX Graph automatically converts the value from the selected space to the System's space. If you select **None**, or if both spaces are the same, VFX Graph doesn't perform any conversion. + +![Spaceable Properties dropdown icon: globe (world space), 3D cube (local space), and circle with minus sign (system space)](images/spaceable-properties-dropdown-icon.png) + +**Spaceable Properties dropdown icon** + +For example, a Position type has a Vector3 value and a Spaceable Property. If you set the Spaceable Property to Local [0,1,0], you're referring to the 0,1,0 value in local space. + ## Activation port In addition to its [property](Properties.md) ports, a Block has a special port called the activation port. It is located on the top left of a Block, next to its name. diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Images/spaceable-properties-dropdown-icon.png b/Packages/com.unity.visualeffectgraph/Documentation~/Images/spaceable-properties-dropdown-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..02e793a876ce65cc6e0fa21c0d235e952a61b908 GIT binary patch literal 11994 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

mUC` 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 literal 0 HcmV?d00001 diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Properties.md b/Packages/com.unity.visualeffectgraph/Documentation~/Properties.md index 873e21a49f4..c0062343ceb 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Properties.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Properties.md @@ -47,13 +47,9 @@ To access components in a script, add an underscore before the component name. F ### Spaceable Properties -Spaceable Properties are Property Types that carry **Space information** (Local/World) with its value. This information is used by the graph to perform automatic space transformations when required. +Spaceable Properties are Property Types that carry **Space information** (Local/World) with their values. The VFX Graph uses this information to perform automatic space transformations when required. -Click on the Space Modifier to the left of the Property Field to change it. - -For Example, a Position type carries a Vector3 value and a Spaceable Property. If you set the Spaceable Property to Local [0,1,0], this tells the graph that we refer to the 0,1,0 value in local space. - -Depending on the [System Simulation Space](Systems.md#system-spaces), the value will be automatically transformed to the simulation space if required. +Depending on the [System Simulation Space](Systems.md#system-spaces), the value is automatically transformed to the simulation space if required. > [!TIP] > You can use the Change Space Operator to manually change a Property Space. diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Systems.md b/Packages/com.unity.visualeffectgraph/Documentation~/Systems.md index 8b438bd79fd..5fc168353ec 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Systems.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Systems.md @@ -19,14 +19,17 @@ Some Systems use a simulation space property to define the reference space that * **Local space** Systems simulate the effect locally to the GameObject that holds the [Visual Effect component](VisualEffectComponent.md). * **World space** Systems simulate the effect independently of the GameObject that holds the [Visual Effect component](VisualEffectComponent.md). -Regardless of the System's simulation space, you can use [Spaceable Properties](Properties.md#spaceable-properties) to access Local or World Values. +A VFX System runs in either World or Local space. You set this coordinate space in the Inspector of any context in the system. Changing the space on one context updates it for the whole system. VFX Graph interprets all attributes and operations in this space. ### Setting a System simulation space A System displays its simulation space in the top-right corner of each Context it consists of. This is the System's **simulation space identifier**. The word "Local" in a rounded box stands for "Local space", and the word "World" in a rounded box stands for "World space". If a Context does not use process anything that depends on simulation space, it does not display the simulation space identifier. -To change the simulation space for a System, click the System's simulation space identifier to cycle through the compatible spaces. +To change the simulation space for a System, click the System's simulation space identifier to cycle through the compatible spaces. Because the System space is shared, changing the space on any of its Contexts updates the space for the entire System. ### Simulation space identifiers in Properties -Some [Spaceable Properties](Properties.md) display a smaller version of the simulation space identifier. An "L" in a rounded box stands for "Local space", and a "W" in a rounded box stands for "World space". This does not change the System's simulation space, but instead allows you to express a value in a space that is different from the System's simulation space. For example, a System could simulate in world space but a Property could be a local position. +You can use [Spaceable Properties](Properties.md#spaceable-properties) to select the coordinate space in which VFX Graph interprets the inputs. You can [set spaceable block inputs](Blocks.md) to **Local**, **World**, or **None**: + +- If you select **Local** or **World**, the VFX Graph converts the value from its input space to the System’s space. +- If you select **None**, the value is used as‑is, relative to the System’s current space. From 80d41998536c1e0524ae901c388358fa737f20ab Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Mon, 15 Dec 2025 17:49:07 +0000 Subject: [PATCH 03/27] [Port] [6000.4] Fix BRG,GRD and EG on 16KiB cbuffer limited low end mobiles --- .../ShaderLibrary/UnityDOTSInstancing.hlsl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packages/com.unity.render-pipelines.core/ShaderLibrary/UnityDOTSInstancing.hlsl b/Packages/com.unity.render-pipelines.core/ShaderLibrary/UnityDOTSInstancing.hlsl index b934dac7c25..50b0029512e 100644 --- a/Packages/com.unity.render-pipelines.core/ShaderLibrary/UnityDOTSInstancing.hlsl +++ b/Packages/com.unity.render-pipelines.core/ShaderLibrary/UnityDOTSInstancing.hlsl @@ -294,7 +294,7 @@ void SetupDOTSInstanceSelectMasks() {} #ifdef UNITY_DOTS_INSTANCING_UNIFORM_BUFFER CBUFFER_START(unity_DOTSInstancing_IndirectInstanceVisibility) - float4 unity_DOTSInstancing_IndirectInstanceVisibilityRaw[4096]; + float4 unity_DOTSInstancing_IndirectInstanceVisibilityRaw[1024]; CBUFFER_END #else ByteAddressBuffer unity_DOTSInstancing_IndirectInstanceVisibility; From 0e88e841a9ce74e44006e1be2a8e3edffdcecc3f Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Tue, 16 Dec 2025 01:13:47 +0000 Subject: [PATCH 04/27] [Port] [6000.4] Fix UUM-125596 AcesTonemap() half precision bug --- .../com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl b/Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl index bf20910ed5f..47edf1fb58e 100644 --- a/Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl +++ b/Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl @@ -651,7 +651,7 @@ float3 AcesTonemap(float3 aces) // --- Red modifier --- // half hue = rgb_2_hue(half3(aces)); - half centeredHue = center_hue(hue, RRT_RED_HUE); + float centeredHue = center_hue(hue, RRT_RED_HUE); // UUM-125596 Must be float for subsequent calculations float hueWeight; { //hueWeight = cubic_basis_shaper(centeredHue, RRT_RED_WIDTH); From 34b80209b69e76dc3aa920d4abf93129dcdf82b3 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Tue, 16 Dec 2025 08:23:35 +0000 Subject: [PATCH 05/27] [Port] [6000.4] Graph Settings tab ref page update in Shader Graph docs --- .../Documentation~/Graph-Settings-Tab.md | 44 +++++++++++++----- .../images/GraphSettings_Menu.png | Bin 18408 -> 0 bytes 2 files changed, 32 insertions(+), 12 deletions(-) delete mode 100644 Packages/com.unity.shadergraph/Documentation~/images/GraphSettings_Menu.png diff --git a/Packages/com.unity.shadergraph/Documentation~/Graph-Settings-Tab.md b/Packages/com.unity.shadergraph/Documentation~/Graph-Settings-Tab.md index 949b6a8f959..86443d00ade 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Graph-Settings-Tab.md +++ b/Packages/com.unity.shadergraph/Documentation~/Graph-Settings-Tab.md @@ -1,20 +1,40 @@ -# Graph Settings Tab +# Graph Settings tab reference -## Description +Use the **Graph Settings** tab in the [Graph Inspector](Internal-Inspector.md) window to change settings that affect the current shader graph as a whole. -The **Graph Settings** tab on the [Graph Inspector](Internal-Inspector.md) makes it possible to change settings that affect the Shader Graph as a whole. +## General properties -![](images/GraphSettings_Menu.png) +| Property | Description | +| :--- | :--- | +| **Precision** | Select a default [Precision Mode](Precision-Modes.md) for the entire graph. You can override the precision mode at the node level in your graph. | +| **Preview** | Select your preferred preview mode for the nodes that support preview. The options are:

  • **Inherit**: The Unity Editor automatically selects the preview mode to use.
  • **Preview 2D**: Renders the output of the sub graph as a flat two-dimensional preview.
  • **Preview 3D**: Renders the output of the sub graph on a three-dimensional object such as a sphere.
This property is available only in [sub graphs](Sub-graph.md). | -### Graph Settings options +## Target Settings -| Menu Item | Description | -|:----------|:------------| -| **Precision** | Select **Single** or **Half** from the [Precision](Precision-Modes.md) dropdown menu as the graph's default Precision Mode for the entire graph. | -| **Preview Mode** | Select your preferred preview mode for a node that has a preview from the following options:
  • **Inherit**: The Unity Editor automatically selects the preview mode to use.
  • **Preview 2D**: Renders the output of the Sub Graph as a flat two-dimensional preview.
  • **Preview 3D**: Renders the output of the Sub Graph on a three-dimensional object such as a sphere.
This property is available only when you selected a [Sub Graph](Sub-graph.md). | -| **Active Targets** | A list that contains selected targets. You can add or remove **Active Targets** by selecting the **Add (+)** and **Remove (−)** buttons, respectively.
Shader Graph supports three targets:
  • **Built-in**: Shaders for Unity’s [Built-In Render Pipeline](xref:um-render-pipelines).
  • **Custom Render Texture**: Shaders for updating [Custom Render Textures](Custom-Render-Texture.md).
  • **Universal**: Shaders for the [Universal Render Pipeline](xref:um-shaders-in-universalrp-reference).
The available properties displayed depend on the targets you have added to the list. Refer to the [Shader Material Inspector window properties](xref:um-shaders-in-universalrp-reference) for the respective **Materials** you select for the **Built-in** and **Universal** targets.| +Add or remove graph targets to the current shader graph and set target properties according to the selected material type. + +### Active Targets + +A list that contains the [graph targets](Graph-Target.md) selected for the current shader graph. Select the **Add (+)** and **Remove (−)** buttons to add or remove **Active Targets**. + +Shader Graph supports the following target types: +* **Custom Render Texture**: Shaders for updating [Custom Render Textures](Custom-Render-Texture.md). +* **Built-in**: Shaders for Unity’s [Built-In Render Pipeline](xref:built-in-render-pipeline). +* **Universal**: Shaders for the [Universal Render Pipeline (URP)](xref:um-universal-render-pipeline), available only if your project uses URP. +* **HDRP**: Shaders for the [High Definition Render Pipeline (HDRP)](xref:high-definition-render-pipeline), available only if your project uses HDRP. + +### Target properties + +Each graph target added in the list of **Active Targets** has its own set of properties. + +| Property | Description | +| :--- | :--- | +| **Material** | Selects a material type for the target. The available options depend on the current target type. | +| Other properties (contextual) | A set of material and shader related properties that correspond to the current target type and the **Material** you select for the target.
  • For Universal Render Pipeline (URP) target properties, refer to [Shader graph material Inspector window reference for URP](xref:um-shaders-in-universalrp-reference).
  • For High Definition Render Pipeline (HDRP) target properties, refer to HDRP's [Shader Graph materials reference](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest/index.html?subfolder=/manual/shader-graph-materials-reference.html).
| +| **Custom Editor GUI** | Renders a custom editor GUI in the Inspector window of the material. Enter the name of the GUI class in the field. For more information, refer to [Control material properties in the Inspector window](xref:um-writing-shader-display-types) and [Custom Editor block in ShaderLab reference](xref:um-sl-custom-editor). | +| **Support VFX Graph** | Enables this shader graph to support the [Visual Effect Graph](https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest) to render particles.
**Note**: This option is only available for certain material types. | ## Additional resources + - [Precision Modes](Precision-Modes.md) -- [Example Custom Render Texture with Shader Graph](Custom-Render-Texture-Example.md) -- [Custom Editor block in ShaderLab reference](xref:um-sl-custom-editor) \ No newline at end of file +- [Graph targets](Graph-Target.md) diff --git a/Packages/com.unity.shadergraph/Documentation~/images/GraphSettings_Menu.png b/Packages/com.unity.shadergraph/Documentation~/images/GraphSettings_Menu.png deleted file mode 100644 index 33717fc6f610277e93bb0b3ea04074ca9df1b56e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18408 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 From 5da2bffe9a7141d9b881d22a87903540f9eec835 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Tue, 16 Dec 2025 11:25:06 +0000 Subject: [PATCH 06/27] [Port] [6000.4] Added a new method to change Global Settings in Player --- .../Runtime/RenderPipeline/HDRenderPipelineAsset.cs | 3 +++ .../Runtime/Data/UniversalRenderPipelineAsset.cs | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineAsset.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineAsset.cs index ce172169257..e52276b40f0 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineAsset.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineAsset.cs @@ -27,6 +27,9 @@ public partial class HDRenderPipelineAsset : RenderPipelineAsset public override string renderPipelineShaderTag => HDRenderPipeline.k_ShaderTagName; + /// + protected override bool requiresCompatibleRenderPipelineGlobalSettings => true; + [System.NonSerialized] internal bool isInOnValidateCall = false; 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 71a76fd3f72..2f22bb209b8 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs @@ -1670,6 +1670,9 @@ public int numIterationsEnclosingSphere /// public override string renderPipelineShaderTag => UniversalRenderPipeline.k_ShaderTagName; + /// + protected override bool requiresCompatibleRenderPipelineGlobalSettings => true; + /// Names used for display of rendering layer masks. [Obsolete("This property is obsolete. Use RenderingLayerMask API and Tags & Layers project settings instead. #from(2023.3)")] public override string[] renderingLayerMaskNames => RenderingLayerMask.GetDefinedRenderingLayerNames(); @@ -2037,5 +2040,6 @@ public bool isStpUsed ; } } + } } From 6407362e68d35a7ed9bf6068ab41031a3000b3ba Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Tue, 16 Dec 2025 17:49:06 +0000 Subject: [PATCH 07/27] [Port] [6000.4] [HDRP] Fix for depth test issue for low-res transparency on certain platforms --- .../Runtime/RenderPipeline/HDRenderPipeline.Prepass.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.Prepass.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.Prepass.cs index 60d8b1f4f3d..8e2e188a3ae 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.Prepass.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.Prepass.cs @@ -1606,7 +1606,7 @@ void DownsampleDepthForLowResTransparency(RenderGraph renderGraph, HDCamera hdCa scaleBias.w = data.loadOffset.y; } natCmd.SetGlobalVector(HDShaderIDs._ScaleBias, scaleBias); - + natCmd.SetGlobalTexture(HDShaderIDs._CameraDepthTexture, data.depthTexture); natCmd.SetViewport(data.viewport); natCmd.DrawProcedural(Matrix4x4.identity, data.downsampleDepthMaterial, 0, MeshTopology.Triangles, 3, 1, null); }); From 3fddc378b13a8a1812e616207349329f00c1c7c6 Mon Sep 17 00:00:00 2001 From: Yohann Vaast Date: Tue, 16 Dec 2025 17:49:07 +0000 Subject: [PATCH 08/27] [Port] [6000.4] Manual backport: fix the FD issue by avoiding pooling of textures --- .../Runtime/RenderGraph/RenderGraph.cs | 10 ++++++++++ .../Runtime/RenderGraph/RenderGraphResourceRegistry.cs | 2 +- .../Runtime/RenderGraph/RenderGraphResources.cs | 6 +++--- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraph.cs b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraph.cs index 4d5627999c0..e2b014d2789 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraph.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraph.cs @@ -118,6 +118,7 @@ public class InternalRenderGraphContext internal RenderGraphPass executingPass; internal NativeRenderPassCompiler.CompilerContextData compilerContext; internal bool contextlessTesting; + internal bool forceResourceCreation; } // InternalRenderGraphContext is public (but all members are internal) @@ -1621,6 +1622,15 @@ public void BeginRecording(in RenderGraphParameters parameters) m_RenderGraphContext.renderGraphPool = m_RenderGraphPool; m_RenderGraphContext.defaultResources = m_DefaultResources; + // With the actual implementation of the Frame Debugger, we cannot re-use resources during the same frame + // or it breaks the rendering of the pass preview, since the FD copies the texture after the execution of the RG. + m_RenderGraphContext.forceResourceCreation = +#if UNITY_EDITOR || DEVELOPMENT_BUILD + FrameDebugger.enabled; +#else + false; +#endif + if (m_DebugParameters.immediateMode) { UpdateCurrentCompiledGraph(graphHash: -1, forceNoCaching: true); diff --git a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraphResourceRegistry.cs b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraphResourceRegistry.cs index 8a21135bec2..95d8f2a14b6 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraphResourceRegistry.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraphResourceRegistry.cs @@ -1017,7 +1017,7 @@ internal bool CreatePooledResource(InternalRenderGraphContext rgContext, int typ var resource = m_RenderGraphResources[type].resourceArray[index]; if (!resource.imported) { - resource.CreatePooledGraphicsResource(); + resource.CreatePooledGraphicsResource(rgContext.forceResourceCreation); if (m_RenderGraphDebug.enableLogging) resource.LogCreation(m_FrameInformationLogger); diff --git a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraphResources.cs b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraphResources.cs index 0a34696ee40..14f0589f409 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraphResources.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraphResources.cs @@ -183,7 +183,7 @@ public virtual bool NeedsFallBack() return requestFallBack && writeCount == 0; } - public virtual void CreatePooledGraphicsResource() { } + public virtual void CreatePooledGraphicsResource(bool forceResourceCreation) { } public virtual void CreateGraphicsResource() { } public virtual void UpdateGraphicsResource() { } public virtual void ReleasePooledGraphicsResource(int frameIndex) { } @@ -231,7 +231,7 @@ public override void ReleaseGraphicsResource() graphicsResource = null; } - public override void CreatePooledGraphicsResource() + public override void CreatePooledGraphicsResource(bool forceResourceCreation) { Debug.Assert(m_Pool != null, "RenderGraphResource: CreatePooledGraphicsResource should only be called for regular pooled resources"); @@ -242,7 +242,7 @@ public override void CreatePooledGraphicsResource() // If the pool doesn't have any available resource that we can use, we will create one // In any case, we will update the graphicsResource name based on the RenderGraph resource name - if (!m_Pool.TryGetResource(hashCode, out graphicsResource)) + if (forceResourceCreation || !m_Pool.TryGetResource(hashCode, out graphicsResource)) { CreateGraphicsResource(); } From 12364014f8a63581f2c4f2aa6f83b5adf5c2ef12 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Tue, 16 Dec 2025 17:49:07 +0000 Subject: [PATCH 09/27] [Port] [6000.4] [VFX] Setup a minimum size for the point cache bake tool window --- .../Utilities/pCache/BakeTool/PointCacheBakeTool.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Packages/com.unity.visualeffectgraph/Editor/Utilities/pCache/BakeTool/PointCacheBakeTool.cs b/Packages/com.unity.visualeffectgraph/Editor/Utilities/pCache/BakeTool/PointCacheBakeTool.cs index e96d7e3be18..6ad60663852 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/Utilities/pCache/BakeTool/PointCacheBakeTool.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/Utilities/pCache/BakeTool/PointCacheBakeTool.cs @@ -1,15 +1,17 @@ -using System.Collections; -using System.Collections.Generic; using UnityEngine; namespace UnityEditor.Experimental.VFX.Utility { partial class PointCacheBakeTool : EditorWindow { + static readonly Vector2 kMinSize = new Vector2(310f, 210f); + [MenuItem("Window/Visual Effects/Utilities/Point Cache Bake Tool", false, 3012)] static void OpenWindow() { - GetWindow(); + var window = GetWindow(); + window.minSize = kMinSize; + window.titleContent = Contents.title; } public enum BakeMode @@ -22,7 +24,6 @@ public enum BakeMode private void OnGUI() { - titleContent = Contents.title; mode = (BakeMode)EditorGUILayout.EnumPopup(Contents.mode, mode); switch (mode) { From 5fa4e79937ff86411cb43b98c7e521f0d7842d57 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Tue, 16 Dec 2025 17:49:07 +0000 Subject: [PATCH 10/27] [Port] [6000.4] [VFX] Fixed group title has a smaller font size when being edited --- .../Editor/GraphView/Elements/VFXGroupNode.cs | 1 + .../Editor/UIResources/uss/VFXGroupNode.uss | 5 +++++ .../Editor/UIResources/uss/VFXGroupNode.uss.meta | 3 +++ 3 files changed, 9 insertions(+) create mode 100644 Packages/com.unity.visualeffectgraph/Editor/UIResources/uss/VFXGroupNode.uss create mode 100644 Packages/com.unity.visualeffectgraph/Editor/UIResources/uss/VFXGroupNode.uss.meta diff --git a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Elements/VFXGroupNode.cs b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Elements/VFXGroupNode.cs index baa53a53bf0..eec93461093 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Elements/VFXGroupNode.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Elements/VFXGroupNode.cs @@ -45,6 +45,7 @@ public VFXGroupNode() RegisterCallback(DragLeave); capabilities |= Capabilities.Ascendable; + this.AddStyleSheetPath("VFXGroupNode"); } public bool CanAcceptDrop() diff --git a/Packages/com.unity.visualeffectgraph/Editor/UIResources/uss/VFXGroupNode.uss b/Packages/com.unity.visualeffectgraph/Editor/UIResources/uss/VFXGroupNode.uss new file mode 100644 index 00000000000..6e41b688096 --- /dev/null +++ b/Packages/com.unity.visualeffectgraph/Editor/UIResources/uss/VFXGroupNode.uss @@ -0,0 +1,5 @@ +.group > .mainContainer > #headerContainer > #titleContainer > #titleField > #unity-text-input { + font-size: 24px; + padding-left: -1px; + -unity-text-align: middle-center; +} diff --git a/Packages/com.unity.visualeffectgraph/Editor/UIResources/uss/VFXGroupNode.uss.meta b/Packages/com.unity.visualeffectgraph/Editor/UIResources/uss/VFXGroupNode.uss.meta new file mode 100644 index 00000000000..557b3abe3b5 --- /dev/null +++ b/Packages/com.unity.visualeffectgraph/Editor/UIResources/uss/VFXGroupNode.uss.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 58ba445e0e3749d8a5a501029e48a007 +timeCreated: 1763648478 \ No newline at end of file From c3939b0b7e44f7d72804f05d15fb9778f9e867a7 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Tue, 16 Dec 2025 17:49:07 +0000 Subject: [PATCH 11/27] [Port] [6000.4] [VFX] Enter key to validate the output context title --- .../Editor/GraphView/Elements/VFXContextUI.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Elements/VFXContextUI.cs b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Elements/VFXContextUI.cs index 1898c81bf7d..60566459201 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Elements/VFXContextUI.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Elements/VFXContextUI.cs @@ -298,6 +298,7 @@ public VFXContextUI() : base("uxml/VFXContext") m_Label = this.Q