Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Internal/master #8116

Merged
merged 52 commits into from
Dec 18, 2024
Merged

Internal/master #8116

merged 52 commits into from
Dec 18, 2024

Conversation

UnityAljosha
Copy link
Collaborator

Please read the Contributing guide before making a PR.

Checklist for PR maker

  • Have you added a backport label (if needed)? For example, the need-backport-* label. After you backport the PR, the label changes to backported-*.
  • Have you updated the changelog? Each package has a CHANGELOG.md file.
  • Have you updated or added the documentation for your PR? When you add a new feature, change a property name, or change the behavior of a feature, it's best practice to include related documentation changes in the same PR. If you do add documentation, make sure to add the relevant Graphics Docs team member as a reviewer of the PR. If you are not sure which person to add, see the Docs team contacts sheet.
  • Have you added a graphic test for your PR (if needed)? When you add a new feature, or discover a bug that tests don't cover, please add a graphic test.

Purpose of this PR

Why is this PR needed, what hard problem is it solving/fixing?


Testing status

Describe what manual/automated tests were performed for this PR


Comments to reviewers

Notes for the reviewers you have assigned.

alelievr and others added 30 commits November 28, 2024 22:50
Fix shader warning in SSS
…6f and 276_RGBA8 in URP PostPro

PR re-enables non-RG testing for 275_ and 276_ in URP PostPro jobs, disabling mem alloc checks for these tests as they reach max capacity of the RTHandle pooling system, generating memory allocation.
This PR fixes not to overwrite the texCoord1 in the lightmap debug mode.
For the lightmap debug mode, the texCoord1 is used for the lightmap UV. But it was overwritten to texCoord0 since terrain is always using uv0.

So, this PR fixed to use the texCoord1 value itself in the debug mode.

Before fixing:
![image](https://github.cds.internal.unity3d.com/unity/unity/assets/6282/13490a9e-2399-42b2-a235-f40828149e44)

After fixing:
![image](https://github.cds.internal.unity3d.com/unity/unity/assets/6282/0fa3776e-a244-45ef-8eaf-712a468cc37b)
Part 6 of minor fixes from feedback tickets 

Jira tickets:

- https://jira.unity3d.com/browse/DOCG-5796 - fix near fade / far fade particle description
- https://jira.unity3d.com/browse/DOCG-4954 - fix typo
- https://jira.unity3d.com/browse/DOCG-5609 - fix formatting
- https://jira.unity3d.com/browse/DOCG-5610 - fix UI steps
- https://jira.unity3d.com/browse/DOCG-5900 - fix order of enabling streaming
- https://jira.unity3d.com/browse/DOCG-5901 - clarify where to find lighting option
This PR's purpose is to add support for spacewarp, an XR feature.

Spacewarp works by drawing motions vectors and depth in specific textures, during a new specific pass (XRDepthMotionPass). So, this requires a new subshader pass to be added to shaders generated by shadergraph, if desired.

The PR adds the necessary code for a new checkbox, as well as code to add the new subshader pass to both Lit and Unlit targets.
…creation

Initial issue was connected to the GRD (UUM-78811). I couldn't replicate the crash in the Building process locally by some reason but there was an another issue. Whenever the project got built it will stop rendering and spam Blitter issue (UUM-83608). 

It appeared because RenderPipeline tried to recreate after an exception but failed and never succeed. Initial exception that was appearing after the Build was 

`InsufficientExecutionStackException: Insufficient stack to continue executing the program safely. This can happen from having too many functions on the call stack or function on the stack using too much stack space.`

It's a bit long but here's the full stack:
```
InsufficientExecutionStackException: Insufficient stack to continue executing the program safely. This can happen from having too many functions on the call stack or function on the stack using too much stack space.
UnityEngine.ScriptableObject.CreateScriptableObjectInstanceFromType (System.Type type, System.Boolean applyDefaultsAndReset) <0x26e75c712f0 + 0x0005a> in <b513437b2c4c4d11b3e96dd48342b628>:0
UnityEngine.ScriptableObject.CreateInstance (System.Type type) (at C:/UnitySrc/unity_review/Runtime/Export/Scripting/ScriptableObject.bindings.cs:35)
UnityEngine.Rendering.VolumeStack.Reload (System.Type[] componentTypes) (at Library/PackageCache/com.unity.render-pipelines.core@637d86e54998/Runtime/Volume/VolumeStack.cs:50)
UnityEngine.Rendering.VolumeManager.CreateStack () (at Library/PackageCache/com.unity.render-pipelines.core@637d86e54998/Runtime/Volume/VolumeManager.cs:331)
UnityEngine.Rendering.HighDefinition.HDCamera.get_volumeStack () (at Library/PackageCache/com.unity.render-pipelines.high-definition@39aaede1aa83/Runtime/RenderPipeline/Camera/HDCamera.cs:133)
UnityEngine.Rendering.HighDefinition.HDCamera.UpdateVolumeAndPhysicalParameters () (at Library/PackageCache/com.unity.render-pipelines.high-definition@39aaede1aa83/Runtime/RenderPipeline/Camera/HDCamera.cs:2227)
UnityEngine.Rendering.HighDefinition.HDCamera.Update (UnityEngine.Rendering.HighDefinition.FrameSettings currentFrameSettings, UnityEngine.Rendering.HighDefinition.HDRenderPipeline hdrp, UnityEngine.Experimental.Rendering.XRPass xrPass, System.Boolean allocateHistoryBuffers) (at Library/PackageCache/com.unity.render-pipelines.high-definition@39aaede1aa83/Runtime/RenderPipeline/Camera/HDCamera.cs:1208)
UnityEngine.Rendering.HighDefinition.HDRenderPipeline.TryCalculateFrameParameters (UnityEngine.Camera camera, UnityEngine.Experimental.Rendering.XRPass xrPass, UnityEngine.Rendering.HighDefinition.HDAdditionalCameraData& additionalCameraData, UnityEngine.Rendering.HighDefinition.HDCamera& hdCamera, UnityEngine.Rendering.ScriptableCullingParameters& cullingParams) (at Library/PackageCache/com.unity.render-pipelines.high-definition@39aaede1aa83/Runtime/RenderPipeline/HDRenderPipeline.cs:2953)
UnityEngine.Rendering.HighDefinition.HDRenderPipeline.PrepareAndCullCamera (UnityEngine.Camera camera, UnityEngine.Experimental.Rendering.XRPass xrPass, System.Boolean cameraRequestedDynamicRes, System.Collections.Generic.List`1[T] renderRequests, UnityEngine.Rendering.ScriptableRenderContext renderContext, UnityEngine.Rendering.HighDefinition.HDRenderPipeline+RenderRequest& renderRequest, UnityEngine.CubemapFace cubemapFace) (at Library/PackageCache/com.unity.render-pipelines.high-definition@39aaede1aa83/Runtime/RenderPipeline/HDRenderPipeline.cs:1478)
UnityEngine.Rendering.HighDefinition.HDRenderPipeline.Render (UnityEngine.Rendering.ScriptableRenderContext renderContext, System.Collections.Generic.List`1[T] cameras) (at Library/PackageCache/com.unity.render-pipelines.high-definition@39aaede1aa83/Runtime/RenderPipeline/HDRenderPipeline.cs:2307)
UnityEngine.Rendering.RenderPipeline.InternalRender (UnityEngine.Rendering.ScriptableRenderContext context, System.Collections.Generic.List`1[T] cameras) (at C:/UnitySrc/unity_review/Runtime/Export/RenderPipeline/RenderPipeline.cs:52)
UnityEngine.Rendering.RenderPipelineManager.DoRenderLoop_Internal (UnityEngine.Rendering.RenderPipelineAsset pipelineAsset, System.IntPtr loopPtr, UnityEngine.Object renderRequest, Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle safety) (at C:/UnitySrc/unity_review/Runtime/Export/RenderPipeline/RenderPipelineManager.cs:152)
UnityEditor.Handles:Internal_DrawCameraWithGrid_Injected(IntPtr, DrawCameraMode, DrawGridParameters&, Boolean, Boolean)
UnityEditor.Handles:Internal_DrawCameraWithGrid(Camera, DrawCameraMode, DrawGridParameters&, Boolean, Boolean)
UnityEditor.Handles:DrawCameraImpl(Rect, Camera, DrawCameraMode, Boolean, DrawGridParameters, Boolean, Boolean, Boolean, GameObject[]) (at C:/UnitySrc/unity_review/Editor/Mono/Handles/Handles.cs:1583)
UnityEditor.Handles:DrawCameraStep1(Rect, Camera, DrawCameraMode, DrawGridParameters, Boolean, Boolean) (at C:/UnitySrc/unity_review/Editor/Mono/Handles/Handles.cs:1606)
UnityEditor.SceneView:DoDrawCamera(Rect, Rect, Boolean&) (at C:/UnitySrc/unity_review/Editor/Mono/SceneView/SceneView.cs:2284)
UnityEditor.SceneView:DoOnGUI() (at C:/UnitySrc/unity_review/Editor/Mono/SceneView/SceneView.cs:2613)
UnityEditor.SceneView:OnSceneGUI() (at C:/UnitySrc/unity_review/Editor/Mono/SceneView/SceneView.cs:2526)
UnityEngine.UIElements.IMGUIContainer:DoOnGUI(Event, Matrix4x4, Rect, Boolean, Rect, Action, Boolean) (at C:/UnitySrc/unity_review/Modules/UIElements/Core/IMGUIContainer.cs:403)
UnityEngine.UIElements.IMGUIContainer:HandleIMGUIEvent(Event, Matrix4x4, Rect, Action, Boolean) (at C:/UnitySrc/unity_review/Modules/UIElements/Core/IMGUIContainer.cs:718)
UnityEngine.UIElements.IMGUIContainer:DoIMGUIRepaint() (at C:/UnitySrc/unity_review/Modules/UIElements/Core/IMGUIContainer.cs:583)
UnityEngine.UIElements.UIR.RenderChainCommand:ExecuteNonDrawMesh(DrawParams, Single, Exception&) (at C:/UnitySrc/unity_review/Modules/UIElements/Core/Renderer/UIRenderer/UIRenderers.cs:128)
UnityEngine.UIElements.UIR.UIRenderDevice:EvaluateChain(RenderChainCommand, Material, Material, Texture, Texture, Single, Exception&) (at C:/UnitySrc/unity_review/Modules/UIElements/Core/Renderer/UIRenderer/UIRenderDevice.cs:990)
UnityEngine.UIElements.UIR.RenderChain:Render() (at C:/UnitySrc/unity_review/Modules/UIElements/Core/Renderer/UIRRenderChain.cs:541)
UnityEngine.UIElements.UIRRepaintUpdater:Render() (at C:/UnitySrc/unity_review/Modules/UIElements/Core/Renderer/UIRRepaintUpdater.cs:124)
UnityEngine.UIElements.BaseVisualElementPanel:Render() (at C:/UnitySrc/unity_review/Modules/UIElements/Core/Panel.cs:719)
UnityEngine.UIElements.Panel:Render() (at C:/UnitySrc/unity_review/Modules/UIElements/Core/Panel.cs:1378)
UnityEditor.UIElements.EditorPanel:Render() (at C:/UnitySrc/unity_review/Modules/UIElementsEditor/EditorPanel.cs:97)
UnityEngine.UIElements.UIElementsUtility:DoDispatch(BaseVisualElementPanel) (at C:/UnitySrc/unity_review/Modules/UIElements/Core/UIElementsUtility.cs:484)
UnityEngine.UIElements.UIElementsUtility:UnityEngine.UIElements.IUIElementsUtility.ProcessEvent(Int32, IntPtr, Boolean&) (at C:/UnitySrc/unity_review/Modules/UIElements/Core/UIElementsUtility.cs:232)
UnityEngine.UIElements.UIEventRegistration:ProcessEvent(Int32, IntPtr) (at C:/UnitySrc/unity_review/Modules/UIElements/Core/UIElementsUtility.cs:76)
UnityEngine.UIElements.<>c:<.cctor>b__1_2(Int32, IntPtr) (at C:/UnitySrc/unity_review/Modules/UIElements/Core/UIElementsUtility.cs:30)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&) (at C:/UnitySrc/unity_review/Modules/IMGUI/GUIUtility.cs:219)
UnityEditor.BuildPipeline:BuildPlayerInternalNoCheck_Injected(String[], ManagedSpanWrapper&, ManagedSpanWrapper&, BuildTargetGroup, BuildTarget, Int32, BuildOptions, String[], Boolean)
UnityEditor.BuildPipeline:BuildPlayerInternalNoCheck(String[], String, String, BuildTargetGroup, BuildTarget, Int32, BuildOptions, String[], Boolean)
UnityEditor.DefaultBuildMethods:BuildPlayer(BuildPlayerOptions) (at C:/UnitySrc/unity_review/Editor/Mono/BuildPlayerWindowBuildMethods.cs:169)
UnityEditor.BuildPlayerWindow:CallBuildMethods(Boolean, BuildOptions) (at C:/UnitySrc/unity_review/Editor/Mono/BuildPlayerWindowBuildMethods.cs:96)
UnityEditor.Build.Profile.BuildProfileModuleUtil:CallInternalBuildMethods(Boolean, BuildOptions) (at C:/UnitySrc/unity_review/Editor/Mono/BuildProfile/BuildProfileModuleUtil.cs:206)
UnityEditor.Build.Profile.BuildProfileWindow:OnBuildButtonClicked(BuildOptions) (at C:/UnitySrc/unity_review/Modules/BuildProfileEditor/BuildProfileWindow.cs:498)
UnityEditor.Build.Profile.BuildProfileWindow:<CreateBuildDropdownButton>b__47_0() (at C:/UnitySrc/unity_review/Modules/BuildProfileEditor/BuildProfileWindow.cs:606)
UnityEditor.GenericMenu:CatchMenu(Object, String[], Int32) (at C:/UnitySrc/unity_review/Editor/Mono/GUI/GenericMenu.cs:127)
```

By looking at this stack we can see that we have a UI update call that triggered in the middle of the Building process. By some reason I couldn't catch Native part of it this time. Usually it goes through GUIView update or through update of camera preview window.
 
As we had Domain Reload before because of the Build to execute Rendering correctly we have to create new Render Pipeline.
This will trigger re-creation of the Volume Stack for Default Volume, for SkyManager and for available cameras in the scene.
For this specific project it's 48 different ScriptableObjects that needs to be created. In some other tests it fails when starts creating for SkyManager. Here it's failing when Camera's ones are creating.

Here we see that it actually fails inside ScriptableObject.CreateInstance method. Usually it succeed here without any issues otherwise we would see that all the time. Changing callstack like moving things around sometimes fix this issue but it's quite unreliable.

To summarize we try to Render in the middle of the Building process. It's not clear why Mono is failing here. It could be that the context behave a bit differently in the Building process or it's occupied with some temp information from Building process. 

It seems there's no benefits to actually update GUIView at this point. Usually this call happens on the empty Scene that are temporary loaded and you will see just empty Skybox there.
This is how GUIVIew update looks when there's an exception
![image](https://media.github.cds.internal.unity3d.com/user/5932/files/ec6c3e5c-f056-4ffb-9c37-07533534e36b)

If there were no exception there will be empty Skybox instead of scene.
Kind of like this
![image](https://media.github.cds.internal.unity3d.com/user/5932/files/0a4e81a9-03d3-4dba-a63f-b12f914a0c95)

I checked 829763 case that was specified in the code and this PR doesn't affect it. It actually doesn't work though.
Part 5 of minor fixes from feedback tickets 

Jira tickets:

- https://jira.unity3d.com/browse/DOCG-5817 - clarify micro shadows
- https://jira.unity3d.com/browse/DOCG-4913 - update HDRP platforms list
- https://jira.unity3d.com/browse/DOCG-6059 - add links about emission
- https://jira.unity3d.com/browse/DOCG-4999 - move OpenVR to correct place
- https://jira.unity3d.com/browse/DOCG-5669 - remove incorrect paragraph about contact shadows
Reenable **5005_PathTracing_Fog**, **5010_PathTracingAlpha** and **5016_PathTracingTiledRendering** after https://github.cds.internal.unity3d.com/unity/unity/pull/52064
…lution.

Jira : [UUM-83862](https://jira.unity3d.com/browse/UUM-83862)

The 'resolution' field of the Reflection Probe is an integer, but it is displayed as an enum value (256, 512, etc.). When comparing two resolution values, they should be treated as integers, but they were being treated as enum values.
Memory corruption / crashes when releasing APV data:  
https://jira.unity3d.com/browse/UUM-76437
Part 6 of minor fixes from feedback tickets 

Jira tickets:

- https://jira.unity3d.com/browse/DOCG-5988 - add shader profiler marker
- https://jira.unity3d.com/browse/DOCG-4938 - fix typo in deferred
- https://jira.unity3d.com/browse/DOCG-5289 - fix typo in STP
- https://jira.unity3d.com/browse/DOCG-6072 - fix typo in SRP intro
- https://jira.unity3d.com/browse/DOCG-6230 - remove unnecessary out-of-date screenshot of HDRP Quality settings
- https://jira.unity3d.com/browse/DOCG-6229 - fix link in Volumetric Clouds docs
- https://jira.unity3d.com/browse/DOCG-6237 - fix link in HDRP ray tracing docs
- https://jira.unity3d.com/browse/DOCG-5647 - remove unnecessary out-of-date screenshot of Lighting Explorer and update text
- https://jira.unity3d.com/browse/DOCG-5131 - fix typo in Fullscreen Blit docs
- https://jira.unity3d.com/browse/DOCG-4958 - remove mention of prefabs on Sub Emitters module reference page
- https://jira.unity3d.com/browse/DOCG-5238 - remove Non Power Of 2 setting wrongly included on Sprite texture page
- https://jira.unity3d.com/browse/DOCG-5957 - correct 'Forward' to 'Forward and Forward+'
- https://jira.unity3d.com/browse/DOCG-6093 - fix type on SSAO page
- https://jira.unity3d.com/browse/DOCG-5381 - add screenshot of Rendering Debugger overlay in Play mode
- https://jira.unity3d.com/browse/DOCG-5373 - replace null conditional / coalesce in custom fall-off code example
- https://jira.unity3d.com/browse/DOCG-5697 - remove link to Projector samples that no longer exist
- https://jira.unity3d.com/browse/DOCG-5453 - remove out-of-date sentence on Access material properties in a script
- https://jira.unity3d.com/browse/DOCG-6150 - fix typo on Compute Shader page
…not needed

This PR enables the shader generation to skip DXR related code when not needed, i.e. when the Enable Ray Tracing flag is disabled on the output.
This results is smaller generated shaders.
Example diff when using a ShaderGraph output : (14816 vs 11539 lines)
![image](https://media.github.cds.internal.unity3d.com/user/2768/files/d1e139cc-75f0-4b9f-bfe9-12e32ec03ca5)
Fix shader sampling color pyramid after distortion.

+ added a new test about all the configuration of color sampling in custom passes at any injection points with dynamic resolution scaling on top of RTHandle scale (simulate multi-camera).
![image](https://media.github.cds.internal.unity3d.com/user/745/files/057175dc-488e-4196-a1f9-892793fc0918)
UUM-90053: Prevent shader warnings when using  the NormalFromTexture node in ShaderGraph
Fix initialization issue with VRS on platforms which don't support full VRS. 
Initialization can now fail explicitly on some platforms and user code has to check init success when using VRS.
…d in GPU Resident Drawer

The PR fixes a missing use case in the GPU Resident Drawer (GRD) when certain changes in material attributes - transparent / opaque, the presence of a motion vector pass in the shader or if it supports indirect draw calls - aren't reflected in the draw instances. They are only taken into account when there is a change in a _MeshRenderer_, in which case the GRD data for that _MeshRenderer_ is discarded and rebuilt with the correct material attributes.

With this PR, changes in these material attributes will properly rebuild the GRD data for all renderers which use the material, even if the MeshRenderer themselves don't change.

Technically, the PR consists of:
- a new method in _GPUDrivenProcessor_ to classify material data which returns their packedMaterialData as well. 
- options to filter out certain data such as localToWorld, which is unnecessary to update when only the material has changed, when using the DispatchRendererData mechanism in GPUDrivenProcessor.
- A cache in _InstanceCullingBatcher_ of the packed material data for each registered material. This is useful to detect changes in them.
- After processing renderers, the GRD processes renderer material changes using this sequence of events:
  -  In the list of changed materials returned by the _ObjectDispatcher_, filter out those who are compatible with the GRD and whose packedMaterialData (the data actually used by the renderer data in the GRD) has changed. That packedMaterialData contains flags indicating if the material is transparent or opaque, supports motion vectors and indirect rendering. That filtering phase is necessary because a number of material changes are detected by the _ObjectDispatcher_ each frame due to post processing materials having their shader properties modified, or possibly any GRD registered material which has a modified shader property. These changes have no impact on the draw instances and should be ignored.
  - If the list of filtered materials is not empty, collect the list of renderers which use the above filtered materials, excluding any renderer which has been already processed because the _ObjectDispatcher_ has notified of changes on it. These will have already been updated on the GRD in a prior phase.
  - If the list of renderers is not empty, collect the list of instances linked to the above renderers and continue to the next step.
  - Destroy the GRD data for these instances (draw batches and draw instances)
  - Recreate the GRD data for these instances and, contrary to the normal update when renderers change, without deallocating / reallocating instances and leaving the transform data intact.
To temporarily disable a rendering layers test scene for Switch
Fix issue [UUM-84977](https://jira.unity3d.com/browse/UUM-84977) where FixAll button is visible even if it cannot fix anything due to issues found requiring manual resolve by user.
Update documentation about new capabilities of CustomHLSL
- Adds entries from new changes in https://github.cds.internal.unity3d.com/unity/unity/pull/46174
- Fix confusion between TextureCube & Cubemap
- Fix SampleTexture definition, the level is explicit
- Implement all snippets using custom HLSL reference for clarity
…d related features

Updates various volume components in URP with better description, code samples and links,
Disabling unstable test that was causing all URP_2D jobs to fail randomly and confuse bisections in QV. This will allow us to re-enable those jobs which are currently globally ignored in this release.
- More accurate descriptions.
- Moved two unexpected public field to internal.
This API has landed in 2023.2 but the chance anybody is using it is very close to zero.
Also, the two fields moved to internal were not serialized, so they could not serve any user purpose anyway.
In VFX graph, GPU events allow particles to spawn particles into another system.
Due to the complexity of handling a list of variable events for different instances, it was excluded from the first instancing pass, disabling instancing for VFX assets that used GPU events.

<img width="860" alt="image" src="https://media.github.cds.internal.unity3d.com/user/2805/files/5c4049c2-03d6-433a-9c67-b958fae40e05">

This PR fixes that problem, allowing instancing regardless of the use of GPU events.
To do so, we need to build a prefix sum of the event count for each instance. Memory for this prefix sum has been reserved in the event count buffer. Currently it contains:
- Event counts: Number of events this frame. 1 per instance
- Total event count: Total number of events from the start. 1 per instance
- Prefix sum(NEW): Accumulated sum of events this frame, grouped by split group. 1 per instance
- Source index: Index where the source data for this event is located. 1 per event, per instance
[event counts (N) | total event counts (N) | prefix sum (N) | source index (N * max event count) ]

On the parent system:
- Each instance produces events and keeps track of its event count and event total count
- The batch update uses a compute shader to accumulate the event count for the entire batch
- After the parent system, FillIndirectArgs compute uses the accumulated event count to produce the dispatch indirect data for children Init

On the child system:
- Split in groups if needed (due to exposed textures, etc)
- Build a prefix sum for every group with the event counts of their instances
- Execute one Init for each split group with DispatchIndirect, with enough threads for the total event count
- Init will use the prefix sum to identify which thread uses which instance
…neration to limit reads from disk

POI : https://jira.unity3d.com/browse/POI-1725

This PR speeds up the Shader Graph shaderpass generation, by implementing a cache for include templates, limiting the amount of disk reads during the shader building.
It also contains a minor optimisation of block indentation, and a replacement of the LINQ `Contains` with an explicit loop to limit the GC allocs.

Before : 
![image](https://media.github.cds.internal.unity3d.com/user/2768/files/90282862-1030-4388-9ec8-1c34885e341a)

After : 
![image](https://media.github.cds.internal.unity3d.com/user/2768/files/35238e34-e995-4ee7-86f3-443169d49046)
Esmeralda Salamone and others added 22 commits December 6, 2024 15:03
Canvas default properties for stencil can conflict with HDRP. However; in this particular case, the property type is the same, so the normal deduplication that occurs is fine as a matter of coincidence. Suppressing the error because it doesn't have any practical impact for users nor is it possible for a user to correct.
Jira: [UUM-75963](https://jira.unity3d.com/browse/UUM-75936)

This PR will fix an error when converting from a node to a subgraphs without any slot.
In case of creating a new subgraphs by creating via Project window (Create > Shader Graph > Sub Graph) with a Vector4 output, it should be fixed from empty slot in output.

I added an new slot into output as initialization with Vector4.

Before:
![image](https://media.github.cds.internal.unity3d.com/user/1406/files/84351d8f-f259-4362-b278-571a7b984d57)

After fix:
![image](https://media.github.cds.internal.unity3d.com/user/1406/files/5c24d7b6-1ef6-47fb-9913-2f0b4bc8fc70)
![image](https://media.github.cds.internal.unity3d.com/user/1406/files/382bf89a-e7c0-41e5-b69f-1bcd4b4ff40a)
Jira: https://jira.unity3d.com/browse/GFXFEAT-813

This PR adds the ability to use bicubic sampling for lightmaps. Bicubic sampling smoothens high-frequency detail by doing more texture taps. This is especially helpful for low resolution lightmaps. Unlike bilinear filtering, which does 4 taps in a 2x2 shape (at the hardware level) and linearly interpolates them, bicubic takes 16 samples in a 4x4 shape and interpolates them using cubic splines. I've reused an existing implementation in SRP core. It uses a technique that does 4 hardware bilinear taps and uses them to get the same information as with 16 taps (see [this post](https://vec3.ca/bicubic-filtering-in-fewer-taps/) for more info).

The sampling strategy is implemented for both regular lightmaps, directional lightmaps and shadowmask textures. It has been exposed as a **global** setting, under the graphics tab. The main motivation for exposing it as a global setting is to not increase the shader variant count. A keyword, `LIGHTMAP_BICUBIC_SAMPLING` was added, but since the setting is global, we either only have variants that use the keyword, or only have variants that don't use the keyword. I've made sure to encode this logic into the variant stripping and prefiltering codepaths of each SRP. The setting is disabled by default.

![Unity_3DeLAXQrq2](https://media.github.cds.internal.unity3d.com/user/2392/files/29103423-166f-4b65-8415-4b9bdcc8b04e)
[POI-1014](https://jira.unity3d.com/browse/POI-1014)

This PR adds a new rendering mode to URP called Deferred+

Deferred+ is a combination of Deferred and Forward+, allowing us to take advantage of the light clustering features provided by Forward+ during the GBuffer laydown pass & the deferred shading pass. In Deferred+ mode, we use Forward+ instead of Forward for the transparent pass and for the forward only opaque pass.

This rendering mode is compatible with DOTS/Entities, GPU Resident Drawer & GPU Occlusion Culling.

Overview of changes:

- New UI for Deferred+ rendering mode
![image](https://media.github.cds.internal.unity3d.com/user/7119/files/927afcd5-aa74-4442-bb37-4631e5ab9054)

- New shaders and variants
    - New ClusterDeferred shader added
    - Cluster light loop variant added to GBuffer passes
    - Added prefiltering/stripping for new shader & variant

- New Render Graph path for Deferred+ lighting pass
    - Full screen pass using new shader & cluster light loop
    - Uses Forward+ for transparent & forward only opaque pass
    - Added support for GPU Occlusion Culling to be injected during GBuffer pass
    - Added fallback support for compatibility mode (falls back to Forward+)
![image](https://media.github.cds.internal.unity3d.com/user/7119/files/d864abbc-dc6b-44e8-b634-c43fc7797efe)

- Consolidated shared functionality between Deferred and Deferred+
    - Refactored GBuffer logic and files to allow for sharing between D/D+
    - Deferred fog logic moved to separate file
    - Deprecation of UnityGBuffer.hlsl include (with fallbacks)
        
- Consolidated shared functionality between Forward+ and Deferred+
    - _FORWARD_PLUS keyword -> _CLUSTER_LIGHT_LOOP keyword
    - Fallback provided so third party shaders remain functional (see Core.hlsl)

- Added new graphics tests for Deferred+ coverage

- Added new documentation for Deferred+
    - Updated Forward+/Deferred docs where there are references to things touched by consolidation work
Add a sample for VisualEffect.SetFloat
Following some discussions with users, we decided to add a small sample scene to use a bit more in depth the caustics and deformation texture.

https://github.cds.internal.unity3d.com/unity/unity/assets/1764/8ae9c5df-511b-4230-9b9f-a0dcdda7d113

Here's the 3 showcases : 
![image](https://github.cds.internal.unity3d.com/unity/unity/assets/1764/02e3bf9a-63bc-4358-a70b-96850eb61c15)

This basically adds very little to the water sample in terms of size since there's no new mesh or textures. 
Before : 23.47mb
After : 24.28mb
- Add CullContext with culling APIs
Variable Rate Shading (VRS) Tier2 support for the HDRP CustomPasses.

Variable Rate Shading is supported only in CustomPasses and on DX12 and Vulkan graphics APIs. VRS also requires support from the target device/GPU.

HDRP VRS integration includes a pre-built custom pass, called VrsCustomPass, for converting a color image into variable rate shading texture for per pixel shading rate control. The pre-built DrawRenderersCustomPass can use the VRS texture to draw with VRS when enabled.

**Jira**: https://jira.unity3d.com/browse/PLATGRAPH-3329
**POI**: https://jira.unity3d.com/browse/POI-1041
Obsolete rendering API that should disappear in the future:
- RenderPipeline.Render (array version)
- RenderPipeline.Begin/EndFrameRendering

Alternative are already in the engine and it just miss the deprecation. A lot of test had to be updated.
Also side fixing some test still using old deprecated API instead of new ways. (not from this PR)

https://jira.unity3d.com/browse/GFXFOUND-420
- Fix wrong GameObject and Animation name
Fix for [Test Playmode HDRP_DXR - StandaloneWindows64 - x64 - DX12 - (Mono) | Win10 - x64](https://unity-ci.cds.internal.unity3d.com/project/3/branch/trunk/jobDefinition/.yamato%2Fgraphics%2Fhdrp-dxr.yml%23test_playmode_hdrp_dxr_-_standalonewindows64_-_x64_-_dx12_-_mono_%7C_win10_-_x64?nav=jobDefinitions) being red since last week.

https://github.cds.internal.unity3d.com/unity/unity/pull/57404 enabled 3 graphics tests after a fix for making the sampling deterministic was implemented. 

I did a bisection in trunk and the PR caused 2 other tests to be unstable:
  5010_PathTracingAlpha - not stable in Standalone
  5012_PathTracing_Transmission - not stable in Standalone
  
- Added some missing shader variants for building Standalone tests.
Improve RenderingLayerMask docs with a code sample, and add more context to the obsolete LightLayers and DecalLayers enums.
Part 9 of minor fixes from feedback tickets 

Jira tickets:

- https://jira.unity3d.com/browse/DOCG-5033 - correct the Smoothstep page
- https://jira.unity3d.com/browse/DOCG-5830 - fix particleId typo
Improve docs and examples of 

IDebugData
DebugManager
DebugUI.
This PR adds support to URP Forward+ Renderer to allow for toggling on/off the usage of the Reflection Probe Atlas regardless of blending.

Before this PR, when using Forward+ Renderer in URP, it forced the user to use the Reflection Probe Atlas when blending is enabled. On low end platforms, the reflection probe atlas is too expensive to sample and blend from. Adding support to toggle on/off it's usage enables users to use Forward+ without paying the cost of using the atlas and still using traditional reflection probe blending provided by the engine.

There is one caveat thought: if the GPU Resident Drawer is used along with Forward+, the Reflection Probe Atlas is required to be turned on, regardless of user setting. This is explained in the tooltip for the toggle. (This is because per-draw reflection probe data is not passed in GRD, but is built into the tile light list for Forward+)

This update also adds a new keyword `_REFLECTION_PROBE_ATLAS` to URP Lit shaders and ShaderGraph that:
- Decouples Reflection Probe Atlas usage from blending
- Is stripped from builds if disabled by all URP Renderers in the build

Tooltip:
<img width="507" alt="f+_tooltip" src="https://media.github.cds.internal.unity3d.com/user/6956/files/db81ccf9-41a4-4613-a6e5-c750008d3875">

With Blending Enabled:
<img width="997" alt="f+_blending_off" src="https://media.github.cds.internal.unity3d.com/user/6956/files/b8ba58ca-02f0-4a3a-ba5a-c298b21af859">

<img width="996" alt="f+_blending_on" src="https://media.github.cds.internal.unity3d.com/user/6956/files/7df902ff-0604-4c02-87b6-82a41b46e94c">

With Blending Disabled:
<img width="994" alt="f+_no_blending_on" src="https://media.github.cds.internal.unity3d.com/user/6956/files/ec1a5913-2804-438c-bc53-fd6e08239eb1">

<img width="992" alt="f+_no_blending_off" src="https://media.github.cds.internal.unity3d.com/user/6956/files/825531b8-9f1d-47a0-8257-f25d8ea1071e">

Jira: https://jira.unity3d.com/browse/GFXFOUND-787
…raExtensions classes.

Updates the documentation for the `UniversalAdditionalCameraData` and `CameraExtensions ` classes.
…nder (context, camera list)

RenderPipeline.Render(context, camera array) is deprecated in favor of RenderPipeline.Render(context, camera list). We have a couple of references to this in SRP Core that need to be updated.

Jira ticket: https://jira.unity3d.com/browse/DOCG-6335
Update Documentation for ReloadAttribute and linked ReloadGroupAttribute and ResourceReloader in RPCore package.
Fix invalid area name (should be Materials instead of Material)
https://jira.unity3d.com/secure/insight/assets/UCW-4415364
@UnityAljosha UnityAljosha requested review from a team as code owners December 18, 2024 10:38
@UnityAljosha UnityAljosha merged commit 3ecf962 into master Dec 18, 2024
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.