diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/CommonAssets/UniversalRPAsset.asset b/TestProjects/UniversalGraphicsTest_Foundation/Assets/CommonAssets/UniversalRPAsset.asset index 1740c534425..317e796c8de 100644 --- a/TestProjects/UniversalGraphicsTest_Foundation/Assets/CommonAssets/UniversalRPAsset.asset +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/CommonAssets/UniversalRPAsset.asset @@ -40,12 +40,14 @@ MonoBehaviour: - {fileID: 11400000, guid: da4df2f1951704ee7aa560ed78d91c24, type: 2} - {fileID: 11400000, guid: efad480a4aa014a0fa578c4c317c3690, type: 2} - {fileID: 11400000, guid: 3f63a62897927184393f03bfcc44365a, type: 2} + - {fileID: 11400000, guid: 784ccd3af7210ab46a0f242f55a1b82a, type: 2} + - {fileID: 11400000, guid: 9ee930dd2506bc346b8db93eb3e10f5f, type: 2} + - {fileID: 11400000, guid: f16bd0dae84882645aaa66c68f2d706f, type: 2} m_DefaultRendererIndex: 0 m_RequireDepthTexture: 1 m_RequireOpaqueTexture: 1 m_OpaqueDownsampling: 1 m_SupportsTerrainHoles: 1 - m_StoreActionsOptimization: 0 m_SupportsHDR: 1 m_MSAA: 4 m_RenderScale: 1 @@ -79,6 +81,7 @@ MonoBehaviour: m_MixedLightingSupported: 0 m_SupportsLightLayers: 0 m_DebugLevel: 0 + m_StoreActionsOptimization: 0 m_UseAdaptivePerformance: 1 m_ColorGradingMode: 0 m_ColorGradingLutSize: 32 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/OpenGLES3/None/250_RenderingLayers.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/OpenGLES3/None/250_RenderingLayers.png new file mode 100644 index 00000000000..546af041756 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/OpenGLES3/None/250_RenderingLayers.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2db13e38f5cd139bd08f46e2b6f6bd9fc3eb1488e51b6ccb519b278f2b8dabd4 +size 98386 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/OpenGLES3/None/250_RenderingLayers.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/OpenGLES3/None/250_RenderingLayers.png.meta new file mode 100644 index 00000000000..0d8fba829e4 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/OpenGLES3/None/250_RenderingLayers.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: ffb757406f431fe4e89151324ceca8dc +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/Vulkan/None/250_RenderingLayers.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/Vulkan/None/250_RenderingLayers.png new file mode 100644 index 00000000000..546af041756 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/Vulkan/None/250_RenderingLayers.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2db13e38f5cd139bd08f46e2b6f6bd9fc3eb1488e51b6ccb519b278f2b8dabd4 +size 98386 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/Vulkan/None/250_RenderingLayers.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/Vulkan/None/250_RenderingLayers.png.meta new file mode 100644 index 00000000000..f06fe2845f6 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/Vulkan/None/250_RenderingLayers.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: 57f8fe137ee2dd842b3f966d8e9a78ff +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/OpenGLCore/None/250_RenderingLayers.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/OpenGLCore/None/250_RenderingLayers.png new file mode 100644 index 00000000000..546af041756 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/OpenGLCore/None/250_RenderingLayers.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2db13e38f5cd139bd08f46e2b6f6bd9fc3eb1488e51b6ccb519b278f2b8dabd4 +size 98386 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/OpenGLCore/None/250_RenderingLayers.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/OpenGLCore/None/250_RenderingLayers.png.meta new file mode 100644 index 00000000000..eb02429d499 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/OpenGLCore/None/250_RenderingLayers.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: 8e2c0d7d5da321049a3a44f56270631e +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/250_RenderingLayers.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/250_RenderingLayers.png new file mode 100644 index 00000000000..546af041756 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/250_RenderingLayers.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2db13e38f5cd139bd08f46e2b6f6bd9fc3eb1488e51b6ccb519b278f2b8dabd4 +size 98386 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/250_RenderingLayers.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/250_RenderingLayers.png.meta new file mode 100644 index 00000000000..460f798701e --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/250_RenderingLayers.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: 5fa81c699b0082a4b92e551b1df73940 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/250_RenderingLayers.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/250_RenderingLayers.png new file mode 100644 index 00000000000..546af041756 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/250_RenderingLayers.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2db13e38f5cd139bd08f46e2b6f6bd9fc3eb1488e51b6ccb519b278f2b8dabd4 +size 98386 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/250_RenderingLayers.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/250_RenderingLayers.png.meta new file mode 100644 index 00000000000..28857893f7a --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/250_RenderingLayers.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: e59bde3cd2ccdaf4899e18194c12b84d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/250_RenderingLayers.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/250_RenderingLayers.png new file mode 100644 index 00000000000..546af041756 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/250_RenderingLayers.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2db13e38f5cd139bd08f46e2b6f6bd9fc3eb1488e51b6ccb519b278f2b8dabd4 +size 98386 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/250_RenderingLayers.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/250_RenderingLayers.png.meta new file mode 100644 index 00000000000..f610df7f243 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/250_RenderingLayers.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: e8c5ac7cc12971f4fb1cbf7b612e52e0 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/OpenGLCore/None/250_RenderingLayers.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/OpenGLCore/None/250_RenderingLayers.png new file mode 100644 index 00000000000..546af041756 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/OpenGLCore/None/250_RenderingLayers.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2db13e38f5cd139bd08f46e2b6f6bd9fc3eb1488e51b6ccb519b278f2b8dabd4 +size 98386 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/OpenGLCore/None/250_RenderingLayers.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/OpenGLCore/None/250_RenderingLayers.png.meta new file mode 100644 index 00000000000..08aa9d601df --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/OpenGLCore/None/250_RenderingLayers.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: d907924d0497b2e4d890320f8e139664 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/Metal/None/250_RenderingLayers.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/Metal/None/250_RenderingLayers.png new file mode 100644 index 00000000000..546af041756 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/Metal/None/250_RenderingLayers.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2db13e38f5cd139bd08f46e2b6f6bd9fc3eb1488e51b6ccb519b278f2b8dabd4 +size 98386 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/Metal/None/250_RenderingLayers.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/Metal/None/250_RenderingLayers.png.meta new file mode 100644 index 00000000000..ccd9c6d4917 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/Metal/None/250_RenderingLayers.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: 8a18a868a8d26954eaf7c398fb2ef2e7 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/OpenGLCore/None/250_RenderingLayers.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/OpenGLCore/None/250_RenderingLayers.png new file mode 100644 index 00000000000..546af041756 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/OpenGLCore/None/250_RenderingLayers.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2db13e38f5cd139bd08f46e2b6f6bd9fc3eb1488e51b6ccb519b278f2b8dabd4 +size 98386 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/OpenGLCore/None/250_RenderingLayers.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/OpenGLCore/None/250_RenderingLayers.png.meta new file mode 100644 index 00000000000..a21fec1f78b --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/OpenGLCore/None/250_RenderingLayers.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: 60a4d3d1dab64154b814256f6f2905e0 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/250_RenderingLayers.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/250_RenderingLayers.png new file mode 100644 index 00000000000..546af041756 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/250_RenderingLayers.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2db13e38f5cd139bd08f46e2b6f6bd9fc3eb1488e51b6ccb519b278f2b8dabd4 +size 98386 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/250_RenderingLayers.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/250_RenderingLayers.png.meta new file mode 100644 index 00000000000..d3e6736a086 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/250_RenderingLayers.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: 221f211c488e8d04e8c7ee3a88733477 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 1 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/250_RenderingLayers.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/250_RenderingLayers.png new file mode 100644 index 00000000000..546af041756 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/250_RenderingLayers.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2db13e38f5cd139bd08f46e2b6f6bd9fc3eb1488e51b6ccb519b278f2b8dabd4 +size 98386 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/250_RenderingLayers.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/250_RenderingLayers.png.meta new file mode 100644 index 00000000000..7dab057efcf --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/250_RenderingLayers.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: 43155163a45f6dd47be0f7164a3da1bc +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/250_RenderingLayers.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/250_RenderingLayers.png new file mode 100644 index 00000000000..546af041756 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/250_RenderingLayers.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2db13e38f5cd139bd08f46e2b6f6bd9fc3eb1488e51b6ccb519b278f2b8dabd4 +size 98386 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/250_RenderingLayers.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/250_RenderingLayers.png.meta new file mode 100644 index 00000000000..d4e7130345d --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/250_RenderingLayers.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: 946ac9c1b4ecd9241b22628fa82a5a60 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/250_RenderingLayers.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/250_RenderingLayers.png new file mode 100644 index 00000000000..546af041756 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/250_RenderingLayers.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2db13e38f5cd139bd08f46e2b6f6bd9fc3eb1488e51b6ccb519b278f2b8dabd4 +size 98386 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/250_RenderingLayers.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/250_RenderingLayers.png.meta new file mode 100644 index 00000000000..92895c6d1cf --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/250_RenderingLayers.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: e51968c9232ed804cb0988f4a516d20b +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D12/None/250_RenderingLayers.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D12/None/250_RenderingLayers.png new file mode 100644 index 00000000000..546af041756 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D12/None/250_RenderingLayers.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2db13e38f5cd139bd08f46e2b6f6bd9fc3eb1488e51b6ccb519b278f2b8dabd4 +size 98386 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D12/None/250_RenderingLayers.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D12/None/250_RenderingLayers.png.meta new file mode 100644 index 00000000000..be6551d0493 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D12/None/250_RenderingLayers.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: ee4513fad4eda874aa6833bdab036116 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Vulkan/None/250_RenderingLayers.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Vulkan/None/250_RenderingLayers.png new file mode 100644 index 00000000000..546af041756 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Vulkan/None/250_RenderingLayers.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2db13e38f5cd139bd08f46e2b6f6bd9fc3eb1488e51b6ccb519b278f2b8dabd4 +size 98386 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Vulkan/None/250_RenderingLayers.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Vulkan/None/250_RenderingLayers.png.meta new file mode 100644 index 00000000000..7bf8c377a24 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Vulkan/None/250_RenderingLayers.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: f3749054d3e4f2d42bc3c33853be27ec +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/iPhonePlayer/Metal/None/250_RenderingLayers.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/iPhonePlayer/Metal/None/250_RenderingLayers.png new file mode 100644 index 00000000000..546af041756 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/iPhonePlayer/Metal/None/250_RenderingLayers.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2db13e38f5cd139bd08f46e2b6f6bd9fc3eb1488e51b6ccb519b278f2b8dabd4 +size 98386 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/iPhonePlayer/Metal/None/250_RenderingLayers.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/iPhonePlayer/Metal/None/250_RenderingLayers.png.meta new file mode 100644 index 00000000000..e043986c8f0 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/iPhonePlayer/Metal/None/250_RenderingLayers.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: 79f4a21f47c9e424c8870df2746a2006 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers.meta new file mode 100644 index 00000000000..9eeaeb98d5f --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a582a7f211b6e2d4f8d2622cc651a395 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers.unity b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers.unity new file mode 100644 index 00000000000..19b2fc000a1 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers.unity @@ -0,0 +1,4136 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 1 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.07 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.18028352, g: 0.22571376, b: 0.30692244, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 112000000, guid: 6e25792a9add91445a531df6ceee4f56, + type: 2} + m_LightingSettings: {fileID: 4890085278179872738, guid: a32da8c6d6cb0be46b491a61649ac0fb, + type: 2} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &28056758 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 28056759} + - component: {fileID: 28056762} + - component: {fileID: 28056761} + - component: {fileID: 28056760} + m_Layer: 0 + m_Name: RenderingLayer (0) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &28056759 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 28056758} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 821834666} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &28056760 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 28056758} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &28056761 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 28056758} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &28056762 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 28056758} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &39935310 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 39935311} + - component: {fileID: 39935314} + - component: {fileID: 39935313} + - component: {fileID: 39935312} + m_Layer: 0 + m_Name: RenderingLayer (0) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &39935311 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39935310} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 955492763} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &39935312 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39935310} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &39935313 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39935310} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 65536 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &39935314 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39935310} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &96109485 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 96109486} + m_Layer: 0 + m_Name: Objects + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &96109486 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 96109485} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 821834666} + - {fileID: 972091999} + - {fileID: 955492763} + - {fileID: 614875259} + m_Father: {fileID: 2197207069389693912} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &107740111 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 107740112} + - component: {fileID: 107740115} + - component: {fileID: 107740114} + - component: {fileID: 107740113} + m_Layer: 0 + m_Name: RenderingLayer (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &107740112 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 107740111} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 955492763} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &107740113 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 107740111} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &107740114 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 107740111} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1048576 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &107740115 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 107740111} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &186724320 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 186724321} + - component: {fileID: 186724324} + - component: {fileID: 186724323} + - component: {fileID: 186724322} + m_Layer: 0 + m_Name: RenderingLayer (0) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &186724321 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 186724320} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 972091999} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &186724322 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 186724320} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &186724323 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 186724320} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 256 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &186724324 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 186724320} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &187805492 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 187805493} + - component: {fileID: 187805496} + - component: {fileID: 187805494} + - component: {fileID: 8387439273542567503} + m_Layer: 0 + m_Name: PrePass + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &187805493 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 187805492} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 963194228} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &187805494 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 187805492} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 0 + m_RequiresOpaqueTextureOption: 0 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: 22 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 1 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 +--- !u!20 &187805496 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 187805492} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0.5 + height: 0.5 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 3.19 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 3875 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!1 &232977485 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 232977486} + - component: {fileID: 232977489} + - component: {fileID: 232977488} + - component: {fileID: 232977487} + m_Layer: 0 + m_Name: RenderingLayer (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &232977486 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 232977485} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 955492763} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &232977487 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 232977485} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &232977488 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 232977485} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 262144 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &232977489 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 232977485} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &274254894 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 274254895} + - component: {fileID: 274254898} + - component: {fileID: 274254897} + - component: {fileID: 274254896} + m_Layer: 0 + m_Name: RenderingLayer (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &274254895 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 274254894} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 5, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 955492763} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &274254896 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 274254894} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &274254897 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 274254894} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 2097152 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &274254898 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 274254894} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &311922699 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 311922700} + - component: {fileID: 311922703} + - component: {fileID: 311922702} + - component: {fileID: 311922701} + m_Layer: 0 + m_Name: RenderingLayer (6) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &311922700 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 311922699} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 6, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 972091999} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &311922701 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 311922699} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &311922702 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 311922699} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 16384 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &311922703 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 311922699} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &437531706 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 437531707} + - component: {fileID: 437531710} + - component: {fileID: 437531709} + - component: {fileID: 437531708} + m_Layer: 0 + m_Name: RenderingLayer (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &437531707 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 437531706} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 5, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 972091999} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &437531708 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 437531706} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &437531709 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 437531706} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 8192 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &437531710 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 437531706} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &505465362 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 505465363} + - component: {fileID: 505465366} + - component: {fileID: 505465365} + - component: {fileID: 505465364} + m_Layer: 0 + m_Name: RenderingLayer (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &505465363 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 505465362} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 5, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 614875259} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &505465364 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 505465362} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &505465365 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 505465362} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 536870912 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &505465366 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 505465362} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &571633252 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 571633253} + - component: {fileID: 571633256} + - component: {fileID: 571633255} + - component: {fileID: 571633254} + m_Layer: 0 + m_Name: RenderingLayer (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &571633253 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 571633252} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 821834666} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &571633254 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 571633252} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &571633255 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 571633252} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 8 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &571633256 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 571633252} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &581526101 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 581526102} + - component: {fileID: 581526105} + - component: {fileID: 581526104} + - component: {fileID: 581526103} + m_Layer: 0 + m_Name: RenderingLayer (7) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &581526102 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 581526101} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 7, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 972091999} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &581526103 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 581526101} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &581526104 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 581526101} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 32768 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &581526105 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 581526101} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &614875258 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 614875259} + m_Layer: 0 + m_Name: Row (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &614875259 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 614875258} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1335117920} + - {fileID: 1046677523} + - {fileID: 638269084} + - {fileID: 651796496} + - {fileID: 931713489} + - {fileID: 505465363} + - {fileID: 899070096} + - {fileID: 1992093578} + m_Father: {fileID: 96109486} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &638269083 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 638269084} + - component: {fileID: 638269087} + - component: {fileID: 638269086} + - component: {fileID: 638269085} + m_Layer: 0 + m_Name: RenderingLayer (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &638269084 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 638269083} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 614875259} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &638269085 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 638269083} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &638269086 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 638269083} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 67108864 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &638269087 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 638269083} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &651796495 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 651796496} + - component: {fileID: 651796499} + - component: {fileID: 651796498} + - component: {fileID: 651796497} + m_Layer: 0 + m_Name: RenderingLayer (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &651796496 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 651796495} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 614875259} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &651796497 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 651796495} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &651796498 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 651796495} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 134217728 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &651796499 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 651796495} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &821834665 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 821834666} + m_Layer: 0 + m_Name: Row + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &821834666 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 821834665} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 28056759} + - {fileID: 1129415854} + - {fileID: 1558001119} + - {fileID: 571633253} + - {fileID: 1279381455} + - {fileID: 1914548690} + - {fileID: 1891749383} + - {fileID: 1808842152} + m_Father: {fileID: 96109486} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &899070095 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 899070096} + - component: {fileID: 899070099} + - component: {fileID: 899070098} + - component: {fileID: 899070097} + m_Layer: 0 + m_Name: RenderingLayer (6) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &899070096 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 899070095} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 6, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 614875259} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &899070097 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 899070095} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &899070098 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 899070095} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1073741824 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &899070099 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 899070095} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &931713488 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 931713489} + - component: {fileID: 931713492} + - component: {fileID: 931713491} + - component: {fileID: 931713490} + m_Layer: 0 + m_Name: RenderingLayer (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &931713489 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 931713488} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 614875259} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &931713490 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 931713488} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &931713491 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 931713488} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 268435456 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &931713492 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 931713488} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &955492762 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 955492763} + m_Layer: 0 + m_Name: Row (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &955492763 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 955492762} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 39935311} + - {fileID: 1527607396} + - {fileID: 232977486} + - {fileID: 1842019397} + - {fileID: 107740112} + - {fileID: 274254895} + - {fileID: 2103686510} + - {fileID: 1541801372} + m_Father: {fileID: 96109486} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &963194225 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 963194228} + m_Layer: 0 + m_Name: Cameras + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &963194228 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 3.5, y: 9, z: 1.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 187805493} + - {fileID: 1553590468} + - {fileID: 2106886058} + m_Father: {fileID: 2197207069389693912} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!1 &972091998 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 972091999} + m_Layer: 0 + m_Name: Row (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &972091999 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 972091998} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 186724321} + - {fileID: 1131093056} + - {fileID: 2019902190} + - {fileID: 1457293302} + - {fileID: 1066332572} + - {fileID: 437531707} + - {fileID: 311922700} + - {fileID: 581526102} + m_Father: {fileID: 96109486} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1046677522 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1046677523} + - component: {fileID: 1046677526} + - component: {fileID: 1046677525} + - component: {fileID: 1046677524} + m_Layer: 0 + m_Name: RenderingLayer (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1046677523 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1046677522} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 614875259} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1046677524 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1046677522} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1046677525 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1046677522} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 33554432 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1046677526 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1046677522} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1066332571 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1066332572} + - component: {fileID: 1066332575} + - component: {fileID: 1066332574} + - component: {fileID: 1066332573} + m_Layer: 0 + m_Name: RenderingLayer (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1066332572 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1066332571} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 972091999} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1066332573 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1066332571} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1066332574 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1066332571} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 4096 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1066332575 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1066332571} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1094763722 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1094763725} + - component: {fileID: 1094763724} + - component: {fileID: 1094763723} + m_Layer: 2 + m_Name: AfterOpques + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!102 &1094763723 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1094763722} + m_Text: Rendering Layer after Opaques + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 0 + m_TabSize: 0 + m_FontSize: 20 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &1094763724 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1094763722} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!4 &1094763725 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1094763722} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.58} + m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!1 &1129415853 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1129415854} + - component: {fileID: 1129415857} + - component: {fileID: 1129415856} + - component: {fileID: 1129415855} + m_Layer: 0 + m_Name: RenderingLayer (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1129415854 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1129415853} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 821834666} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1129415855 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1129415853} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1129415856 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1129415853} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 2 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1129415857 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1129415853} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1131093055 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1131093056} + - component: {fileID: 1131093059} + - component: {fileID: 1131093058} + - component: {fileID: 1131093057} + m_Layer: 0 + m_Name: RenderingLayer (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1131093056 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1131093055} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 972091999} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1131093057 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1131093055} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1131093058 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1131093055} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 512 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1131093059 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1131093055} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1279381454 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1279381455} + - component: {fileID: 1279381458} + - component: {fileID: 1279381457} + - component: {fileID: 1279381456} + m_Layer: 0 + m_Name: RenderingLayer (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1279381455 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1279381454} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 821834666} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1279381456 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1279381454} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1279381457 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1279381454} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 16 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1279381458 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1279381454} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1335117919 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1335117920} + - component: {fileID: 1335117923} + - component: {fileID: 1335117922} + - component: {fileID: 1335117921} + m_Layer: 0 + m_Name: RenderingLayer (0) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1335117920 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1335117919} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 614875259} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1335117921 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1335117919} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1335117922 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1335117919} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 16777216 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1335117923 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1335117919} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1457293301 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1457293302} + - component: {fileID: 1457293305} + - component: {fileID: 1457293304} + - component: {fileID: 1457293303} + m_Layer: 0 + m_Name: RenderingLayer (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1457293302 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1457293301} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 972091999} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1457293303 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1457293301} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1457293304 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1457293301} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 2048 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1457293305 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1457293301} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1480004319 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1480004322} + - component: {fileID: 1480004321} + - component: {fileID: 1480004320} + m_Layer: 1 + m_Name: AfterPrePasses + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!102 &1480004320 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1480004319} + m_Text: Rendering Layer after Pre Passes + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 0 + m_TabSize: 0 + m_FontSize: 20 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &1480004321 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1480004319} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!4 &1480004322 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1480004319} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.58} + m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!1 &1527607395 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1527607396} + - component: {fileID: 1527607399} + - component: {fileID: 1527607398} + - component: {fileID: 1527607397} + m_Layer: 0 + m_Name: RenderingLayer (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1527607396 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1527607395} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 955492763} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1527607397 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1527607395} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1527607398 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1527607395} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 131072 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1527607399 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1527607395} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1541801371 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1541801372} + - component: {fileID: 1541801375} + - component: {fileID: 1541801374} + - component: {fileID: 1541801373} + m_Layer: 0 + m_Name: RenderingLayer (7) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1541801372 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1541801371} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 7, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 955492763} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1541801373 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1541801371} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1541801374 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1541801371} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 8388608 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1541801375 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1541801371} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1553590467 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1553590468} + - component: {fileID: 1553590471} + - component: {fileID: 1553590469} + m_Layer: 0 + m_Name: Opaque + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1553590468 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1553590467} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 963194228} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1553590469 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1553590467} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: 23 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 1 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 +--- !u!20 &1553590471 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1553590467} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0.5 + y: 0 + width: 0.5 + height: 0.5 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 3.19 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 3877 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!1 &1558001118 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1558001119} + - component: {fileID: 1558001122} + - component: {fileID: 1558001121} + - component: {fileID: 1558001120} + m_Layer: 0 + m_Name: RenderingLayer (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1558001119 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1558001118} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 821834666} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1558001120 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1558001118} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1558001121 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1558001118} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 4 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1558001122 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1558001118} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1592210521 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1592210524} + - component: {fileID: 1592210523} + - component: {fileID: 1592210522} + m_Layer: 4 + m_Name: AfterGBuffer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!102 &1592210522 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1592210521} + m_Text: Rendering Layer after GBuffer + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 0 + m_TabSize: 0 + m_FontSize: 20 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &1592210523 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1592210521} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!4 &1592210524 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1592210521} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.58} + m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!1 &1808842151 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1808842152} + - component: {fileID: 1808842155} + - component: {fileID: 1808842154} + - component: {fileID: 1808842153} + m_Layer: 0 + m_Name: RenderingLayer (7) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1808842152 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1808842151} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 7, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 821834666} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1808842153 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1808842151} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1808842154 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1808842151} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 128 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1808842155 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1808842151} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1842019396 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1842019397} + - component: {fileID: 1842019400} + - component: {fileID: 1842019399} + - component: {fileID: 1842019398} + m_Layer: 0 + m_Name: RenderingLayer (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1842019397 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1842019396} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 955492763} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1842019398 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1842019396} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1842019399 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1842019396} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 524288 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1842019400 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1842019396} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1891749382 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1891749383} + - component: {fileID: 1891749386} + - component: {fileID: 1891749385} + - component: {fileID: 1891749384} + m_Layer: 0 + m_Name: RenderingLayer (6) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1891749383 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1891749382} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 6, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 821834666} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1891749384 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1891749382} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1891749385 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1891749382} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 64 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1891749386 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1891749382} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1914548689 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1914548690} + - component: {fileID: 1914548693} + - component: {fileID: 1914548692} + - component: {fileID: 1914548691} + m_Layer: 0 + m_Name: RenderingLayer (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1914548690 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1914548689} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 5, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 821834666} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1914548691 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1914548689} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1914548692 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1914548689} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 32 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1914548693 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1914548689} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1992093577 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1992093578} + - component: {fileID: 1992093581} + - component: {fileID: 1992093580} + - component: {fileID: 1992093579} + m_Layer: 0 + m_Name: RenderingLayer (7) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1992093578 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1992093577} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 7, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 614875259} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1992093579 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1992093577} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1992093580 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1992093577} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 2147483648 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1992093581 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1992093577} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2019902189 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2019902190} + - component: {fileID: 2019902193} + - component: {fileID: 2019902192} + - component: {fileID: 2019902191} + m_Layer: 0 + m_Name: RenderingLayer (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2019902190 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2019902189} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 972091999} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &2019902191 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2019902189} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &2019902192 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2019902189} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1024 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &2019902193 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2019902189} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2103686509 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2103686510} + - component: {fileID: 2103686513} + - component: {fileID: 2103686512} + - component: {fileID: 2103686511} + m_Layer: 0 + m_Name: RenderingLayer (6) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2103686510 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2103686509} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 6, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 955492763} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &2103686511 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2103686509} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &2103686512 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2103686509} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 4194304 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &2103686513 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2103686509} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2106886057 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2106886058} + - component: {fileID: 2106886061} + - component: {fileID: 2106886059} + m_Layer: 0 + m_Name: GBuffer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2106886058 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2106886057} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 963194228} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2106886059 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2106886057} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 0 + m_RequiresOpaqueTextureOption: 0 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: 24 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 1 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 +--- !u!20 &2106886061 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2106886057} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0.5 + width: 0.5 + height: 0.5 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 3.19 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 3889 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &2197207069389693912 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4334929291850010344} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 963194228} + - {fileID: 96109486} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4334929291850010344 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2197207069389693912} + m_Layer: 0 + m_Name: Scene + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &8387439273542567503 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 187805492} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73231aa468d81ea49bc3d914080de185, type: 3} + m_Name: + m_EditorClassIdentifier: + ImageComparisonSettings: + TargetWidth: 1920 + TargetHeight: 1080 + PerPixelCorrectnessThreshold: 0.001 + PerPixelGammaThreshold: 0.003921569 + PerPixelAlphaThreshold: 0.003921569 + AverageCorrectnessThreshold: 0.0025 + IncorrectPixelsThreshold: 0.0000038146973 + UseHDR: 0 + UseBackBuffer: 1 + ImageResolution: 0 + ActiveImageTests: 1 + ActivePixelTests: 7 + WaitFrames: 0 + XRCompatible: 1 + CheckMemoryAllocation: 1 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers.unity.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers.unity.meta new file mode 100644 index 00000000000..8c7681c7905 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 87ee64df2c957224ab067a27a80ea7af +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers/DrawRenderingLayersGBuffer.asset b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers/DrawRenderingLayersGBuffer.asset new file mode 100644 index 00000000000..2d26ecaa2c8 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers/DrawRenderingLayersGBuffer.asset @@ -0,0 +1,75 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-697913549402877259 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0ed5622e99d2626449fa13eba31fe54a, type: 3} + m_Name: RenderingLayerTestFeature + m_EditorClassIdentifier: + m_Active: 1 + m_Shader: {fileID: 4800000, guid: 1c19806167865d546982c2df72fe1cc6, type: 3} + m_Event: 220 + m_MaskSize: 0 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} + m_Name: DrawRenderingLayersGBuffer + m_EditorClassIdentifier: + debugShaders: + debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, + type: 3} + m_RendererFeatures: + - {fileID: -697913549402877259} + m_RendererFeatureMap: b5d2e813538350f6 + m_UseNativeRenderPass: 0 + postProcessData: {fileID: 0} + xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2} + shaders: + blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} + copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} + screenSpaceShadowPS: {fileID: 0} + samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} + stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3} + fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} + materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3} + coreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3} + coreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, + type: 3} + cameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, + type: 3} + objectMotionVector: {fileID: 4800000, guid: 7b3ede40266cd49a395def176e1bc486, + type: 3} + m_AssetVersion: 2 + m_OpaqueLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_TransparentLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_DefaultStencilState: + overrideStencilState: 0 + stencilReference: 0 + stencilCompareFunction: 8 + passOperation: 2 + failOperation: 0 + zFailOperation: 0 + m_ShadowTransparentReceive: 1 + m_RenderingMode: 1 + m_DepthPrimingMode: 0 + m_CopyDepthMode: 1 + m_AccurateGbufferNormals: 0 + m_ClusteredRendering: 0 + m_TileSize: 32 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers/DrawRenderingLayersGBuffer.asset.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers/DrawRenderingLayersGBuffer.asset.meta new file mode 100644 index 00000000000..8acd64cbf9c --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers/DrawRenderingLayersGBuffer.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f16bd0dae84882645aaa66c68f2d706f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers/DrawRenderingLayersOpaque.asset b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers/DrawRenderingLayersOpaque.asset new file mode 100644 index 00000000000..84da51f526a --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers/DrawRenderingLayersOpaque.asset @@ -0,0 +1,75 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-697913549402877259 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0ed5622e99d2626449fa13eba31fe54a, type: 3} + m_Name: RenderingLayerTestFeature + m_EditorClassIdentifier: + m_Active: 1 + m_Shader: {fileID: 4800000, guid: 1c19806167865d546982c2df72fe1cc6, type: 3} + m_Event: 300 + m_MaskSize: 1 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} + m_Name: DrawRenderingLayersOpaque + m_EditorClassIdentifier: + debugShaders: + debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, + type: 3} + m_RendererFeatures: + - {fileID: -697913549402877259} + m_RendererFeatureMap: b5d2e813538350f6 + m_UseNativeRenderPass: 0 + postProcessData: {fileID: 0} + xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2} + shaders: + blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} + copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} + screenSpaceShadowPS: {fileID: 0} + samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} + stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3} + fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} + materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3} + coreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3} + coreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, + type: 3} + cameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, + type: 3} + objectMotionVector: {fileID: 4800000, guid: 7b3ede40266cd49a395def176e1bc486, + type: 3} + m_AssetVersion: 2 + m_OpaqueLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_TransparentLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_DefaultStencilState: + overrideStencilState: 0 + stencilReference: 0 + stencilCompareFunction: 8 + passOperation: 2 + failOperation: 0 + zFailOperation: 0 + m_ShadowTransparentReceive: 1 + m_RenderingMode: 0 + m_DepthPrimingMode: 0 + m_CopyDepthMode: 1 + m_AccurateGbufferNormals: 0 + m_ClusteredRendering: 0 + m_TileSize: 32 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers/DrawRenderingLayersOpaque.asset.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers/DrawRenderingLayersOpaque.asset.meta new file mode 100644 index 00000000000..4a2bb1d3c13 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers/DrawRenderingLayersOpaque.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9ee930dd2506bc346b8db93eb3e10f5f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers/DrawRenderingLayersPrePass.asset b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers/DrawRenderingLayersPrePass.asset new file mode 100644 index 00000000000..a64842fd85e --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers/DrawRenderingLayersPrePass.asset @@ -0,0 +1,75 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-697913549402877259 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0ed5622e99d2626449fa13eba31fe54a, type: 3} + m_Name: RenderingLayerTestFeature + m_EditorClassIdentifier: + m_Active: 1 + m_Shader: {fileID: 4800000, guid: 1c19806167865d546982c2df72fe1cc6, type: 3} + m_Event: 200 + m_MaskSize: 3 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} + m_Name: DrawRenderingLayersPrePass + m_EditorClassIdentifier: + debugShaders: + debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, + type: 3} + m_RendererFeatures: + - {fileID: -697913549402877259} + m_RendererFeatureMap: b5d2e813538350f6 + m_UseNativeRenderPass: 0 + postProcessData: {fileID: 0} + xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2} + shaders: + blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} + copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} + screenSpaceShadowPS: {fileID: 0} + samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} + stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3} + fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} + materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3} + coreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3} + coreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, + type: 3} + cameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, + type: 3} + objectMotionVector: {fileID: 4800000, guid: 7b3ede40266cd49a395def176e1bc486, + type: 3} + m_AssetVersion: 2 + m_OpaqueLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_TransparentLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_DefaultStencilState: + overrideStencilState: 0 + stencilReference: 0 + stencilCompareFunction: 8 + passOperation: 2 + failOperation: 0 + zFailOperation: 0 + m_ShadowTransparentReceive: 1 + m_RenderingMode: 0 + m_DepthPrimingMode: 0 + m_CopyDepthMode: 1 + m_AccurateGbufferNormals: 0 + m_ClusteredRendering: 0 + m_TileSize: 32 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers/DrawRenderingLayersPrePass.asset.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers/DrawRenderingLayersPrePass.asset.meta new file mode 100644 index 00000000000..49113360f4f --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/250_RenderingLayers/DrawRenderingLayersPrePass.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 784ccd3af7210ab46a0f242f55a1b82a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/ProjectSettings/EditorBuildSettings.asset b/TestProjects/UniversalGraphicsTest_Foundation/ProjectSettings/EditorBuildSettings.asset index ddd7586a8b8..27a663a56b4 100644 --- a/TestProjects/UniversalGraphicsTest_Foundation/ProjectSettings/EditorBuildSettings.asset +++ b/TestProjects/UniversalGraphicsTest_Foundation/ProjectSettings/EditorBuildSettings.asset @@ -299,4 +299,7 @@ EditorBuildSettings: - enabled: 1 path: Assets/Scenes/250_ScreenSpaceShadows.unity guid: 0ed880bcaac387e4eaef5f365a545090 + - enabled: 1 + path: Assets/Scenes/250_RenderingLayers.unity + guid: 87ee64df2c957224ab067a27a80ea7af m_configObjects: {} diff --git a/com.unity.render-pipelines.universal/Editor/Decal/DecalPass.template b/com.unity.render-pipelines.universal/Editor/Decal/DecalPass.template index 1a019c30d84..a552aeecb0c 100644 --- a/com.unity.render-pipelines.universal/Editor/Decal/DecalPass.template +++ b/com.unity.render-pipelines.universal/Editor/Decal/DecalPass.template @@ -63,7 +63,9 @@ Pass #endif #if _RENDER_PASS_ENABLED #define GBUFFER3 0 + #define GBUFFER4 1 FRAMEBUFFER_INPUT_HALF(GBUFFER3); + FRAMEBUFFER_INPUT_HALF(GBUFFER4); #endif // Includes $splice(PreGraphIncludes) diff --git a/com.unity.render-pipelines.universal/Editor/Decal/DecalProjectorEditor.Skin.cs b/com.unity.render-pipelines.universal/Editor/Decal/DecalProjectorEditor.Skin.cs index f764176dfb7..f661bd434f8 100644 --- a/com.unity.render-pipelines.universal/Editor/Decal/DecalProjectorEditor.Skin.cs +++ b/com.unity.render-pipelines.universal/Editor/Decal/DecalProjectorEditor.Skin.cs @@ -13,6 +13,7 @@ partial class DecalProjectorEditor static readonly GUIContent k_HeightContent = EditorGUIUtility.TrTextContent("Height", "Sets the height of the projection plan."); static readonly GUIContent k_ProjectionDepthContent = EditorGUIUtility.TrTextContent("Projection Depth", "Sets the projection depth of the projector."); static readonly GUIContent k_MaterialContent = EditorGUIUtility.TrTextContent("Material", "Specifies the Material this component projects as a decal."); + static readonly GUIContent k_DecalLayerMaskContent = EditorGUIUtility.TrTextContent("Decal Layer", "Specify the decal layer mask to use for this projector. RenderingLayerMask of Mesh matching this value will receive the decal. Enable Layers in Decal section of HDRP settings to access it."); static readonly GUIContent k_DistanceContent = EditorGUIUtility.TrTextContent("Draw Distance", "Sets the distance from the Camera at which URP stop rendering the decal."); static readonly GUIContent k_FadeScaleContent = EditorGUIUtility.TrTextContent("Start Fade", "Controls the distance from the Camera at which this component begins to fade the decal out."); static readonly GUIContent k_AngleFadeContent = EditorGUIUtility.TrTextContent("Angle Fade", "Controls the fade out range of the decal based on the angle between the Decal backward direction and the vertex normal of the receiving surface. Requires 'Decal Layers' to be enabled in the URP Asset and Frame Settings."); diff --git a/com.unity.render-pipelines.universal/Editor/Decal/DecalProjectorEditor.cs b/com.unity.render-pipelines.universal/Editor/Decal/DecalProjectorEditor.cs index 5649ddf4f13..5e74e1db2c9 100644 --- a/com.unity.render-pipelines.universal/Editor/Decal/DecalProjectorEditor.cs +++ b/com.unity.render-pipelines.universal/Editor/Decal/DecalProjectorEditor.cs @@ -55,6 +55,7 @@ static void UpdateColorsInHandlesIfRequired() SerializedProperty m_Offset; SerializedProperty[] m_OffsetValues; SerializedProperty m_FadeFactor; + SerializedProperty m_DecalLayerMask; int layerMask => (target as Component).gameObject.layer; bool layerMaskHasMultipleValues @@ -181,6 +182,7 @@ private void OnEnable() m_Offset.FindPropertyRelative("z"), }; m_FadeFactor = serializedObject.FindProperty("m_FadeFactor"); + m_DecalLayerMask = serializedObject.FindProperty("m_DecalLayerMask"); ReinitSavedRatioSizePivotPosition(); } @@ -605,6 +607,8 @@ public override void OnInspectorGUI() EditorGUILayout.PropertyField(m_MaterialProperty, k_MaterialContent); materialChanged = EditorGUI.EndChangeCheck(); + EditorGUILayout.PropertyField(m_DecalLayerMask, k_DecalLayerMaskContent); + foreach (var target in targets) { var decalProjector = target as DecalProjector; diff --git a/com.unity.render-pipelines.universal/Editor/GlobalSettings/SerializedUniversalRenderPipelineGlobalSettings.cs b/com.unity.render-pipelines.universal/Editor/GlobalSettings/SerializedUniversalRenderPipelineGlobalSettings.cs index 1b15d41bfc4..f1b2628f54c 100644 --- a/com.unity.render-pipelines.universal/Editor/GlobalSettings/SerializedUniversalRenderPipelineGlobalSettings.cs +++ b/com.unity.render-pipelines.universal/Editor/GlobalSettings/SerializedUniversalRenderPipelineGlobalSettings.cs @@ -22,6 +22,15 @@ class SerializedUniversalRenderPipelineGlobalSettings : ISerializedRenderPipelin public SerializedProperty lightLayerName6; public SerializedProperty lightLayerName7; + public SerializedProperty decalLayerName0; + public SerializedProperty decalLayerName1; + public SerializedProperty decalLayerName2; + public SerializedProperty decalLayerName3; + public SerializedProperty decalLayerName4; + public SerializedProperty decalLayerName5; + public SerializedProperty decalLayerName6; + public SerializedProperty decalLayerName7; + public SerializedProperty stripDebugVariants; public SerializedProperty stripUnusedPostProcessingVariants; public SerializedProperty stripUnusedVariants; @@ -49,6 +58,15 @@ public SerializedUniversalRenderPipelineGlobalSettings(SerializedObject serializ lightLayerName6 = serializedObject.Find((UniversalRenderPipelineGlobalSettings s) => s.lightLayerName6); lightLayerName7 = serializedObject.Find((UniversalRenderPipelineGlobalSettings s) => s.lightLayerName7); + decalLayerName0 = serializedObject.Find((UniversalRenderPipelineGlobalSettings s) => s.decalLayerName0); + decalLayerName1 = serializedObject.Find((UniversalRenderPipelineGlobalSettings s) => s.decalLayerName1); + decalLayerName2 = serializedObject.Find((UniversalRenderPipelineGlobalSettings s) => s.decalLayerName2); + decalLayerName3 = serializedObject.Find((UniversalRenderPipelineGlobalSettings s) => s.decalLayerName3); + decalLayerName4 = serializedObject.Find((UniversalRenderPipelineGlobalSettings s) => s.decalLayerName4); + decalLayerName5 = serializedObject.Find((UniversalRenderPipelineGlobalSettings s) => s.decalLayerName5); + decalLayerName6 = serializedObject.Find((UniversalRenderPipelineGlobalSettings s) => s.decalLayerName6); + decalLayerName7 = serializedObject.Find((UniversalRenderPipelineGlobalSettings s) => s.decalLayerName7); + stripDebugVariants = serializedObject.FindProperty("m_StripDebugVariants"); stripUnusedPostProcessingVariants = serializedObject.FindProperty("m_StripUnusedPostProcessingVariants"); stripUnusedVariants = serializedObject.FindProperty("m_StripUnusedVariants"); diff --git a/com.unity.render-pipelines.universal/Editor/GlobalSettings/UniversalRenderPipelineGlobalSettingsUI.Drawers.cs b/com.unity.render-pipelines.universal/Editor/GlobalSettings/UniversalRenderPipelineGlobalSettingsUI.Drawers.cs index eeaff687c6f..5591c1b2a37 100644 --- a/com.unity.render-pipelines.universal/Editor/GlobalSettings/UniversalRenderPipelineGlobalSettingsUI.Drawers.cs +++ b/com.unity.render-pipelines.universal/Editor/GlobalSettings/UniversalRenderPipelineGlobalSettingsUI.Drawers.cs @@ -12,7 +12,7 @@ public class DocumentationUrls public static readonly string k_LightLayers = "Light-Layers"; } - #region Rendering Layer Names + #region Light Layer Names static readonly CED.IDrawer LightLayerNamesSection = CED.Group( CED.Group((serialized, owner) => CoreEditorUtils.DrawSectionHeader(Styles.lightLayersLabel, contextAction: pos => OnContextClickLightLayerNames(pos, serialized))), @@ -58,6 +58,52 @@ static void OnContextClickLightLayerNames(Vector2 position, SerializedUniversalR #endregion + #region Decal Layer Names + + static readonly CED.IDrawer DecalLayerNamesSection = CED.Group( + CED.Group((serialized, owner) => CoreEditorUtils.DrawSectionHeader(Styles.decalLayersLabel, contextAction: pos => OnContextClickDecalLayerNames(pos, serialized))), + CED.Group((serialized, owner) => EditorGUILayout.Space()), + CED.Group(DrawDecalLayerNames), + CED.Group((serialized, owner) => EditorGUILayout.Space()) + ); + + static void DrawDecalLayerNames(SerializedUniversalRenderPipelineGlobalSettings serialized, Editor owner) + { + using (new EditorGUI.IndentLevelScope()) + { + using (var changed = new EditorGUI.ChangeCheckScope()) + { + EditorGUILayout.DelayedTextField(serialized.decalLayerName0, Styles.decalLayerName0); + EditorGUILayout.DelayedTextField(serialized.decalLayerName1, Styles.decalLayerName1); + EditorGUILayout.DelayedTextField(serialized.decalLayerName2, Styles.decalLayerName2); + EditorGUILayout.DelayedTextField(serialized.decalLayerName3, Styles.decalLayerName3); + EditorGUILayout.DelayedTextField(serialized.decalLayerName4, Styles.decalLayerName4); + EditorGUILayout.DelayedTextField(serialized.decalLayerName5, Styles.decalLayerName5); + EditorGUILayout.DelayedTextField(serialized.decalLayerName6, Styles.decalLayerName6); + EditorGUILayout.DelayedTextField(serialized.decalLayerName7, Styles.decalLayerName7); + if (changed.changed) + { + serialized.serializedObject?.ApplyModifiedProperties(); + if (serialized.serializedObject?.targetObject is UniversalRenderPipelineGlobalSettings urpGlobalSettings) + urpGlobalSettings.UpdateRenderingLayerNames(); + } + } + } + } + + static void OnContextClickDecalLayerNames(Vector2 position, SerializedUniversalRenderPipelineGlobalSettings serialized) + { + var menu = new GenericMenu(); + menu.AddItem(CoreEditorStyles.resetButtonLabel, false, () => + { + var globalSettings = (serialized.serializedObject.targetObject as UniversalRenderPipelineGlobalSettings); + globalSettings.ResetRenderingLayerNames(); + }); + menu.DropDown(new Rect(position, Vector2.zero)); + } + + #endregion + #region Misc Settings static readonly CED.IDrawer MiscSection = CED.Group( @@ -77,6 +123,7 @@ static void OnContextClickLightLayerNames(Vector2 position, SerializedUniversalR public static readonly CED.IDrawer Inspector = CED.Group( LightLayerNamesSection, + DecalLayerNamesSection, MiscSection ); } diff --git a/com.unity.render-pipelines.universal/Editor/GlobalSettings/UniversalRenderPipelineGlobalSettingsUI.Skin.cs b/com.unity.render-pipelines.universal/Editor/GlobalSettings/UniversalRenderPipelineGlobalSettingsUI.Skin.cs index e44f6027c78..b1c9d58ad05 100644 --- a/com.unity.render-pipelines.universal/Editor/GlobalSettings/UniversalRenderPipelineGlobalSettingsUI.Skin.cs +++ b/com.unity.render-pipelines.universal/Editor/GlobalSettings/UniversalRenderPipelineGlobalSettingsUI.Skin.cs @@ -16,6 +16,16 @@ internal class Styles public static readonly GUIContent lightLayerName6 = EditorGUIUtility.TrTextContent("Light Layer 6", "The display name for Light Layer 6."); public static readonly GUIContent lightLayerName7 = EditorGUIUtility.TrTextContent("Light Layer 7", "The display name for Light Layer 7."); + public static readonly GUIContent decalLayersLabel = EditorGUIUtility.TrTextContent("Decal Layer Names (3D)", "If the Decal Layers feature is enabled in the URP Asset, Unity allocates memory for processing Decal Layers. In the Deferred Rendering Path, this allocation includes an extra render target in GPU memory, which reduces performance."); + public static readonly GUIContent decalLayerName0 = EditorGUIUtility.TrTextContent("Decal Layer 0", "The display name for Decal Layer 0."); + public static readonly GUIContent decalLayerName1 = EditorGUIUtility.TrTextContent("Decal Layer 1", "The display name for Decal Layer 1."); + public static readonly GUIContent decalLayerName2 = EditorGUIUtility.TrTextContent("Decal Layer 2", "The display name for Decal Layer 2."); + public static readonly GUIContent decalLayerName3 = EditorGUIUtility.TrTextContent("Decal Layer 3", "The display name for Decal Layer 3."); + public static readonly GUIContent decalLayerName4 = EditorGUIUtility.TrTextContent("Decal Layer 4", "The display name for Decal Layer 4."); + public static readonly GUIContent decalLayerName5 = EditorGUIUtility.TrTextContent("Decal Layer 5", "The display name for Decal Layer 5."); + public static readonly GUIContent decalLayerName6 = EditorGUIUtility.TrTextContent("Decal Layer 6", "The display name for Decal Layer 6."); + public static readonly GUIContent decalLayerName7 = EditorGUIUtility.TrTextContent("Decal Layer 7", "The display name for Decal Layer 7."); + public static readonly GUIContent stripDebugVariantsLabel = EditorGUIUtility.TrTextContent("Strip Debug Variants", "When disabled, all debug display shader variants are removed when you build for the Unity Player. This decreases build time, but prevents the use of Rendering Debugger in Player builds."); public static readonly GUIContent stripUnusedPostProcessingVariantsLabel = EditorGUIUtility.TrTextContent("Strip Unused Post Processing Variants", "Controls whether strips automatically post processing shader variants based on VolumeProfile components. It strips based on VolumeProfiles in project and not scenes that actually uses it."); public static readonly GUIContent stripUnusedVariantsLabel = EditorGUIUtility.TrTextContent("Strip Unused Variants", "Controls whether strip disabled keyword variants if the feature is enabled."); diff --git a/com.unity.render-pipelines.universal/Editor/RendererFeatures/DecalRendererFeatureEditor.cs b/com.unity.render-pipelines.universal/Editor/RendererFeatures/DecalRendererFeatureEditor.cs index 2f0c6fc88ec..e433180f099 100644 --- a/com.unity.render-pipelines.universal/Editor/RendererFeatures/DecalRendererFeatureEditor.cs +++ b/com.unity.render-pipelines.universal/Editor/RendererFeatures/DecalRendererFeatureEditor.cs @@ -11,6 +11,7 @@ private struct Styles { public static GUIContent Technique = EditorGUIUtility.TrTextContent("Technique", "This option determines what method is used for rendering decals."); public static GUIContent MaxDrawDistance = EditorGUIUtility.TrTextContent("Max Draw Distance", "Maximum global draw distance of decals."); + public static GUIContent DecalLayers = EditorGUIUtility.TrTextContent("Decal Layers", "When enabled, URP allocates Shader variants and memory to the decals layers buffer. This allows you to use decal layers in this Renderer."); public static GUIContent SurfaceData = EditorGUIUtility.TrTextContent("Surface Data", "Allows specifying which decals surface data should be blended with surfaces."); public static GUIContent NormalBlend = EditorGUIUtility.TrTextContent("Normal Blend", "Controls the quality of normal reconstruction. The higher the value the more accurate normal reconstruction and the cost on performance."); public static GUIContent UseGBuffer = EditorGUIUtility.TrTextContent("Use GBuffer", "Uses traditional GBuffer decals, if renderer is set to deferred. Support only base color, normal and emission. Ignored when using forward rendering."); @@ -18,6 +19,7 @@ private struct Styles private SerializedProperty m_Technique; private SerializedProperty m_MaxDrawDistance; + private SerializedProperty m_DecalLayers; private SerializedProperty m_DBufferSettings; private SerializedProperty m_DBufferSurfaceData; private SerializedProperty m_ScreenSpaceSettings; @@ -33,6 +35,7 @@ private void Init() SerializedProperty settings = serializedObject.FindProperty("m_Settings"); m_Technique = settings.FindPropertyRelative("technique"); m_MaxDrawDistance = settings.FindPropertyRelative("maxDrawDistance"); + m_DecalLayers = settings.FindPropertyRelative("decalLayers"); m_DBufferSettings = settings.FindPropertyRelative("dBufferSettings"); m_DBufferSurfaceData = m_DBufferSettings.FindPropertyRelative("surfaceData"); m_ScreenSpaceSettings = settings.FindPropertyRelative("screenSpaceSettings"); @@ -67,6 +70,7 @@ public override void OnInspectorGUI() } EditorGUILayout.PropertyField(m_MaxDrawDistance, Styles.MaxDrawDistance); + EditorGUILayout.PropertyField(m_DecalLayers, Styles.DecalLayers); } private void ValidateGraphicsApis() diff --git a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/DepthNormalsOnlyPass.hlsl b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/DepthNormalsOnlyPass.hlsl index 674d0fbb775..0debb794a7b 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/DepthNormalsOnlyPass.hlsl +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/DepthNormalsOnlyPass.hlsl @@ -10,7 +10,13 @@ PackedVaryings vert(Attributes input) return packedOutput; } -half4 frag(PackedVaryings packedInput) : SV_TARGET +void frag( + PackedVaryings packedInput + , out half4 outNormalWS : SV_Target0 +#ifdef _WRITE_RENDERING_LAYERS + , out float4 outRenderingLayers : SV_Target1 +#endif +) { Varyings unpacked = UnpackVaryings(packedInput); UNITY_SETUP_INSTANCE_ID(unpacked); @@ -26,7 +32,7 @@ half4 frag(PackedVaryings packedInput) : SV_TARGET float2 octNormalWS = PackNormalOctQuadEncode(normalWS); // values between [-1, +1], must use fp32 on some platforms float2 remappedOctNormalWS = saturate(octNormalWS * 0.5 + 0.5); // values between [ 0, 1] half3 packedNormalWS = PackFloat2To888(remappedOctNormalWS); // values between [ 0, 1] - return half4(packedNormalWS, 0.0); + outNormalWS = half4(packedNormalWS, 0.0); #else // Retrieve the normal from the bump map or mesh normal #if defined(_NORMALMAP) @@ -44,7 +50,12 @@ half4 frag(PackedVaryings packedInput) : SV_TARGET float3 normalWS = unpacked.normalWS; #endif - return half4(NormalizeNormalPerPixel(normalWS), 0.0); + outNormalWS = half4(NormalizeNormalPerPixel(normalWS), 0.0); + #endif + + #ifdef _WRITE_RENDERING_LAYERS + uint renderingLayers = GetMeshRenderingLayer(); + outRenderingLayers = float4(EncodeMeshRenderingLayer(renderingLayers), 0, 0, 0); #endif } diff --git a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/PBRForwardPass.hlsl b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/PBRForwardPass.hlsl index c64f08bc7cd..ebf56c3ac58 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/PBRForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/PBRForwardPass.hlsl @@ -63,7 +63,13 @@ PackedVaryings vert(Attributes input) return packedOutput; } -half4 frag(PackedVaryings packedInput) : SV_TARGET +void frag( + PackedVaryings packedInput + , out half4 outColor : SV_Target0 +#ifdef _WRITE_RENDERING_LAYERS + , out float4 outRenderingLayers : SV_Target1 +#endif +) { Varyings unpacked = UnpackVaryings(packedInput); UNITY_SETUP_INSTANCE_ID(unpacked); @@ -123,5 +129,10 @@ half4 frag(PackedVaryings packedInput) : SV_TARGET half4 color = UniversalFragmentPBR(inputData, surface); color.rgb = MixFog(color.rgb, inputData.fogCoord); - return color; + outColor = color; + +#ifdef _WRITE_RENDERING_LAYERS + uint renderingLayers = GetMeshRenderingLayer(); + outRenderingLayers = float4(EncodeMeshRenderingLayer(renderingLayers), 0, 0, 0); +#endif } diff --git a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPassDecal.hlsl b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPassDecal.hlsl index f09ca395b11..55216469497 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPassDecal.hlsl +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPassDecal.hlsl @@ -36,6 +36,10 @@ #define DECAL_LOAD_NORMAL #endif +#ifdef _DECAL_LAYERS +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareRenderingLayerTexture.hlsl" +#endif + #if defined(DECAL_LOAD_NORMAL) #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareNormalsTexture.hlsl" #endif @@ -179,6 +183,17 @@ void Frag(PackedVaryings packedInput, half angleFadeFactor = 1.0; +#ifdef _DECAL_LAYERS +#ifdef _RENDER_PASS_ENABLED + uint surfaceRenderingLayer = DecodeMeshRenderingLayer(LOAD_FRAMEBUFFER_INPUT(GBUFFER4, input.positionCS.xy).r); +#else + uint surfaceRenderingLayer = LoadSceneRenderingLayer(input.positionCS.xy); +#endif + uint projectorRenderingLayer = uint(UNITY_ACCESS_INSTANCED_PROP(Decal, _DecalLayerMaskFromDecal)); + clip((surfaceRenderingLayer & projectorRenderingLayer) - 0.1); + +#endif + #if defined(DECAL_PROJECTOR) #if UNITY_REVERSED_Z #if _RENDER_PASS_ENABLED diff --git a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderVariablesDecal.hlsl b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderVariablesDecal.hlsl index df05522f108..49eac3ef53b 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderVariablesDecal.hlsl +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderVariablesDecal.hlsl @@ -1,3 +1,4 @@ UNITY_INSTANCING_BUFFER_START(Decal) UNITY_DEFINE_INSTANCED_PROP(half4x4, _NormalToWorld) +UNITY_DEFINE_INSTANCED_PROP(float, _DecalLayerMaskFromDecal) UNITY_INSTANCING_BUFFER_END(Decal) diff --git a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/UnlitPass.hlsl b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/UnlitPass.hlsl index 81b2657f739..07aaaabb483 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/UnlitPass.hlsl +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/UnlitPass.hlsl @@ -30,7 +30,13 @@ PackedVaryings vert(Attributes input) return packedOutput; } -half4 frag(PackedVaryings packedInput) : SV_TARGET +void frag( + PackedVaryings packedInput + , out half4 outColor : SV_Target0 +#ifdef _WRITE_RENDERING_LAYERS + , out float4 outRenderingLayers : SV_Target1 +#endif +) { Varyings unpacked = UnpackVaryings(packedInput); UNITY_SETUP_INSTANCE_ID(unpacked); @@ -61,5 +67,10 @@ half4 frag(PackedVaryings packedInput) : SV_TARGET half4 finalColor = UniversalFragmentUnlit(inputData, surfaceDescription.BaseColor, alpha); - return finalColor; + outColor = finalColor; + +#ifdef _WRITE_RENDERING_LAYERS + uint renderingLayers = GetMeshRenderingLayer(); + outRenderingLayers = float4(EncodeMeshRenderingLayer(renderingLayers), 0, 0, 0); +#endif } diff --git a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalDecalSubTarget.cs b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalDecalSubTarget.cs index 734fa568b39..f84df8268cf 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalDecalSubTarget.cs +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalDecalSubTarget.cs @@ -99,6 +99,8 @@ public override void Setup(ref TargetSetupContext context) context.AddSubShader(subShader); } + + context.AddSubShader(SubShaders.Decal20); } private void CollectPassRenderState(ref PassDescriptor pass) @@ -309,7 +311,6 @@ public override void GetPropertiesGUI(ref TargetPropertyGUIContext context, Acti #region SubShader static class SubShaders { - // Relies on the order shader passes are declared in DecalSystem.cs public static SubShaderDescriptor Decal = new SubShaderDescriptor() { pipelineTag = UniversalTarget.kPipelineTag, @@ -328,6 +329,19 @@ static class SubShaders { DecalPasses.ScenePicking, new FieldCondition(DecalDefault, true) }, }, }; + + public static SubShaderDescriptor Decal20 = new SubShaderDescriptor() + { + pipelineTag = UniversalTarget.kPipelineTag, + customTags = "\"PreviewType\"=\"Plane\"", + generatesPreview = true, + passes = new PassCollection + { + { DecalPasses.ScreenSpaceProjector20, new FieldCondition(DecalDefault, true) }, + { DecalPasses.ScreenSpaceMesh20, new FieldCondition(DecalDefault, true) }, + { DecalPasses.ScenePicking, new FieldCondition(DecalDefault, true) }, + }, + }; } #endregion @@ -348,7 +362,7 @@ static class DecalPasses // Collections renderStates = DecalRenderStates.ScenePicking, - pragmas = DecalPragmas.MultipleRenderTargets, + pragmas = DecalPragmas.Instanced, defines = DecalDefines.ScenePicking, includes = DecalIncludes.ScenePicking, @@ -404,35 +418,43 @@ static class DecalPasses renderStates = DecalRenderStates.ForwardEmissiveProjector, pragmas = DecalPragmas.MultipleRenderTargets, defines = DecalDefines.ProjectorWithEmission, + keywords = DecalKeywords.ForwardEmissiveProjector, includes = DecalIncludes.DBuffer, }; - public static PassDescriptor ScreenSpaceProjector = new PassDescriptor() - { - // Definition - displayName = DecalShaderPassNames.DecalScreenSpaceProjector, - referenceName = "SHADERPASS_DECAL_SCREEN_SPACE_PROJECTOR", - lightMode = DecalShaderPassNames.DecalScreenSpaceProjector, - useInPreview = false, - - // Template - passTemplatePath = "Packages/com.unity.render-pipelines.universal/Editor/Decal/DecalPass.template", - sharedTemplateDirectories = GenerationUtils.GetDefaultSharedTemplateDirectories(), - - // Port mask - validPixelBlocks = DecalBlockMasks.Fragment, + public static PassDescriptor ScreenSpaceProjector20 = GetScreenSpaceProjector(DecalPragmas.ScreenSpace20, DecalKeywords.ScreenSpaceProjector20); - //Fields - structs = CoreStructCollections.Default, - requiredFields = DecalRequiredFields.ScreenSpaceProjector, - fieldDependencies = CoreFieldDependencies.Default, + public static PassDescriptor ScreenSpaceProjector = GetScreenSpaceProjector(DecalPragmas.ScreenSpace, DecalKeywords.ScreenSpaceProjector); - renderStates = DecalRenderStates.ScreenSpaceProjector, - pragmas = DecalPragmas.ScreenSpace, - defines = DecalDefines.ProjectorWithEmission, - keywords = DecalKeywords.ScreenSpaceProjector, - includes = DecalIncludes.ScreenSpace, - }; + public static PassDescriptor GetScreenSpaceProjector(PragmaCollection pragma, KeywordCollection keywords) + { + return new PassDescriptor + { + // Definition + displayName = DecalShaderPassNames.DecalScreenSpaceProjector, + referenceName = "SHADERPASS_DECAL_SCREEN_SPACE_PROJECTOR", + lightMode = DecalShaderPassNames.DecalScreenSpaceProjector, + useInPreview = false, + + // Template + passTemplatePath = "Packages/com.unity.render-pipelines.universal/Editor/Decal/DecalPass.template", + sharedTemplateDirectories = GenerationUtils.GetDefaultSharedTemplateDirectories(), + + // Port mask + validPixelBlocks = DecalBlockMasks.Fragment, + + //Fields + structs = CoreStructCollections.Default, + requiredFields = DecalRequiredFields.ScreenSpaceProjector, + fieldDependencies = CoreFieldDependencies.Default, + + renderStates = DecalRenderStates.ScreenSpaceProjector, + pragmas = pragma, + defines = DecalDefines.ProjectorWithEmission, + keywords = keywords, + includes = DecalIncludes.ScreenSpace, + }; + } public static PassDescriptor GBufferProjector = new PassDescriptor() { @@ -513,35 +535,43 @@ static class DecalPasses renderStates = DecalRenderStates.ForwardEmissiveMesh, pragmas = DecalPragmas.MultipleRenderTargets, defines = DecalDefines.MeshWithEmission, + keywords = DecalKeywords.ForwardEmissiveProjector, includes = DecalIncludes.DBuffer, }; - public static PassDescriptor ScreenSpaceMesh = new PassDescriptor() - { - // Definition - displayName = DecalShaderPassNames.DecalScreenSpaceMesh, - referenceName = "SHADERPASS_DECAL_SCREEN_SPACE_MESH", - lightMode = DecalShaderPassNames.DecalScreenSpaceMesh, - useInPreview = true, - - // Template - passTemplatePath = "Packages/com.unity.render-pipelines.universal/Editor/Decal/DecalPass.template", - sharedTemplateDirectories = GenerationUtils.GetDefaultSharedTemplateDirectories(), + public static PassDescriptor ScreenSpaceMesh20 = GetScreenSpaceMesh(DecalPragmas.ScreenSpace20, DecalKeywords.ScreenSpaceMesh20); - // Port mask - validPixelBlocks = DecalBlockMasks.Fragment, // todo + public static PassDescriptor ScreenSpaceMesh = GetScreenSpaceMesh(DecalPragmas.ScreenSpace, DecalKeywords.ScreenSpaceMesh); - //Fields - structs = CoreStructCollections.Default, - requiredFields = DecalRequiredFields.ScreenSpaceMesh, - fieldDependencies = CoreFieldDependencies.Default, - - renderStates = DecalRenderStates.ScreenSpaceMesh, - pragmas = DecalPragmas.ScreenSpace, - defines = DecalDefines.MeshWithEmission, - keywords = DecalKeywords.ScreenSpaceMesh, - includes = DecalIncludes.ScreenSpace, - }; + public static PassDescriptor GetScreenSpaceMesh(PragmaCollection pragma, KeywordCollection keywords) + { + return new PassDescriptor + { + // Definition + displayName = DecalShaderPassNames.DecalScreenSpaceMesh, + referenceName = "SHADERPASS_DECAL_SCREEN_SPACE_MESH", + lightMode = DecalShaderPassNames.DecalScreenSpaceMesh, + useInPreview = true, + + // Template + passTemplatePath = "Packages/com.unity.render-pipelines.universal/Editor/Decal/DecalPass.template", + sharedTemplateDirectories = GenerationUtils.GetDefaultSharedTemplateDirectories(), + + // Port mask + validPixelBlocks = DecalBlockMasks.Fragment, // todo + + //Fields + structs = CoreStructCollections.Default, + requiredFields = DecalRequiredFields.ScreenSpaceMesh, + fieldDependencies = CoreFieldDependencies.Default, + + renderStates = DecalRenderStates.ScreenSpaceMesh, + pragmas = pragma, + defines = DecalDefines.MeshWithEmission, + keywords = keywords, + includes = DecalIncludes.ScreenSpace, + }; + } public static PassDescriptor GBufferMesh = new PassDescriptor() { @@ -773,9 +803,20 @@ static class DecalRenderStates #region Pragmas static class DecalPragmas { + public static PragmaCollection ScreenSpace20 = new PragmaCollection + { + { Pragma.Target(ShaderModel.Target20) }, + { Pragma.OnlyRenderers(new[] { Platform.GLES, Platform.GLES3, Platform.GLCore, Platform.D3D11 }) }, + { Pragma.Vertex("Vert") }, + { Pragma.Fragment("Frag") }, + { Pragma.MultiCompileInstancing }, + { Pragma.MultiCompileFog }, + }; + public static PragmaCollection ScreenSpace = new PragmaCollection { { Pragma.Target(ShaderModel.Target25) }, // Derivatives + { Pragma.ExcludeRenderers(new[] { Platform.GLES, Platform.GLES3, Platform.GLCore }) }, { Pragma.Vertex("Vert") }, { Pragma.Fragment("Frag") }, { Pragma.MultiCompileInstancing }, @@ -785,6 +826,7 @@ static class DecalPragmas public static PragmaCollection GBuffer = new PragmaCollection { { Pragma.Target(ShaderModel.Target35) }, // MRT4 + { Pragma.ExcludeRenderers(new[] { Platform.GLES, Platform.GLES3, Platform.GLCore }) }, { Pragma.Vertex("Vert") }, { Pragma.Fragment("Frag") }, { Pragma.MultiCompileInstancing }, @@ -794,10 +836,20 @@ static class DecalPragmas public static PragmaCollection MultipleRenderTargets = new PragmaCollection { { Pragma.Target(ShaderModel.Target35) }, // MRT4 + { Pragma.ExcludeRenderers(new[] { Platform.GLES, Platform.GLES3, Platform.GLCore }) }, { Pragma.Vertex("Vert") }, { Pragma.Fragment("Frag") }, { Pragma.MultiCompileInstancing }, }; + + public static readonly PragmaCollection Instanced = new PragmaCollection + { + { Pragma.Target(ShaderModel.Target20) }, + { Pragma.OnlyRenderers(new[] { Platform.GLES, Platform.GLES3, Platform.GLCore, Platform.D3D11 }) }, + { Pragma.MultiCompileInstancing }, + { Pragma.Vertex("Vert") }, + { Pragma.Fragment("Frag") }, + }; } #endregion @@ -928,20 +980,36 @@ static class Descriptors definition = KeywordDefinition.MultiCompile, scope = KeywordScope.Global, }; + + public static readonly KeywordDescriptor DecalLayers = new KeywordDescriptor() + { + displayName = "Decal Layers", + referenceName = "_DECAL_LAYERS", + type = KeywordType.Boolean, + definition = KeywordDefinition.MultiCompile, + scope = KeywordScope.Global, + }; } public static KeywordCollection DBufferMesh = new KeywordCollection { { CoreKeywordDescriptors.DBuffer }, + { Descriptors.DecalLayers }, { Descriptors.LodCrossFade, new FieldCondition(Fields.LodCrossFade, true) }, }; public static KeywordCollection DBufferProjector = new KeywordCollection { { CoreKeywordDescriptors.DBuffer }, + { Descriptors.DecalLayers }, }; - public static readonly KeywordCollection ScreenSpaceMesh = new KeywordCollection + public static KeywordCollection ForwardEmissiveProjector = new KeywordCollection + { + { Descriptors.DecalLayers }, + }; + + public static readonly KeywordCollection ScreenSpaceMesh20 = new KeywordCollection { { CoreKeywordDescriptors.StaticLightmap }, { CoreKeywordDescriptors.DynamicLightmap }, @@ -957,7 +1025,14 @@ static class Descriptors { Descriptors.LodCrossFade, new FieldCondition(Fields.LodCrossFade, true) }, }; - public static readonly KeywordCollection ScreenSpaceProjector = new KeywordCollection + public static readonly KeywordCollection ScreenSpaceMesh = new KeywordCollection + { + { ScreenSpaceMesh20 }, + { Descriptors.DecalLayers }, + + }; + + public static readonly KeywordCollection ScreenSpaceProjector20 = new KeywordCollection { { CoreKeywordDescriptors.MainLightShadows }, { CoreKeywordDescriptors.AdditionalLights }, @@ -967,6 +1042,12 @@ static class Descriptors { Descriptors.DecalsNormalBlend }, }; + public static readonly KeywordCollection ScreenSpaceProjector = new KeywordCollection + { + { ScreenSpaceProjector20 }, + { Descriptors.DecalLayers }, + }; + public static readonly KeywordCollection GBufferMesh = new KeywordCollection { { CoreKeywordDescriptors.StaticLightmap }, @@ -977,6 +1058,7 @@ static class Descriptors { CoreKeywordDescriptors.LightmapShadowMixing }, { CoreKeywordDescriptors.MixedLightingSubtractive }, { Descriptors.DecalsNormalBlend }, + { Descriptors.DecalLayers }, { CoreKeywordDescriptors.GBufferNormalsOct }, { CoreKeywordDescriptors.RenderPassEnabled }, { Descriptors.LodCrossFade, new FieldCondition(Fields.LodCrossFade, true) }, @@ -987,6 +1069,7 @@ static class Descriptors { CoreKeywordDescriptors.MainLightShadows }, { CoreKeywordDescriptors.ShadowsSoft }, { Descriptors.DecalsNormalBlend }, + { Descriptors.DecalLayers }, { CoreKeywordDescriptors.GBufferNormalsOct }, { CoreKeywordDescriptors.RenderPassEnabled }, }; diff --git a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalLitSubTarget.cs b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalLitSubTarget.cs index b804bfcf597..cd5f84b3462 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalLitSubTarget.cs +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalLitSubTarget.cs @@ -17,7 +17,7 @@ sealed class UniversalLitSubTarget : UniversalSubTarget, ILegacyTarget { static readonly GUID kSourceCodeGuid = new GUID("d6c78107b64145745805d963de80cc17"); // UniversalLitSubTarget.cs - public override int latestVersion => 1; + public override int latestVersion => 2; [SerializeField] WorkflowMode m_WorkflowMode = WorkflowMode.Metallic; @@ -338,9 +338,9 @@ public static SubShaderDescriptor LitComputeDotsSubShader(UniversalTarget target }; if (complexLit) - result.passes.Add(LitPasses.ForwardOnly(target, workflowMode, complexLit, blendModePreserveSpecular, CoreBlockMasks.Vertex, LitBlockMasks.FragmentComplexLit, CorePragmas.DOTSForward)); + result.passes.Add(LitPasses.ForwardOnly(target, workflowMode, complexLit, blendModePreserveSpecular, CoreBlockMasks.Vertex, LitBlockMasks.FragmentComplexLit, CorePragmas.DOTSForward, LitKeywords.DOTSForward)); else - result.passes.Add(LitPasses.Forward(target, workflowMode, blendModePreserveSpecular, CorePragmas.DOTSForward)); + result.passes.Add(LitPasses.Forward(target, workflowMode, blendModePreserveSpecular, CorePragmas.DOTSForward, LitKeywords.DOTSForward)); if (!complexLit) result.passes.Add(LitPasses.GBuffer(target, workflowMode, blendModePreserveSpecular)); @@ -385,9 +385,9 @@ public static SubShaderDescriptor LitGLESSubShader(UniversalTarget target, Workf }; if (complexLit) - result.passes.Add(LitPasses.ForwardOnly(target, workflowMode, complexLit, blendModePreserveSpecular, CoreBlockMasks.Vertex, LitBlockMasks.FragmentComplexLit, CorePragmas.Forward)); + result.passes.Add(LitPasses.ForwardOnly(target, workflowMode, complexLit, blendModePreserveSpecular, CoreBlockMasks.Vertex, LitBlockMasks.FragmentComplexLit, CorePragmas.Forward, LitKeywords.Forward)); else - result.passes.Add(LitPasses.Forward(target, workflowMode, blendModePreserveSpecular)); + result.passes.Add(LitPasses.Forward(target, workflowMode, blendModePreserveSpecular, CorePragmas.Forward, LitKeywords.Forward)); // cull the shadowcaster pass if we know it will never be used if (target.castShadows || target.allowMaterialOverride) @@ -432,7 +432,12 @@ static void AddReceiveShadowsControlToPass(ref PassDescriptor pass, UniversalTar pass.defines.Add(LitKeywords.ReceiveShadowsOff, 1); } - public static PassDescriptor Forward(UniversalTarget target, WorkflowMode workflowMode, bool blendModePreserveSpecular, PragmaCollection pragmas = null) + public static PassDescriptor Forward( + UniversalTarget target, + WorkflowMode workflowMode, + bool blendModePreserveSpecular, + PragmaCollection pragmas, + KeywordCollection keywords) { var result = new PassDescriptor() { @@ -459,7 +464,7 @@ public static PassDescriptor Forward(UniversalTarget target, WorkflowMode workfl renderStates = CoreRenderStates.UberSwitchedRenderState(target, blendModePreserveSpecular), pragmas = pragmas ?? CorePragmas.Forward, // NOTE: SM 2.0 only GL defines = new DefineCollection() { CoreDefines.UseFragmentFog }, - keywords = new KeywordCollection() { LitKeywords.Forward }, + keywords = new KeywordCollection() { keywords }, includes = LitIncludes.Forward, // Custom Interpolator Support @@ -480,7 +485,8 @@ public static PassDescriptor ForwardOnly( bool blendModePreserveSpecular, BlockFieldDescriptor[] vertexBlocks, BlockFieldDescriptor[] pixelBlocks, - PragmaCollection pragmas) + PragmaCollection pragmas, + KeywordCollection keywords) { var result = new PassDescriptor { @@ -507,7 +513,7 @@ public static PassDescriptor ForwardOnly( renderStates = CoreRenderStates.UberSwitchedRenderState(target, blendModePreserveSpecular), pragmas = pragmas, defines = new DefineCollection() { CoreDefines.UseFragmentFog }, - keywords = new KeywordCollection() { LitKeywords.Forward }, + keywords = new KeywordCollection() { keywords }, includes = LitIncludes.Forward, // Custom Interpolator Support @@ -666,7 +672,7 @@ public static PassDescriptor DepthNormal(UniversalTarget target) renderStates = CoreRenderStates.DepthNormalsOnly(target), pragmas = CorePragmas.Instanced, defines = new DefineCollection(), - keywords = new KeywordCollection(), + keywords = new KeywordCollection() { CoreKeywords.DOTSDepthNormal }, includes = CoreIncludes.DepthNormalsOnly, // Custom Interpolator Support @@ -705,7 +711,7 @@ public static PassDescriptor DepthNormalOnly(UniversalTarget target) renderStates = CoreRenderStates.DepthNormalsOnly(target), pragmas = CorePragmas.Instanced, defines = new DefineCollection(), - keywords = new KeywordCollection(), + keywords = new KeywordCollection() { CoreKeywords.DOTSDepthNormal }, includes = CoreIncludes.DepthNormalsOnly, // Custom Interpolator Support @@ -879,6 +885,12 @@ static class LitKeywords { CoreKeywordDescriptors.ClusteredRendering }, }; + public static readonly KeywordCollection DOTSForward = new KeywordCollection + { + { Forward }, + { CoreKeywordDescriptors.WriteRenderingLayers }, + }; + public static readonly KeywordCollection GBuffer = new KeywordCollection { { CoreKeywordDescriptors.StaticLightmap }, @@ -893,7 +905,7 @@ static class LitKeywords { CoreKeywordDescriptors.MixedLightingSubtractive }, { CoreKeywordDescriptors.DBuffer }, { CoreKeywordDescriptors.GBufferNormalsOct }, - { CoreKeywordDescriptors.LightLayers }, + { CoreKeywordDescriptors.WriteRenderingLayers }, { CoreKeywordDescriptors.RenderPassEnabled }, { CoreKeywordDescriptors.DebugDisplay }, }; diff --git a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs index a84d03240cf..ca8611815ac 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs @@ -1780,6 +1780,16 @@ static class CoreKeywordDescriptors stages = KeywordShaderStage.Fragment, }; + public static readonly KeywordDescriptor WriteRenderingLayers = new KeywordDescriptor() + { + displayName = "Write Rendering Layers", + referenceName = "_WRITE_RENDERING_LAYERS", + type = KeywordType.Boolean, + definition = KeywordDefinition.MultiCompile, + scope = KeywordScope.Global, + stages = KeywordShaderStage.Fragment, + }; + public static readonly KeywordDescriptor RenderPassEnabled = new KeywordDescriptor() { displayName = "Render Pass Enabled", @@ -1936,6 +1946,11 @@ static class CoreKeywords { { CoreKeywordDescriptors.CastingPunctualLightShadow }, }; + + public static readonly KeywordCollection DOTSDepthNormal = new KeywordCollection + { + { CoreKeywordDescriptors.WriteRenderingLayers }, + }; } #endregion diff --git a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalUnlitSubTarget.cs b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalUnlitSubTarget.cs index 96917a8f912..194376ca143 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalUnlitSubTarget.cs +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalUnlitSubTarget.cs @@ -13,7 +13,7 @@ sealed class UniversalUnlitSubTarget : UniversalSubTarget, ILegacyTarget { static readonly GUID kSourceCodeGuid = new GUID("97c3f7dcb477ec842aa878573640313a"); // UniversalUnlitSubTarget.cs - public override int latestVersion => 1; + public override int latestVersion => 2; public UniversalUnlitSubTarget() { @@ -167,7 +167,7 @@ public static SubShaderDescriptor Unlit(UniversalTarget target, string renderTyp passes = new PassCollection() }; - result.passes.Add(UnlitPasses.Forward(target)); + result.passes.Add(UnlitPasses.Forward(target, UnlitKeywords.Forward)); if (target.mayWriteDepth) result.passes.Add(CorePasses.DepthOnly(target)); @@ -182,8 +182,6 @@ public static SubShaderDescriptor Unlit(UniversalTarget target, string renderTyp result.passes.Add(CorePasses.SceneSelection(target)); result.passes.Add(CorePasses.ScenePicking(target)); - result.passes.Add(UnlitPasses.DepthNormalOnly(target)); - return result; } @@ -199,12 +197,12 @@ public static SubShaderDescriptor UnlitDOTS(UniversalTarget target, string rende passes = new PassCollection() }; - result.passes.Add(PassVariant(UnlitPasses.Forward(target), CorePragmas.DOTSForward)); + result.passes.Add(PassVariant(UnlitPasses.Forward(target, UnlitKeywords.DOTSForward), CorePragmas.DOTSForward)); if (target.mayWriteDepth) result.passes.Add(PassVariant(CorePasses.DepthOnly(target), CorePragmas.DOTSInstanced)); - result.passes.Add(PassVariant(CorePasses.DepthNormalOnly(target), CorePragmas.DOTSInstanced)); + result.passes.Add(PassVariant(UnlitPasses.DepthNormalOnly(target), CorePragmas.DOTSInstanced)); if (target.castShadows || target.allowMaterialOverride) result.passes.Add(PassVariant(CorePasses.ShadowCaster(target), CorePragmas.DOTSInstanced)); @@ -214,8 +212,6 @@ public static SubShaderDescriptor UnlitDOTS(UniversalTarget target, string rende result.passes.Add(PassVariant(CorePasses.SceneSelection(target), CorePragmas.DOTSDefault)); result.passes.Add(PassVariant(CorePasses.ScenePicking(target), CorePragmas.DOTSDefault)); - result.passes.Add(PassVariant(UnlitPasses.DepthNormalOnly(target), CorePragmas.DOTSInstanced)); - return result; } } @@ -224,7 +220,7 @@ public static SubShaderDescriptor UnlitDOTS(UniversalTarget target, string rende #region Pass static class UnlitPasses { - public static PassDescriptor Forward(UniversalTarget target) + public static PassDescriptor Forward(UniversalTarget target, KeywordCollection keywords) { var result = new PassDescriptor { @@ -250,7 +246,7 @@ public static PassDescriptor Forward(UniversalTarget target) renderStates = CoreRenderStates.UberSwitchedRenderState(target), pragmas = CorePragmas.Forward, defines = new DefineCollection() { CoreDefines.UseFragmentFog }, - keywords = new KeywordCollection() { UnlitKeywords.UnlitBaseKeywords }, + keywords = new KeywordCollection() { keywords }, includes = UnlitIncludes.Unlit, // Custom Interpolator Support @@ -289,7 +285,7 @@ public static PassDescriptor DepthNormalOnly(UniversalTarget target) renderStates = CoreRenderStates.DepthNormalsOnly(target), pragmas = CorePragmas.Forward, defines = new DefineCollection(), - keywords = new KeywordCollection(), + keywords = new KeywordCollection() { CoreKeywords.DOTSDepthNormal }, includes = CoreIncludes.DepthNormalsOnly, // Custom Interpolator Support @@ -334,7 +330,7 @@ static class UnlitRequiredFields #region Keywords static class UnlitKeywords { - public static readonly KeywordCollection UnlitBaseKeywords = new KeywordCollection() + public static readonly KeywordCollection Forward = new KeywordCollection() { // This contain lightmaps because without a proper custom lighting solution in Shadergraph, // people start with the unlit then add lightmapping nodes to it. @@ -345,6 +341,12 @@ static class UnlitKeywords CoreKeywordDescriptors.DBuffer, CoreKeywordDescriptors.DebugDisplay, }; + + public static readonly KeywordCollection DOTSForward = new KeywordCollection + { + { Forward }, + { CoreKeywordDescriptors.WriteRenderingLayers }, + }; } #endregion diff --git a/com.unity.render-pipelines.universal/Editor/ShaderPreprocessor.cs b/com.unity.render-pipelines.universal/Editor/ShaderPreprocessor.cs index 8d6081bde63..8d3894b6344 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderPreprocessor.cs +++ b/com.unity.render-pipelines.universal/Editor/ShaderPreprocessor.cs @@ -16,7 +16,7 @@ namespace UnityEditor.Rendering.Universal { [Flags] - enum ShaderFeatures + enum ShaderFeatures : long { None = 0, MainLight = (1 << 0), @@ -50,6 +50,10 @@ enum ShaderFeatures ScreenSpaceOcclusionAfterOpaque = (1 << 28), AdditionalLightsKeepOffVariants = (1 << 29), ShadowsKeepOffVariants = (1 << 30), + DecalLayers = (1 << 31), + OpaqueWriteRenderingLayers = (1L << 32), + GBufferWriteRenderingLayers = (1L << 33), + DepthNormalPassRenderingLayers = (1L << 34), } [Flags] @@ -70,6 +74,8 @@ enum VolumeFeatures internal class ShaderPreprocessor : IPreprocessShaders { public static readonly string kPassNameGBuffer = "GBuffer"; + public static readonly string kPassNameForwardLit = "ForwardLit"; + public static readonly string kPassNameDepthNormals = "DepthNormals"; public static readonly string kTerrainShaderName = "Universal Render Pipeline/Terrain/Lit"; #if PROFILE_BUILD private const string k_ProcessShaderTag = "OnProcessShader"; @@ -101,6 +107,8 @@ internal class ShaderPreprocessor : IPreprocessShaders LocalKeyword m_ScreenSpaceOcclusion; LocalKeyword m_UseFastSRGBLinearConversion; LocalKeyword m_LightLayers; + LocalKeyword m_DecalLayers; + LocalKeyword m_WriteRenderingLayers; LocalKeyword m_RenderPassEnabled; LocalKeyword m_DebugDisplay; LocalKeyword m_DBufferMRT1; @@ -173,6 +181,8 @@ void InitializeLocalShaderKeywords(Shader shader) m_ScreenSpaceOcclusion = TryGetLocalKeyword(shader, ShaderKeywordStrings.ScreenSpaceOcclusion); m_UseFastSRGBLinearConversion = TryGetLocalKeyword(shader, ShaderKeywordStrings.UseFastSRGBLinearConversion); m_LightLayers = TryGetLocalKeyword(shader, ShaderKeywordStrings.LightLayers); + m_DecalLayers = TryGetLocalKeyword(shader, ShaderKeywordStrings.DecalLayers); + m_WriteRenderingLayers = TryGetLocalKeyword(shader, ShaderKeywordStrings.WriteRenderingLayers); m_RenderPassEnabled = TryGetLocalKeyword(shader, ShaderKeywordStrings.RenderPassEnabled); m_DebugDisplay = TryGetLocalKeyword(shader, ShaderKeywordStrings.DEBUG_DISPLAY); m_DBufferMRT1 = TryGetLocalKeyword(shader, ShaderKeywordStrings.DBufferMRT1); @@ -479,6 +489,21 @@ bool StripUnusedFeatures(ShaderFeatures features, Shader shader, ShaderSnippetDa m_DBufferMRT3, ShaderFeatures.DBufferMRT3)) return true; + if (compilerData.shaderCompilerPlatform == ShaderCompilerPlatform.GLES20 || + compilerData.shaderCompilerPlatform == ShaderCompilerPlatform.GLES3x || + compilerData.shaderCompilerPlatform == ShaderCompilerPlatform.OpenGLCore) + { + // Rendering layers are not supported on gl + if (compilerData.shaderKeywordSet.IsEnabled(m_LightLayers)) + return true; + } + else + { + // Decal Layers + if (stripTool.StripMultiCompile(m_DecalLayers, ShaderFeatures.DecalLayers)) + return true; + } + // TODO: Test against lightMode tag instead. if (snippetData.passName == kPassNameGBuffer) { @@ -502,6 +527,29 @@ bool StripUnusedFeatures(ShaderFeatures features, Shader shader, ShaderSnippetDa m_DecalNormalBlendHigh, ShaderFeatures.DecalNormalBlendHigh)) return true; + string keywordNames = ""; + foreach (var keyword in compilerData.shaderKeywordSet.GetShaderKeywords()) + { + keywordNames += " " + keyword.name; + } + + // Write Rendering Layers + if (snippetData.passName == kPassNameDepthNormals) + { + if (stripTool.StripMultiCompile(m_WriteRenderingLayers, ShaderFeatures.DepthNormalPassRenderingLayers)) + return true; + } + if (snippetData.passName == kPassNameForwardLit) + { + if (stripTool.StripMultiCompile(m_WriteRenderingLayers, ShaderFeatures.OpaqueWriteRenderingLayers)) + return true; + } + if (snippetData.passName == kPassNameGBuffer) + { + if (stripTool.StripMultiCompile(m_WriteRenderingLayers, ShaderFeatures.GBufferWriteRenderingLayers)) + return true; + } + return false; } @@ -989,6 +1037,8 @@ private static ShaderFeatures GetSupportedShaderFeatures(UniversalRenderPipeline shaderFeatures |= ShaderFeatures.DecalGBuffer; break; } + if (decal.requiresDecalLayers) + shaderFeatures |= ShaderFeatures.DecalLayers; } } @@ -997,6 +1047,26 @@ private static ShaderFeatures GetSupportedShaderFeatures(UniversalRenderPipeline rendererClustered = universalRendererData.renderingMode == RenderingMode.Forward && universalRendererData.clusteredRendering; + if (RenderingLayerUtils.RequireRenderingLayers(universalRendererData, + out var renderingLayersEvent, out var renderingLayerMaskSize)) + { + switch (renderingLayersEvent) + { + case RenderingLayerUtils.Event.DepthNormalPrePass: + shaderFeatures |= ShaderFeatures.DepthNormalPassRenderingLayers; + break; + + case RenderingLayerUtils.Event.Opaque: + shaderFeatures |= universalRendererData.renderingMode == RenderingMode.Forward ? + ShaderFeatures.OpaqueWriteRenderingLayers : + ShaderFeatures.GBufferWriteRenderingLayers; + break; + + default: + throw new NotImplementedException(); + } + } + #if ENABLE_VR && ENABLE_XR_MODULE if (universalRendererData.xrSystemData != null) shaderFeatures |= ShaderFeatures.DrawProcedural; diff --git a/com.unity.render-pipelines.universal/Editor/VFXGraph/Shaders/VFXPasses.template b/com.unity.render-pipelines.universal/Editor/VFXGraph/Shaders/VFXPasses.template index 127e833f016..1a7d65cb600 100644 --- a/com.unity.render-pipelines.universal/Editor/VFXGraph/Shaders/VFXPasses.template +++ b/com.unity.render-pipelines.universal/Editor/VFXGraph/Shaders/VFXPasses.template @@ -44,7 +44,7 @@ ${VFXBegin:VFXPassGBufferAdditionalPragma} //#pragma multi_compile _ _ADDITIONAL_LIGHTS //#pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION #pragma multi_compile_fragment _ _SHADOWS_SOFT -#pragma multi_compile_fragment _ _LIGHT_LAYERS +#pragma multi_compile_fragment _ _WRITE_RENDERING_LAYERS ${VFXEnd} ${VFXBegin:VFXShaderGraphFunctionsInclude} 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 85e048bece6..59e2fe6f7cf 100644 --- a/com.unity.render-pipelines.universal/Runtime/Decal/DBuffer/DBufferRenderPass.cs +++ b/com.unity.render-pipelines.universal/Runtime/Decal/DBuffer/DBufferRenderPass.cs @@ -21,34 +21,35 @@ internal class DBufferRenderPass : ScriptableRenderPass private FilteringSettings m_FilteringSettings; private List m_ShaderTagIdList; - private int m_DBufferCount; private ProfilingSampler m_ProfilingSampler; + private bool m_DecalLayers; + private RTHandle m_DBufferDepth; - internal DeferredLights deferredLights { get; set; } - private bool isDeferred => deferredLights != null; internal RTHandle[] dBufferColorHandles { get; private set; } + internal RTHandle depthHandle { get; private set; } + internal RTHandle dBufferDepth { get => m_DBufferDepth; } - internal RTHandle dBufferDepth => m_DBufferDepth; - - public DBufferRenderPass(Material dBufferClear, DBufferSettings settings, DecalDrawDBufferSystem drawSystem) + public DBufferRenderPass(Material dBufferClear, DBufferSettings settings, DecalDrawDBufferSystem drawSystem, bool decalLayers) { renderPassEvent = RenderPassEvent.AfterRenderingPrePasses + 1; - ConfigureInput(ScriptableRenderPassInput.Normal); // Require depth + + var scriptableRenderPassInput = ScriptableRenderPassInput.Normal; + ConfigureInput(scriptableRenderPassInput); m_DrawSystem = drawSystem; m_Settings = settings; m_DBufferClear = dBufferClear; m_ProfilingSampler = new ProfilingSampler("DBuffer Render"); m_FilteringSettings = new FilteringSettings(RenderQueueRange.opaque, -1); + m_DecalLayers = decalLayers; m_ShaderTagIdList = new List(); m_ShaderTagIdList.Add(new ShaderTagId(DecalShaderPassNames.DBufferMesh)); int dBufferCount = (int)settings.surfaceData + 1; dBufferColorHandles = new RTHandle[dBufferCount]; - m_DBufferCount = dBufferCount; } public void Dispose() @@ -59,6 +60,18 @@ public void Dispose() } public void Setup(in CameraData cameraData) + { + var depthDesc = cameraData.cameraTargetDescriptor; + depthDesc.graphicsFormat = GraphicsFormat.None; //Depth only rendering + depthDesc.depthStencilFormat = cameraData.cameraTargetDescriptor.depthStencilFormat; + depthDesc.msaaSamples = 1; + + RenderingUtils.ReAllocateIfNeeded(ref m_DBufferDepth, depthDesc, name: s_DBufferDepthName); + + Setup(cameraData, m_DBufferDepth); + } + + public void Setup(in CameraData cameraData, RTHandle depthTextureHandle) { // base { @@ -91,22 +104,11 @@ public void Setup(in CameraData cameraData) } // depth - RTHandle depthHandle; - if (isDeferred) - { - depthHandle = cameraData.renderer.cameraDepthTargetHandle; - } - else - { - var depthDesc = cameraData.cameraTargetDescriptor; - depthDesc.graphicsFormat = GraphicsFormat.None; //Depth only rendering - depthDesc.depthStencilFormat = cameraData.cameraTargetDescriptor.depthStencilFormat; - depthDesc.msaaSamples = 1; - - RenderingUtils.ReAllocateIfNeeded(ref m_DBufferDepth, depthDesc, name: s_DBufferDepthName); - depthHandle = m_DBufferDepth; - } + depthHandle = depthTextureHandle; + } + public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderingData) + { ConfigureTarget(dBufferColorHandles, depthHandle); } @@ -127,19 +129,13 @@ public override void Execute(ScriptableRenderContext context, ref RenderingData if (m_Settings.surfaceData == DecalSurfaceData.AlbedoNormalMAOS) cmd.SetGlobalTexture(dBufferColorHandles[2].name, dBufferColorHandles[2].nameID); - if (isDeferred) - { - cmd.SetGlobalTexture("_CameraNormalsTexture", deferredLights.GbufferAttachments[deferredLights.GBufferNormalSmoothnessIndex].nameID); - } - else - { - cmd.SetGlobalTexture(m_DBufferDepth.name, m_DBufferDepth.nameID); - } CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DBufferMRT1, m_Settings.surfaceData == DecalSurfaceData.Albedo); CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DBufferMRT2, m_Settings.surfaceData == DecalSurfaceData.AlbedoNormal); CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DBufferMRT3, m_Settings.surfaceData == DecalSurfaceData.AlbedoNormalMAOS); + CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DecalLayers, m_DecalLayers); + // TODO: This should be replace with mrt clear once we support it // Clear render targets ClearDBuffers(cmd, renderingData.cameraData); @@ -187,6 +183,7 @@ public override void OnCameraCleanup(CommandBuffer cmd) CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DBufferMRT1, false); CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DBufferMRT2, false); CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DBufferMRT3, false); + CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DecalLayers, false); } } } diff --git a/com.unity.render-pipelines.universal/Runtime/Decal/DecalProjector.cs b/com.unity.render-pipelines.universal/Runtime/Decal/DecalProjector.cs index 8ace3653f42..1635664e8a8 100644 --- a/com.unity.render-pipelines.universal/Runtime/Decal/DecalProjector.cs +++ b/com.unity.render-pipelines.universal/Runtime/Decal/DecalProjector.cs @@ -3,6 +3,32 @@ namespace UnityEngine.Rendering.Universal { + /// Decal Layers. + [Flags] + public enum DecalLayerEnum + { + /// The light will no affect any object. + Nothing = 0, // Custom name for "Nothing" option + /// Decal Layer 0. + DecalLayerDefault = 1 << 0, + /// Decal Layer 1. + DecalLayer1 = 1 << 1, + /// Decal Layer 2. + DecalLayer2 = 1 << 2, + /// Decal Layer 3. + DecalLayer3 = 1 << 3, + /// Decal Layer 4. + DecalLayer4 = 1 << 4, + /// Decal Layer 5. + DecalLayer5 = 1 << 5, + /// Decal Layer 6. + DecalLayer6 = 1 << 6, + /// Decal Layer 7. + DecalLayer7 = 1 << 7, + /// Everything. + Everything = 0xFF, // Custom name for "Everything" option + } + /// The scaling mode to apply to decals that use the Decal Projector. public enum DecalScaleMode { @@ -162,6 +188,17 @@ public Vector2 uvBias } } + [SerializeField] + DecalLayerEnum m_DecalLayerMask = DecalLayerEnum.DecalLayerDefault; + /// + /// The layer of the decal. + /// + public DecalLayerEnum decalLayerMask + { + get => m_DecalLayerMask; + set => m_DecalLayerMask = value; + } + [SerializeField] private DecalScaleMode m_ScaleMode = DecalScaleMode.ScaleInvariant; /// diff --git a/com.unity.render-pipelines.universal/Runtime/Decal/Entities/DecalCreateDrawCallSystem.cs b/com.unity.render-pipelines.universal/Runtime/Decal/Entities/DecalCreateDrawCallSystem.cs index de7926bb2cd..4b7ab9b7406 100644 --- a/com.unity.render-pipelines.universal/Runtime/Decal/Entities/DecalCreateDrawCallSystem.cs +++ b/com.unity.render-pipelines.universal/Runtime/Decal/Entities/DecalCreateDrawCallSystem.cs @@ -18,6 +18,7 @@ internal class DecalDrawCallChunk : DecalChunk { public NativeArray decalToWorlds; public NativeArray normalToDecals; + public NativeArray decalLayerMasks; public NativeArray subCalls; public NativeArray subCallCounts; @@ -27,6 +28,7 @@ public override void RemoveAtSwapBack(int entityIndex) { RemoveAtSwapBack(ref decalToWorlds, entityIndex, count); RemoveAtSwapBack(ref normalToDecals, entityIndex, count); + RemoveAtSwapBack(ref decalLayerMasks, entityIndex, count); RemoveAtSwapBack(ref subCalls, entityIndex, count); count--; } @@ -35,6 +37,7 @@ public override void SetCapacity(int newCapacity) { decalToWorlds.ResizeArray(newCapacity); normalToDecals.ResizeArray(newCapacity); + decalLayerMasks.ResizeArray(newCapacity); subCalls.ResizeArray(newCapacity); capacity = newCapacity; } @@ -48,6 +51,7 @@ public override void Dispose() decalToWorlds.Dispose(); normalToDecals.Dispose(); + decalLayerMasks.Dispose(); subCalls.Dispose(); count = 0; capacity = 0; @@ -105,6 +109,7 @@ private void Execute(DecalCachedChunk cachedChunk, DecalCulledChunk culledChunk, sceneLayerMasks = cachedChunk.sceneLayerMasks, fadeFactors = cachedChunk.fadeFactors, boundingSpheres = cachedChunk.boundingSpheres, + decalLayerMasks = cachedChunk.decalLayerMasks, cameraPosition = culledChunk.cameraPosition, sceneCullingMask = culledChunk.sceneCullingMask, @@ -115,6 +120,7 @@ private void Execute(DecalCachedChunk cachedChunk, DecalCulledChunk culledChunk, decalToWorldsDraw = drawCallChunk.decalToWorlds, normalToDecalsDraw = drawCallChunk.normalToDecals, + decalLayerMasksDraw = drawCallChunk.decalLayerMasks, subCalls = drawCallChunk.subCalls, subCallCount = drawCallChunk.subCallCounts, }; @@ -139,6 +145,7 @@ struct DrawCallJob : IJob [ReadOnly] public NativeArray sceneLayerMasks; [ReadOnly] public NativeArray fadeFactors; [ReadOnly] public NativeArray boundingSpheres; + [ReadOnly] public NativeArray decalLayerMasks; public Vector3 cameraPosition; public ulong sceneCullingMask; @@ -149,6 +156,7 @@ struct DrawCallJob : IJob [WriteOnly] public NativeArray decalToWorldsDraw; [WriteOnly] public NativeArray normalToDecalsDraw; + [WriteOnly] public NativeArray decalLayerMasksDraw; [WriteOnly] public NativeArray subCalls; [WriteOnly] public NativeArray subCallCount; @@ -194,6 +202,8 @@ public void Execute() normalToDecals.c3 = new float4(fadeFactor * 1.0f, angleFade.x, angleFade.y, uvScaleBias.w); normalToDecalsDraw[instanceIndex] = normalToDecals; + decalLayerMasksDraw[instanceIndex] = RenderingLayerUtils.ToRenderingLayers(decalLayerMasks[decalIndex]); + instanceIndex++; int instanceCount = instanceIndex - instanceStart; diff --git a/com.unity.render-pipelines.universal/Runtime/Decal/Entities/DecalDrawSystem.cs b/com.unity.render-pipelines.universal/Runtime/Decal/Entities/DecalDrawSystem.cs index 955a999bbd6..480a638a61c 100644 --- a/com.unity.render-pipelines.universal/Runtime/Decal/Entities/DecalDrawSystem.cs +++ b/com.unity.render-pipelines.universal/Runtime/Decal/Entities/DecalDrawSystem.cs @@ -11,6 +11,7 @@ internal abstract class DecalDrawSystem protected DecalEntityManager m_EntityManager; private Matrix4x4[] m_WorldToDecals; private Matrix4x4[] m_NormalToDecals; + private float[] m_DecalLayerMasks; private ProfilingSampler m_Sampler; public Material overrideMaterial { get; set; } @@ -21,6 +22,7 @@ public DecalDrawSystem(string sampler, DecalEntityManager entityManager) m_WorldToDecals = new Matrix4x4[250]; m_NormalToDecals = new Matrix4x4[250]; + m_DecalLayerMasks = new float[250]; m_Sampler = new ProfilingSampler(sampler); } @@ -80,6 +82,7 @@ private void Draw(CommandBuffer cmd, DecalEntityChunk decalEntityChunk, DecalCac for (int j = subCall.start; j < subCall.end; ++j) { decalCachedChunk.propertyBlock.SetMatrix("_NormalToWorld", decalDrawCallChunk.normalToDecals[j]); + decalCachedChunk.propertyBlock.SetFloat("_DecalLayerMaskFromDecal", decalDrawCallChunk.decalLayerMasks[j]); cmd.DrawMesh(mesh, decalDrawCallChunk.decalToWorlds[j], material, 0, passIndex, decalCachedChunk.propertyBlock); } } @@ -102,7 +105,11 @@ private void DrawInstanced(CommandBuffer cmd, DecalEntityChunk decalEntityChunk, var normalToWorldSlice = decalDrawCallChunk.normalToDecals.Reinterpret(); NativeArray.Copy(normalToWorldSlice, subCall.start, m_NormalToDecals, 0, subCall.count); + var decalLayerMaskSlice = decalDrawCallChunk.decalLayerMasks.Reinterpret(); + NativeArray.Copy(decalLayerMaskSlice, subCall.start, m_DecalLayerMasks, 0, subCall.count); + decalCachedChunk.propertyBlock.SetMatrixArray("_NormalToWorld", m_NormalToDecals); + decalCachedChunk.propertyBlock.SetFloatArray("_DecalLayerMaskFromDecal", m_DecalLayerMasks); cmd.DrawMeshInstanced(mesh, 0, material, passIndex, m_WorldToDecals, subCall.end - subCall.start, decalCachedChunk.propertyBlock); } } @@ -156,6 +163,7 @@ private void Draw(in CameraData cameraData, DecalEntityChunk decalEntityChunk, D for (int j = subCall.start; j < subCall.end; ++j) { decalCachedChunk.propertyBlock.SetMatrix("_NormalToWorld", decalDrawCallChunk.normalToDecals[j]); + decalCachedChunk.propertyBlock.SetFloat("_DecalLayerMaskFromDecal", decalDrawCallChunk.decalLayerMasks[j]); Graphics.DrawMesh(mesh, decalCachedChunk.decalToWorlds[j], material, decalCachedChunk.layerMasks[j], cameraData.camera, 0, decalCachedChunk.propertyBlock); } } @@ -178,7 +186,11 @@ private void DrawInstanced(in CameraData cameraData, DecalEntityChunk decalEntit var normalToWorldSlice = decalDrawCallChunk.normalToDecals.Reinterpret(); NativeArray.Copy(normalToWorldSlice, subCall.start, m_NormalToDecals, 0, subCall.count); + var decalLayerMaskSlice = decalDrawCallChunk.decalLayerMasks.Reinterpret(); + NativeArray.Copy(decalLayerMaskSlice, subCall.start, m_DecalLayerMasks, 0, subCall.count); + decalCachedChunk.propertyBlock.SetMatrixArray("_NormalToWorld", m_NormalToDecals); + decalCachedChunk.propertyBlock.SetFloatArray("_DecalLayerMaskFromDecal", m_DecalLayerMasks); Graphics.DrawMeshInstanced(mesh, 0, material, m_WorldToDecals, subCall.count, decalCachedChunk.propertyBlock, ShadowCastingMode.On, true, 0, cameraData.camera); } diff --git a/com.unity.render-pipelines.universal/Runtime/Decal/Entities/DecalEntityManager.cs b/com.unity.render-pipelines.universal/Runtime/Decal/Entities/DecalEntityManager.cs index bdb073e75ce..d1bb72ae925 100644 --- a/com.unity.render-pipelines.universal/Runtime/Decal/Entities/DecalEntityManager.cs +++ b/com.unity.render-pipelines.universal/Runtime/Decal/Entities/DecalEntityManager.cs @@ -349,6 +349,7 @@ public void UpdateDecalEntityData(DecalEntity decalEntity, DecalProjector decalP cachedChunk.sceneLayerMasks[arrayIndex] = sceneLayerMask; cachedChunk.fadeFactors[arrayIndex] = fadeFactor; cachedChunk.scaleModes[arrayIndex] = decalProjector.scaleMode; + cachedChunk.decalLayerMasks[arrayIndex] = decalProjector.decalLayerMask; cachedChunk.positions[arrayIndex] = decalProjector.transform.position; cachedChunk.rotation[arrayIndex] = decalProjector.transform.rotation; diff --git a/com.unity.render-pipelines.universal/Runtime/Decal/Entities/DecalUpdateCachedSystem.cs b/com.unity.render-pipelines.universal/Runtime/Decal/Entities/DecalUpdateCachedSystem.cs index 5823c692c9d..770b0a4714e 100644 --- a/com.unity.render-pipelines.universal/Runtime/Decal/Entities/DecalUpdateCachedSystem.cs +++ b/com.unity.render-pipelines.universal/Runtime/Decal/Entities/DecalUpdateCachedSystem.cs @@ -28,6 +28,7 @@ internal class DecalCachedChunk : DecalChunk public NativeArray fadeFactors; public NativeArray boundingSpheres; public NativeArray scaleModes; + public NativeArray decalLayerMasks; public NativeArray positions; public NativeArray rotation; public NativeArray scales; @@ -49,6 +50,7 @@ public override void RemoveAtSwapBack(int entityIndex) RemoveAtSwapBack(ref boundingSphereArray, entityIndex, count); RemoveAtSwapBack(ref boundingSpheres, entityIndex, count); RemoveAtSwapBack(ref scaleModes, entityIndex, count); + RemoveAtSwapBack(ref decalLayerMasks, entityIndex, count); RemoveAtSwapBack(ref positions, entityIndex, count); RemoveAtSwapBack(ref rotation, entityIndex, count); RemoveAtSwapBack(ref scales, entityIndex, count); @@ -69,6 +71,7 @@ public override void SetCapacity(int newCapacity) fadeFactors.ResizeArray(newCapacity); boundingSpheres.ResizeArray(newCapacity); scaleModes.ResizeArray(newCapacity); + decalLayerMasks.ResizeArray(newCapacity); positions.ResizeArray(newCapacity); rotation.ResizeArray(newCapacity); scales.ResizeArray(newCapacity); @@ -94,6 +97,7 @@ public override void Dispose() fadeFactors.Dispose(); boundingSpheres.Dispose(); scaleModes.Dispose(); + decalLayerMasks.Dispose(); positions.Dispose(); rotation.Dispose(); scales.Dispose(); diff --git a/com.unity.render-pipelines.universal/Runtime/Decal/ScreenSpace/DecalGBufferRenderPass.cs b/com.unity.render-pipelines.universal/Runtime/Decal/ScreenSpace/DecalGBufferRenderPass.cs index ef28250963c..33c547d3e21 100644 --- a/com.unity.render-pipelines.universal/Runtime/Decal/ScreenSpace/DecalGBufferRenderPass.cs +++ b/com.unity.render-pipelines.universal/Runtime/Decal/ScreenSpace/DecalGBufferRenderPass.cs @@ -18,8 +18,9 @@ internal class DecalGBufferRenderPass : ScriptableRenderPass private DecalScreenSpaceSettings m_Settings; private DeferredLights m_DeferredLights; private RTHandle[] m_GbufferAttachments; + private bool m_DecalLayers; - public DecalGBufferRenderPass(DecalScreenSpaceSettings settings, DecalDrawGBufferSystem drawSystem) + public DecalGBufferRenderPass(DecalScreenSpaceSettings settings, DecalDrawGBufferSystem drawSystem, bool decalLayers) { renderPassEvent = RenderPassEvent.AfterRenderingGbuffer; @@ -27,6 +28,7 @@ public DecalGBufferRenderPass(DecalScreenSpaceSettings settings, DecalDrawGBuffe m_Settings = settings; m_ProfilingSampler = new ProfilingSampler("Decal GBuffer Render"); m_FilteringSettings = new FilteringSettings(RenderQueueRange.opaque, -1); + m_DecalLayers = decalLayers; m_ShaderTagIdList = new List(); if (drawSystem == null) @@ -49,10 +51,45 @@ public override void Configure(CommandBuffer cmd, RenderTextureDescriptor camera m_DeferredLights.GbufferAttachments[0], m_DeferredLights.GbufferAttachments[1], m_DeferredLights.GbufferAttachments[2], m_DeferredLights.GbufferAttachments[3] }; - ConfigureInputAttachments(m_DeferredLights.DepthCopyTexture, false); + + if (m_DecalLayers) + { + var deferredInputAttachments = new RTHandle[] + { + m_DeferredLights.GbufferAttachments[m_DeferredLights.GbufferDepthIndex], + m_DeferredLights.GbufferAttachments[m_DeferredLights.GBufferRenderingLayers], + }; + + var deferredInputIsTransient = new bool[] + { + true, false, // TODO: Make rendering layers transient + }; + + ConfigureInputAttachments(deferredInputAttachments, deferredInputIsTransient); + } + else + { + var deferredInputAttachments = new RTHandle[] + { + m_DeferredLights.GbufferAttachments[m_DeferredLights.GbufferDepthIndex], + }; + + var deferredInputIsTransient = new bool[] + { + true, + }; + + ConfigureInputAttachments(deferredInputAttachments, deferredInputIsTransient); + } } else - m_GbufferAttachments = m_DeferredLights.GbufferAttachments; + { + m_GbufferAttachments = new RTHandle[] + { + m_DeferredLights.GbufferAttachments[0], m_DeferredLights.GbufferAttachments[1], + m_DeferredLights.GbufferAttachments[2], m_DeferredLights.GbufferAttachments[3] + }; + } ConfigureTarget(m_GbufferAttachments, m_DeferredLights.DepthAttachmentHandle); } @@ -74,6 +111,8 @@ public override void Execute(ScriptableRenderContext context, ref RenderingData CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DecalNormalBlendMedium, m_Settings.normalBlend == DecalNormalBlend.Medium); CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DecalNormalBlendHigh, m_Settings.normalBlend == DecalNormalBlend.High); + CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DecalLayers, m_DecalLayers); + context.ExecuteCommandBuffer(cmd); cmd.Clear(); @@ -93,6 +132,7 @@ public override void OnCameraCleanup(CommandBuffer cmd) CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DecalNormalBlendLow, false); CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DecalNormalBlendMedium, false); CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DecalNormalBlendHigh, false); + CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DecalLayers, false); } } } diff --git a/com.unity.render-pipelines.universal/Runtime/Decal/ScreenSpace/DecalScreenSpaceRenderPass.cs b/com.unity.render-pipelines.universal/Runtime/Decal/ScreenSpace/DecalScreenSpaceRenderPass.cs index 106b938aaad..e7742825c61 100644 --- a/com.unity.render-pipelines.universal/Runtime/Decal/ScreenSpace/DecalScreenSpaceRenderPass.cs +++ b/com.unity.render-pipelines.universal/Runtime/Decal/ScreenSpace/DecalScreenSpaceRenderPass.cs @@ -16,16 +16,20 @@ internal class DecalScreenSpaceRenderPass : ScriptableRenderPass private List m_ShaderTagIdList; private DecalDrawScreenSpaceSystem m_DrawSystem; private DecalScreenSpaceSettings m_Settings; + private bool m_DecalLayers; - public DecalScreenSpaceRenderPass(DecalScreenSpaceSettings settings, DecalDrawScreenSpaceSystem drawSystem) + public DecalScreenSpaceRenderPass(DecalScreenSpaceSettings settings, DecalDrawScreenSpaceSystem drawSystem, bool decalLayers) { renderPassEvent = RenderPassEvent.AfterRenderingSkybox; - ConfigureInput(ScriptableRenderPassInput.Depth); // Require depth + + var scriptableRenderPassInput = ScriptableRenderPassInput.Depth; // Require depth + ConfigureInput(scriptableRenderPassInput); m_DrawSystem = drawSystem; m_Settings = settings; m_ProfilingSampler = new ProfilingSampler("Decal Screen Space Render"); m_FilteringSettings = new FilteringSettings(RenderQueueRange.opaque, -1); + m_DecalLayers = decalLayers; m_ShaderTagIdList = new List(); @@ -52,6 +56,8 @@ public override void Execute(ScriptableRenderContext context, ref RenderingData CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DecalNormalBlendMedium, m_Settings.normalBlend == DecalNormalBlend.Medium); CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DecalNormalBlendHigh, m_Settings.normalBlend == DecalNormalBlend.High); + CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DecalLayers, m_DecalLayers); + context.ExecuteCommandBuffer(cmd); cmd.Clear(); @@ -71,6 +77,8 @@ public override void OnCameraCleanup(CommandBuffer cmd) CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DecalNormalBlendLow, false); CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DecalNormalBlendMedium, false); CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DecalNormalBlendHigh, false); + CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.DecalLayers, false); + } } } diff --git a/com.unity.render-pipelines.universal/Runtime/DeferredLights.cs b/com.unity.render-pipelines.universal/Runtime/DeferredLights.cs index a81127a8a32..4fd0ab47985 100644 --- a/com.unity.render-pipelines.universal/Runtime/DeferredLights.cs +++ b/com.unity.render-pipelines.universal/Runtime/DeferredLights.cs @@ -153,7 +153,7 @@ internal GraphicsFormat GetGBufferFormat(int index) else if (index == GBufferShadowMask) // Optional: shadow mask is outputed in mixed lighting subtractive mode for non-static meshes only return GraphicsFormat.R8G8B8A8_UNorm; else if (index == GBufferRenderingLayers) // Optional: rendering layers is outputed when light layers are enabled (subset of rendering layers) - return GraphicsFormat.R8_UNorm; + return RenderingLayersFormat; else return GraphicsFormat.None; } @@ -161,13 +161,21 @@ internal GraphicsFormat GetGBufferFormat(int index) // This may return different values depending on what lights are rendered for a given frame. internal bool UseShadowMask { get { return this.MixedLightingSetup != MixedLightingSetup.None; } } // - internal bool UseRenderingLayers { get { return UniversalRenderPipeline.asset.supportsLightLayers; } } + internal bool UseRenderingLayers { get { return UseLightLayers || UseDecalLayers; } } + // + internal GraphicsFormat RenderingLayersFormat { get; set; } + // + internal bool UseDecalLayers { get; set; } + // + internal bool UseLightLayers { get { return UniversalRenderPipeline.asset.supportsLightLayers; } } // internal bool UseRenderPass { get; set; } // internal bool HasDepthPrepass { get; set; } // internal bool HasNormalPrepass { get; set; } + // + internal bool HasRenderingLayerPrepass { get; set; } // This is an overlay camera being rendered. internal bool IsOverlay { get; set; } // Not all platforms support R8G8B8A8_SNorm, so we need to check for the support and force accurate GBuffer normals and relevant shader variants @@ -301,6 +309,9 @@ internal void SetupLights(ScriptableRenderContext context, ref RenderingData ren CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.MixedLightingSubtractive, isSubtractive); // Backward compatibility // This should be moved to a more global scope when framebuffer fetch is introduced to more passes CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.RenderPassEnabled, this.UseRenderPass && renderingData.cameraData.cameraType == CameraType.Game); + CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.LightLayers, UseLightLayers); + + cmd.SetGlobalInt(ShaderPropertyId.renderingLayerMaskSize, RenderingLayerUtils.GetBits(RenderingLayersFormat)); } context.ExecuteCommandBuffer(cmd); @@ -390,6 +401,7 @@ public void Setup(ref RenderingData renderingData, AdditionalLightsShadowCasterPass additionalLightsShadowCasterPass, bool hasDepthPrepass, bool hasNormalPrepass, + bool hasRenderingLayerPrepass, RTHandle depthCopyTexture, RTHandle depthAttachment, RTHandle colorAttachment) @@ -397,6 +409,7 @@ public void Setup(ref RenderingData renderingData, m_AdditionalLightsShadowCasterPass = additionalLightsShadowCasterPass; this.HasDepthPrepass = hasDepthPrepass; this.HasNormalPrepass = hasNormalPrepass; + this.HasRenderingLayerPrepass = hasRenderingLayerPrepass; this.DepthCopyTexture = depthCopyTexture; @@ -562,7 +575,7 @@ void SetupMainLightConstants(CommandBuffer cmd, ref LightData lightData) UniversalRenderPipeline.InitializeLightConstants_Common(lightData.visibleLights, lightData.mainLightIndex, out lightPos, out lightColor, out lightAttenuation, out lightSpotDir, out lightOcclusionChannel); var additionalLightData = lightData.visibleLights[lightData.mainLightIndex].light.GetUniversalAdditionalLightData(); - uint lightLayerMask = (uint)additionalLightData.lightLayerMask; + uint lightLayerMask = RenderingLayerUtils.ToRenderingLayers(additionalLightData.lightLayerMask); cmd.SetGlobalVector(ShaderConstants._MainLightPosition, lightPos); cmd.SetGlobalVector(ShaderConstants._MainLightColor, lightColor); @@ -726,7 +739,7 @@ void RenderStencilDirectionalLights(CommandBuffer cmd, ref RenderingData renderi lightFlags |= (int)LightFlag.SubtractiveMixedLighting; var additionalLightData = vl.light.GetUniversalAdditionalLightData(); - uint lightLayerMask = (uint)additionalLightData.lightLayerMask; + uint lightLayerMask = RenderingLayerUtils.ToRenderingLayers(additionalLightData.lightLayerMask); // Setup shadow paramters: // - for the main light, they have already been setup globally, so nothing to do. @@ -793,7 +806,7 @@ void RenderStencilPointLights(CommandBuffer cmd, ref RenderingData renderingData UniversalRenderPipeline.InitializeLightConstants_Common(visibleLights, visLightIndex, out lightPos, out lightColor, out lightAttenuation, out lightSpotDir, out lightOcclusionChannel); var additionalLightData = vl.light.GetUniversalAdditionalLightData(); - uint lightLayerMask = (uint)additionalLightData.lightLayerMask; + uint lightLayerMask = RenderingLayerUtils.ToRenderingLayers(additionalLightData.lightLayerMask); int lightFlags = 0; if (vl.light.bakingOutput.lightmapBakeType == LightmapBakeType.Mixed) @@ -855,7 +868,7 @@ void RenderStencilSpotLights(CommandBuffer cmd, ref RenderingData renderingData, UniversalRenderPipeline.InitializeLightConstants_Common(visibleLights, visLightIndex, out lightPos, out lightColor, out lightAttenuation, out lightSpotDir, out lightOcclusionChannel); var additionalLightData = vl.light.GetUniversalAdditionalLightData(); - uint lightLayerMask = (uint)additionalLightData.lightLayerMask; + uint lightLayerMask = RenderingLayerUtils.ToRenderingLayers(additionalLightData.lightLayerMask); int lightFlags = 0; if (vl.light.bakingOutput.lightmapBakeType == LightmapBakeType.Mixed) diff --git a/com.unity.render-pipelines.universal/Runtime/ForwardLights.cs b/com.unity.render-pipelines.universal/Runtime/ForwardLights.cs index de5ae44f5c4..543367cdb3d 100644 --- a/com.unity.render-pipelines.universal/Runtime/ForwardLights.cs +++ b/com.unity.render-pipelines.universal/Runtime/ForwardLights.cs @@ -429,7 +429,7 @@ void InitializeLightConstants(NativeArray lights, int lightIndex, } var additionalLightData = light.GetUniversalAdditionalLightData(); - lightLayerMask = (uint)additionalLightData.lightLayerMask; + lightLayerMask = RenderingLayerUtils.ToRenderingLayers(additionalLightData.lightLayerMask); } void SetupShaderLightConstants(CommandBuffer cmd, ref RenderingData renderingData) diff --git a/com.unity.render-pipelines.universal/Runtime/Passes/DepthNormalOnlyPass.cs b/com.unity.render-pipelines.universal/Runtime/Passes/DepthNormalOnlyPass.cs index d0644b66e36..188b3c28ef9 100644 --- a/com.unity.render-pipelines.universal/Runtime/Passes/DepthNormalOnlyPass.cs +++ b/com.unity.render-pipelines.universal/Runtime/Passes/DepthNormalOnlyPass.cs @@ -10,10 +10,14 @@ public class DepthNormalOnlyPass : ScriptableRenderPass private RTHandle depthHandle { get; set; } private RTHandle normalHandle { get; set; } + private RTHandle renderingLayersHandle { get; set; } + internal bool enableRenderingLayers { get; set; } = false; private FilteringSettings m_FilteringSettings; // Constants private static readonly List k_DepthNormals = new List { new ShaderTagId("DepthNormals"), new ShaderTagId("DepthNormalsOnly") }; + private static readonly RTHandle[] k_ColorAttachment1 = new RTHandle[1]; + private static readonly RTHandle[] k_ColorAttachment2 = new RTHandle[2]; /// /// Creates a new DepthNormalOnlyPass instance. @@ -53,15 +57,40 @@ public void Setup(RTHandle depthHandle, RTHandle normalHandle) this.depthHandle = depthHandle; this.normalHandle = normalHandle; this.shaderTagIds = k_DepthNormals; + this.enableRenderingLayers = false; } + /// + /// Configure the pass + /// + public void Setup(RTHandle depthHandle, RTHandle normalHandle, RTHandle decalLayerHandle) + { + Setup(depthHandle, normalHandle); + this.renderingLayersHandle = decalLayerHandle; + this.enableRenderingLayers = true; + } + + /// public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderingData) { + RTHandle[] colorHandles; + if (this.enableRenderingLayers) + { + k_ColorAttachment2[0] = normalHandle; + k_ColorAttachment2[1] = renderingLayersHandle; + colorHandles = k_ColorAttachment2; + } + else + { + k_ColorAttachment1[0] = normalHandle; + colorHandles = k_ColorAttachment1; + } + if (renderingData.cameraData.renderer.useDepthPriming && (renderingData.cameraData.renderType == CameraRenderType.Base || renderingData.cameraData.clearDepth)) - ConfigureTarget(normalHandle, renderingData.cameraData.renderer.cameraDepthTargetHandle); + ConfigureTarget(colorHandles, renderingData.cameraData.renderer.cameraDepthTargetHandle); else - ConfigureTarget(normalHandle, depthHandle); + ConfigureTarget(colorHandles, depthHandle); ConfigureClear(ClearFlag.All, Color.black); } @@ -75,6 +104,11 @@ public override void Execute(ScriptableRenderContext context, ref RenderingData context.ExecuteCommandBuffer(cmd); cmd.Clear(); + CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.WriteRenderingLayers, this.enableRenderingLayers); + + context.ExecuteCommandBuffer(cmd); + cmd.Clear(); + var sortFlags = renderingData.cameraData.defaultOpaqueSortFlags; var drawSettings = CreateDrawingSettings(this.shaderTagIds, ref renderingData, sortFlags); drawSettings.perObjectData = PerObjectData.None; @@ -95,6 +129,7 @@ public override void OnCameraCleanup(CommandBuffer cmd) } normalHandle = null; depthHandle = null; + renderingLayersHandle = null; } } } diff --git a/com.unity.render-pipelines.universal/Runtime/Passes/DrawObjectsPass.cs b/com.unity.render-pipelines.universal/Runtime/Passes/DrawObjectsPass.cs index edad004fd89..1f9064f9abb 100644 --- a/com.unity.render-pipelines.universal/Runtime/Passes/DrawObjectsPass.cs +++ b/com.unity.render-pipelines.universal/Runtime/Passes/DrawObjectsPass.cs @@ -4,6 +4,45 @@ namespace UnityEngine.Rendering.Universal.Internal { + /// + /// Extension of DrawObjectPass that also output Rendering Layers Texture as second render target. + /// + internal class DrawObjectsWithRenderingLayersPass : DrawObjectsPass + { + RTHandle[] m_ColorTargetIndentifiers; + RTHandle m_DepthTargetIndentifiers; + + public DrawObjectsWithRenderingLayersPass(URPProfileId profilerTag, bool opaque, RenderPassEvent evt, RenderQueueRange renderQueueRange, LayerMask layerMask, StencilState stencilState, int stencilReference) : + base(profilerTag, opaque, evt, renderQueueRange, layerMask, stencilState, stencilReference) + { + m_ColorTargetIndentifiers = new RTHandle[2]; + } + + public void Setup(RTHandle colorAttachment, RTHandle renderingLayersTexture, RTHandle depthAttachment) + { + if (colorAttachment == null) + throw new ArgumentException("Color attachment can not be null", "colorAttachment"); + if (renderingLayersTexture == null) + throw new ArgumentException("Rendering layers attachment can not be null", "renderingLayersTexture"); + if (depthAttachment == null) + throw new ArgumentException("Depth attachment can not be null", "depthAttachment"); + + m_ColorTargetIndentifiers[0] = colorAttachment; + m_ColorTargetIndentifiers[1] = renderingLayersTexture; + m_DepthTargetIndentifiers = depthAttachment; + } + + public override void Configure(CommandBuffer cmd, RenderTextureDescriptor cameraTextureDescriptor) + { + ConfigureTarget(m_ColorTargetIndentifiers, m_DepthTargetIndentifiers); + } + + protected override void OnExecute(CommandBuffer cmd) + { + CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.WriteRenderingLayers, true); + } + } + /// /// Draw objects into the given color and depth target /// @@ -107,6 +146,8 @@ public override void Execute(ScriptableRenderContext context, ref RenderingData var cmd = renderingData.commandBuffer; using (new ProfilingScope(cmd, m_ProfilingSampler)) { + OnExecute(cmd); + context.ExecuteCommandBuffer(cmd); cmd.Clear(); // Global render pass data containing various settings. @@ -160,5 +201,7 @@ public override void Execute(ScriptableRenderContext context, ref RenderingData } } } + + protected virtual void OnExecute(CommandBuffer cmd) { } } } diff --git a/com.unity.render-pipelines.universal/Runtime/Passes/GBufferPass.cs b/com.unity.render-pipelines.universal/Runtime/Passes/GBufferPass.cs index 7de1fa6d8a8..44309af49c0 100644 --- a/com.unity.render-pipelines.universal/Runtime/Passes/GBufferPass.cs +++ b/com.unity.render-pipelines.universal/Runtime/Passes/GBufferPass.cs @@ -115,6 +115,8 @@ public override void Execute(ScriptableRenderContext context, ref RenderingData var cmd = renderingData.commandBuffer; using (new ProfilingScope(cmd, m_ProfilingSampler)) { + CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.WriteRenderingLayers, m_DeferredLights.UseRenderingLayers); + context.ExecuteCommandBuffer(cmd); cmd.Clear(); @@ -144,11 +146,6 @@ public override void Execute(ScriptableRenderContext context, ref RenderingData // Render objects that did not match any shader pass with error shader RenderingUtils.RenderObjectsWithError(context, ref renderingData.cullResults, camera, m_FilteringSettings, SortingCriteria.None); - - // If any sub-system needs camera normal texture, make it available. - // Input attachments will only be used when this is not needed so safe to skip in that case - if (!m_DeferredLights.UseRenderPass) - cmd.SetGlobalTexture(s_CameraNormalsTextureID, m_DeferredLights.GbufferAttachments[m_DeferredLights.GBufferNormalSmoothnessIndex]); } } } diff --git a/com.unity.render-pipelines.universal/Runtime/Passes/ScriptableRenderPass.cs b/com.unity.render-pipelines.universal/Runtime/Passes/ScriptableRenderPass.cs index 123f0b3429a..a806edd4ba3 100644 --- a/com.unity.render-pipelines.universal/Runtime/Passes/ScriptableRenderPass.cs +++ b/com.unity.render-pipelines.universal/Runtime/Passes/ScriptableRenderPass.cs @@ -38,7 +38,7 @@ public enum ScriptableRenderPassInput /// /// Used when a ScriptableRenderPass requires a motion vectors texture. /// - Motion = 1 << 3 + Motion = 1 << 3, } // Note: Spaced built-in events so we can add events in between them @@ -411,6 +411,30 @@ internal bool IsInputAttachmentTransient(int idx) return m_InputAttachmentIsTransient[idx]; } + /// + /// Resets render targets to default. + /// This method effectively reset changes done by ConfigureTarget. + /// + /// + public void ResetTarget() + { + overrideCameraTarget = false; + m_UsesRTHandles = true; + + // Reset depth + m_DepthAttachmentId = -1; + m_DepthAttachment = null; + + // Reset colors + m_ColorAttachments[0] = null; + m_ColorAttachmentIds[0] = -1; + for (int i = 1; i < m_ColorAttachments.Length; ++i) + { + m_ColorAttachments[i] = null; + m_ColorAttachmentIds[i] = 0; + } + } + /// /// Configures render targets for this render pass. Call this instead of CommandBuffer.SetRenderTarget. /// This method should be called inside Configure. @@ -669,6 +693,19 @@ public void Blit(CommandBuffer cmd, ref RenderingData data, Material material, i renderer.SwapColorBuffer(cmd); } + /// + /// Add a blit command to the context for execution. This applies the material to the color target. + /// + /// Command buffer to record command for execution. + /// Source texture or target identifier to blit from. + /// Material to use. + /// Shader pass to use. Default is 0. + public void Blit(CommandBuffer cmd, ref RenderingData data, RTHandle source, Material material, int passIndex = 0) + { + var renderer = data.cameraData.renderer; + Blit(cmd, source, renderer.cameraColorTargetHandle, material, passIndex); + } + /// /// Creates DrawingSettings based on current the rendering state. /// diff --git a/com.unity.render-pipelines.universal/Runtime/RendererFeatures/DecalRendererFeature.cs b/com.unity.render-pipelines.universal/Runtime/RendererFeatures/DecalRendererFeature.cs index 3b42e055c8b..af69cbf981f 100644 --- a/com.unity.render-pipelines.universal/Runtime/RendererFeatures/DecalRendererFeature.cs +++ b/com.unity.render-pipelines.universal/Runtime/RendererFeatures/DecalRendererFeature.cs @@ -61,6 +61,7 @@ internal class DecalSettings { public DecalTechniqueOption technique = DecalTechniqueOption.Automatic; public float maxDrawDistance = 1000f; + public bool decalLayers = false; public DBufferSettings dBufferSettings; public DecalScreenSpaceSettings screenSpaceSettings; } @@ -202,6 +203,7 @@ internal class DecalRendererFeature : ScriptableRendererFeature private DeferredLights m_DeferredLights; internal bool intermediateRendering => m_Technique == DecalTechnique.DBuffer; + internal bool requiresDecalLayers => m_Settings.decalLayers; public override void Create() { @@ -212,6 +214,14 @@ public override void Create() m_RecreateSystems = true; } + internal override bool RequireRenderingLayers(bool isDeferred, out RenderingLayerUtils.Event atEvent, out RenderingLayerUtils.MaskSize maskSize) + { + var technique = GetTechnique(isDeferred); + atEvent = technique == DecalTechnique.DBuffer ? RenderingLayerUtils.Event.DepthNormalPrePass : RenderingLayerUtils.Event.Opaque; + maskSize = RenderingLayerUtils.MaskSize.Bits16; + return requiresDecalLayers; + } + internal DBufferSettings GetDBufferSettings() { if (m_Settings.technique == DecalTechniqueOption.Automatic) @@ -363,7 +373,8 @@ private void RecreateSystemsIfNeeded(ScriptableRenderer renderer, in CameraData { case DecalTechnique.ScreenSpace: m_DecalDrawScreenSpaceSystem = new DecalDrawScreenSpaceSystem(m_DecalEntityManager); - m_ScreenSpaceDecalRenderPass = new DecalScreenSpaceRenderPass(m_ScreenSpaceSettings, intermediateRendering ? m_DecalDrawScreenSpaceSystem : null); + m_ScreenSpaceDecalRenderPass = new DecalScreenSpaceRenderPass(m_ScreenSpaceSettings, + intermediateRendering ? m_DecalDrawScreenSpaceSystem : null, m_Settings.decalLayers); break; case DecalTechnique.GBuffer: @@ -371,22 +382,17 @@ private void RecreateSystemsIfNeeded(ScriptableRenderer renderer, in CameraData m_DeferredLights = universalRenderer.deferredLights; m_DrawGBufferSystem = new DecalDrawGBufferSystem(m_DecalEntityManager); - m_GBufferRenderPass = new DecalGBufferRenderPass(m_ScreenSpaceSettings, intermediateRendering ? m_DrawGBufferSystem : null); + m_GBufferRenderPass = new DecalGBufferRenderPass(m_ScreenSpaceSettings, + intermediateRendering ? m_DrawGBufferSystem : null, m_Settings.decalLayers); 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); + m_DBufferRenderPass = new DBufferRenderPass(m_DBufferClearMaterial, m_DBufferSettings, m_DecalDrawDBufferSystem, m_Settings.decalLayers); m_DecalDrawForwardEmissiveSystem = new DecalDrawFowardEmissiveSystem(m_DecalEntityManager); m_ForwardEmissivePass = new DecalForwardEmissivePass(m_DecalDrawForwardEmissiveSystem); - - if (universalRenderer.renderingModeActual == RenderingMode.Deferred) - { - m_DBufferRenderPass.deferredLights = universalRenderer.deferredLights; - m_DBufferRenderPass.deferredLights.DisableFramebufferFetchInput(); - } break; } @@ -477,12 +483,18 @@ public override void SetupRenderPasses(ScriptableRenderer renderer, in Rendering var universalRenderer = renderer as UniversalRenderer; if (universalRenderer.renderingModeActual == RenderingMode.Deferred) + { + m_DBufferRenderPass.Setup(renderingData.cameraData, renderer.cameraDepthTargetHandle); + m_CopyDepthPass.Setup( renderer.cameraDepthTargetHandle, universalRenderer.m_DepthTexture ); + } else { + m_DBufferRenderPass.Setup(renderingData.cameraData); + m_CopyDepthPass.Setup( universalRenderer.m_DepthTexture, m_DBufferRenderPass.dBufferDepth diff --git a/com.unity.render-pipelines.universal/Runtime/RenderingLayerUtils.cs b/com.unity.render-pipelines.universal/Runtime/RenderingLayerUtils.cs new file mode 100644 index 00000000000..12d7380ea1a --- /dev/null +++ b/com.unity.render-pipelines.universal/Runtime/RenderingLayerUtils.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using UnityEngine.Experimental.Rendering; + +namespace UnityEngine.Rendering.Universal +{ + /// + /// Helper class for finding out if Rendering Layers Texture is required by Scriptable Renderer Features. + /// + internal static class RenderingLayerUtils + { + public enum Event + { + DepthNormalPrePass, + Opaque, + } + + public enum MaskSize + { + Bits8, + Bits16, + Bits24, + Bits32, + } + + public static bool RequireRenderingLayers(UniversalRendererData universalRendererData, + out Event combinedEvent, out MaskSize combinedMaskSize) + { + combinedEvent = Event.DepthNormalPrePass; + combinedMaskSize = MaskSize.Bits8; + + bool isDeferred = universalRendererData.renderingMode == RenderingMode.Deferred; + bool result = false; + foreach (var rendererFeature in universalRendererData.rendererFeatures) + { + if (rendererFeature.isActive) + { + result |= rendererFeature.RequireRenderingLayers(isDeferred, out Event rendererEvent, out MaskSize rendererMaskSize); + combinedEvent = Combine(combinedEvent, rendererEvent); + combinedMaskSize = Combine(combinedMaskSize, rendererMaskSize); + } + } + + return result; + } + + public static bool RequireRenderingLayers(UniversalRenderer universalRenderer, List rendererFeatures, + out Event combinedEvent, out MaskSize combinedMaskSize) + { + combinedEvent = Event.Opaque; + combinedMaskSize = MaskSize.Bits8; + + bool isDeferred = universalRenderer.renderingModeActual == RenderingMode.Deferred; + bool result = false; + foreach (var rendererFeature in rendererFeatures) + { + if (rendererFeature.isActive) + { + result |= rendererFeature.RequireRenderingLayers(isDeferred, out Event rendererEvent, out MaskSize rendererMaskSize); + combinedEvent = Combine(combinedEvent, rendererEvent); + combinedMaskSize = Combine(combinedMaskSize, rendererMaskSize); + } + } + + return result; + } + + public static int GetBits(GraphicsFormat format) + { + switch (format) + { + case GraphicsFormat.R8_UNorm: + return 8; + case GraphicsFormat.R16_UNorm: + return 16; + case GraphicsFormat.R32_SFloat: + return 31; + default: + throw new NotImplementedException(); + } + } + + public static int GetBits(MaskSize maskSize) + { + return GetBits(GetFormat(maskSize)); + } + + public static GraphicsFormat GetFormat(MaskSize maskSize) + { + switch (maskSize) + { + case MaskSize.Bits8: + return GraphicsFormat.R8_UNorm; + case MaskSize.Bits16: + return GraphicsFormat.R16_UNorm; + case MaskSize.Bits24: + case MaskSize.Bits32: + return GraphicsFormat.R32_SFloat; + default: + throw new NotImplementedException(); + } + } + + public static uint ToRenderingLayers(LightLayerEnum lightLayers) + { + return (uint)lightLayers; + } + + public static uint ToRenderingLayers(DecalLayerEnum decalLayers) + { + return (uint)decalLayers << 8; + } + + static Event Combine(Event a, Event b) + { + return (Event)Mathf.Min((int)a, (int)b); + } + + static MaskSize Combine(MaskSize a, MaskSize b) + { + return (MaskSize)Mathf.Max((int)a, (int)b); + } + } +} diff --git a/com.unity.render-pipelines.universal/Runtime/RenderingLayerUtils.cs.meta b/com.unity.render-pipelines.universal/Runtime/RenderingLayerUtils.cs.meta new file mode 100644 index 00000000000..40fa02c1a47 --- /dev/null +++ b/com.unity.render-pipelines.universal/Runtime/RenderingLayerUtils.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9970fa110f6e0904eabc7780d79a96ae +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs b/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs index ff4674af3e6..8eea83b044d 100644 --- a/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs +++ b/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs @@ -1365,8 +1365,20 @@ void SetRenderPassAttachments(CommandBuffer cmd, ScriptableRenderPass renderPass } else { + // TODO: investigate performance cost of this + // As alternative we would need a way to check if rts are not going to be used as shader resource + bool colorAttachmentCheck = false; + for (int i = 0; i < m_ActiveColorAttachments.Length; i++) + { + if (renderPass.colorAttachments[i] != m_ActiveColorAttachments[i]) + { + colorAttachmentCheck = true; + break; + } + } + // Only setup render target if current render pass attachments are different from the active ones - if (passColorAttachment.nameID != m_ActiveColorAttachments[0] || passDepthAttachment.nameID != m_ActiveDepthAttachment || finalClearFlag != ClearFlag.None || + if (colorAttachmentCheck || passColorAttachment.nameID != m_ActiveColorAttachments[0] || passDepthAttachment.nameID != m_ActiveDepthAttachment || finalClearFlag != ClearFlag.None || renderPass.colorStoreActions[0] != m_ActiveColorStoreActions[0] || renderPass.depthStoreAction != m_ActiveDepthStoreAction) { if (passColorAttachment.useRTHandle && passDepthAttachment.useRTHandle) diff --git a/com.unity.render-pipelines.universal/Runtime/ScriptableRendererFeature.cs b/com.unity.render-pipelines.universal/Runtime/ScriptableRendererFeature.cs index fc1f21eccf9..191eb2a0931 100644 --- a/com.unity.render-pipelines.universal/Runtime/ScriptableRendererFeature.cs +++ b/com.unity.render-pipelines.universal/Runtime/ScriptableRendererFeature.cs @@ -61,6 +61,20 @@ internal virtual bool SupportsNativeRenderPass() return false; } + /// + /// Override this method and return true that renderer would produce rendering layers texture. + /// + /// True if renderer is using deferred rendering mode + /// Requeted event at which rendering layers texture will be produced + /// Requested bit size of rendering layers texture + /// + internal virtual bool RequireRenderingLayers(bool isDeferred, out RenderingLayerUtils.Event atEvent, out RenderingLayerUtils.MaskSize maskSize) + { + atEvent = RenderingLayerUtils.Event.DepthNormalPrePass; + maskSize = RenderingLayerUtils.MaskSize.Bits8; + return false; + } + /// /// Sets the state of ScriptableRenderFeature (true: the feature is active, false: the feature is inactive). /// If the feature is active, it is added to the renderer it is attached to, otherwise the feature is skipped while rendering. diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs index 2df02961f11..20bd117a7fa 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs @@ -552,6 +552,8 @@ internal static class ShaderPropertyId // Required for 2D Unlit Shadergraph master node as it doesn't currently support hidden properties. public static readonly int rendererColor = Shader.PropertyToID("_RendererColor"); + + public static readonly int renderingLayerMaskSize = Shader.PropertyToID("_RenderingLayerMaskSize"); } /// @@ -611,6 +613,9 @@ public static class ShaderKeywordStrings public static readonly string DecalNormalBlendLow = "_DECAL_NORMAL_BLEND_LOW"; public static readonly string DecalNormalBlendMedium = "_DECAL_NORMAL_BLEND_MEDIUM"; public static readonly string DecalNormalBlendHigh = "_DECAL_NORMAL_BLEND_HIGH"; + public static readonly string DecalLayers = "_DECAL_LAYERS"; + + public static readonly string WriteRenderingLayers = "_WRITE_RENDERING_LAYERS"; public static readonly string SmaaLow = "_SMAA_PRESET_LOW"; public static readonly string SmaaMedium = "_SMAA_PRESET_MEDIUM"; diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineGlobalSettings.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineGlobalSettings.cs index 2353fb6e078..8ca81c4619e 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineGlobalSettings.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineGlobalSettings.cs @@ -158,6 +158,15 @@ internal static UniversalRenderPipelineGlobalSettings Create(string path, Univer assetCreated.lightLayerName5 = System.String.Copy(src.lightLayerName5); assetCreated.lightLayerName6 = System.String.Copy(src.lightLayerName6); assetCreated.lightLayerName7 = System.String.Copy(src.lightLayerName7); + + assetCreated.decalLayerName0 = System.String.Copy(src.decalLayerName0); + assetCreated.decalLayerName1 = System.String.Copy(src.decalLayerName1); + assetCreated.decalLayerName2 = System.String.Copy(src.decalLayerName2); + assetCreated.decalLayerName3 = System.String.Copy(src.decalLayerName3); + assetCreated.decalLayerName4 = System.String.Copy(src.decalLayerName4); + assetCreated.decalLayerName5 = System.String.Copy(src.decalLayerName5); + assetCreated.decalLayerName6 = System.String.Copy(src.decalLayerName6); + assetCreated.decalLayerName7 = System.String.Copy(src.decalLayerName7); } AssetDatabase.SaveAssets(); @@ -217,6 +226,15 @@ internal void UpdateRenderingLayerNames() m_RenderingLayerNames[index++] = lightLayerName6; m_RenderingLayerNames[index++] = lightLayerName7; + m_RenderingLayerNames[index++] = decalLayerName0; + m_RenderingLayerNames[index++] = decalLayerName1; + m_RenderingLayerNames[index++] = decalLayerName2; + m_RenderingLayerNames[index++] = decalLayerName3; + m_RenderingLayerNames[index++] = decalLayerName4; + m_RenderingLayerNames[index++] = decalLayerName5; + m_RenderingLayerNames[index++] = decalLayerName6; + m_RenderingLayerNames[index++] = decalLayerName7; + // Unused for (int i = index; i < m_RenderingLayerNames.Length; ++i) { @@ -273,6 +291,25 @@ public string[] prefixedLightLayerNames /// Name for light layer 7. public string lightLayerName7 = k_DefaultLightLayerNames[7]; + static readonly string[] k_DefaultDecalLayerNames = { "Decal Layer default", "Decal Layer 1", "Decal Layer 2", "Decal Layer 3", "Decal Layer 4", "Decal Layer 5", "Decal Layer 6", "Decal Layer 7" }; + + /// Name for decal layer 0. + public string decalLayerName0 = k_DefaultDecalLayerNames[0]; + /// Name for decal layer 1. + public string decalLayerName1 = k_DefaultDecalLayerNames[1]; + /// Name for decal layer 2. + public string decalLayerName2 = k_DefaultDecalLayerNames[2]; + /// Name for decal layer 3. + public string decalLayerName3 = k_DefaultDecalLayerNames[3]; + /// Name for decal layer 4. + public string decalLayerName4 = k_DefaultDecalLayerNames[4]; + /// Name for decal layer 5. + public string decalLayerName5 = k_DefaultDecalLayerNames[5]; + /// Name for decal layer 6. + public string decalLayerName6 = k_DefaultDecalLayerNames[6]; + /// Name for decal layer 7. + public string decalLayerName7 = k_DefaultDecalLayerNames[7]; + [System.NonSerialized] string[] m_LightLayerNames = null; /// @@ -310,6 +347,15 @@ internal void ResetRenderingLayerNames() lightLayerName5 = k_DefaultLightLayerNames[5]; lightLayerName6 = k_DefaultLightLayerNames[6]; lightLayerName7 = k_DefaultLightLayerNames[7]; + + decalLayerName0 = k_DefaultDecalLayerNames[0]; + decalLayerName1 = k_DefaultDecalLayerNames[1]; + decalLayerName2 = k_DefaultDecalLayerNames[2]; + decalLayerName3 = k_DefaultDecalLayerNames[3]; + decalLayerName4 = k_DefaultDecalLayerNames[4]; + decalLayerName5 = k_DefaultDecalLayerNames[5]; + decalLayerName6 = k_DefaultDecalLayerNames[6]; + decalLayerName7 = k_DefaultDecalLayerNames[7]; } #endregion diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderer.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderer.cs index ebc903b5140..db4dce5687a 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderer.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderer.cs @@ -86,6 +86,7 @@ public override int SupportedCameraStackingTypes() DeferredPass m_DeferredPass; DrawObjectsPass m_RenderOpaqueForwardOnlyPass; DrawObjectsPass m_RenderOpaqueForwardPass; + DrawObjectsWithRenderingLayersPass m_RenderOpaqueForwardWithRenderingLayersPass; DrawSkyboxPass m_DrawSkyboxPass; CopyDepthPass m_CopyDepthPass; CopyColorPass m_CopyColorPass; @@ -111,6 +112,7 @@ public override int SupportedCameraStackingTypes() RTHandle m_XRTargetHandleAlias; internal RTHandle m_DepthTexture; RTHandle m_NormalsTexture; + RTHandle m_DecalLayersTexture; RTHandle m_OpaqueColor; RTHandle m_MotionVectorColor; RTHandle m_MotionVectorDepth; @@ -249,6 +251,7 @@ public UniversalRenderer(UniversalRendererData data) : base(data) // Always create this pass even in deferred because we use it for wireframe rendering in the Editor or offscreen depth texture rendering. m_RenderOpaqueForwardPass = new DrawObjectsPass(URPProfileId.DrawOpaqueObjects, true, RenderPassEvent.BeforeRenderingOpaques, RenderQueueRange.opaque, data.opaqueLayerMask, m_DefaultStencilState, stencilData.stencilReference); + m_RenderOpaqueForwardWithRenderingLayersPass = new DrawObjectsWithRenderingLayersPass(URPProfileId.DrawOpaqueObjects, true, RenderPassEvent.BeforeRenderingOpaques, RenderQueueRange.opaque, data.opaqueLayerMask, m_DefaultStencilState, stencilData.stencilReference); bool copyDepthAfterTransparents = m_CopyDepthMode == CopyDepthMode.AfterTransparents; @@ -323,6 +326,7 @@ protected override void Dispose(bool disposing) m_XRTargetHandleAlias?.Release(); m_DepthTexture?.Release(); m_NormalsTexture?.Release(); + m_DecalLayersTexture?.Release(); m_OpaqueColor?.Release(); m_MotionVectorColor?.Release(); m_MotionVectorDepth?.Release(); @@ -394,6 +398,11 @@ bool IsGLESDevice() return SystemInfo.graphicsDeviceType == GraphicsDeviceType.OpenGLES2 || SystemInfo.graphicsDeviceType == GraphicsDeviceType.OpenGLES3; } + bool IsGLDevice() + { + return IsGLESDevice() || SystemInfo.graphicsDeviceType == GraphicsDeviceType.OpenGLCore; + } + /// public override void Setup(ScriptableRenderContext context, ref RenderingData renderingData) { @@ -427,12 +436,6 @@ public override void Setup(ScriptableRenderContext context, ref RenderingData re return; } - if (m_DeferredLights != null) - { - m_DeferredLights.ResolveMixedLightingMode(ref renderingData); - m_DeferredLights.IsOverlay = cameraData.renderType == CameraRenderType.Overlay; - } - // Assign the camera color target early in case it is needed during AddRenderPasses. bool isPreviewCamera = cameraData.isPreviewCamera; var createColorTexture = (rendererFeatures.Count != 0 && m_IntermediateTextureMode == IntermediateTextureMode.Always) && !isPreviewCamera; @@ -440,6 +443,38 @@ public override void Setup(ScriptableRenderContext context, ref RenderingData re // Gather render passe input requirements RenderPassInputSummary renderPassInputs = GetRenderPassInputs(ref renderingData); + // Gather render pass require rendering layers event and mask size + bool requiresRenderingLayer = RenderingLayerUtils.RequireRenderingLayers(this, rendererFeatures, + out var renderingLayersEvent, out var renderingLayersSize); + + // All passes that use write to rendering layers are excluded from gl + // So we disable it to avoid setting multiple render targets + if (IsGLDevice()) + requiresRenderingLayer = false; + + bool renderingLayerProvidesByDepthNormalPass = requiresRenderingLayer && renderingLayersEvent == RenderingLayerUtils.Event.DepthNormalPrePass; + bool renderingLayerProvidesRenderObjectPass = requiresRenderingLayer && + this.renderingModeActual == RenderingMode.Forward && renderingLayersEvent == RenderingLayerUtils.Event.Opaque; + bool renderingLayerProvidesGBufferPass = requiresRenderingLayer && + this.renderingModeActual == RenderingMode.Deferred && renderingLayersEvent == RenderingLayerUtils.Event.Opaque; + + // Enable depth normal prepass + if (renderingLayerProvidesByDepthNormalPass) + renderPassInputs.requiresNormalsTexture = true; + + // TODO: investigate the order of call, had to change because of requiresRenderingLayer + if (m_DeferredLights != null) + { + m_DeferredLights.RenderingLayersFormat = RenderingLayerUtils.GetFormat(renderingLayersSize); + m_DeferredLights.UseDecalLayers = requiresRenderingLayer; + + // TODO: This needs to be setup early, otherwise gbuffer attachments will be allocated with wrong size + m_DeferredLights.HasNormalPrepass = renderPassInputs.requiresNormalsTexture; + + m_DeferredLights.ResolveMixedLightingMode(ref renderingData); + m_DeferredLights.IsOverlay = cameraData.renderType == CameraRenderType.Overlay; + } + // Should apply post-processing after rendering this camera? bool applyPostProcessing = cameraData.postProcessEnabled && m_PostProcessPasses.isCreated; @@ -526,6 +561,8 @@ public override void Setup(ScriptableRenderContext context, ref RenderingData re createDepthTexture |= (this.renderingModeActual == RenderingMode.Deferred && !useRenderPassEnabled); // Some render cases (e.g. Material previews) have shown we need to create a depth texture when we're forcing a prepass. createDepthTexture |= m_DepthPrimingMode == DepthPrimingMode.Forced; + // Todo seems like with mrt depth is not taken from first target + createDepthTexture |= (renderingLayerProvidesRenderObjectPass); #if ENABLE_VR && ENABLE_XR_MODULE // URP can't handle msaa/size mismatch between depth RT and color RT(for now we create intermediate textures to ensure they match) @@ -609,7 +646,7 @@ public override void Setup(ScriptableRenderContext context, ref RenderingData re EnqueuePass(m_AdditionalLightsShadowCasterPass); bool requiresDepthCopyPass = !requiresDepthPrepass - && (renderingData.cameraData.requiresDepthTexture || cameraHasPostProcessingWithDepth) + && (renderingData.cameraData.requiresDepthTexture || cameraHasPostProcessingWithDepth || renderPassInputs.requiresDepthTexture) && createDepthTexture; if ((DebugHandler != null) && DebugHandler.IsActiveForCamera(ref cameraData)) @@ -647,7 +684,7 @@ public override void Setup(ScriptableRenderContext context, ref RenderingData re if ((this.renderingModeActual == RenderingMode.Deferred && !this.useRenderPassEnabled) || requiresDepthPrepass || requiresDepthCopyPass) { var depthDescriptor = cameraTargetDescriptor; - if (requiresDepthPrepass) + if (requiresDepthPrepass && this.renderingModeActual != RenderingMode.Deferred) { depthDescriptor.graphicsFormat = GraphicsFormat.None; depthDescriptor.depthStencilFormat = k_DepthStencilFormat; @@ -668,6 +705,40 @@ public override void Setup(ScriptableRenderContext context, ref RenderingData re cmd.Clear(); } + if (requiresRenderingLayer) + { + ref var renderingLayersTexture = ref m_DecalLayersTexture; + string renderingLayersTextureName = "_CameraRenderingLayersTexture"; + + if (this.renderingModeActual == RenderingMode.Deferred && m_DeferredLights.UseRenderingLayers) + { + renderingLayersTexture = ref m_DeferredLights.GbufferAttachments[(int)m_DeferredLights.GBufferRenderingLayers]; + renderingLayersTextureName = renderingLayersTexture.name; + } + + var renderingLayersDescriptor = cameraTargetDescriptor; + renderingLayersDescriptor.depthBufferBits = 0; + // Never have MSAA on this depth texture. When doing MSAA depth priming this is the texture that is resolved to and used for post-processing. + if (!renderingLayerProvidesRenderObjectPass) + renderingLayersDescriptor.msaaSamples = 1;// Depth-Only pass don't use MSAA + // Find compatible render-target format for storing normals. + // Shader code outputs normals in signed format to be compatible with deferred gbuffer layout. + // Deferred gbuffer format is signed so that normals can be blended for terrain geometry. + if (this.renderingModeActual == RenderingMode.Deferred && m_DeferredLights.UseRenderingLayers) + renderingLayersDescriptor.graphicsFormat = m_DeferredLights.GetGBufferFormat(m_DeferredLights.GBufferRenderingLayers); // the one used by the gbuffer. + else + renderingLayersDescriptor.graphicsFormat = RenderingLayerUtils.GetFormat(renderingLayersSize); + + RenderingUtils.ReAllocateIfNeeded(ref renderingLayersTexture, renderingLayersDescriptor, FilterMode.Point, TextureWrapMode.Clamp, name: renderingLayersTextureName); + + cmd.SetGlobalTexture(renderingLayersTexture.name, renderingLayersTexture.nameID); + cmd.SetGlobalInt(ShaderPropertyId.renderingLayerMaskSize, RenderingLayerUtils.GetBits(renderingLayersSize)); + if (this.renderingModeActual == RenderingMode.Deferred) // As this is requested by render pass we still want to set it + cmd.SetGlobalTexture("_CameraRenderingLayersTexture", renderingLayersTexture.nameID); + context.ExecuteCommandBuffer(cmd); + cmd.Clear(); + } + // Allocate normal texture if used if (requiresDepthPrepass && renderPassInputs.requiresNormalsTexture) { @@ -695,6 +766,8 @@ public override void Setup(ScriptableRenderContext context, ref RenderingData re RenderingUtils.ReAllocateIfNeeded(ref normalsTexture, normalDescriptor, FilterMode.Point, TextureWrapMode.Clamp, name: normalsTextureName); cmd.SetGlobalTexture(normalsTexture.name, normalsTexture.nameID); + if (this.renderingModeActual == RenderingMode.Deferred) // As this is requested by render pass we still want to set it + cmd.SetGlobalTexture("_CameraNormalsTexture", normalsTexture.nameID); context.ExecuteCommandBuffer(cmd); cmd.Clear(); } @@ -710,7 +783,12 @@ public override void Setup(ScriptableRenderContext context, ref RenderingData re // to get them before the SSAO pass. int gbufferNormalIndex = m_DeferredLights.GBufferNormalSmoothnessIndex; - m_DepthNormalPrepass.Setup(m_ActiveCameraDepthAttachment, m_DeferredLights.GbufferAttachments[gbufferNormalIndex]); + if (m_DeferredLights.UseRenderingLayers) + m_DepthNormalPrepass.Setup(m_ActiveCameraDepthAttachment, m_DeferredLights.GbufferAttachments[gbufferNormalIndex], m_DeferredLights.GbufferAttachments[m_DeferredLights.GBufferRenderingLayers]); + else if (renderingLayerProvidesByDepthNormalPass) + m_DepthNormalPrepass.Setup(m_ActiveCameraDepthAttachment, m_DeferredLights.GbufferAttachments[gbufferNormalIndex], m_DecalLayersTexture); + else + m_DepthNormalPrepass.Setup(m_ActiveCameraDepthAttachment, m_DeferredLights.GbufferAttachments[gbufferNormalIndex]); // Only render forward-only geometry, as standard geometry will be rendered as normal into the gbuffer. if (RenderPassEvent.AfterRenderingGbuffer <= renderPassInputs.requiresDepthNormalAtEvent && @@ -719,7 +797,10 @@ public override void Setup(ScriptableRenderContext context, ref RenderingData re } else { - m_DepthNormalPrepass.Setup(m_DepthTexture, m_NormalsTexture); + if (renderingLayerProvidesByDepthNormalPass) + m_DepthNormalPrepass.Setup(m_DepthTexture, m_NormalsTexture, m_DecalLayersTexture); + else + m_DepthNormalPrepass.Setup(m_DepthTexture, m_NormalsTexture); } EnqueuePass(m_DepthNormalPrepass); @@ -760,7 +841,7 @@ public override void Setup(ScriptableRenderContext context, ref RenderingData re if (m_DeferredLights.UseRenderPass && (RenderPassEvent.AfterRenderingGbuffer == renderPassInputs.requiresDepthNormalAtEvent || !useRenderPassEnabled)) m_DeferredLights.DisableFramebufferFetchInput(); - EnqueueDeferred(ref renderingData, requiresDepthPrepass, renderPassInputs.requiresNormalsTexture, mainLightShadows, additionalLightShadows); + EnqueueDeferred(ref renderingData, requiresDepthPrepass, renderPassInputs.requiresNormalsTexture, renderingLayerProvidesByDepthNormalPass, mainLightShadows, additionalLightShadows); } else { @@ -796,17 +877,26 @@ public override void Setup(ScriptableRenderContext context, ref RenderingData re } } - m_RenderOpaqueForwardPass.ConfigureColorStoreAction(opaquePassColorStoreAction); - m_RenderOpaqueForwardPass.ConfigureDepthStoreAction(opaquePassDepthStoreAction); + DrawObjectsPass renderOpaqueForwardPass = null; + if (renderingLayerProvidesRenderObjectPass) + { + renderOpaqueForwardPass = m_RenderOpaqueForwardWithRenderingLayersPass; + m_RenderOpaqueForwardWithRenderingLayersPass.Setup(m_ActiveCameraColorAttachment, m_DecalLayersTexture, m_ActiveCameraDepthAttachment); + } + else + renderOpaqueForwardPass = m_RenderOpaqueForwardPass; + + renderOpaqueForwardPass.ConfigureColorStoreAction(opaquePassColorStoreAction); + renderOpaqueForwardPass.ConfigureDepthStoreAction(opaquePassDepthStoreAction); #if ENABLE_VR && ENABLE_XR_MODULE // workaround for DX11 and DX12 XR test failures. // XRTODO: investigate DX XR clear issues. if (SystemInfo.usesLoadStoreActions) #endif - m_RenderOpaqueForwardPass.ConfigureClear((cameraData.renderType == CameraRenderType.Base) ? ClearFlag.Color : ClearFlag.None, Color.black); + renderOpaqueForwardPass.ConfigureClear((cameraData.renderType == CameraRenderType.Base) ? ClearFlag.Color : ClearFlag.None, Color.black); - EnqueuePass(m_RenderOpaqueForwardPass); + EnqueuePass(renderOpaqueForwardPass); } if (camera.clearFlags == CameraClearFlags.Skybox && cameraData.renderType != CameraRenderType.Overlay) @@ -1046,13 +1136,14 @@ public override void FinishRendering(CommandBuffer cmd) m_ActiveCameraDepthAttachment = null; } - void EnqueueDeferred(ref RenderingData renderingData, bool hasDepthPrepass, bool hasNormalPrepass, bool applyMainShadow, bool applyAdditionalShadow) + void EnqueueDeferred(ref RenderingData renderingData, bool hasDepthPrepass, bool hasNormalPrepass, bool hasRenderingLayerPrepass, bool applyMainShadow, bool applyAdditionalShadow) { m_DeferredLights.Setup( ref renderingData, applyAdditionalShadow ? m_AdditionalLightsShadowCasterPass : null, hasDepthPrepass, hasNormalPrepass, + hasRenderingLayerPrepass, m_DepthTexture, m_ActiveCameraDepthAttachment, m_ActiveCameraColorAttachment diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/DeclareRenderingLayerTexture.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/DeclareRenderingLayerTexture.hlsl new file mode 100644 index 00000000000..628cffb2a35 --- /dev/null +++ b/com.unity.render-pipelines.universal/ShaderLibrary/DeclareRenderingLayerTexture.hlsl @@ -0,0 +1,17 @@ +#ifndef UNITY_DECLARE_RENDERING_LAYER_TEXTURE_INCLUDED +#define UNITY_DECLARE_RENDERING_LAYER_TEXTURE_INCLUDED +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + +TEXTURE2D_X_FLOAT(_CameraRenderingLayersTexture); +SAMPLER(sampler_CameraRenderingLayersTexture); + +float SampleSceneRenderingLayer(float2 uv) +{ + return SAMPLE_TEXTURE2D_X(_CameraRenderingLayersTexture, sampler_CameraRenderingLayersTexture, UnityStereoTransformScreenSpaceTex(uv)).r; +} + +uint LoadSceneRenderingLayer(uint2 uv) +{ + return DecodeMeshRenderingLayer(LOAD_TEXTURE2D_X(_CameraRenderingLayersTexture, uv).r); +} +#endif diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/DeclareRenderingLayerTexture.hlsl.meta b/com.unity.render-pipelines.universal/ShaderLibrary/DeclareRenderingLayerTexture.hlsl.meta new file mode 100644 index 00000000000..306470c9994 --- /dev/null +++ b/com.unity.render-pipelines.universal/ShaderLibrary/DeclareRenderingLayerTexture.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6db8433897838284fa5c7571f3088db8 +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl index cc57c54d338..6652f796da3 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl @@ -7,10 +7,6 @@ // Keep in sync with RenderingUtils.useStructuredBuffer #define USE_STRUCTURED_BUFFER_FOR_LIGHT_DATA 0 -#define RENDERING_LIGHT_LAYERS_MASK (255) -#define RENDERING_LIGHT_LAYERS_MASK_SHIFT (0) -#define DEFAULT_LIGHT_LAYERS (RENDERING_LIGHT_LAYERS_MASK >> RENDERING_LIGHT_LAYERS_MASK_SHIFT) - #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderTypes.cs.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Deprecated.hlsl" @@ -97,6 +93,8 @@ half4 _AmbientOcclusionParam; half4 _AdditionalLightsCount; +uint _RenderingLayerMaskSize; + #if USE_CLUSTERED_LIGHTING // Directional lights would be in all clusters, so they don't go into the cluster structure. // Instead, they are stored first in the light buffer. diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl index 2ada5635d89..b74fc381e30 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl @@ -269,7 +269,7 @@ half4 UniversalFragmentPBR(InputData inputData, SurfaceData surfaceData) BRDFData brdfDataClearCoat = CreateClearCoatBRDFData(surfaceData, brdfData); half4 shadowMask = CalculateShadowMask(inputData); AmbientOcclusionFactor aoFactor = CreateAmbientOcclusionFactor(inputData, surfaceData); - uint meshRenderingLayers = GetMeshRenderingLightLayer(); + uint meshRenderingLayers = GetMeshRenderingLayer(); Light mainLight = GetMainLight(inputData, shadowMask, aoFactor); // NOTE: We don't apply AO to the GI here because it's done in the lighting calculation below... @@ -280,8 +280,9 @@ half4 UniversalFragmentPBR(InputData inputData, SurfaceData surfaceData) lightingData.giColor = GlobalIllumination(brdfData, brdfDataClearCoat, surfaceData.clearCoatMask, inputData.bakedGI, aoFactor.indirectAmbientOcclusion, inputData.positionWS, inputData.normalWS, inputData.viewDirectionWS); - +#ifdef _LIGHT_LAYERS if (IsMatchingLightLayer(mainLight.layerMask, meshRenderingLayers)) +#endif { lightingData.mainLightColor = LightingPhysicallyBased(brdfData, brdfDataClearCoat, mainLight, @@ -297,7 +298,9 @@ half4 UniversalFragmentPBR(InputData inputData, SurfaceData surfaceData) { Light light = GetAdditionalLight(lightIndex, inputData, shadowMask, aoFactor); +#ifdef _LIGHT_LAYERS if (IsMatchingLightLayer(light.layerMask, meshRenderingLayers)) +#endif { lightingData.additionalLightsColor += LightingPhysicallyBased(brdfData, brdfDataClearCoat, light, inputData.normalWS, inputData.viewDirectionWS, @@ -309,7 +312,9 @@ half4 UniversalFragmentPBR(InputData inputData, SurfaceData surfaceData) LIGHT_LOOP_BEGIN(pixelLightCount) Light light = GetAdditionalLight(lightIndex, inputData, shadowMask, aoFactor); +#ifdef _LIGHT_LAYERS if (IsMatchingLightLayer(light.layerMask, meshRenderingLayers)) +#endif { lightingData.additionalLightsColor += LightingPhysicallyBased(brdfData, brdfDataClearCoat, light, inputData.normalWS, inputData.viewDirectionWS, @@ -359,7 +364,7 @@ half4 UniversalFragmentBlinnPhong(InputData inputData, SurfaceData surfaceData) } #endif - uint meshRenderingLayers = GetMeshRenderingLightLayer(); + uint meshRenderingLayers = GetMeshRenderingLayer(); half4 shadowMask = CalculateShadowMask(inputData); AmbientOcclusionFactor aoFactor = CreateAmbientOcclusionFactor(inputData, surfaceData); Light mainLight = GetMainLight(inputData, shadowMask, aoFactor); @@ -369,7 +374,9 @@ half4 UniversalFragmentBlinnPhong(InputData inputData, SurfaceData surfaceData) inputData.bakedGI *= surfaceData.albedo; LightingData lightingData = CreateLightingData(inputData, surfaceData); +#ifdef _LIGHT_LAYERS if (IsMatchingLightLayer(mainLight.layerMask, meshRenderingLayers)) +#endif { lightingData.mainLightColor += CalculateBlinnPhong(mainLight, inputData, surfaceData); } @@ -381,7 +388,9 @@ half4 UniversalFragmentBlinnPhong(InputData inputData, SurfaceData surfaceData) for (uint lightIndex = 0; lightIndex < min(_AdditionalLightsDirectionalCount, MAX_VISIBLE_LIGHTS); lightIndex++) { Light light = GetAdditionalLight(lightIndex, inputData, shadowMask, aoFactor); +#ifdef _LIGHT_LAYERS if (IsMatchingLightLayer(light.layerMask, meshRenderingLayers)) +#endif { lightingData.additionalLightsColor += CalculateBlinnPhong(light, inputData, surfaceData); } @@ -390,7 +399,9 @@ half4 UniversalFragmentBlinnPhong(InputData inputData, SurfaceData surfaceData) LIGHT_LOOP_BEGIN(pixelLightCount) Light light = GetAdditionalLight(lightIndex, inputData, shadowMask, aoFactor); +#ifdef _LIGHT_LAYERS if (IsMatchingLightLayer(light.layerMask, meshRenderingLayers)) +#endif { lightingData.additionalLightsColor += CalculateBlinnPhong(light, inputData, surfaceData); } diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/RealtimeLights.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/RealtimeLights.hlsl index 7a930c67c71..3e3946bca75 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/RealtimeLights.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/RealtimeLights.hlsl @@ -8,20 +8,6 @@ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LightCookie/LightCookie.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Clustering.hlsl" -/////////////////////////////////////////////////////////////////////////////// -// Light Layers / -/////////////////////////////////////////////////////////////////////////////// - -// Note: we need to mask out only 8bits of the layer mask before encoding it as otherwise any value > 255 will map to all layers active if save in a buffer -uint GetMeshRenderingLightLayer() -{ - #ifdef _LIGHT_LAYERS - return (asuint(unity_RenderingLayer.x) & RENDERING_LIGHT_LAYERS_MASK) >> RENDERING_LIGHT_LAYERS_MASK_SHIFT; - #else - return DEFAULT_LIGHT_LAYERS; - #endif -} - // Abstraction over Light shading data. struct Light { @@ -112,11 +98,7 @@ Light GetMainLight() light.shadowAttenuation = 1.0; light.color = _MainLightColor.rgb; -#ifdef _LIGHT_LAYERS light.layerMask = _MainLightLayerMask; -#else - light.layerMask = DEFAULT_LIGHT_LAYERS; -#endif return light; } @@ -164,23 +146,13 @@ Light GetAdditionalPerObjectLight(int perObjectLightIndex, float3 positionWS) half3 color = _AdditionalLightsBuffer[perObjectLightIndex].color.rgb; half4 distanceAndSpotAttenuation = _AdditionalLightsBuffer[perObjectLightIndex].attenuation; half4 spotDirection = _AdditionalLightsBuffer[perObjectLightIndex].spotDirection; -#ifdef _LIGHT_LAYERS uint lightLayerMask = _AdditionalLightsBuffer[perObjectLightIndex].layerMask; -#else - uint lightLayerMask = DEFAULT_LIGHT_LAYERS; -#endif - #else float4 lightPositionWS = _AdditionalLightsPosition[perObjectLightIndex]; half3 color = _AdditionalLightsColor[perObjectLightIndex].rgb; half4 distanceAndSpotAttenuation = _AdditionalLightsAttenuation[perObjectLightIndex]; half4 spotDirection = _AdditionalLightsSpotDir[perObjectLightIndex]; -#ifdef _LIGHT_LAYERS uint lightLayerMask = asuint(_AdditionalLightsLayerMasks[perObjectLightIndex]); -#else - uint lightLayerMask = DEFAULT_LIGHT_LAYERS; -#endif - #endif // Directional lights store direction in lightPosition.xyz and have .w set to 0.0. diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/ShaderVariablesFunctions.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/ShaderVariablesFunctions.hlsl index f22434da945..e6ef56bbdb9 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/ShaderVariablesFunctions.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/ShaderVariablesFunctions.hlsl @@ -398,4 +398,23 @@ float2 GetNormalizedScreenSpaceUV(float4 positionCS) #define UnityStereoTransformScreenSpaceTex(uv) uv #endif // defined(UNITY_SINGLE_PASS_STEREO) +uint GetMeshRenderingLayer() +{ + return asuint(unity_RenderingLayer.x); +} + +float EncodeMeshRenderingLayer(uint renderingLayer) +{ + uint maxInt = (1u << _RenderingLayerMaskSize) - 1u; + return saturate(renderingLayer * rcp(maxInt)); + //return PackInt(renderingLayer, 16); +} + +uint DecodeMeshRenderingLayer(float renderingLayer) +{ + uint maxInt = (1u << _RenderingLayerMaskSize) - 1u; + return (uint)(renderingLayer * maxInt + 0.5); // Round instead of truncating + //return UnpackInt(renderingLayer, 16); +} + #endif // UNITY_SHADER_VARIABLES_FUNCTIONS_INCLUDED diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/UnityGBuffer.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/UnityGBuffer.hlsl index 466fefd5a29..46969dbb24a 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/UnityGBuffer.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/UnityGBuffer.hlsl @@ -19,7 +19,7 @@ #if _RENDER_PASS_ENABLED #define GBUFFER_OPTIONAL_SLOT_1 GBuffer4 #define GBUFFER_OPTIONAL_SLOT_1_TYPE float -#if OUTPUT_SHADOWMASK && defined(_LIGHT_LAYERS) +#if OUTPUT_SHADOWMASK && (defined(_WRITE_RENDERING_LAYERS) || defined(_LIGHT_LAYERS)) #define GBUFFER_OPTIONAL_SLOT_2 GBuffer5 #define GBUFFER_OPTIONAL_SLOT_3 GBuffer6 #define GBUFFER_LIGHT_LAYERS GBuffer5 @@ -27,13 +27,13 @@ #elif OUTPUT_SHADOWMASK #define GBUFFER_OPTIONAL_SLOT_2 GBuffer5 #define GBUFFER_SHADOWMASK GBuffer5 -#elif defined(_LIGHT_LAYERS) +#elif (defined(_WRITE_RENDERING_LAYERS) || defined(_LIGHT_LAYERS)) #define GBUFFER_OPTIONAL_SLOT_2 GBuffer5 #define GBUFFER_LIGHT_LAYERS GBuffer5 -#endif //#if OUTPUT_SHADOWMASK && defined(_LIGHT_LAYERS) +#endif //#if OUTPUT_SHADOWMASK && defined(_WRITE_RENDERING_LAYERS) #else #define GBUFFER_OPTIONAL_SLOT_1_TYPE half4 -#if OUTPUT_SHADOWMASK && defined(_LIGHT_LAYERS) +#if OUTPUT_SHADOWMASK && (defined(_WRITE_RENDERING_LAYERS) || defined(_LIGHT_LAYERS)) #define GBUFFER_OPTIONAL_SLOT_1 GBuffer4 #define GBUFFER_OPTIONAL_SLOT_2 GBuffer5 #define GBUFFER_LIGHT_LAYERS GBuffer4 @@ -41,10 +41,10 @@ #elif OUTPUT_SHADOWMASK #define GBUFFER_OPTIONAL_SLOT_1 GBuffer4 #define GBUFFER_SHADOWMASK GBuffer4 -#elif defined(_LIGHT_LAYERS) +#elif (defined(_WRITE_RENDERING_LAYERS) || defined(_LIGHT_LAYERS)) #define GBUFFER_OPTIONAL_SLOT_1 GBuffer4 #define GBUFFER_LIGHT_LAYERS GBuffer4 -#endif //#if OUTPUT_SHADOWMASK && defined(_LIGHT_LAYERS) +#endif //#if OUTPUT_SHADOWMASK && defined(_WRITE_RENDERING_LAYERS) #endif //#if _RENDER_PASS_ENABLED #define kLightingInvalid -1 // No dynamic lighting: can aliase any other material type as they are skipped using stencil #define kLightingLit 1 // lit shader @@ -141,10 +141,9 @@ FragmentOutput SurfaceDataToGbuffer(SurfaceData surfaceData, InputData inputData #if OUTPUT_SHADOWMASK output.GBUFFER_SHADOWMASK = inputData.shadowMask; // will have unity_ProbesOcclusion value if subtractive lighting is used (baked) #endif - #ifdef _LIGHT_LAYERS - uint renderingLayers = GetMeshRenderingLightLayer(); - // Note: we need to mask out only 8bits of the layer mask before encoding it as otherwise any value > 255 will map to all layers active - output.GBUFFER_LIGHT_LAYERS = float4((renderingLayers & 0x000000FF) / 255.0, 0.0, 0.0, 0.0); + #ifdef _WRITE_RENDERING_LAYERS + uint renderingLayers = GetMeshRenderingLayer(); + output.GBUFFER_LIGHT_LAYERS = float4(EncodeMeshRenderingLayer(renderingLayers), 0.0, 0.0, 0.0); #endif return output; @@ -215,10 +214,9 @@ FragmentOutput BRDFDataToGbuffer(BRDFData brdfData, InputData inputData, half sm #if OUTPUT_SHADOWMASK output.GBUFFER_SHADOWMASK = inputData.shadowMask; // will have unity_ProbesOcclusion value if subtractive lighting is used (baked) #endif - #ifdef _LIGHT_LAYERS - uint renderingLayers = GetMeshRenderingLightLayer(); - // Note: we need to mask out only 8bits of the layer mask before encoding it as otherwise any value > 255 will map to all layers active - output.GBUFFER_LIGHT_LAYERS = float4((renderingLayers & 0x000000FF) / 255.0, 0.0, 0.0, 0.0); + #ifdef _WRITE_RENDERING_LAYERS + uint renderingLayers = GetMeshRenderingLayer(); + output.GBUFFER_LIGHT_LAYERS = float4(EncodeMeshRenderingLayer(renderingLayers), 0.0, 0.0, 0.0); #endif return output; diff --git a/com.unity.render-pipelines.universal/Shaders/BakedLit.shader b/com.unity.render-pipelines.universal/Shaders/BakedLit.shader index 7b363afa37a..420908010e2 100644 --- a/com.unity.render-pipelines.universal/Shaders/BakedLit.shader +++ b/com.unity.render-pipelines.universal/Shaders/BakedLit.shader @@ -129,8 +129,9 @@ Shader "Universal Render Pipeline/Baked Lit" #pragma shader_feature_local_fragment _ALPHATEST_ON // ------------------------------------- - // Unity defined keywords + // Universal Pipeline keywords #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT // forward-only variant + #pragma multi_compile_fragment _ _WRITE_RENDERING_LAYERS //-------------------------------------- // GPU Instancing @@ -164,8 +165,9 @@ Shader "Universal Render Pipeline/Baked Lit" #pragma shader_feature_local_fragment _ALPHATEST_ON // ------------------------------------- - // Unity defined keywords + // Universal Pipeline keywords #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT // forward-only variant + #pragma multi_compile_fragment _ _WRITE_RENDERING_LAYERS //-------------------------------------- // Defines diff --git a/com.unity.render-pipelines.universal/Shaders/BakedLitDepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/BakedLitDepthNormalsPass.hlsl index 2f1dab427c6..e36a68f678f 100644 --- a/com.unity.render-pipelines.universal/Shaders/BakedLitDepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/BakedLitDepthNormalsPass.hlsl @@ -50,7 +50,13 @@ Varyings DepthNormalsVertex(Attributes input) return output; } -float4 DepthNormalsFragment(Varyings input) : SV_TARGET +void DepthNormalsFragment( + Varyings input + , out half4 outNormalWS : SV_Target0 +#ifdef _WRITE_RENDERING_LAYERS + , out float4 outRenderingLayers : SV_Target1 +#endif +) { UNITY_SETUP_INSTANCE_ID(input); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); @@ -64,7 +70,7 @@ float4 DepthNormalsFragment(Varyings input) : SV_TARGET float2 octNormalWS = PackNormalOctQuadEncode(normalWS); // values between [-1, +1], must use fp32 on some platforms float2 remappedOctNormalWS = saturate(octNormalWS * 0.5 + 0.5); // values between [ 0, 1] half3 packedNormalWS = PackFloat2To888(remappedOctNormalWS); // values between [ 0, 1] - return half4(packedNormalWS, 0.0); + outNormalWS = half4(packedNormalWS, 0.0); #else #if defined(_NORMALMAP) half3 normalTS = SampleNormal(input.uv, TEXTURE2D_ARGS(_BumpMap, sampler_BumpMap)).xyz; @@ -75,9 +81,13 @@ float4 DepthNormalsFragment(Varyings input) : SV_TARGET half3 normalWS = input.normalWS; #endif - return half4(NormalizeNormalPerPixel(normalWS), 0.0); + outNormalWS = half4(NormalizeNormalPerPixel(normalWS), 0.0); #endif + #ifdef _WRITE_RENDERING_LAYERS + uint renderingLayers = GetMeshRenderingLayer(); + outRenderingLayers = float4(EncodeMeshRenderingLayer(renderingLayers), 0, 0, 0); + #endif } #endif diff --git a/com.unity.render-pipelines.universal/Shaders/ComplexLit.shader b/com.unity.render-pipelines.universal/Shaders/ComplexLit.shader index 50e84067f04..527969b8080 100644 --- a/com.unity.render-pipelines.universal/Shaders/ComplexLit.shader +++ b/com.unity.render-pipelines.universal/Shaders/ComplexLit.shader @@ -244,8 +244,9 @@ Shader "Universal Render Pipeline/Complex Lit" #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A // ------------------------------------- - // Unity defined keywords + // Universal Pipeline keywords #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT // forward-only variant + #pragma multi_compile_fragment _ _WRITE_RENDERING_LAYERS //-------------------------------------- // GPU Instancing diff --git a/com.unity.render-pipelines.universal/Shaders/Decal.shadergraph b/com.unity.render-pipelines.universal/Shaders/Decal.shadergraph index 89763d3ace9..36e992fa3b7 100644 --- a/com.unity.render-pipelines.universal/Shaders/Decal.shadergraph +++ b/com.unity.render-pipelines.universal/Shaders/Decal.shadergraph @@ -260,6 +260,7 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": true, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] @@ -306,6 +307,7 @@ "m_GeneratePropertyBlock": true, "m_UseCustomSlotLabel": false, "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, "m_Precision": 0, "overrideHLSLDeclaration": false, "hlslDeclarationOverride": 0, @@ -383,6 +385,7 @@ "m_GeneratePropertyBlock": true, "m_UseCustomSlotLabel": false, "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, "m_Precision": 0, "overrideHLSLDeclaration": false, "hlslDeclarationOverride": 0, @@ -457,13 +460,15 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": false, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] }, "m_TextureType": 1, "m_NormalMapSpace": 0, - "m_EnableGlobalMipBias": true + "m_EnableGlobalMipBias": true, + "m_MipSamplingMode": 0 } { @@ -530,6 +535,7 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": true, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] @@ -578,6 +584,7 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": true, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] @@ -665,6 +672,7 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": true, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] @@ -759,6 +767,7 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": true, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] @@ -823,6 +832,7 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": true, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] @@ -1052,13 +1062,15 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": false, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] }, "m_TextureType": 0, "m_NormalMapSpace": 0, - "m_EnableGlobalMipBias": true + "m_EnableGlobalMipBias": true, + "m_MipSamplingMode": 0 } { @@ -1139,6 +1151,7 @@ ], "m_Precision": 0, "m_PreviewExpanded": false, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] @@ -1186,6 +1199,7 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": true, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] @@ -1221,6 +1235,7 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": true, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] @@ -1269,6 +1284,7 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": true, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] @@ -1306,6 +1322,7 @@ "m_GeneratePropertyBlock": true, "m_UseCustomSlotLabel": false, "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, "m_Precision": 0, "overrideHLSLDeclaration": false, "hlslDeclarationOverride": 0, @@ -1473,6 +1490,7 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": true, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] diff --git a/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl index bde5560b75f..ac3fe684561 100644 --- a/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl @@ -2,6 +2,7 @@ #define UNIVERSAL_DEPTH_NORMALS_PASS_INCLUDED #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/RealtimeLights.hlsl" struct Attributes { @@ -37,7 +38,13 @@ Varyings DepthNormalsVertex(Attributes input) return output; } -half4 DepthNormalsFragment(Varyings input) : SV_TARGET +void DepthNormalsFragment( + Varyings input + , out half4 outNormalWS : SV_Target0 +#ifdef _WRITE_RENDERING_LAYERS + , out float4 outRenderingLayers : SV_Target1 +#endif +) { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); @@ -48,10 +55,15 @@ half4 DepthNormalsFragment(Varyings input) : SV_TARGET float2 octNormalWS = PackNormalOctQuadEncode(normalWS); // values between [-1, +1], must use fp32 on some platforms. float2 remappedOctNormalWS = saturate(octNormalWS * 0.5 + 0.5); // values between [ 0, 1] half3 packedNormalWS = PackFloat2To888(remappedOctNormalWS); // values between [ 0, 1] - return half4(packedNormalWS, 0.0); + outNormalWS = half4(packedNormalWS, 0.0); #else float3 normalWS = NormalizeNormalPerPixel(input.normalWS); - return half4(normalWS, 0.0); + outNormalWS = half4(normalWS, 0.0); + #endif + + #ifdef _WRITE_RENDERING_LAYERS + uint renderingLayers = GetMeshRenderingLayer(); + outRenderingLayers = float4(EncodeMeshRenderingLayer(renderingLayers), 0, 0, 0); #endif } #endif diff --git a/com.unity.render-pipelines.universal/Shaders/Lit.shader b/com.unity.render-pipelines.universal/Shaders/Lit.shader index 36e79151a85..892db392125 100644 --- a/com.unity.render-pipelines.universal/Shaders/Lit.shader +++ b/com.unity.render-pipelines.universal/Shaders/Lit.shader @@ -127,6 +127,7 @@ Shader "Universal Render Pipeline/Lit" #pragma multi_compile_fragment _ _LIGHT_LAYERS #pragma multi_compile_fragment _ _LIGHT_COOKIES #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _WRITE_RENDERING_LAYERS // ------------------------------------- // Unity defined keywords @@ -231,7 +232,7 @@ Shader "Universal Render Pipeline/Lit" #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION #pragma multi_compile_fragment _ _SHADOWS_SOFT #pragma multi_compile_fragment _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3 - #pragma multi_compile_fragment _ _LIGHT_LAYERS + #pragma multi_compile_fragment _ _WRITE_RENDERING_LAYERS #pragma multi_compile_fragment _ _RENDER_PASS_ENABLED // ------------------------------------- @@ -312,6 +313,10 @@ Shader "Universal Render Pipeline/Lit" #pragma shader_feature_local_fragment _ALPHATEST_ON #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + // ------------------------------------- + // Universal Pipeline keywords + #pragma multi_compile_fragment _ _WRITE_RENDERING_LAYERS + //-------------------------------------- // GPU Instancing #pragma multi_compile_instancing diff --git a/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl index 1ed6aff8285..30dd4650485 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl @@ -77,8 +77,13 @@ Varyings DepthNormalsVertex(Attributes input) return output; } - -half4 DepthNormalsFragment(Varyings input) : SV_TARGET +void DepthNormalsFragment( + Varyings input + , out half4 outNormalWS : SV_Target0 +#ifdef _WRITE_RENDERING_LAYERS + , out float4 outRenderingLayers : SV_Target1 +#endif +) { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); @@ -89,7 +94,7 @@ half4 DepthNormalsFragment(Varyings input) : SV_TARGET float2 octNormalWS = PackNormalOctQuadEncode(normalWS); // values between [-1, +1], must use fp32 on some platforms float2 remappedOctNormalWS = saturate(octNormalWS * 0.5 + 0.5); // values between [ 0, 1] half3 packedNormalWS = PackFloat2To888(remappedOctNormalWS); // values between [ 0, 1] - return half4(packedNormalWS, 0.0); + outNormalWS = half4(packedNormalWS, 0.0); #else float2 uv = input.uv; #if defined(_PARALLAXMAP) @@ -117,7 +122,12 @@ half4 DepthNormalsFragment(Varyings input) : SV_TARGET float3 normalWS = input.normalWS; #endif - return half4(NormalizeNormalPerPixel(normalWS), 0.0); + outNormalWS = half4(NormalizeNormalPerPixel(normalWS), 0.0); + #endif + + #ifdef _WRITE_RENDERING_LAYERS + uint renderingLayers = GetMeshRenderingLayer(); + outRenderingLayers = float4(EncodeMeshRenderingLayer(renderingLayers), 0, 0, 0); #endif } diff --git a/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl b/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl index 64925a535cf..6f535f3d5b4 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl @@ -193,7 +193,13 @@ Varyings LitPassVertex(Attributes input) } // Used in Standard (Physically Based) shader -half4 LitPassFragment(Varyings input) : SV_Target +void LitPassFragment( + Varyings input + , out half4 outColor : SV_Target0 +#ifdef _WRITE_RENDERING_LAYERS + , out float4 outRenderingLayers : SV_Target1 +#endif +) { UNITY_SETUP_INSTANCE_ID(input); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); @@ -223,7 +229,12 @@ half4 LitPassFragment(Varyings input) : SV_Target color.rgb = MixFog(color.rgb, inputData.fogCoord); color.a = OutputAlpha(color.a, _Surface); - return color; + outColor = color; + +#ifdef _WRITE_RENDERING_LAYERS + uint renderingLayers = GetMeshRenderingLayer(); + outRenderingLayers = float4(EncodeMeshRenderingLayer(renderingLayers), 0, 0, 0); +#endif } #endif diff --git a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7.shader b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7.shader index a3a9e0164fc..08f47dcae0b 100644 --- a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7.shader +++ b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7.shader @@ -143,7 +143,7 @@ Shader "Universal Render Pipeline/Nature/SpeedTree7" #pragma multi_compile _ LOD_FADE_CROSSFADE #pragma multi_compile_vertex LOD_FADE_PERCENTAGE #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT - #pragma multi_compile_fragment _ _LIGHT_LAYERS + #pragma multi_compile_fragment _ _WRITE_RENDERING_LAYERS #pragma multi_compile_fragment _ _RENDER_PASS_ENABLED #pragma multi_compile_instancing diff --git a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8.shader b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8.shader index 3e768e0b56b..42b5984073e 100644 --- a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8.shader +++ b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8.shader @@ -133,7 +133,7 @@ Shader "Universal Render Pipeline/Nature/SpeedTree8" #pragma multi_compile _ LOD_FADE_CROSSFADE #pragma multi_compile_vertex LOD_FADE_PERCENTAGE #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT - #pragma multi_compile_fragment _ _LIGHT_LAYERS + #pragma multi_compile_fragment _ _WRITE_RENDERING_LAYERS #pragma multi_compile_fragment _ _RENDER_PASS_ENABLED #pragma multi_compile_instancing diff --git a/com.unity.render-pipelines.universal/Shaders/SimpleLit.shader b/com.unity.render-pipelines.universal/Shaders/SimpleLit.shader index 3664f1ee857..71b0a51032f 100644 --- a/com.unity.render-pipelines.universal/Shaders/SimpleLit.shader +++ b/com.unity.render-pipelines.universal/Shaders/SimpleLit.shader @@ -92,6 +92,7 @@ Shader "Universal Render Pipeline/Simple Lit" #pragma multi_compile_fragment _ _LIGHT_LAYERS #pragma multi_compile_fragment _ _LIGHT_COOKIES #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _WRITE_RENDERING_LAYERS // ------------------------------------- // Unity defined keywords @@ -184,7 +185,7 @@ Shader "Universal Render Pipeline/Simple Lit" //#pragma multi_compile _ _ADDITIONAL_LIGHT_SHADOWS #pragma multi_compile_fragment _ _SHADOWS_SOFT #pragma multi_compile_fragment _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3 - #pragma multi_compile_fragment _ _LIGHT_LAYERS + #pragma multi_compile_fragment _ _WRITE_RENDERING_LAYERS // ------------------------------------- // Unity defined keywords @@ -264,6 +265,10 @@ Shader "Universal Render Pipeline/Simple Lit" #pragma shader_feature_local_fragment _ALPHATEST_ON #pragma shader_feature_local_fragment _GLOSSINESS_FROM_BASE_ALPHA + // ------------------------------------- + // Universal Pipeline keywords + #pragma multi_compile_fragment _ _WRITE_RENDERING_LAYERS + //-------------------------------------- // GPU Instancing #pragma multi_compile_instancing @@ -359,7 +364,7 @@ Shader "Universal Render Pipeline/Simple Lit" #pragma multi_compile_fragment _ _SHADOWS_SOFT #pragma multi_compile_fragment _ _ADDITIONAL_LIGHT_SHADOWS #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION - #pragma multi_compile_fragment _ _LIGHT_LAYERS + #pragma multi_compile_fragment _ _WRITE_RENDERING_LAYERS #pragma multi_compile_fragment _ _LIGHT_COOKIES #pragma multi_compile _ _CLUSTERED_RENDERING diff --git a/com.unity.render-pipelines.universal/Shaders/SimpleLitDepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/SimpleLitDepthNormalsPass.hlsl index 222217bd383..bc0ceb542d7 100644 --- a/com.unity.render-pipelines.universal/Shaders/SimpleLitDepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/SimpleLitDepthNormalsPass.hlsl @@ -55,7 +55,13 @@ Varyings DepthNormalsVertex(Attributes input) return output; } -half4 DepthNormalsFragment(Varyings input) : SV_TARGET +void DepthNormalsFragment( + Varyings input + , out half4 outNormalWS : SV_Target0 +#ifdef _WRITE_RENDERING_LAYERS + , out float4 outRenderingLayers : SV_Target1 +#endif +) { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); @@ -66,7 +72,7 @@ half4 DepthNormalsFragment(Varyings input) : SV_TARGET float2 octNormalWS = PackNormalOctQuadEncode(normalWS); // values between [-1, +1], must use fp32 on some platforms float2 remappedOctNormalWS = saturate(octNormalWS * 0.5 + 0.5); // values between [ 0, 1] half3 packedNormalWS = PackFloat2To888(remappedOctNormalWS); // values between [ 0, 1] - return half4(packedNormalWS, 0.0); + outNormalWS = half4(packedNormalWS, 0.0); #else float2 uv = input.uv; @@ -78,7 +84,12 @@ half4 DepthNormalsFragment(Varyings input) : SV_TARGET #endif normalWS = NormalizeNormalPerPixel(normalWS); - return half4(normalWS, 0.0); + outNormalWS = half4(normalWS, 0.0); + #endif + + #ifdef _WRITE_RENDERING_LAYERS + uint renderingLayers = GetMeshRenderingLayer(); + outRenderingLayers = float4(EncodeMeshRenderingLayer(renderingLayers), 0, 0, 0); #endif } diff --git a/com.unity.render-pipelines.universal/Shaders/SimpleLitForwardPass.hlsl b/com.unity.render-pipelines.universal/Shaders/SimpleLitForwardPass.hlsl index da790486e4c..c080a96176e 100644 --- a/com.unity.render-pipelines.universal/Shaders/SimpleLitForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/SimpleLitForwardPass.hlsl @@ -162,7 +162,13 @@ Varyings LitPassVertexSimple(Attributes input) } // Used for StandardSimpleLighting shader -half4 LitPassFragmentSimple(Varyings input) : SV_Target +void LitPassFragmentSimple( + Varyings input + , out half4 outColor : SV_Target0 +#ifdef _WRITE_RENDERING_LAYERS + , out float4 outRenderingLayers : SV_Target1 +#endif +) { UNITY_SETUP_INSTANCE_ID(input); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); @@ -182,7 +188,12 @@ half4 LitPassFragmentSimple(Varyings input) : SV_Target color.rgb = MixFog(color.rgb, inputData.fogCoord); color.a = OutputAlpha(color.a, _Surface); - return color; + outColor = color; + +#ifdef _WRITE_RENDERING_LAYERS + uint renderingLayers = GetMeshRenderingLayer(); + outRenderingLayers = float4(EncodeMeshRenderingLayer(renderingLayers), 0, 0, 0); +#endif } #endif diff --git a/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLit.shader b/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLit.shader index 13186d2dac3..07d3215eb7d 100644 --- a/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLit.shader +++ b/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLit.shader @@ -150,7 +150,7 @@ Shader "Universal Render Pipeline/Terrain/Lit" #pragma multi_compile_fragment _ _SHADOWS_SOFT #pragma multi_compile _ _MIXED_LIGHTING_SUBTRACTIVE #pragma multi_compile_fragment _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3 - #pragma multi_compile_fragment _ _LIGHT_LAYERS + #pragma multi_compile_fragment _ _WRITE_RENDERING_LAYERS // ------------------------------------- // Unity defined keywords diff --git a/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLitAdd.shader b/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLitAdd.shader index c37b0a4fee4..7944f1afc19 100644 --- a/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLitAdd.shader +++ b/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLitAdd.shader @@ -113,7 +113,7 @@ Shader "Hidden/Universal Render Pipeline/Terrain/Lit (Add Pass)" #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING #pragma multi_compile_fragment _ _SHADOWS_SOFT #pragma multi_compile _ _MIXED_LIGHTING_SUBTRACTIVE - #pragma multi_compile_fragment _ _LIGHT_LAYERS + #pragma multi_compile_fragment _ _WRITE_RENDERING_LAYERS // ------------------------------------- // Unity defined keywords diff --git a/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLitBase.shader b/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLitBase.shader index 36a42ebc5df..bd7f18a1f11 100644 --- a/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLitBase.shader +++ b/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLitBase.shader @@ -119,7 +119,7 @@ Shader "Hidden/Universal Render Pipeline/Terrain/Lit (Base Pass)" #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING #pragma multi_compile_fragment _ _SHADOWS_SOFT #pragma multi_compile _ _MIXED_LIGHTING_SUBTRACTIVE - #pragma multi_compile_fragment _ _LIGHT_LAYERS + #pragma multi_compile_fragment _ _WRITE_RENDERING_LAYERS // ------------------------------------- // Unity defined keywords diff --git a/com.unity.render-pipelines.universal/Shaders/Unlit.shader b/com.unity.render-pipelines.universal/Shaders/Unlit.shader index 20f851cb375..4178ee901e0 100644 --- a/com.unity.render-pipelines.universal/Shaders/Unlit.shader +++ b/com.unity.render-pipelines.universal/Shaders/Unlit.shader @@ -56,6 +56,7 @@ Shader "Universal Render Pipeline/Unlit" #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION #pragma multi_compile_fragment _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3 #pragma multi_compile _ DEBUG_DISPLAY + #pragma multi_compile_fragment _ _WRITE_RENDERING_LAYERS #pragma vertex UnlitPassVertex #pragma fragment UnlitPassFragment @@ -113,8 +114,9 @@ Shader "Universal Render Pipeline/Unlit" #pragma shader_feature_local_fragment _ALPHATEST_ON // ------------------------------------- - // Unity defined keywords + // Universal Pipeline keywords #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT // forward-only variant + #pragma multi_compile_fragment _ _WRITE_RENDERING_LAYERS //-------------------------------------- // GPU Instancing diff --git a/com.unity.render-pipelines.universal/Shaders/UnlitDepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/UnlitDepthNormalsPass.hlsl index 0292b42b7b0..e5d48244f21 100644 --- a/com.unity.render-pipelines.universal/Shaders/UnlitDepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/UnlitDepthNormalsPass.hlsl @@ -34,7 +34,13 @@ Varyings DepthNormalsVertex(Attributes input) return output; } -float4 DepthNormalsFragment(Varyings input) : SV_TARGET +void DepthNormalsFragment( + Varyings input + , out half4 outNormalWS : SV_Target0 +#ifdef _WRITE_RENDERING_LAYERS + , out float4 outRenderingLayers : SV_Target1 +#endif +) { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); @@ -44,9 +50,14 @@ float4 DepthNormalsFragment(Varyings input) : SV_TARGET float2 octNormalWS = PackNormalOctQuadEncode(normalWS); // values between [-1, +1], must use fp32 on some platforms float2 remappedOctNormalWS = saturate(octNormalWS * 0.5 + 0.5); // values between [ 0, 1] half3 packedNormalWS = half3(PackFloat2To888(remappedOctNormalWS)); // values between [ 0, 1] - return half4(packedNormalWS, 0.0); + outNormalWS = half4(packedNormalWS, 0.0); #else - return half4(NormalizeNormalPerPixel(input.normalWS), 0.0); + outNormalWS = half4(NormalizeNormalPerPixel(input.normalWS), 0.0); + #endif + + #ifdef _WRITE_RENDERING_LAYERS + uint renderingLayers = GetMeshRenderingLayer(); + outRenderingLayers = float4(EncodeMeshRenderingLayer(renderingLayers), 0, 0, 0); #endif } diff --git a/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl b/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl index f75b5d679c3..92e953a6ab5 100644 --- a/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl @@ -89,7 +89,13 @@ Varyings UnlitPassVertex(Attributes input) return output; } -half4 UnlitPassFragment(Varyings input) : SV_Target +void UnlitPassFragment( + Varyings input + , out half4 outColor : SV_Target0 +#ifdef _WRITE_RENDERING_LAYERS + , out float4 outRenderingLayers : SV_Target1 +#endif +) { UNITY_SETUP_INSTANCE_ID(input); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); @@ -131,7 +137,12 @@ half4 UnlitPassFragment(Varyings input) : SV_Target #endif finalColor.rgb = MixFog(finalColor.rgb, fogFactor); - return finalColor; + outColor = finalColor; + +#ifdef _WRITE_RENDERING_LAYERS + uint renderingLayers = GetMeshRenderingLayer(); + outRenderingLayers = float4(EncodeMeshRenderingLayer(renderingLayers), 0, 0, 0); +#endif } #endif diff --git a/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.shader b/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.shader index ba362b91baa..ad7f20f089f 100644 --- a/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.shader +++ b/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.shader @@ -157,11 +157,7 @@ Shader "Hidden/Universal Render Pipeline/StencilDeferred" bool materialReceiveShadowsOff = (materialFlags & kMaterialFlagReceiveShadowsOff) != 0; - #ifdef _LIGHT_LAYERS uint lightLayerMask =_LightLayerMask; - #else - uint lightLayerMask = DEFAULT_LIGHT_LAYERS; - #endif #if defined(_DIRECTIONAL) #if defined(_DEFERRED_MAIN_LIGHT) @@ -260,13 +256,6 @@ Shader "Hidden/Universal Render Pipeline/StencilDeferred" half4 shadowMask = 1.0; #endif - #ifdef _LIGHT_LAYERS - float4 renderingLayers = SAMPLE_TEXTURE2D_X_LOD(MERGE_NAME(_, GBUFFER_LIGHT_LAYERS), my_point_clamp_sampler, screen_uv, 0); - uint meshRenderingLayers = uint(renderingLayers.r * 255.5); - #else - uint meshRenderingLayers = DEFAULT_LIGHT_LAYERS; - #endif - half surfaceDataOcclusion = gbuffer1.a; uint materialFlags = UnpackMaterialFlags(gbuffer0.a); @@ -289,8 +278,12 @@ Shader "Hidden/Universal Render Pipeline/StencilDeferred" Light unityLight = GetStencilLight(posWS.xyz, screen_uv, shadowMask, materialFlags); + #ifdef _LIGHT_LAYERS + float4 renderingLayers = SAMPLE_TEXTURE2D_X_LOD(MERGE_NAME(_, GBUFFER_LIGHT_LAYERS), my_point_clamp_sampler, screen_uv, 0); + uint meshRenderingLayers = DecodeMeshRenderingLayer(renderingLayers.r); [branch] if (!IsMatchingLightLayer(unityLight.layerMask, meshRenderingLayers)) return half4(color, alpha); // Cannot discard because stencil must be updated. + #endif #if defined(_SCREEN_SPACE_OCCLUSION) && !defined(_SURFACE_TYPE_TRANSPARENT) AmbientOcclusionFactor aoFactor = GetScreenSpaceAmbientOcclusion(screen_uv); diff --git a/com.unity.testing.urp/Scripts/Runtime/DrawRenderingLayers.shader b/com.unity.testing.urp/Scripts/Runtime/DrawRenderingLayers.shader new file mode 100644 index 00000000000..bb1919ef36c --- /dev/null +++ b/com.unity.testing.urp/Scripts/Runtime/DrawRenderingLayers.shader @@ -0,0 +1,40 @@ +Shader "Hidden/Universal Render Pipeline/DrawRenderingLayer" +{ + SubShader + { + Tags { "RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline"} + LOD 100 + + Pass + { + Name "DrawRenderingLayers" + ZTest Always + ZWrite Off + Cull Off + + HLSLPROGRAM + #pragma vertex FullscreenVert + #pragma fragment Fragment + #pragma multi_compile _ _USE_DRAW_PROCEDURAL + #pragma enable_d3d11_debug_symbols + + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareRenderingLayerTexture.hlsl" + #include "Packages/com.unity.render-pipelines.universal/Shaders/Utils/Fullscreen.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" + + float4 _RenderingLayersColors[32]; + + half4 Fragment(Varyings input) : SV_Target + { + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + + uint2 positionSS = uint2(input.positionCS.xy); + uint sceneRenderingLayer = LoadSceneRenderingLayer(positionSS); + uint renderingLayerColorIndex = clamp(log2(sceneRenderingLayer), 0, 31); + + return sceneRenderingLayer == 0 ? 0 : _RenderingLayersColors[renderingLayerColorIndex]; + } + ENDHLSL + } + } +} diff --git a/com.unity.testing.urp/Scripts/Runtime/DrawRenderingLayers.shader.meta b/com.unity.testing.urp/Scripts/Runtime/DrawRenderingLayers.shader.meta new file mode 100644 index 00000000000..966b7edc9c9 --- /dev/null +++ b/com.unity.testing.urp/Scripts/Runtime/DrawRenderingLayers.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 1c19806167865d546982c2df72fe1cc6 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.testing.urp/Scripts/Runtime/DrawRenderingLayersFeature.cs b/com.unity.testing.urp/Scripts/Runtime/DrawRenderingLayersFeature.cs new file mode 100644 index 00000000000..7995207eeac --- /dev/null +++ b/com.unity.testing.urp/Scripts/Runtime/DrawRenderingLayersFeature.cs @@ -0,0 +1,186 @@ +using UnityEngine; +using UnityEngine.Assertions; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; + +public class DrawRenderingLayersFeature : ScriptableRendererFeature +{ + private class DrawRenderingLayersPass : ScriptableRenderPass + { + private ProfilingSampler m_ProfilingSampler; + private RTHandle m_TestRenderingLayersTextureHandle; + + public DrawRenderingLayersPass() + { + m_ProfilingSampler = new ProfilingSampler("Draw Rendering Layers"); + this.renderPassEvent = RenderPassEvent.AfterRenderingSkybox; + } + + public void Setup(RTHandle renderingLayerTestTextureHandle) + { + m_TestRenderingLayersTextureHandle = renderingLayerTestTextureHandle; + } + + public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) + { + CommandBuffer cmd = CommandBufferPool.Get(); + using (new ProfilingScope(cmd, m_ProfilingSampler)) + { + Blit(cmd, ref renderingData, m_TestRenderingLayersTextureHandle, null); + } + + context.ExecuteCommandBuffer(cmd); + cmd.Clear(); + + CommandBufferPool.Release(cmd); + } + } + + private class DrawRenderingLayersPrePass : ScriptableRenderPass + { + private static class ShaderPropertyId + { + public static readonly int scaleBias = Shader.PropertyToID("_ScaleBias"); + } + + private Material m_Material; + private ProfilingSampler m_ProfilingSampler; + private RTHandle m_ColoredRenderingLayersTextureHandle; + private Vector4[] m_RenderingLayerColors = new Vector4[32]; + + public DrawRenderingLayersPrePass(RenderPassEvent renderPassEvent) + { + m_ProfilingSampler = new ProfilingSampler("Rendering Layers PrePass"); + this.renderPassEvent = renderPassEvent; + } + + public void Setup(RTHandle renderingLayerTestTextureHandle, Material material) + { + m_ColoredRenderingLayersTextureHandle = renderingLayerTestTextureHandle; + + m_Material = material; + + for (int i = 0; i < 32; i++) + m_RenderingLayerColors[i] = Color.HSVToRGB(i / 32f, 1, 1); + } + + public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderingData) + { + ConfigureTarget(m_ColoredRenderingLayersTextureHandle); + } + + public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) + { + CommandBuffer cmd = CommandBufferPool.Get(); + using (new ProfilingScope(cmd, m_ProfilingSampler)) + { + Render(cmd, renderingData.cameraData); + } + + context.ExecuteCommandBuffer(cmd); + cmd.Clear(); + + CommandBufferPool.Release(cmd); + } + + private void Render(CommandBuffer cmd, in CameraData cameraData) + { + cmd.SetGlobalVectorArray("_RenderingLayersColors", m_RenderingLayerColors); + + cmd.SetGlobalVector(ShaderPropertyId.scaleBias, new Vector4(1, 1, 0, 0)); +#if ENABLE_VR && ENABLE_XR_MODULE + bool useDrawProcedural = cameraData.xrRendering; +#else + bool useDrawProcedural = false; +#endif + + cmd.SetViewProjectionMatrices(Matrix4x4.identity, Matrix4x4.identity); // Prepare for manual blit + if (useDrawProcedural) + { + cmd.DrawProcedural(Matrix4x4.identity, m_Material, 0, MeshTopology.Quads, 4, 1, null); + } + else + { + cmd.DrawMesh(RenderingUtils.fullscreenMesh, Matrix4x4.identity, m_Material, 0, 0); + } + cmd.SetViewProjectionMatrices(cameraData.camera.worldToCameraMatrix, cameraData.camera.projectionMatrix); + } + } + + private const string k_ShaderName = "Hidden/Universal Render Pipeline/DrawRenderingLayers"; + + [SerializeField] + private Shader m_Shader; + + [SerializeField] + private RenderPassEvent m_Event = RenderPassEvent.AfterRenderingPrePasses; + + [SerializeField] + internal RenderingLayerUtils.MaskSize m_MaskSize = RenderingLayerUtils.MaskSize.Bits8; + + private Material m_Material; + private DrawRenderingLayersPrePass m_DrawRenderingLayerPass; + private DrawRenderingLayersPass m_RequestRenderingLayerPass; + + private RTHandle m_ColoredRenderingLayersTextureHandle; + + internal override bool RequireRenderingLayers(bool isDeferred, out RenderingLayerUtils.Event atEvent, out RenderingLayerUtils.MaskSize maskSize) + { + if (m_Event < RenderPassEvent.AfterRenderingGbuffer) + atEvent = RenderingLayerUtils.Event.DepthNormalPrePass; + else + atEvent = RenderingLayerUtils.Event.Opaque; + maskSize = m_MaskSize; + return true; + } + + /// + public override void Create() + { + m_DrawRenderingLayerPass = new DrawRenderingLayersPrePass(m_Event); + m_RequestRenderingLayerPass = new DrawRenderingLayersPass(); + + GetMaterial(); + } + + protected override void Dispose(bool disposing) + { + m_ColoredRenderingLayersTextureHandle?.Release(); + } + + private bool GetMaterial() + { + if (m_Material != null) + { + return true; + } + + if (m_Shader == null) + { + m_Shader = Shader.Find(k_ShaderName); + if (m_Shader == null) + { + return false; + } + } + + m_Material = CoreUtils.CreateEngineMaterial(m_Shader); + + return m_Material != null; + } + + public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) + { + var desc = renderingData.cameraData.cameraTargetDescriptor; + desc.msaaSamples = 1; + desc.graphicsFormat = UnityEngine.Experimental.Rendering.GraphicsFormat.R8G8B8A8_SRGB; + desc.depthBufferBits = 0; + RenderingUtils.ReAllocateIfNeeded(ref m_ColoredRenderingLayersTextureHandle, desc, name: "_ColoredRenderingLayersTexture"); + + Assert.IsNotNull(m_Material); + m_DrawRenderingLayerPass.Setup(m_ColoredRenderingLayersTextureHandle, m_Material); + renderer.EnqueuePass(m_DrawRenderingLayerPass); + m_RequestRenderingLayerPass.Setup(m_ColoredRenderingLayersTextureHandle); + renderer.EnqueuePass(m_RequestRenderingLayerPass); + } +} diff --git a/com.unity.testing.urp/Scripts/Runtime/DrawRenderingLayersFeature.cs.meta b/com.unity.testing.urp/Scripts/Runtime/DrawRenderingLayersFeature.cs.meta new file mode 100644 index 00000000000..ce92b08693a --- /dev/null +++ b/com.unity.testing.urp/Scripts/Runtime/DrawRenderingLayersFeature.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0ed5622e99d2626449fa13eba31fe54a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: