diff --git a/com.unity.render-pipelines.universal/CHANGELOG.md b/com.unity.render-pipelines.universal/CHANGELOG.md index 19c919115d7..076b0e4c039 100644 --- a/com.unity.render-pipelines.universal/CHANGELOG.md +++ b/com.unity.render-pipelines.universal/CHANGELOG.md @@ -22,6 +22,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Fixed an issue where Unlit and ParticlesUnlit shaders did not have HDR color selection for albedo [case 1283767](https://issuetracker.unity3d.com/issues/built-in-unlit-particle-shader-has-hdr-color-selection-for-albedo-urp-unlit-particles-do-not) - Fixed overwriting of preview camera background color. [case 1357004](https://issuetracker.unity3d.com/product/unity/issues/guid/1361557/) - Fixed ShadowCaster now requires varying normalWS to include changed normals from vertex shader in shader graph. +- Fixed decals to work with native render pass [case 1353141](https://issuetracker.unity3d.com/issues/urp-decals-are-not-visible-in-game-view-after-modifying-urp-asset-properties) +- Fixed decals to work with render scale [1353885](https://issuetracker.unity3d.com/issues/urp-builtin-to-urp-render-pipeline-converter-freezes-the-editor-when-converting-rendering-settings) - Fixed typo in numIterationsEnclosingSphere api name ## [13.0.0] - 2021-09-01 diff --git a/com.unity.render-pipelines.universal/Runtime/Decal/DBuffer/DBufferRenderPass.cs b/com.unity.render-pipelines.universal/Runtime/Decal/DBuffer/DBufferRenderPass.cs index 1f7e3d0e02f..cbb86b1a5be 100644 --- a/com.unity.render-pipelines.universal/Runtime/Decal/DBuffer/DBufferRenderPass.cs +++ b/com.unity.render-pipelines.universal/Runtime/Decal/DBuffer/DBufferRenderPass.cs @@ -24,12 +24,17 @@ internal class DBufferRenderPass : ScriptableRenderPass private int m_DBufferCount; private ProfilingSampler m_ProfilingSampler; + private RenderTargetHandle m_DBufferDepth; + private RenderTargetHandle m_CameraDepthTexture; + private RenderTargetHandle m_CameraDepthAttachment; + internal DeferredLights deferredLights { get; set; } private bool isDeferred => deferredLights != null; internal RenderTargetIdentifier[] dBufferColorIndentifiers { get; private set; } - internal RenderTargetIdentifier dBufferDepthIndentifier { get; private set; } - internal RenderTargetIdentifier cameraDepthTextureIndentifier { get; private set; } - internal RenderTargetIdentifier cameraDepthAttachmentIndentifier { get; private set; } + + internal RenderTargetHandle dBufferDepth => m_DBufferDepth; + internal RenderTargetHandle cameraDepthTexture => m_CameraDepthTexture; + internal RenderTargetHandle cameraDepthAttachment => m_CameraDepthAttachment; public DBufferRenderPass(Material dBufferClear, DBufferSettings settings, DecalDrawDBufferSystem drawSystem) { @@ -51,9 +56,9 @@ public DBufferRenderPass(Material dBufferClear, DBufferSettings settings, DecalD dBufferColorIndentifiers[dbufferIndex] = new RenderTargetIdentifier(s_DBufferNames[dbufferIndex]); m_DBufferCount = dBufferCount; - dBufferDepthIndentifier = new RenderTargetIdentifier(s_DBufferDepthName); - cameraDepthTextureIndentifier = new RenderTargetIdentifier("_CameraDepthTexture"); - cameraDepthAttachmentIndentifier = new RenderTargetIdentifier("_CameraDepthAttachment"); + m_DBufferDepth.Init(s_DBufferDepthName); + m_CameraDepthTexture.Init("_CameraDepthTexture"); + m_CameraDepthAttachment.Init("_CameraDepthAttachment"); } public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderingData) @@ -97,12 +102,12 @@ public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderin depthDesc.depthStencilFormat = renderingData.cameraData.cameraTargetDescriptor.depthStencilFormat; depthDesc.msaaSamples = 1; - cmd.GetTemporaryRT(Shader.PropertyToID(s_DBufferDepthName), depthDesc); - depthIdentifier = dBufferDepthIndentifier; + cmd.GetTemporaryRT(m_DBufferDepth.id, depthDesc); + depthIdentifier = m_DBufferDepth.Identifier(); } else { - depthIdentifier = deferredLights.DepthAttachmentIdentifier; + depthIdentifier = m_CameraDepthAttachment.Identifier(); } ConfigureTarget(dBufferColorIndentifiers, depthIdentifier); @@ -184,7 +189,7 @@ public override void OnCameraCleanup(CommandBuffer cmd) } if (!isDeferred) - cmd.ReleaseTemporaryRT(Shader.PropertyToID(s_DBufferDepthName)); + cmd.ReleaseTemporaryRT(m_DBufferDepth.id); } } } diff --git a/com.unity.render-pipelines.universal/Runtime/RendererFeatures/DecalRendererFeature.cs b/com.unity.render-pipelines.universal/Runtime/RendererFeatures/DecalRendererFeature.cs index fb68deb2ade..66d3e2c0df8 100644 --- a/com.unity.render-pipelines.universal/Runtime/RendererFeatures/DecalRendererFeature.cs +++ b/com.unity.render-pipelines.universal/Runtime/RendererFeatures/DecalRendererFeature.cs @@ -340,7 +340,6 @@ private void RecreateSystemsIfNeeded(ScriptableRenderer renderer, in CameraData m_ScreenSpaceSettings = GetScreenSpaceSettings(); m_CopyDepthMaterial = CoreUtils.CreateEngineMaterial(m_CopyDepthPS); - m_CopyDepthPass = new CopyDepthPass(RenderPassEvent.AfterRenderingPrePasses, m_CopyDepthMaterial); m_DBufferClearMaterial = CoreUtils.CreateEngineMaterial(m_DBufferClear); @@ -370,7 +369,6 @@ private void RecreateSystemsIfNeeded(ScriptableRenderer renderer, in CameraData switch (m_Technique) { case DecalTechnique.ScreenSpace: - m_CopyDepthPass = new CopyDepthPass(RenderPassEvent.AfterRenderingOpaques, m_DBufferClearMaterial); m_DecalDrawScreenSpaceSystem = new DecalDrawScreenSpaceSystem(m_DecalEntityManager); m_ScreenSpaceDecalRenderPass = new DecalScreenSpaceRenderPass(m_ScreenSpaceSettings, intermediateRendering ? m_DecalDrawScreenSpaceSystem : null); break; @@ -379,12 +377,12 @@ private void RecreateSystemsIfNeeded(ScriptableRenderer renderer, in CameraData m_DeferredLights = universalRenderer.deferredLights; - m_CopyDepthPass = new CopyDepthPass(RenderPassEvent.AfterRenderingOpaques, m_DBufferClearMaterial); m_DrawGBufferSystem = new DecalDrawGBufferSystem(m_DecalEntityManager); m_GBufferRenderPass = new DecalGBufferRenderPass(m_ScreenSpaceSettings, intermediateRendering ? m_DrawGBufferSystem : null); break; case DecalTechnique.DBuffer: + m_CopyDepthPass = new CopyDepthPass(RenderPassEvent.AfterRenderingPrePasses, m_CopyDepthMaterial); m_DecalDrawDBufferSystem = new DecalDrawDBufferSystem(m_DecalEntityManager); m_DBufferRenderPass = new DBufferRenderPass(m_DBufferClearMaterial, m_DBufferSettings, m_DecalDrawDBufferSystem); @@ -466,15 +464,17 @@ public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingD if (universalRenderer.actualRenderingMode == RenderingMode.Deferred) { m_CopyDepthPass.Setup( - new RenderTargetHandle(m_DBufferRenderPass.cameraDepthAttachmentIndentifier), - new RenderTargetHandle(m_DBufferRenderPass.cameraDepthTextureIndentifier) + m_DBufferRenderPass.cameraDepthAttachment, + m_DBufferRenderPass.cameraDepthTexture ); + + m_CopyDepthPass.AllocateRT = false; } else { m_CopyDepthPass.Setup( - new RenderTargetHandle(m_DBufferRenderPass.cameraDepthTextureIndentifier), - new RenderTargetHandle(m_DBufferRenderPass.dBufferDepthIndentifier) + m_DBufferRenderPass.cameraDepthTexture, + m_DBufferRenderPass.dBufferDepth ); } m_CopyDepthPass.MssaSamples = 1; diff --git a/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs b/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs index a69f7b6d9d2..7274dc66319 100644 --- a/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs +++ b/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs @@ -218,7 +218,7 @@ void SetPerCameraShaderVariables(CommandBuffer cmd, ref CameraData cameraData) cmd.SetGlobalVector(ShaderPropertyId.zBufferParams, zBufferParams); cmd.SetGlobalVector(ShaderPropertyId.orthoParams, orthoParams); - cmd.SetGlobalVector(ShaderPropertyId.screenSize, new Vector4(cameraWidth, cameraHeight, 1.0f / cameraWidth, 1.0f / cameraHeight)); + cmd.SetGlobalVector(ShaderPropertyId.screenSize, new Vector4(scaledCameraWidth, scaledCameraHeight, 1.0f / scaledCameraWidth, 1.0f / scaledCameraHeight)); } /// diff --git a/com.unity.render-pipelines.universal/Shaders/Decal.shadergraph b/com.unity.render-pipelines.universal/Shaders/Decal.shadergraph index dc29db12650..33276e79bca 100644 --- a/com.unity.render-pipelines.universal/Shaders/Decal.shadergraph +++ b/com.unity.render-pipelines.universal/Shaders/Decal.shadergraph @@ -192,7 +192,8 @@ "serializedMesh": { "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", "m_Guid": "" - } + }, + "preventRotation": false }, "m_Path": "Shader Graphs", "m_GraphPrecision": 1, @@ -329,9 +330,9 @@ "m_CustomColors": { "m_SerializableColors": [] }, - "m_TextureType": 0, + "m_TextureType": 1, "m_NormalMapSpace": 0, - "m_DisableGlobalMipBias": false + "m_EnableGlobalMipBias": true } { @@ -889,7 +890,7 @@ }, "m_TextureType": 0, "m_NormalMapSpace": 0, - "m_DisableGlobalMipBias": false + "m_EnableGlobalMipBias": true } {