Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
da2ab65
[Port] [6000.3] Fix for matrices being overriden due to a reference/c…
svc-reach-platform-support Sep 10, 2025
fc7031d
[Port] [6000.3] Prevent merging passes with texture read/write confli…
svc-reach-platform-support Sep 10, 2025
7c43b68
[Port] [6000.3] [UUM-117002] Fix incorrectly computed transforms and …
svc-reach-platform-support Sep 10, 2025
4f73e32
UUM-117227: Fixed rounding issue causing noisy text when a custom sha…
alexandret-unity Sep 10, 2025
e935bbe
[Port] [6000.3] update VFX to 6.3 beta and update sticky notes color …
svc-reach-platform-support Sep 10, 2025
2686ef1
[Port] [6000.3] Revert Merge PR #74054
kirill-titov-u Sep 10, 2025
89ee6a7
[Port] [6000.3] Local volumetric fog and decal projector icons in the…
svc-reach-platform-support Sep 10, 2025
4532493
[Port] [6000.3] Shader Graph Heatmap color mode details in docs
svc-reach-platform-support Sep 10, 2025
a514c21
[Port] [6000.3] [UUM-116587][UUM-116583][6000.4][URP 2D] Fix Light 2D…
svc-reach-platform-support Sep 11, 2025
7b9b07a
[Port] [6000.3] Screen Space Ambient Occlusion is not visible when th…
svc-reach-platform-support Sep 12, 2025
f28b8f1
[Port] [6000.3] SwitchActiveTexturesToBackbuffer for URP
svc-reach-platform-support Sep 12, 2025
8051279
Disable unstable tests
AngelaDematte Sep 12, 2025
099c2f7
[Port] [6000.3] [XR] SRP On-Tile Post Processing Feature
thomas-zeng Sep 12, 2025
99ef399
[Port] [6000.3] [VFX] Small UI fixes
svc-reach-platform-support Sep 12, 2025
fde3b5f
[Port] [6000.3] Change APV WebGL warning to be non-WebGPU
svc-reach-platform-support Sep 12, 2025
3ec130e
[Port] [6000.3] Use strict RWTexture formats for APV compute shaders
svc-reach-platform-support Sep 12, 2025
2398a3c
[Port] [6000.3] [VFX] Fixed enum field was not set properly and then …
svc-reach-platform-support Sep 16, 2025
40c07fc
[Port] [6000.3] [XR][URP] Remove XR Dynamic resolution code that caus…
svc-reach-platform-support Sep 16, 2025
3b3868c
[content automatically redacted] touching PlatformDependent folder
svc-reach-platform-support Sep 19, 2025
0e4098b
Shorten SurfaceCacheGlobalIlluminationRendererFeature folder name (fi…
urasmus Sep 19, 2025
ce97417
[Port] [6000.3] [UUM-116276][6000.4][2D] Fix Rendering Debug views fo…
svc-reach-platform-support Sep 22, 2025
f222073
[Port] [6000.3] [VFX/SG] Fix Parallax Occlusion Node
svc-reach-platform-support Sep 22, 2025
92b0fa9
[Port] [6000.3] Fix an error (pass breaks) with Volumetric Clouds Com…
svc-reach-platform-support Sep 22, 2025
45c258f
terrain shadergraph documentation - 6000.3 backport
Sep 22, 2025
96de1dd
[Port] [6000.3] Remove the assumption that all or none fog keywords a…
svc-reach-platform-support Sep 22, 2025
3f50327
[Port] [6000.3] URP fix missing intermediate texture
svc-reach-platform-support Sep 23, 2025
62c4b35
Fixed keyword support for UI Toolkit custom shaders
alexandret-unity Sep 23, 2025
9b6d2cd
[Port] [6000.3] Fix asserts in Rendering Debugger > Volumes tab
svc-reach-platform-support Sep 23, 2025
6ae3d06
[Port] [6000.3] [UUM-113119] Fixed specular highlight appearing on te…
svc-reach-platform-support Sep 23, 2025
ca580cb
[Port] [6000.3] Only enable the reflection probe atlas keyword if usi…
svc-reach-platform-support Sep 23, 2025
971ef3c
[Port] [6000.3] [URP] Fix Screen Space Shadows depth precision issue
svc-reach-platform-support Sep 24, 2025
a35faa2
[Port] [6000.3] Fix incorrect render target type in terrain shader
svc-reach-platform-support Sep 24, 2025
8f963d4
[Port] [6000.3] Fix RG Viewer UI refresh slowdown
svc-reach-platform-support Sep 24, 2025
114409d
[Port] [6000.3] Graphics/SRP/HDRP - [UUM-117667] - Fwd port of an asy…
svc-reach-platform-support Sep 24, 2025
6207219
[Port] [6000.3] Volume profile context action fixes
svc-reach-platform-support Sep 25, 2025
4a8e2ec
Backport: Silence Surface Cache shader compilation warnings when swit…
urasmus Sep 26, 2025
111730e
[Port] [6000.3] [VFX/SG] Improve Error with invalid SG Target
svc-reach-platform-support Sep 26, 2025
f104916
[Backport 6000.3] Restrict UV support in UITK MasterNode in ShaderGraph.
ncerone-unity Sep 26, 2025
24ddb99
[Port] [6000.3] [UUM-119296][6000.4] Fix memory regression from Light…
svc-reach-platform-support Sep 26, 2025
61d972b
[Backport 6000.3] Improve Element Texture Size node.
ncerone-unity Sep 26, 2025
6eb6142
[Port] [6000.3] Fixed On-Tile PP issues within the editor
svc-reach-platform-support Sep 26, 2025
4e98c0b
Replace the old input manager by the new Input system
SebastienLa Sep 29, 2025
1b5d021
[Port] [6000.3] Shader Graph : Fixed UUM-120015
svc-reach-platform-support Sep 29, 2025
6eeec8c
[Port] [6000.3] HDRP - Color checker - Fix color fields row wrap mode.
svc-reach-platform-support Sep 29, 2025
0326a16
[Port] [6000.3] Render Pipeline Converter - Readonly Material Convert…
svc-reach-platform-support Sep 29, 2025
a9aa9d3
[Port] [6000.3] URP Fix Texture Mode Force Prepass when depth copy is…
svc-reach-platform-support Sep 29, 2025
e8358d1
[Port] [6000.3] Fixed cloud shadow popping when no directional shadow…
svc-reach-platform-support Sep 29, 2025
f83e938
Merge PR #79350 from uitech/opacity-performance
alexandret-unity Sep 29, 2025
07ee620
[Port] [6000.3] [ShaderGraph] Fix blackboard auto scroll behavior whe…
svc-reach-platform-support Sep 29, 2025
bd74f77
[Port] [6000.3] [Bugfix][URP] Fixed missing shader variant for OnOffs…
svc-reach-platform-support Sep 29, 2025
0b1ef04
[Port] [6000.3] Disable GPUResidentDrawer on VisionOS
svc-reach-platform-support Sep 29, 2025
d095632
[Port] [6000.3] DOCG-7824 Update Core SRP render graph docs
svc-reach-platform-support Sep 29, 2025
f76d975
[Port] [6000.3] [VFX] Removed the expander icon for buffer inputs
svc-reach-platform-support Sep 29, 2025
fa22fb3
[Port] [6000.3] [VFX] Fixed copy paste custom hlsl block was losing i…
svc-reach-platform-support Sep 29, 2025
e4ad016
[Port] [6000.3] [VFX] VFXRAND in custom hlsl was not working
svc-reach-platform-support Sep 29, 2025
ee1b8ec
[Port] [6000.3] [VFX] HLSL compilation issue with comments
svc-reach-platform-support Sep 29, 2025
1e6482e
Removed extraneous shaders from UI Toolkit
alexandret-unity Oct 1, 2025
b0dac4a
[Port][6000.3][SRP] Renderer Shader User Value Sample
remi-chapelain Oct 1, 2025
127869a
[Port] [6000.3] [VFX] Fix SG Output Undo/Redo & Dirty
svc-reach-platform-support Oct 1, 2025
096120f
[Port] [6000.3] [VFX] Fixed an error message because of the node sear…
svc-reach-platform-support Oct 1, 2025
3483b6e
[Port] [6000.3] Shader Graph Terrain Templates
svc-reach-platform-support Oct 1, 2025
bab875a
[Port] [6000.3] UUM-115952: Fixed error in `LensFlareData` Editor
svc-reach-platform-support Oct 1, 2025
31f9b29
[Port] [6000.3] Remove GPUResidentDrawerResources.asset, no longer us…
svc-reach-platform-support Oct 1, 2025
abc320e
Render Pipeline Converter - Allow drop down of the category to show a…
alex-vazquez-unity3d Oct 1, 2025
e4ec64c
[Port] [6000.3] Move the CompositionMode.BeforeColorPyramidAfterCloud…
svc-reach-platform-support Oct 1, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,22 @@
* [Create a simple render loop in a custom render pipeline](srp-creating-simple-render-loop.md)
* [Execute rendering commands in a custom render pipeline](srp-using-scriptable-render-context.md)
* [Scriptable Render Pipeline callbacks reference](srp-callbacks-reference.md)
* [Creating a custom render pipeline using the render graph system](render-graph-system-landing.md)
* [Render graph system](render-graph-system.md)
* [Write a render pipeline with render graph](render-graph-writing-a-render-pipeline.md)
* [Write a render pass using the render graph system](render-graph-write-render-pass.md)
* [Resources in the render graph system](render-graph-resources-landing.md)
* [Introduction to resources in the render graph system](render-graph-resources.md)
* [Blit using the render graph system](render-graph-blit.md)
* [Create a texture in the render graph system](render-graph-create-a-texture.md)
* [Import a texture into the render graph system](render-graph-import-a-texture.md)
* [Access a texture in a render pass](render-graph-read-write-texture.md)
* [Use the CommandBuffer interface in a render graph](render-graph-unsafe-pass.md)
* Camera components
* [Free Camera](Free-Camera.md)
* [Camera Switcher](Camera-Switcher.md)
* [Render Requests](User-Render-Requests.md)
* [Render from another camera inside a camera's rendering loop](in-loop-render-requests.md)
* [Render Graph](render-graph-system.md)
* [Benefits of the render graph system](render-graph-benefits.md)
* [Render graph fundamentals](render-graph-fundamentals.md)
* [Writing a Render Pipeline](render-graph-writing-a-render-pipeline.md)
* [RTHandle system](rthandle-system.md)
* [RTHandle fundamentals](rthandle-system-fundamentals.md)
* [Using the RTHandle system](rthandle-system-using.md)
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Blit using the render graph system in SRP Core

To blit from one texture to another in the render graph system, use the [`AddBlitPass`](https://docs.unity3d.com/Packages/com.unity.render-pipelines.core@17.3/api/UnityEngine.Rendering.RenderGraphModule.Util.RenderGraphUtils.html#UnityEngine_Rendering_RenderGraphModule_Util_RenderGraphUtils_AddBlitPass_UnityEngine_Rendering_RenderGraphModule_RenderGraph_UnityEngine_Rendering_RenderGraphModule_Util_RenderGraphUtils_BlitMaterialParameters_System_String_System_Boolean_) API. The API generates a render pass automatically, so you don't need to use a method like `AddRasterRenderPass`.

Follow these steps:

1. To create a shader and material that works with a blit render pass, from the main menu select **Assets** > **Create** > **Shader** > **SRP Blit Shader**, then create a material from it.

1. Add `using UnityEngine.Rendering.RenderGraphModule.Util` to your render pass script.

1. In your render pass, create a field for the blit material. For example:

```lang-cs
public class MyBlitPass : ScriptableRenderPass
{
Material blitMaterial;
}
```

1. Set up the texture to blit from and blit to. For example:

```lang-cs
TextureHandle sourceTexture = renderGraph.CreateTexture(sourceTextureProperties);
TextureHandle destinationTexture = renderGraph.CreateTexture(destinationTextureProperties);
```

1. To set up the material, textures, and shader pass for the blit operation, create a [`RenderGraphUtils.BlitMaterialParameters`](https://docs.unity3d.com/Packages/com.unity.render-pipelines.core@17.3/api/UnityEngine.Rendering.RenderGraphModule.Util.RenderGraphUtils.BlitMaterialParameters.html) object. For example:

```lang-cs
// Create a BlitMaterialParameters object with the blit material, source texture, destination texture, and shader pass to use.
var blitParams = new RenderGraphUtils.BlitMaterialParameters(sourceTexture, destinationTexture, blitMaterial, 0);
```

1. To add a blit pass, call the [`AddBlitPass`](https://docs.unity3d.com/Packages/com.unity.render-pipelines.core@17.3/api/UnityEngine.Rendering.RenderGraphModule.Util.RenderGraphUtils.html#UnityEngine_Rendering_RenderGraphModule_Util_RenderGraphUtils_AddBlitPass_UnityEngine_Rendering_RenderGraphModule_RenderGraph_UnityEngine_Rendering_RenderGraphModule_Util_RenderGraphUtils_BlitMaterialParameters_System_String_System_Boolean_) method with the blit parameters. For example:

```lang-cs
renderGraph.AddBlitPass(blitParams, "Pass created with AddBlitPass");
```

If you use `AddBlitPass` with a default material, Unity might use the `AddCopyPass` API instead, to optimize the render pass so it accesses the framebuffer from the on-chip memory of the GPU instead of video memory. This process is sometimes called framebuffer fetch. For more information, refer to [`AddCopyPass`](https://docs.unity3d.com/Packages/com.unity.render-pipelines.core@17.3/api/UnityEngine.Rendering.RenderGraphModule.Util.RenderGraphUtils.html#UnityEngine_Rendering_RenderGraphModule_Util_RenderGraphUtils_AddCopyPass_UnityEngine_Rendering_RenderGraphModule_RenderGraph_UnityEngine_Rendering_RenderGraphModule_TextureHandle_UnityEngine_Rendering_RenderGraphModule_TextureHandle_System_String_System_Boolean_) API.

## Customize the render pass

To customize the render pass that the methods generate, for example to change settings or add more resources, call the APIs with the `returnBuilder` parameter set to `true`. The APIs then return the `IBaseRenderGraphBuilder` object that you usually receive as `var builder` from a method like `AddRasterRenderPass`.

For example:

```lang-cs
using (var builder = renderGraph.AddBlitPass(blitParams, "Pass created with AddBlitPass", returnBuilder: true))
{
// Use the builder variable to customize the render pass here.
}
```

## Additional resources

- [The RTHandle System](rthandle-system.md)
- [Shaders](shaders.md)
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Create a texture in the render graph system in SRP Core

To create a texture in the render graph system, use the `CreateTexture` method of the render graph instance.

When you create a texture inside a render pass, the render graph system handles the creation and disposal of the texture. This process means the texture might not exist in the next frame, and other cameras might not be able to use it. To make sure a texture is available across frames and cameras, [import a texture](render-graph-import-a-texture.md) instead.

When the render graph system optimizes the render pipeline, it might not create a texture if the final frame doesn't use the texture, to reduce the memory and bandwidth the render passes use.

## Create a texture

To create a texture, in follow these steps:

1. Create a [`TextureDesc`](xref:UnityEngine.Rendering.RenderGraphModule.TextureDesc) object with the texture properties you need.

2. Use the [`CreateTexture`](xref:UnityEngine.Rendering.RenderGraphModule.RenderGraph.CreateTexture(UnityEngine.Rendering.RenderGraphModule.TextureDesc@)) method of the render graph instance to create a texture and return a texture handle.

For example, the following creates a texture the same size as the screen.

``` lang-cs
void RenderCamera(ScriptableRenderContext context, Camera cameraToRender)
{
...

var textureProperties = new TextureDesc(Vector2.one)
{
colorFormat = GraphicsFormat.R8G8B8A8_UNorm,
width = cameraToRender.pixelWidth,
height = cameraToRender.pixelHeight,
clearBuffer = true,
clearColor = Color.blue,
name = "New render graph Texture",
};

TextureHandle tempTexture = renderGraph.CreateTexture(textureProperties);

...
}
```

You can then [use the texture](render-graph-read-write-texture.md) in the same custom render pass.

The render graph system manages the lifetime of textures you create with `CreateTexture`, so you don't need to manually release the memory they use when you're finished with them.

## Additional resources

- [Import a texture into the render graph system](render-graph-import-a-texture.md)
- [Textures](https://docs.unity3d.com/Manual/Textures.html)

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Import a texture into the render graph system in SRP Core

To use a texture from outside the render graph system, or to make sure a texture is available across frames and cameras, import it into the render graph system using the `ImportTexture` API.

For example, you can import the back buffer, or create a texture that points to a texture in your project, such as a [texture asset](https://docs.unity3d.com/Manual/ImportingTextures.html).

The render graph system doesn't manage the lifetime of imported textures, so it can't optimize the render graph by removing unneeded render passes. Where possible, [Create a texture inside the render graph system](render-graph-create-a-texture) instead, so the render graph system manages its lifetime.

## Import a texture

To import a texture, follow these steps:

1. Create a [RenderTextureDescriptor](https://docs.unity3d.com/ScriptReference/RenderTextureDescriptor.html) object with the texture properties you need.

For example:

``` lang-cs
RenderTextureDescriptor textureProperties = new RenderTextureDescriptor(Screen.width, Screen.height, RenderTextureFormat.Default, 0);
```

2. Use the `RenderTextureDescriptor` to instantiate a new render texture. For example:

```lang-cs
RenderTexture renderTexture = new RenderTexture(textureProperties);
```

3. Create a handle to the render texture. For example:

``` lang-cs
RTHandle renderTextureHandle = RTHandles.Alloc(renderTexture);
```

4. Import the texture, to convert the `RTHandle` object to a `TextureHandle` object the render graph system can use.

For example:

``` lang-cs
TextureHandle texture = renderGraph.ImportTexture(renderTextureHandle);
```

You can then use the `TextureHandle` object to [read from or write to the render texture](render-graph-read-write-texture.md).

<a name="dispose-of-a-render-texture"></a>
### Dispose of the render texture

You must free the memory a render texture uses at the end of a render pass.

For example, you can create the following `Dispose` method:

``` lang-cs
public void Dispose()
{
renderTexture.Release();
}
```

## Additional resources

* [Textures](https://docs.unity3d.com/Manual/Textures.html)
* [The RTHandle system](rthandle-system.md)
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Use a texture in a render pass in SRP Core

You can use the render graph system API to set a texture as an input or output for a custom render pass, so you can read from or write to it.

## Set a texture as an input

To set a texture as an input for a custom render pass, follow these steps:

1. In your pass data, add a texture handle field to the data your pass uses.

For example:

``` lang-cs
// Create the data your pass uses
public class MyPassData
{
// Add a texture handle
public TextureHandle textureToUse;
}
```

2. Set the texture handle to the texture you want to use. For more information, refer to [Create a texture in the render graph system](render-graph-create-a-texture.md) or [Import a texture into the render graph system](render-graph-import-a-texture.md).

3. Call the [`UseTexture`](https://docs.unity3d.com/Packages/com.unity.render-pipelines.core@17.0/api/UnityEngine.Rendering.RenderGraphModule.IBaseRenderGraphBuilder.html#UnityEngine_Rendering_RenderGraphModule_IBaseRenderGraphBuilder_UseTexture_UnityEngine_Rendering_RenderGraphModule_TextureHandle__UnityEngine_Rendering_RenderGraphModule_AccessFlags_) method to set the texture as an input.

For example:

``` lang-cs
builder.UseTexture(passData.textureToUse, AccessFlags.Read);
```

In your `SetRenderFunc` method, you can now use the `TextureHandle` object in the pass data as an input for APIs.

## Set a texture as the render target

To set a texture as the output for APIs, use the [`SetRenderAttachment`](https://docs.unity3d.com/Packages/com.unity.render-pipelines.core@17.0/api/UnityEngine.Rendering.RenderGraphModule.IRasterRenderGraphBuilder.html#UnityEngine_Rendering_RenderGraphModule_IRasterRenderGraphBuilder_SetRenderAttachment_UnityEngine_Rendering_RenderGraphModule_TextureHandle_System_Int32_UnityEngine_Rendering_RenderGraphModule_AccessFlags_) method. The `SetRenderAttachment` method sets the texture as write-only by default.

For example:

```lang-cs
builder.SetRenderAttachment(textureHandle, 0);
```

You don't need to add the texture to your pass data. The render graph system sets up the texture for you automatically before it executes the render pass.

You can't use `UseTexture` and `SetRenderAttachment` on the same texture in a `AddRasterRenderPass` render pass. Refer to [Change the render target during a render pass](#change-the-render-target-during-a-pass) for more information.

<a name="change-the-render-target-during-a-pass"></a>
## Change the render target during a render pass

You can't change which texture Unity writes to during a render graph system render pass.

You can do either of the following instead:

- Create a second custom render pass, and use `builder.SetRenderAttachment` during the second render pass to change the render target.
- Use the `UnsafePass` API so you can use the `SetRenderTarget` API in the `SetRenderFunc` method. For more information, refer to [Use the CommandBuffer interface in a render graph](render-graph-unsafe-pass.md).

You can use these methods to read from and write to the same texture, by first copying from the texture to a temporary texture you create, then copying back.

If you blit between several textures with different properties, rendering might be slow because Unity can't merge the blits into a single native render pass. Use the `AddUnsafePass` API and the `SetRenderTarget()` method instead.
Loading