From 054f3dc73b387b05a1984221d16e188ec6c49168 Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Wed, 1 Dec 2021 18:42:06 -0800 Subject: [PATCH 01/26] Cross fade functions prototype --- .../Runtime/Data/PostProcessData.cs | 3 + .../Runtime/UniversalRenderPipeline.cs | 5 + .../Runtime/UniversalRenderPipelineCore.cs | 2 + .../Shaders/DepthNormalsPass.hlsl | 4 + .../Shaders/DepthOnlyPass.hlsl | 4 + .../Shaders/Lit.shader | 29 +++ .../Shaders/LitDepthNormalsPass.hlsl | 4 + .../Shaders/LitForwardPass.hlsl | 12 ++ .../Shaders/LitGBufferPass.hlsl | 4 + .../Shaders/LitInput.hlsl | 42 +++++ .../Shaders/ShadowCasterPass.hlsl | 4 + .../Textures/BlueNoise64.meta | 8 + .../Textures/BlueNoise64/L.meta | 8 + .../Textures/BlueNoise64/L/LDR_LLL1_0.png | 3 + .../BlueNoise64/L/LDR_LLL1_0.png.meta | 171 ++++++++++++++++++ 15 files changed, 303 insertions(+) create mode 100644 com.unity.render-pipelines.universal/Textures/BlueNoise64.meta create mode 100644 com.unity.render-pipelines.universal/Textures/BlueNoise64/L.meta create mode 100644 com.unity.render-pipelines.universal/Textures/BlueNoise64/L/LDR_LLL1_0.png create mode 100644 com.unity.render-pipelines.universal/Textures/BlueNoise64/L/LDR_LLL1_0.png.meta diff --git a/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.cs b/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.cs index 3b9bd5f7a00..2d4fe9ce8d8 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.cs +++ b/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.cs @@ -83,6 +83,9 @@ public sealed class TextureResources [Reload("Textures/BlueNoise16/L/LDR_LLL1_{0}.png", 0, 32)] public Texture2D[] blueNoise16LTex; + [Reload("Textures/BlueNoise64/L/LDR_LLL1_{0}.png", 0, 64)] + public Texture2D[] blueNoise64LTex; + // Post-processing [Reload(new[] { diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index c1f30e1c9b8..6059cb0e9da 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -1232,6 +1232,11 @@ static void SetupPerFrameShaderConstants() // Required for 2D Unlit Shadergraph master node as it doesn't currently support hidden properties. Shader.SetGlobalColor(ShaderPropertyId.rendererColor, Color.white); + + Texture2D blueNoiseTexture = PostProcessData.GetDefaultPostProcessData().textures.blueNoise64LTex[0]; + + Shader.SetGlobalTexture(ShaderPropertyId.blueNoiseDitheringTexture, blueNoiseTexture); + LODGroup.crossFadeAnimationDuration = 2; } static void CheckAndApplyDebugSettings(ref RenderingData renderingData) diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs index 504730cf2fe..ba42cf1cf2a 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs @@ -331,6 +331,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 blueNoiseDitheringTexture = Shader.PropertyToID("_BlueNoiseDitheringTexture"); } public struct PostProcessingData diff --git a/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl index bde5560b75f..f5b8efcbe67 100644 --- a/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl @@ -41,6 +41,10 @@ half4 DepthNormalsFragment(Varyings input) : SV_TARGET { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); +#ifdef LOD_FADE_CROSSFADE + LODDitheringTransitionURP(input.positionCS.xy, unity_LODFade.x); +#endif + Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); #if defined(_GBUFFER_NORMALS_OCT) diff --git a/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl b/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl index d7d12c64e5d..427c2f9fe17 100644 --- a/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl @@ -33,6 +33,10 @@ half DepthOnlyFragment(Varyings input) : SV_TARGET { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); +#ifdef LOD_FADE_CROSSFADE + LODDitheringTransitionURP(input.positionCS.xy, unity_LODFade.x); +#endif + Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); return input.positionCS.z; } diff --git a/com.unity.render-pipelines.universal/Shaders/Lit.shader b/com.unity.render-pipelines.universal/Shaders/Lit.shader index 36e79151a85..0f50ce084cd 100644 --- a/com.unity.render-pipelines.universal/Shaders/Lit.shader +++ b/com.unity.render-pipelines.universal/Shaders/Lit.shader @@ -93,6 +93,8 @@ Shader "Universal Render Pipeline/Lit" ZWrite[_ZWrite] Cull[_Cull] + AlphaToMask On + HLSLPROGRAM #pragma exclude_renderers gles gles3 glcore #pragma target 4.5 @@ -135,6 +137,7 @@ Shader "Universal Render Pipeline/Lit" #pragma multi_compile _ DIRLIGHTMAP_COMBINED #pragma multi_compile _ LIGHTMAP_ON #pragma multi_compile _ DYNAMICLIGHTMAP_ON + #pragma multi_compile _ LOD_FADE_CROSSFADE #pragma multi_compile_fog #pragma multi_compile_fragment _ DEBUG_DISPLAY @@ -179,6 +182,10 @@ Shader "Universal Render Pipeline/Lit" // ------------------------------------- // Universal Pipeline keywords + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + // This is used during shadow map generation to differentiate between directional and punctual light shadows, as they use different formulas to apply Normal Bias #pragma multi_compile_vertex _ _CASTING_PUNCTUAL_LIGHT_SHADOW @@ -241,6 +248,7 @@ Shader "Universal Render Pipeline/Lit" #pragma multi_compile _ DIRLIGHTMAP_COMBINED #pragma multi_compile _ LIGHTMAP_ON #pragma multi_compile _ DYNAMICLIGHTMAP_ON + #pragma multi_compile _ LOD_FADE_CROSSFADE #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT //-------------------------------------- @@ -278,6 +286,10 @@ Shader "Universal Render Pipeline/Lit" #pragma shader_feature_local_fragment _ALPHATEST_ON #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + //-------------------------------------- // GPU Instancing #pragma multi_compile_instancing @@ -312,6 +324,10 @@ Shader "Universal Render Pipeline/Lit" #pragma shader_feature_local_fragment _ALPHATEST_ON #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + //-------------------------------------- // GPU Instancing #pragma multi_compile_instancing @@ -444,6 +460,7 @@ Shader "Universal Render Pipeline/Lit" #pragma multi_compile _ SHADOWS_SHADOWMASK #pragma multi_compile _ DIRLIGHTMAP_COMBINED #pragma multi_compile _ LIGHTMAP_ON + #pragma multi_compile _ LOD_FADE_CROSSFADE #pragma multi_compile_fog #pragma multi_compile_fragment _ DEBUG_DISPLAY @@ -481,6 +498,10 @@ Shader "Universal Render Pipeline/Lit" // ------------------------------------- // Universal Pipeline keywords + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + // This is used during shadow map generation to differentiate between directional and punctual light shadows, as they use different formulas to apply Normal Bias #pragma multi_compile_vertex _ _CASTING_PUNCTUAL_LIGHT_SHADOW @@ -517,6 +538,10 @@ Shader "Universal Render Pipeline/Lit" #pragma shader_feature_local_fragment _ALPHATEST_ON #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + #include "Packages/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl" #include "Packages/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl" ENDHLSL @@ -546,6 +571,10 @@ Shader "Universal Render Pipeline/Lit" #pragma shader_feature_local_fragment _ALPHATEST_ON #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + //-------------------------------------- // 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..6782014b853 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl @@ -82,6 +82,10 @@ half4 DepthNormalsFragment(Varyings input) : SV_TARGET { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); +#ifdef LOD_FADE_CROSSFADE + LODDitheringTransitionURP(input.positionCS.xy, unity_LODFade.x); +#endif + Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); #if defined(_GBUFFER_NORMALS_OCT) diff --git a/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl b/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl index b018d7a0a4c..e8f3e3664e6 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl @@ -223,6 +223,18 @@ half4 LitPassFragment(Varyings input) : SV_Target color.rgb = MixFog(color.rgb, inputData.fogCoord); color.a = OutputAlpha(color.a, _Surface); +#ifdef LOD_FADE_CROSSFADE + float ditherAlpha = LODDitheringTransitionURP(input.positionCS.xy, unity_LODFade.x); + color.a = ditherAlpha; +#endif + +//#ifdef LOD_FADE_CROSSFADE +// if(unity_LODFade.x > 0.0) +// color.a = unity_LODFade.x; +// else +// color.a = unity_LODFade.x + 1.0; +//#endif + return color; } diff --git a/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl b/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl index 1472dba6462..dd7a94c1692 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl @@ -180,6 +180,10 @@ FragmentOutput LitGBufferPassFragment(Varyings input) UNITY_SETUP_INSTANCE_ID(input); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); +#ifdef LOD_FADE_CROSSFADE + LODDitheringTransitionURP(input.positionCS.xy, unity_LODFade.x); +#endif + #if defined(_PARALLAXMAP) #if defined(REQUIRES_TANGENT_SPACE_VIEW_DIR_INTERPOLATOR) half3 viewDirTS = input.viewDirTS; diff --git a/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl b/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl index 638c394e5a5..e6660cb681b 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl @@ -77,6 +77,8 @@ TEXTURE2D(_MetallicGlossMap); SAMPLER(sampler_MetallicGlossMap); TEXTURE2D(_SpecGlossMap); SAMPLER(sampler_SpecGlossMap); TEXTURE2D(_ClearCoatMap); SAMPLER(sampler_ClearCoatMap); +TEXTURE2D(_BlueNoiseDitheringTexture); SAMPLER(sampler_BlueNoiseDitheringTexture); + #ifdef _SPECULAR_SETUP #define SAMPLE_METALLICSPECULAR(uv) SAMPLE_TEXTURE2D(_SpecGlossMap, sampler_SpecGlossMap, uv) #else @@ -242,4 +244,44 @@ inline void InitializeStandardLitSurfaceData(float2 uv, out SurfaceData outSurfa #endif } +float GetBlueNoiseDithering(uint2 seed) +{ + //@ This should be a parameter (64) + float blueNoiseTexSize = 64.0; + + float2 uv = seed / blueNoiseTexSize; + + return SAMPLE_TEXTURE2D(_BlueNoiseDitheringTexture, sampler_BlueNoiseDitheringTexture, uv).a; +} + +float GetBlueWhiteDithering(uint2 seed) +{ + return GenerateHashedRandomFloat(seed); +} + +float GetBayerMatrixDithering(uint2 seed) +{ + const float4x4 thresholdMatrix = + { + 1.0 / 17.0, 9.0 / 17.0, 3.0 / 17.0, 11.0 / 17.0, + 13.0 / 17.0, 5.0 / 17.0, 15.0 / 17.0, 7.0 / 17.0, + 4.0 / 17.0, 12.0 / 17.0, 2.0 / 17.0, 10.0 / 17.0, + 16.0 / 17.0, 8.0 / 17.0, 14.0 / 17.0, 6.0 / 17.0 + }; + + return thresholdMatrix[seed.x % 4][seed.y % 4]; +} + +float LODDitheringTransitionURP(uint2 fadeMaskSeed, float ditherFactor) +{ + float d = GetBlueNoiseDithering(fadeMaskSeed); + + float f = ditherFactor - CopySign(d, ditherFactor); + + return f * 2.0 + 1.0; + + /*clip(f); + return 1;*/ +} + #endif // UNIVERSAL_INPUT_SURFACE_PBR_INCLUDED diff --git a/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl b/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl index b421047dd3a..002f318c263 100644 --- a/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl @@ -58,6 +58,10 @@ Varyings ShadowPassVertex(Attributes input) half4 ShadowPassFragment(Varyings input) : SV_TARGET { +#ifdef LOD_FADE_CROSSFADE + LODDitheringTransitionURP(input.positionCS.xy, unity_LODFade.x); +#endif + Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); return 0; } diff --git a/com.unity.render-pipelines.universal/Textures/BlueNoise64.meta b/com.unity.render-pipelines.universal/Textures/BlueNoise64.meta new file mode 100644 index 00000000000..652bea25a02 --- /dev/null +++ b/com.unity.render-pipelines.universal/Textures/BlueNoise64.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2213abb41e048da4ca7f2acee56cf116 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.universal/Textures/BlueNoise64/L.meta b/com.unity.render-pipelines.universal/Textures/BlueNoise64/L.meta new file mode 100644 index 00000000000..9b9bc30e29e --- /dev/null +++ b/com.unity.render-pipelines.universal/Textures/BlueNoise64/L.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 185beacae6c1ae444bf82919f9550d1a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.universal/Textures/BlueNoise64/L/LDR_LLL1_0.png b/com.unity.render-pipelines.universal/Textures/BlueNoise64/L/LDR_LLL1_0.png new file mode 100644 index 00000000000..f74f05317f7 --- /dev/null +++ b/com.unity.render-pipelines.universal/Textures/BlueNoise64/L/LDR_LLL1_0.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:140c55bd97c21b9b22008d7054b492333fec67fbfc1a1b266e5b0209b647eed4 +size 7115 diff --git a/com.unity.render-pipelines.universal/Textures/BlueNoise64/L/LDR_LLL1_0.png.meta b/com.unity.render-pipelines.universal/Textures/BlueNoise64/L/LDR_LLL1_0.png.meta new file mode 100644 index 00000000000..a488b282d23 --- /dev/null +++ b/com.unity.render-pipelines.universal/Textures/BlueNoise64/L/LDR_LLL1_0.png.meta @@ -0,0 +1,171 @@ +fileFormatVersion: 2 +guid: e3d24661c1e055f45a7560c033dbb837 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 0 + 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: 2 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 10 + 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 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: tvOS + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: CloudRendering + maxTextureSize: 8192 + 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: From 5e5e03fc461644b545d4656373449e83a812d0d4 Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Thu, 9 Dec 2021 11:36:41 -0800 Subject: [PATCH 02/26] All dithering types. --- .../ShaderGraph/Targets/UniversalTarget.cs | 14 +++ .../Runtime/Data/PostProcessData.asset | 1 + .../Runtime/Data/PostProcessData.asset.meta | 2 +- .../Runtime/Data/PostProcessData.cs | 4 +- .../Runtime/Data/UniversalRendererData.asset | 5 +- .../Runtime/Materials/Decal.mat | 5 +- .../Runtime/Materials/Lit.mat | 2 +- .../Runtime/Materials/ParticlesUnlit.mat | 4 +- .../Runtime/Materials/SimpleLit.mat | 2 +- .../Runtime/Materials/TerrainLit.mat | 2 +- .../Runtime/Passes/DrawObjectsPass.cs | 6 ++ .../Runtime/UniversalRenderPipeline.cs | 4 +- .../Runtime/UniversalRenderPipelineCore.cs | 1 + .../ShaderLibrary/Core.hlsl | 1 + .../ShaderLibrary/LODDithering.hlsl | 88 +++++++++++++++++++ .../ShaderLibrary/LODDithering.hlsl.meta | 7 ++ .../ShaderLibrary/UnityInput.hlsl | 6 ++ .../Shaders/DepthNormalsPass.hlsl | 2 +- .../Shaders/DepthOnlyPass.hlsl | 4 +- .../Shaders/Lit.shader | 6 +- .../Shaders/LitDepthNormalsPass.hlsl | 2 +- .../Shaders/LitForwardPass.hlsl | 12 +-- .../Shaders/LitGBufferPass.hlsl | 3 +- .../Shaders/LitInput.hlsl | 42 +-------- .../Shaders/ShadowCasterPass.hlsl | 2 +- 25 files changed, 155 insertions(+), 72 deletions(-) create mode 100644 com.unity.render-pipelines.universal/ShaderLibrary/LODDithering.hlsl create mode 100644 com.unity.render-pipelines.universal/ShaderLibrary/LODDithering.hlsl.meta 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 1805b69d1b9..27bde642cf7 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs @@ -694,6 +694,20 @@ ScriptableObject IHasMetadata.GetMetadataObject() #region Passes static class CorePasses { + /// + /// Automatically enables Alpha-To-Coverage in the provided pass targets using alpha clipping + /// + /// The pass to modify + /// The target to query + internal static void AddAlphaToMaskControlToPass(ref PassDescriptor pass, UniversalTarget target) + { + // TODO: Does this also need to run when allowMaterialOverride is true? + if (target.alphaClip) + { + pass.renderStates.Add(RenderState.AlphaToMask("On")); + } + } + internal static void AddAlphaClipControlToPass(ref PassDescriptor pass, UniversalTarget target) { if (target.allowMaterialOverride) diff --git a/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset b/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset index ef442ec9d86..b36ddb6fef7 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset +++ b/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset @@ -59,6 +59,7 @@ MonoBehaviour: - {fileID: 2800000, guid: fa042edbfc40fbd4bad0ab9d505b1223, type: 3} - {fileID: 2800000, guid: 896d9004736809c4fb5973b7c12eb8b9, type: 3} - {fileID: 2800000, guid: 179f794063d2a66478e6e726f84a65bc, type: 3} + blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} filmGrainTex: - {fileID: 2800000, guid: 654c582f7f8a5a14dbd7d119cbde215d, type: 3} - {fileID: 2800000, guid: dd77ffd079630404e879388999033049, type: 3} diff --git a/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset.meta b/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset.meta index 22a9006a32a..f684f137d36 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset.meta +++ b/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 41439944d30ece34e96484bdb6645b55 +guid: 9e900d10afff24e49843e847501a065a NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.cs b/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.cs index 2d4fe9ce8d8..a96d3a791eb 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.cs +++ b/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.cs @@ -83,8 +83,8 @@ public sealed class TextureResources [Reload("Textures/BlueNoise16/L/LDR_LLL1_{0}.png", 0, 32)] public Texture2D[] blueNoise16LTex; - [Reload("Textures/BlueNoise64/L/LDR_LLL1_{0}.png", 0, 64)] - public Texture2D[] blueNoise64LTex; + [Reload("Textures/BlueNoise64/L/LDR_LLL1_0.png")] + public Texture2D blueNoise64LTex; // Post-processing [Reload(new[] diff --git a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRendererData.asset b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRendererData.asset index 629cdba2a71..bef0d9cdc8f 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRendererData.asset +++ b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRendererData.asset @@ -17,7 +17,7 @@ MonoBehaviour: m_RendererFeatures: [] m_RendererFeatureMap: m_UseNativeRenderPass: 0 - postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} + postProcessData: {fileID: 11400000, guid: 9e900d10afff24e49843e847501a065a, type: 2} xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2} shaders: blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} @@ -31,6 +31,7 @@ MonoBehaviour: 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 @@ -47,6 +48,8 @@ MonoBehaviour: m_ShadowTransparentReceive: 1 m_RenderingMode: 0 m_DepthPrimingMode: 0 + m_CopyDepthMode: 0 m_AccurateGbufferNormals: 0 m_ClusteredRendering: 0 m_TileSize: 32 + m_IntermediateTextureMode: 0 diff --git a/com.unity.render-pipelines.universal/Runtime/Materials/Decal.mat b/com.unity.render-pipelines.universal/Runtime/Materials/Decal.mat index 1918de63cf8..4d4562b3273 100644 --- a/com.unity.render-pipelines.universal/Runtime/Materials/Decal.mat +++ b/com.unity.render-pipelines.universal/Runtime/Materials/Decal.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 5 + version: 6 --- !u!21 &2100000 Material: serializedVersion: 6 @@ -21,7 +21,8 @@ Material: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Decal - m_Shader: {fileID: -6465566751694194690, guid: 9b4e681081e2b4c469111bb649e2f7ee, type: 3} + m_Shader: {fileID: -6465566751694194690, guid: 9b4e681081e2b4c469111bb649e2f7ee, + type: 3} m_ShaderKeywords: m_LightmapFlags: 4 m_EnableInstancingVariants: 1 diff --git a/com.unity.render-pipelines.universal/Runtime/Materials/Lit.mat b/com.unity.render-pipelines.universal/Runtime/Materials/Lit.mat index ee75030f91f..c169a5b5601 100644 --- a/com.unity.render-pipelines.universal/Runtime/Materials/Lit.mat +++ b/com.unity.render-pipelines.universal/Runtime/Materials/Lit.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 5 + version: 6 --- !u!21 &2100000 Material: serializedVersion: 6 diff --git a/com.unity.render-pipelines.universal/Runtime/Materials/ParticlesUnlit.mat b/com.unity.render-pipelines.universal/Runtime/Materials/ParticlesUnlit.mat index 4ca9d8e0f01..2489ad8c1a3 100644 --- a/com.unity.render-pipelines.universal/Runtime/Materials/ParticlesUnlit.mat +++ b/com.unity.render-pipelines.universal/Runtime/Materials/ParticlesUnlit.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 5 + version: 6 --- !u!21 &2100000 Material: serializedVersion: 6 @@ -22,7 +22,7 @@ Material: m_PrefabAsset: {fileID: 0} m_Name: ParticlesUnlit m_Shader: {fileID: 4800000, guid: 0406db5a14f94604a8c57ccfbc9f3b46, type: 3} - m_ShaderKeywords: _RECEIVE_SHADOWS_OFF _SURFACE_TYPE_TRANSPARENT + m_ShaderKeywords: _SURFACE_TYPE_TRANSPARENT m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 diff --git a/com.unity.render-pipelines.universal/Runtime/Materials/SimpleLit.mat b/com.unity.render-pipelines.universal/Runtime/Materials/SimpleLit.mat index 2acc4b70dd8..47f49b85c40 100644 --- a/com.unity.render-pipelines.universal/Runtime/Materials/SimpleLit.mat +++ b/com.unity.render-pipelines.universal/Runtime/Materials/SimpleLit.mat @@ -118,4 +118,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 5 + version: 6 diff --git a/com.unity.render-pipelines.universal/Runtime/Materials/TerrainLit.mat b/com.unity.render-pipelines.universal/Runtime/Materials/TerrainLit.mat index b16235f562b..6cc5dc38d14 100644 --- a/com.unity.render-pipelines.universal/Runtime/Materials/TerrainLit.mat +++ b/com.unity.render-pipelines.universal/Runtime/Materials/TerrainLit.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 5 + version: 6 --- !u!21 &2100000 Material: serializedVersion: 6 diff --git a/com.unity.render-pipelines.universal/Runtime/Passes/DrawObjectsPass.cs b/com.unity.render-pipelines.universal/Runtime/Passes/DrawObjectsPass.cs index 6dec7c5cc5d..c992f5387cf 100644 --- a/com.unity.render-pipelines.universal/Runtime/Passes/DrawObjectsPass.cs +++ b/com.unity.render-pipelines.universal/Runtime/Passes/DrawObjectsPass.cs @@ -94,6 +94,10 @@ public override void Execute(ScriptableRenderContext context, ref RenderingData : new Vector4(flipSign, 0.0f, 1.0f, 1.0f); cmd.SetGlobalVector(ShaderPropertyId.scaleBiasRt, scaleBias); + // Set a value that can be used by shaders to identify when they should use Alpha-To-Coverage functionality + float alphaToMaskEnabled = (renderingData.cameraData.cameraTargetDescriptor.msaaSamples > 1) ? 1.0f : 0.0f; + cmd.SetGlobalFloat(ShaderPropertyId.alphaToMaskEnabled, alphaToMaskEnabled); + context.ExecuteCommandBuffer(cmd); cmd.Clear(); @@ -130,6 +134,8 @@ 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, filterSettings, SortingCriteria.None); } + + cmd.SetGlobalFloat(ShaderPropertyId.alphaToMaskEnabled, 0.0f); } context.ExecuteCommandBuffer(cmd); CommandBufferPool.Release(cmd); diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index 6059cb0e9da..d108d780089 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -1233,10 +1233,8 @@ static void SetupPerFrameShaderConstants() // Required for 2D Unlit Shadergraph master node as it doesn't currently support hidden properties. Shader.SetGlobalColor(ShaderPropertyId.rendererColor, Color.white); - Texture2D blueNoiseTexture = PostProcessData.GetDefaultPostProcessData().textures.blueNoise64LTex[0]; - + Texture2D blueNoiseTexture = PostProcessData.GetDefaultPostProcessData().textures.blueNoise64LTex; Shader.SetGlobalTexture(ShaderPropertyId.blueNoiseDitheringTexture, blueNoiseTexture); - LODGroup.crossFadeAnimationDuration = 2; } static void CheckAndApplyDebugSettings(ref RenderingData renderingData) diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs index ba42cf1cf2a..5ec369e725a 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs @@ -300,6 +300,7 @@ internal static class ShaderPropertyId public static readonly int scaledScreenParams = Shader.PropertyToID("_ScaledScreenParams"); public static readonly int worldSpaceCameraPos = Shader.PropertyToID("_WorldSpaceCameraPos"); public static readonly int screenParams = Shader.PropertyToID("_ScreenParams"); + public static readonly int alphaToMaskEnabled = Shader.PropertyToID("_AlphaToMaskEnabled"); public static readonly int projectionParams = Shader.PropertyToID("_ProjectionParams"); public static readonly int zBufferParams = Shader.PropertyToID("_ZBufferParams"); public static readonly int orthoParams = Shader.PropertyToID("unity_OrthoParams"); diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl index 0de4e599d94..eda065d0742 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl @@ -121,5 +121,6 @@ struct VertexNormalInputs #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderVariablesFunctions.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Deprecated.hlsl" +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODDithering.hlsl" #endif diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/LODDithering.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/LODDithering.hlsl new file mode 100644 index 00000000000..e5d7c834982 --- /dev/null +++ b/com.unity.render-pipelines.universal/ShaderLibrary/LODDithering.hlsl @@ -0,0 +1,88 @@ +#ifndef UNIVERSAL_PIPELINE_LODDITHERING_INCLUDED +#define UNIVERSAL_PIPELINE_LODDITHERING_INCLUDED + +static const int k_LODDitherTypeBayerMatrix = 0; +static const int k_LODDitherTypeWhiteNoise = 1; +static const int k_LODDitherTypeBlueNoise = 2; + +static const int k_LODDitherType = k_LODDitherTypeBlueNoise; + +float GetBlueNoiseDithering(uint2 seed) +{ + const float blueNoiseTexSize = 64.0; + + float2 uv = seed / blueNoiseTexSize; + + return SAMPLE_TEXTURE2D(_BlueNoiseDitheringTexture, sampler_BlueNoiseDitheringTexture, uv).a; +} + +float GetWhiteNoiseDithering(uint2 seed) +{ + return GenerateHashedRandomFloat(seed); +} + +float GetBayerMatrixDithering(uint2 seed) +{ + const float4x4 k_BayerMatrix = + { + 1.0 / 17.0, 9.0 / 17.0, 3.0 / 17.0, 11.0 / 17.0, + 13.0 / 17.0, 5.0 / 17.0, 15.0 / 17.0, 7.0 / 17.0, + 4.0 / 17.0, 12.0 / 17.0, 2.0 / 17.0, 10.0 / 17.0, + 16.0 / 17.0, 8.0 / 17.0, 14.0 / 17.0, 6.0 / 17.0 + }; + + return k_BayerMatrix[seed.x % 4][seed.y % 4]; +} + +float GetLODDithering(float2 fadeMaskSeed, float ditherFactor, int ditherType) +{ + float d; + + //@ Could this be a shader_feature instead and ditherType a project parameter? + switch (ditherType) + { + case k_LODDitherTypeWhiteNoise: + d = GetWhiteNoiseDithering(fadeMaskSeed); + break; + case k_LODDitherTypeBlueNoise: + d = GetBlueNoiseDithering(fadeMaskSeed); + break; + case k_LODDitherTypeBayerMatrix: + default: + d = GetBayerMatrixDithering(fadeMaskSeed); + break; + } + + return ditherFactor - CopySign(d, ditherFactor); +} + +void LODDitheringTransition(float2 fadeMaskSeed, float ditherFactor, int ditherType) +{ + float d = GetLODDithering(fadeMaskSeed, ditherFactor, ditherType); + + clip(d); +} + +void LODDitheringTransition(float2 fadeMaskSeed, float ditherFactor, int ditherType, inout float4 color) +{ +#if _SURFACE_TYPE_TRANSPARENT + bool alphaToMask = false; +#else + bool alphaToMask = _AlphaToMaskEnabled; +#endif + + if (!alphaToMask) + { + LODDitheringTransition(fadeMaskSeed, ditherFactor, ditherType); + } + else + { + float d = GetLODDithering(fadeMaskSeed, ditherFactor, ditherType); + + color.a = d * 5.0 + 1.0; + + clip(color.a - 0.0001); + } +} + +#endif diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/LODDithering.hlsl.meta b/com.unity.render-pipelines.universal/ShaderLibrary/LODDithering.hlsl.meta new file mode 100644 index 00000000000..a96c53dee96 --- /dev/null +++ b/com.unity.render-pipelines.universal/ShaderLibrary/LODDithering.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d2c9707d24215e046aa7a4990df0a3be +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/UnityInput.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/UnityInput.hlsl index 2763a7b5900..3d2f0d3ea2b 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/UnityInput.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/UnityInput.hlsl @@ -59,6 +59,9 @@ float4 _ProjectionParams; // w = 1 + 1.0/height float4 _ScreenParams; +// 1.0 if AlphaToMask is enabled and 0.0 otherwise +float _AlphaToMaskEnabled; + // Values used to linearize the Z buffer (http://www.humus.name/temp/Linearize%20depth.txt) // x = 1-far/near // y = far/near @@ -249,6 +252,9 @@ SAMPLER(samplerunity_ShadowMask); TEXTURE2D_ARRAY(unity_ShadowMasks); SAMPLER(samplerunity_ShadowMasks); +TEXTURE2D(_BlueNoiseDitheringTexture); +SAMPLER(sampler_BlueNoiseDitheringTexture); + // ---------------------------------------------------------------------------- // TODO: all affine matrices should be 3x4. diff --git a/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl index f5b8efcbe67..7932791b1ab 100644 --- a/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl @@ -42,7 +42,7 @@ half4 DepthNormalsFragment(Varyings input) : SV_TARGET UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); #ifdef LOD_FADE_CROSSFADE - LODDitheringTransitionURP(input.positionCS.xy, unity_LODFade.x); + LODDitheringTransition(input.positionCS.xy, unity_LODFade.x, k_LODDitherType); #endif Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); diff --git a/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl b/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl index 427c2f9fe17..3100cd31e8f 100644 --- a/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl @@ -29,12 +29,12 @@ Varyings DepthOnlyVertex(Attributes input) return output; } -half DepthOnlyFragment(Varyings input) : SV_TARGET +half4 DepthOnlyFragment(Varyings input) : SV_TARGET { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); #ifdef LOD_FADE_CROSSFADE - LODDitheringTransitionURP(input.positionCS.xy, unity_LODFade.x); + LODDitheringTransition(input.positionCS.xy, unity_LODFade.x, k_LODDitherType); #endif Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); diff --git a/com.unity.render-pipelines.universal/Shaders/Lit.shader b/com.unity.render-pipelines.universal/Shaders/Lit.shader index 0f50ce084cd..0b99acb7bd3 100644 --- a/com.unity.render-pipelines.universal/Shaders/Lit.shader +++ b/com.unity.render-pipelines.universal/Shaders/Lit.shader @@ -93,6 +93,7 @@ Shader "Universal Render Pipeline/Lit" ZWrite[_ZWrite] Cull[_Cull] + //@ This shoult be enabled only when msaa enabled and when material is not alpha blended AlphaToMask On HLSLPROGRAM @@ -137,7 +138,7 @@ Shader "Universal Render Pipeline/Lit" #pragma multi_compile _ DIRLIGHTMAP_COMBINED #pragma multi_compile _ LIGHTMAP_ON #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ LOD_FADE_CROSSFADE + #pragma multi_compile _ LOD_FADE_CROSSFADE #pragma multi_compile_fog #pragma multi_compile_fragment _ DEBUG_DISPLAY @@ -414,6 +415,9 @@ Shader "Universal Render Pipeline/Lit" ZWrite[_ZWrite] Cull[_Cull] + //@ This shoult be enabled only when msaa enabled and when material is not alpha blended + AlphaToMask On + HLSLPROGRAM #pragma only_renderers gles gles3 glcore d3d11 #pragma target 2.0 diff --git a/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl index 6782014b853..9410b683ead 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl @@ -83,7 +83,7 @@ half4 DepthNormalsFragment(Varyings input) : SV_TARGET UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); #ifdef LOD_FADE_CROSSFADE - LODDitheringTransitionURP(input.positionCS.xy, unity_LODFade.x); + LODDitheringTransition(input.positionCS.xy, unity_LODFade.x, k_LODDitherType); #endif Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); diff --git a/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl b/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl index e8f3e3664e6..6ff1d513a4e 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl @@ -223,18 +223,10 @@ half4 LitPassFragment(Varyings input) : SV_Target color.rgb = MixFog(color.rgb, inputData.fogCoord); color.a = OutputAlpha(color.a, _Surface); -#ifdef LOD_FADE_CROSSFADE - float ditherAlpha = LODDitheringTransitionURP(input.positionCS.xy, unity_LODFade.x); - color.a = ditherAlpha; +#ifdef LOD_FADE_CROSSFADE + LODDitheringTransition(input.positionCS.xy, unity_LODFade.x, k_LODDitherType, color); #endif -//#ifdef LOD_FADE_CROSSFADE -// if(unity_LODFade.x > 0.0) -// color.a = unity_LODFade.x; -// else -// color.a = unity_LODFade.x + 1.0; -//#endif - return color; } diff --git a/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl b/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl index dd7a94c1692..652b2524514 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl @@ -3,6 +3,7 @@ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/UnityGBuffer.hlsl" +#include "Packages/com.unity.shadergraph/ShaderGraphLibrary/LODDitheringTransition.hlsl" // TODO: Currently we support viewDirTS caclulated in vertex shader and in fragments shader. // As both solutions have their advantages and disadvantages (etc. shader target 2.0 has only 8 interpolators). @@ -181,7 +182,7 @@ FragmentOutput LitGBufferPassFragment(Varyings input) UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); #ifdef LOD_FADE_CROSSFADE - LODDitheringTransitionURP(input.positionCS.xy, unity_LODFade.x); + LODDitheringTransition(input.positionCS.xy, unity_LODFade.x, k_LODDitherType); #endif #if defined(_PARALLAXMAP) diff --git a/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl b/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl index e6660cb681b..254c9cbac5f 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl @@ -77,8 +77,6 @@ TEXTURE2D(_MetallicGlossMap); SAMPLER(sampler_MetallicGlossMap); TEXTURE2D(_SpecGlossMap); SAMPLER(sampler_SpecGlossMap); TEXTURE2D(_ClearCoatMap); SAMPLER(sampler_ClearCoatMap); -TEXTURE2D(_BlueNoiseDitheringTexture); SAMPLER(sampler_BlueNoiseDitheringTexture); - #ifdef _SPECULAR_SETUP #define SAMPLE_METALLICSPECULAR(uv) SAMPLE_TEXTURE2D(_SpecGlossMap, sampler_SpecGlossMap, uv) #else @@ -244,44 +242,6 @@ inline void InitializeStandardLitSurfaceData(float2 uv, out SurfaceData outSurfa #endif } -float GetBlueNoiseDithering(uint2 seed) -{ - //@ This should be a parameter (64) - float blueNoiseTexSize = 64.0; - - float2 uv = seed / blueNoiseTexSize; - - return SAMPLE_TEXTURE2D(_BlueNoiseDitheringTexture, sampler_BlueNoiseDitheringTexture, uv).a; -} - -float GetBlueWhiteDithering(uint2 seed) -{ - return GenerateHashedRandomFloat(seed); -} - -float GetBayerMatrixDithering(uint2 seed) -{ - const float4x4 thresholdMatrix = - { - 1.0 / 17.0, 9.0 / 17.0, 3.0 / 17.0, 11.0 / 17.0, - 13.0 / 17.0, 5.0 / 17.0, 15.0 / 17.0, 7.0 / 17.0, - 4.0 / 17.0, 12.0 / 17.0, 2.0 / 17.0, 10.0 / 17.0, - 16.0 / 17.0, 8.0 / 17.0, 14.0 / 17.0, 6.0 / 17.0 - }; - - return thresholdMatrix[seed.x % 4][seed.y % 4]; -} - -float LODDitheringTransitionURP(uint2 fadeMaskSeed, float ditherFactor) -{ - float d = GetBlueNoiseDithering(fadeMaskSeed); - - float f = ditherFactor - CopySign(d, ditherFactor); - - return f * 2.0 + 1.0; - - /*clip(f); - return 1;*/ -} +//@ View invariant dithering is not needed for non camera rendering. #endif // UNIVERSAL_INPUT_SURFACE_PBR_INCLUDED diff --git a/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl b/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl index 002f318c263..d5eb6ee274c 100644 --- a/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl @@ -59,7 +59,7 @@ Varyings ShadowPassVertex(Attributes input) half4 ShadowPassFragment(Varyings input) : SV_TARGET { #ifdef LOD_FADE_CROSSFADE - LODDitheringTransitionURP(input.positionCS.xy, unity_LODFade.x); + LODDitheringTransition(input.positionCS.xy, unity_LODFade.x, k_LODDitherType); #endif Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); From 71c03edb8821434f5e5989aa61f0822215191d4d Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Fri, 10 Dec 2021 15:13:57 -0800 Subject: [PATCH 03/26] All URP shader types cross fade. --- .../SerializedUniversalRenderPipelineAsset.cs | 2 + .../UniversalRenderPipelineAssetUI.Drawers.cs | 1 + .../UniversalRenderPipelineAssetUI.Skin.cs | 1 + .../Data/UniversalRenderPipelineAsset.cs | 16 ++++ .../Runtime/Materials/Lit.mat | 11 ++- .../Runtime/UniversalRenderPipeline.cs | 1 + .../Runtime/UniversalRenderPipelineCore.cs | 1 + .../ShaderLibrary/Core.hlsl | 2 +- .../ShaderLibrary/LODCrossFade.hlsl | 95 +++++++++++++++++++ ...ering.hlsl.meta => LODCrossFade.hlsl.meta} | 2 +- .../ShaderLibrary/LODDithering.hlsl | 88 ----------------- .../ShaderLibrary/UnityInput.hlsl | 3 - .../Shaders/BakedLit.shader | 16 ++++ .../Shaders/BakedLitDepthNormalsPass.hlsl | 7 +- .../Shaders/BakedLitForwardPass.hlsl | 3 + .../Shaders/ComplexLit.shader | 26 +++++ .../Shaders/Decal.shadergraph | 26 ++++- .../Shaders/DepthNormalsPass.hlsl | 4 +- .../Shaders/DepthOnlyPass.hlsl | 4 +- .../Shaders/LitDepthNormalsPass.hlsl | 4 +- .../Shaders/LitForwardPass.hlsl | 4 +- .../Shaders/LitGBufferPass.hlsl | 4 +- .../Shaders/ShadowCasterPass.hlsl | 4 +- .../Shaders/SimpleLit.shader | 27 ++++++ .../Shaders/SimpleLitDepthNormalsPass.hlsl | 2 + .../Shaders/SimpleLitForwardPass.hlsl | 2 + .../Shaders/SimpleLitGBufferPass.hlsl | 2 + .../Shaders/Unlit.shader | 12 +++ .../Shaders/UnlitDepthNormalsPass.hlsl | 2 + .../Shaders/UnlitForwardPass.hlsl | 2 + 30 files changed, 252 insertions(+), 122 deletions(-) create mode 100644 com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl rename com.unity.render-pipelines.universal/ShaderLibrary/{LODDithering.hlsl.meta => LODCrossFade.hlsl.meta} (75%) delete mode 100644 com.unity.render-pipelines.universal/ShaderLibrary/LODDithering.hlsl diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs index caac1f9b20b..5ccbf60edf0 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs @@ -12,6 +12,7 @@ internal class SerializedUniversalRenderPipelineAsset public SerializedProperty requireOpaqueTextureProp { get; } public SerializedProperty opaqueDownsamplingProp { get; } public SerializedProperty supportsTerrainHolesProp { get; } + public SerializedProperty lodCrossFadeTypeProp { get; } public SerializedProperty storeActionsOptimizationProperty { get; } public SerializedProperty hdr { get; } @@ -78,6 +79,7 @@ public SerializedUniversalRenderPipelineAsset(SerializedObject serializedObject) requireOpaqueTextureProp = serializedObject.FindProperty("m_RequireOpaqueTexture"); opaqueDownsamplingProp = serializedObject.FindProperty("m_OpaqueDownsampling"); supportsTerrainHolesProp = serializedObject.FindProperty("m_SupportsTerrainHoles"); + lodCrossFadeTypeProp = serializedObject.FindProperty("m_LODCrossFadeType"); hdr = serializedObject.FindProperty("m_SupportsHDR"); msaa = serializedObject.FindProperty("m_MSAA"); diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs index 33cc3ee2758..8062568148e 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs @@ -148,6 +148,7 @@ static void DrawQuality(SerializedUniversalRenderPipelineAsset serialized, Edito EditorGUILayout.PropertyField(serialized.hdr, Styles.hdrText); EditorGUILayout.PropertyField(serialized.msaa, Styles.msaaText); serialized.renderScale.floatValue = EditorGUILayout.Slider(Styles.renderScaleText, serialized.renderScale.floatValue, UniversalRenderPipeline.minRenderScale, UniversalRenderPipeline.maxRenderScale); + EditorGUILayout.PropertyField(serialized.lodCrossFadeTypeProp, Styles.lodCrossFadeTypeText); } static void DrawLighting(SerializedUniversalRenderPipelineAsset serialized, Editor ownerEditor) diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs index 629e0ece74b..fc0473fcafa 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs @@ -37,6 +37,7 @@ public static class Styles public static GUIContent hdrText = EditorGUIUtility.TrTextContent("HDR", "Controls the global HDR settings."); public static GUIContent msaaText = EditorGUIUtility.TrTextContent("Anti Aliasing (MSAA)", "Controls the global anti aliasing settings."); public static GUIContent renderScaleText = EditorGUIUtility.TrTextContent("Render Scale", "Scales the camera render target allowing the game to render at a resolution different than native resolution. UI is always rendered at native resolution."); + public static GUIContent lodCrossFadeTypeText = EditorGUIUtility.TrTextContent("LOD Cross Fade Type", "Type of the LOD Cross Fade that is used to draw Renderer LOD when LODGroup has CrossFade Fade Mode selected."); // Main light public static GUIContent mainLightRenderingModeText = EditorGUIUtility.TrTextContent("Main Light", "Main light is the brightest directional light."); diff --git a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs index 4f87708853c..5aca11e69fa 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs @@ -137,6 +137,16 @@ public enum VolumeFrameworkUpdateMode UsePipelineSettings = 2, } + /// + /// Type of the LOD CrossFade. + /// + public enum LODCrossFadeType + { + BayerMatrixDither, + WhiteNoiseDither, + BlueNoiseDither + } + [ExcludeFromPreset] public partial class UniversalRenderPipelineAsset : RenderPipelineAsset, ISerializationCallbackReceiver { @@ -166,6 +176,7 @@ public partial class UniversalRenderPipelineAsset : RenderPipelineAsset, ISerial [SerializeField] bool m_SupportsHDR = true; [SerializeField] MsaaQuality m_MSAA = MsaaQuality.Disabled; [SerializeField] float m_RenderScale = 1.0f; + [SerializeField] LODCrossFadeType m_LODCrossFadeType = LODCrossFadeType.BayerMatrixDither; // TODO: Shader Quality Tiers // Main directional light Settings @@ -660,6 +671,11 @@ public float renderScale set { m_RenderScale = ValidateRenderScale(value); } } + public LODCrossFadeType lodCrossFadeType + { + get { return m_LODCrossFadeType; } + } + public LightRenderingMode mainLightRenderingMode { get { return m_MainLightRenderingMode; } diff --git a/com.unity.render-pipelines.universal/Runtime/Materials/Lit.mat b/com.unity.render-pipelines.universal/Runtime/Materials/Lit.mat index c169a5b5601..569cd672069 100644 --- a/com.unity.render-pipelines.universal/Runtime/Materials/Lit.mat +++ b/com.unity.render-pipelines.universal/Runtime/Materials/Lit.mat @@ -25,7 +25,7 @@ Material: m_ShaderKeywords: m_LightmapFlags: 4 m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 + m_DoubleSidedGI: 1 m_CustomRenderQueue: 2000 stringTagMap: RenderType: Opaque @@ -105,15 +105,17 @@ Material: m_Floats: - _AlphaClip: 0 - _Blend: 0 + - _BlendModePreserveSpecular: 1 - _BumpScale: 1 - _ClearCoat: 0 - _ClearCoatMask: 0 - _ClearCoatSmoothness: 0 - - _Cull: 2 + - _Cull: 0 - _Cutoff: 0.5 - _DetailAlbedoMapScale: 1 - _DetailNormalMapScale: 1 - _DstBlend: 0 + - _DstBlendAlpha: 0 - _EnvironmentReflections: 1 - _GlossMapScale: 1 - _Glossiness: 0.5 @@ -132,13 +134,14 @@ Material: - _SpecSource: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 + - _SrcBlendAlpha: 1 - _Surface: 0 - _UVSec: 0 - _WorkflowMode: 1 - _ZWrite: 1 m_Colors: - - _BaseColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _BaseColor: {r: 0, g: 0, b: 0, a: 1} + - _Color: {r: 0, g: 0, b: 0, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _SpecColor: {r: 1, g: 1, b: 1, a: 1} m_BuildTextureStacks: [] diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index d108d780089..8f5f0601440 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -1235,6 +1235,7 @@ static void SetupPerFrameShaderConstants() Texture2D blueNoiseTexture = PostProcessData.GetDefaultPostProcessData().textures.blueNoise64LTex; Shader.SetGlobalTexture(ShaderPropertyId.blueNoiseDitheringTexture, blueNoiseTexture); + Shader.SetGlobalInt(ShaderPropertyId.lodCrossFadeType, (int)asset.lodCrossFadeType); } static void CheckAndApplyDebugSettings(ref RenderingData renderingData) diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs index 5ec369e725a..73c369bdd46 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs @@ -333,6 +333,7 @@ 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 lodCrossFadeType = Shader.PropertyToID("_LODCrossFadeType"); public static readonly int blueNoiseDitheringTexture = Shader.PropertyToID("_BlueNoiseDitheringTexture"); } diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl index eda065d0742..db5ccb80510 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl @@ -121,6 +121,6 @@ struct VertexNormalInputs #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderVariablesFunctions.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Deprecated.hlsl" -#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODDithering.hlsl" +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" #endif diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl new file mode 100644 index 00000000000..a487e1cc8cb --- /dev/null +++ b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl @@ -0,0 +1,95 @@ +#ifndef UNIVERSAL_PIPELINE_LODCROSSFADE_INCLUDED +#define UNIVERSAL_PIPELINE_LODCROSSFADE_INCLUDED + +static const int k_LODCrossFadeTypeBayerMatrixDither = 0; +static const int k_LODCrossFadeTypeWhiteNoiseDither = 1; +static const int k_LODCrossFadeTypeBlueNoiseDither = 2; + +int _LODCrossFadeType; + +TEXTURE2D(_BlueNoiseDitheringTexture); +SAMPLER(sampler_BlueNoiseDitheringTexture); + +float GetBlueNoiseDithering(uint2 seed) +{ + const float blueNoiseTexSize = 64.0; + + float2 uv = seed / blueNoiseTexSize; + + return SAMPLE_TEXTURE2D(_BlueNoiseDitheringTexture, sampler_BlueNoiseDitheringTexture, uv).a; +} + +//@ We can make white noise camera rotation independent. See ComputeFadeMaskSeed. But that would require world space view vector for all passes. +float GetWhiteNoiseDithering(uint2 seed) +{ + return GenerateHashedRandomFloat(seed); +} + +float GetBayerMatrixDithering(uint2 seed) +{ + const float4x4 k_BayerMatrix = + { + 1.0 / 17.0, 9.0 / 17.0, 3.0 / 17.0, 11.0 / 17.0, + 13.0 / 17.0, 5.0 / 17.0, 15.0 / 17.0, 7.0 / 17.0, + 4.0 / 17.0, 12.0 / 17.0, 2.0 / 17.0, 10.0 / 17.0, + 16.0 / 17.0, 8.0 / 17.0, 14.0 / 17.0, 6.0 / 17.0 + }; + + return k_BayerMatrix[seed.x % 4][seed.y % 4]; +} + +float GetLODDithering(float2 crossFadeSeed, float crossFadeFactor) +{ + float d; + + switch (_LODCrossFadeType) + { + case k_LODCrossFadeTypeWhiteNoiseDither: + d = GetWhiteNoiseDithering(crossFadeSeed); + break; + case k_LODCrossFadeTypeBlueNoiseDither: + d = GetBlueNoiseDithering(crossFadeSeed); + break; + case k_LODCrossFadeTypeBayerMatrixDither: + default: + d = GetBayerMatrixDithering(crossFadeSeed); + break; + } + + return crossFadeFactor - CopySign(d, crossFadeFactor); +} + +void ApplyLODCrossFade(float4 positionCS) +{ +#ifdef LOD_FADE_CROSSFADE + float d = GetLODDithering(positionCS.xy, unity_LODFade.x); + + clip(d); +#endif +} + +void ApplyLODCrossFade(float4 positionCS, inout half4 color) +{ +#ifdef LOD_FADE_CROSSFADE + #if _SURFACE_TYPE_TRANSPARENT + bool alphaToMask = false; + #else + bool alphaToMask = _AlphaToMaskEnabled; + #endif + + if (!alphaToMask) + { + ApplyLODCrossFade(positionCS); + } + else + { + float d = GetLODDithering(positionCS.xy, unity_LODFade.x); + + color.a = d * 5.0 + 1.0; + + clip(color.a - 0.0001); + } +#endif +} + +#endif diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/LODDithering.hlsl.meta b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl.meta similarity index 75% rename from com.unity.render-pipelines.universal/ShaderLibrary/LODDithering.hlsl.meta rename to com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl.meta index a96c53dee96..20308109bee 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/LODDithering.hlsl.meta +++ b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d2c9707d24215e046aa7a4990df0a3be +guid: ef46fb1e00bf67142ae3548411a562b6 ShaderIncludeImporter: externalObjects: {} userData: diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/LODDithering.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/LODDithering.hlsl deleted file mode 100644 index e5d7c834982..00000000000 --- a/com.unity.render-pipelines.universal/ShaderLibrary/LODDithering.hlsl +++ /dev/null @@ -1,88 +0,0 @@ -#ifndef UNIVERSAL_PIPELINE_LODDITHERING_INCLUDED -#define UNIVERSAL_PIPELINE_LODDITHERING_INCLUDED - -static const int k_LODDitherTypeBayerMatrix = 0; -static const int k_LODDitherTypeWhiteNoise = 1; -static const int k_LODDitherTypeBlueNoise = 2; - -static const int k_LODDitherType = k_LODDitherTypeBlueNoise; - -float GetBlueNoiseDithering(uint2 seed) -{ - const float blueNoiseTexSize = 64.0; - - float2 uv = seed / blueNoiseTexSize; - - return SAMPLE_TEXTURE2D(_BlueNoiseDitheringTexture, sampler_BlueNoiseDitheringTexture, uv).a; -} - -float GetWhiteNoiseDithering(uint2 seed) -{ - return GenerateHashedRandomFloat(seed); -} - -float GetBayerMatrixDithering(uint2 seed) -{ - const float4x4 k_BayerMatrix = - { - 1.0 / 17.0, 9.0 / 17.0, 3.0 / 17.0, 11.0 / 17.0, - 13.0 / 17.0, 5.0 / 17.0, 15.0 / 17.0, 7.0 / 17.0, - 4.0 / 17.0, 12.0 / 17.0, 2.0 / 17.0, 10.0 / 17.0, - 16.0 / 17.0, 8.0 / 17.0, 14.0 / 17.0, 6.0 / 17.0 - }; - - return k_BayerMatrix[seed.x % 4][seed.y % 4]; -} - -float GetLODDithering(float2 fadeMaskSeed, float ditherFactor, int ditherType) -{ - float d; - - //@ Could this be a shader_feature instead and ditherType a project parameter? - switch (ditherType) - { - case k_LODDitherTypeWhiteNoise: - d = GetWhiteNoiseDithering(fadeMaskSeed); - break; - case k_LODDitherTypeBlueNoise: - d = GetBlueNoiseDithering(fadeMaskSeed); - break; - case k_LODDitherTypeBayerMatrix: - default: - d = GetBayerMatrixDithering(fadeMaskSeed); - break; - } - - return ditherFactor - CopySign(d, ditherFactor); -} - -void LODDitheringTransition(float2 fadeMaskSeed, float ditherFactor, int ditherType) -{ - float d = GetLODDithering(fadeMaskSeed, ditherFactor, ditherType); - - clip(d); -} - -void LODDitheringTransition(float2 fadeMaskSeed, float ditherFactor, int ditherType, inout float4 color) -{ -#if _SURFACE_TYPE_TRANSPARENT - bool alphaToMask = false; -#else - bool alphaToMask = _AlphaToMaskEnabled; -#endif - - if (!alphaToMask) - { - LODDitheringTransition(fadeMaskSeed, ditherFactor, ditherType); - } - else - { - float d = GetLODDithering(fadeMaskSeed, ditherFactor, ditherType); - - color.a = d * 5.0 + 1.0; - - clip(color.a - 0.0001); - } -} - -#endif diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/UnityInput.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/UnityInput.hlsl index 3d2f0d3ea2b..56289157ed3 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/UnityInput.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/UnityInput.hlsl @@ -252,9 +252,6 @@ SAMPLER(samplerunity_ShadowMask); TEXTURE2D_ARRAY(unity_ShadowMasks); SAMPLER(samplerunity_ShadowMasks); -TEXTURE2D(_BlueNoiseDitheringTexture); -SAMPLER(sampler_BlueNoiseDitheringTexture); - // ---------------------------------------------------------------------------- // TODO: all affine matrices should be 3x4. diff --git a/com.unity.render-pipelines.universal/Shaders/BakedLit.shader b/com.unity.render-pipelines.universal/Shaders/BakedLit.shader index 7b363afa37a..0cacbf9abb6 100644 --- a/com.unity.render-pipelines.universal/Shaders/BakedLit.shader +++ b/com.unity.render-pipelines.universal/Shaders/BakedLit.shader @@ -64,6 +64,7 @@ Shader "Universal Render Pipeline/Baked Lit" #pragma multi_compile _ LIGHTMAP_ON #pragma multi_compile_fog #pragma multi_compile _ DEBUG_DISPLAY + #pragma multi_compile _ LOD_FADE_CROSSFADE //-------------------------------------- // GPU Instancing @@ -97,6 +98,10 @@ Shader "Universal Render Pipeline/Baked Lit" // Material Keywords #pragma shader_feature_local_fragment _ALPHATEST_ON + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + //-------------------------------------- // GPU Instancing #pragma multi_compile_instancing @@ -131,6 +136,7 @@ Shader "Universal Render Pipeline/Baked Lit" // ------------------------------------- // Unity defined keywords #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT // forward-only variant + #pragma multi_compile _ LOD_FADE_CROSSFADE //-------------------------------------- // GPU Instancing @@ -166,6 +172,7 @@ Shader "Universal Render Pipeline/Baked Lit" // ------------------------------------- // Unity defined keywords #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT // forward-only variant + #pragma multi_compile _ LOD_FADE_CROSSFADE //-------------------------------------- // Defines @@ -263,6 +270,7 @@ Shader "Universal Render Pipeline/Baked Lit" #pragma multi_compile _ LIGHTMAP_ON #pragma multi_compile_fog #pragma multi_compile _ DEBUG_DISPLAY + #pragma multi_compile _ LOD_FADE_CROSSFADE //-------------------------------------- // GPU Instancing @@ -299,6 +307,10 @@ Shader "Universal Render Pipeline/Baked Lit" // Material Keywords #pragma shader_feature_local_fragment _ALPHATEST_ON + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + #include "Packages/com.unity.render-pipelines.universal/Shaders/BakedLitInput.hlsl" #include "Packages/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl" ENDHLSL @@ -325,6 +337,10 @@ Shader "Universal Render Pipeline/Baked Lit" #pragma shader_feature_local _ _NORMALMAP #pragma shader_feature_local_fragment _ALPHATEST_ON + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + //-------------------------------------- // GPU Instancing #pragma multi_compile_instancing diff --git a/com.unity.render-pipelines.universal/Shaders/BakedLitDepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/BakedLitDepthNormalsPass.hlsl index 2f1dab427c6..3d0d3d04f04 100644 --- a/com.unity.render-pipelines.universal/Shaders/BakedLitDepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/BakedLitDepthNormalsPass.hlsl @@ -15,7 +15,7 @@ struct Attributes struct Varyings { - float4 vertex : SV_POSITION; + float4 positionCS : SV_POSITION; float2 uv : TEXCOORD0; half3 normalWS : TEXCOORD1; @@ -33,8 +33,7 @@ Varyings DepthNormalsVertex(Attributes input) UNITY_SETUP_INSTANCE_ID(input); UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); - VertexPositionInputs vertexInput = GetVertexPositionInputs(input.positionOS.xyz); - output.vertex = vertexInput.positionCS; + output.positionCS = TransformObjectToHClip(input.positionOS.xyz); output.uv = TRANSFORM_TEX(input.uv, _BaseMap).xy; // normalWS and tangentWS already normalize. @@ -55,6 +54,8 @@ float4 DepthNormalsFragment(Varyings input) : SV_TARGET UNITY_SETUP_INSTANCE_ID(input); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + ApplyLODCrossFade(input.positionCS); + half4 texColor = (half4) SAMPLE_TEXTURE2D(_BaseMap, sampler_BaseMap, input.uv); half alpha = texColor.a * _BaseColor.a; AlphaDiscard(alpha, _Cutoff); diff --git a/com.unity.render-pipelines.universal/Shaders/BakedLitForwardPass.hlsl b/com.unity.render-pipelines.universal/Shaders/BakedLitForwardPass.hlsl index a1af86a06d8..826abe2eb3b 100644 --- a/com.unity.render-pipelines.universal/Shaders/BakedLitForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/BakedLitForwardPass.hlsl @@ -136,5 +136,8 @@ half4 BakedLitForwardPassFragment(Varyings input) : SV_Target half4 finalColor = UniversalFragmentBakedLit(inputData, color, alpha, normalTS); finalColor.a = OutputAlpha(finalColor.a, _Surface); + + ApplyLODCrossFade(input.positionCS, finalColor); + return finalColor; } diff --git a/com.unity.render-pipelines.universal/Shaders/ComplexLit.shader b/com.unity.render-pipelines.universal/Shaders/ComplexLit.shader index 50e84067f04..725ef8baa8c 100644 --- a/com.unity.render-pipelines.universal/Shaders/ComplexLit.shader +++ b/com.unity.render-pipelines.universal/Shaders/ComplexLit.shader @@ -135,6 +135,7 @@ Shader "Universal Render Pipeline/Complex Lit" #pragma multi_compile _ LIGHTMAP_ON #pragma multi_compile_fog #pragma multi_compile_fragment _ DEBUG_DISPLAY + #pragma multi_compile _ LOD_FADE_CROSSFADE //-------------------------------------- // GPU Instancing @@ -177,6 +178,10 @@ Shader "Universal Render Pipeline/Complex Lit" // ------------------------------------- // Universal Pipeline keywords + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + // This is used during shadow map generation to differentiate between directional and punctual light shadows, as they use different formulas to apply Normal Bias #pragma multi_compile_vertex _ _CASTING_PUNCTUAL_LIGHT_SHADOW @@ -209,6 +214,10 @@ Shader "Universal Render Pipeline/Complex Lit" #pragma shader_feature_local_fragment _ALPHATEST_ON #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + //-------------------------------------- // GPU Instancing #pragma multi_compile_instancing @@ -247,6 +256,10 @@ Shader "Universal Render Pipeline/Complex Lit" // Unity defined keywords #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT // forward-only variant + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + //-------------------------------------- // GPU Instancing #pragma multi_compile_instancing @@ -373,6 +386,7 @@ Shader "Universal Render Pipeline/Complex Lit" #pragma multi_compile _ LIGHTMAP_ON #pragma multi_compile_fog #pragma multi_compile_fragment _ DEBUG_DISPLAY + #pragma multi_compile _ LOD_FADE_CROSSFADE //-------------------------------------- // GPU Instancing @@ -409,6 +423,10 @@ Shader "Universal Render Pipeline/Complex Lit" #pragma shader_feature_local_fragment _ALPHATEST_ON #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + #pragma vertex ShadowPassVertex #pragma fragment ShadowPassFragment @@ -442,6 +460,10 @@ Shader "Universal Render Pipeline/Complex Lit" #pragma shader_feature_local_fragment _ALPHATEST_ON #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + #include "Packages/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl" #include "Packages/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl" ENDHLSL @@ -471,6 +493,10 @@ Shader "Universal Render Pipeline/Complex Lit" #pragma shader_feature_local_fragment _ALPHATEST_ON #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + //-------------------------------------- // GPU Instancing #pragma multi_compile_instancing diff --git a/com.unity.render-pipelines.universal/Shaders/Decal.shadergraph b/com.unity.render-pipelines.universal/Shaders/Decal.shadergraph index dc29db12650..d537d155d17 100644 --- a/com.unity.render-pipelines.universal/Shaders/Decal.shadergraph +++ b/com.unity.render-pipelines.universal/Shaders/Decal.shadergraph @@ -192,7 +192,8 @@ "serializedMesh": { "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", "m_Guid": "" - } + }, + "preventRotation": false }, "m_Path": "Shader Graphs", "m_GraphPrecision": 1, @@ -222,6 +223,7 @@ "m_GeneratePropertyBlock": true, "m_UseCustomSlotLabel": false, "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, "m_Precision": 0, "overrideHLSLDeclaration": false, "hlslDeclarationOverride": 0, @@ -251,6 +253,7 @@ "m_GeneratePropertyBlock": true, "m_UseCustomSlotLabel": false, "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, "m_Precision": 0, "overrideHLSLDeclaration": false, "hlslDeclarationOverride": 0, @@ -325,13 +328,14 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": false, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] }, "m_TextureType": 0, "m_NormalMapSpace": 0, - "m_DisableGlobalMipBias": false + "m_EnableGlobalMipBias": true } { @@ -398,6 +402,7 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": true, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] @@ -476,6 +481,7 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": true, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] @@ -539,6 +545,7 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": true, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] @@ -609,6 +616,7 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": true, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] @@ -693,7 +701,8 @@ "m_AlphaClip": false, "m_CastShadows": true, "m_ReceiveShadows": true, - "m_CustomEditorGUI": "" + "m_CustomEditorGUI": "", + "m_SupportVFX": false } { @@ -829,6 +838,7 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": true, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] @@ -883,13 +893,14 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": false, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] }, "m_TextureType": 0, "m_NormalMapSpace": 0, - "m_DisableGlobalMipBias": false + "m_EnableGlobalMipBias": true } { @@ -975,6 +986,7 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": true, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] @@ -1010,6 +1022,7 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": true, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] @@ -1043,6 +1056,7 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": true, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] @@ -1091,6 +1105,7 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": true, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] @@ -1128,6 +1143,7 @@ "m_GeneratePropertyBlock": true, "m_UseCustomSlotLabel": false, "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, "m_Precision": 0, "overrideHLSLDeclaration": false, "hlslDeclarationOverride": 0, @@ -1247,6 +1263,7 @@ "synonyms": [], "m_Precision": 0, "m_PreviewExpanded": true, + "m_DismissedVersion": 0, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] @@ -1280,6 +1297,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 7932791b1ab..cd81405c9b4 100644 --- a/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl @@ -41,9 +41,7 @@ half4 DepthNormalsFragment(Varyings input) : SV_TARGET { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); -#ifdef LOD_FADE_CROSSFADE - LODDitheringTransition(input.positionCS.xy, unity_LODFade.x, k_LODDitherType); -#endif + ApplyLODCrossFade(input.positionCS); Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); diff --git a/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl b/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl index 3100cd31e8f..aea2f3e87c2 100644 --- a/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl @@ -33,9 +33,7 @@ half4 DepthOnlyFragment(Varyings input) : SV_TARGET { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); -#ifdef LOD_FADE_CROSSFADE - LODDitheringTransition(input.positionCS.xy, unity_LODFade.x, k_LODDitherType); -#endif + ApplyLODCrossFade(input.positionCS); Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); return input.positionCS.z; diff --git a/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl index 9410b683ead..1ac82de2191 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl @@ -82,9 +82,7 @@ half4 DepthNormalsFragment(Varyings input) : SV_TARGET { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); -#ifdef LOD_FADE_CROSSFADE - LODDitheringTransition(input.positionCS.xy, unity_LODFade.x, k_LODDitherType); -#endif + ApplyLODCrossFade(input.positionCS); Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); diff --git a/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl b/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl index 6ff1d513a4e..be178a435e0 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl @@ -223,9 +223,7 @@ half4 LitPassFragment(Varyings input) : SV_Target color.rgb = MixFog(color.rgb, inputData.fogCoord); color.a = OutputAlpha(color.a, _Surface); -#ifdef LOD_FADE_CROSSFADE - LODDitheringTransition(input.positionCS.xy, unity_LODFade.x, k_LODDitherType, color); -#endif + ApplyLODCrossFade(input.positionCS, color); return color; } diff --git a/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl b/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl index 652b2524514..f1bf570a978 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl @@ -181,9 +181,7 @@ FragmentOutput LitGBufferPassFragment(Varyings input) UNITY_SETUP_INSTANCE_ID(input); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); -#ifdef LOD_FADE_CROSSFADE - LODDitheringTransition(input.positionCS.xy, unity_LODFade.x, k_LODDitherType); -#endif + ApplyLODCrossFade(input.positionCS); #if defined(_PARALLAXMAP) #if defined(REQUIRES_TANGENT_SPACE_VIEW_DIR_INTERPOLATOR) diff --git a/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl b/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl index d5eb6ee274c..c4ce85799cb 100644 --- a/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl @@ -58,9 +58,7 @@ Varyings ShadowPassVertex(Attributes input) half4 ShadowPassFragment(Varyings input) : SV_TARGET { -#ifdef LOD_FADE_CROSSFADE - LODDitheringTransition(input.positionCS.xy, unity_LODFade.x, k_LODDitherType); -#endif + ApplyLODCrossFade(input.positionCS); Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); return 0; diff --git a/com.unity.render-pipelines.universal/Shaders/SimpleLit.shader b/com.unity.render-pipelines.universal/Shaders/SimpleLit.shader index 3664f1ee857..cd676149e12 100644 --- a/com.unity.render-pipelines.universal/Shaders/SimpleLit.shader +++ b/com.unity.render-pipelines.universal/Shaders/SimpleLit.shader @@ -100,6 +100,7 @@ Shader "Universal Render Pipeline/Simple Lit" #pragma multi_compile _ DYNAMICLIGHTMAP_ON #pragma multi_compile_fog #pragma multi_compile_fragment _ DEBUG_DISPLAY + #pragma multi_compile _ LOD_FADE_CROSSFADE //-------------------------------------- // GPU Instancing @@ -143,6 +144,10 @@ Shader "Universal Render Pipeline/Simple Lit" // ------------------------------------- // Universal Pipeline keywords + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + // This is used during shadow map generation to differentiate between directional and punctual light shadows, as they use different formulas to apply Normal Bias #pragma multi_compile_vertex _ _CASTING_PUNCTUAL_LIGHT_SHADOW @@ -195,6 +200,7 @@ Shader "Universal Render Pipeline/Simple Lit" #pragma multi_compile _ SHADOWS_SHADOWMASK #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT #pragma multi_compile_fragment _ _RENDER_PASS_ENABLED + #pragma multi_compile _ LOD_FADE_CROSSFADE //-------------------------------------- // GPU Instancing @@ -232,6 +238,10 @@ Shader "Universal Render Pipeline/Simple Lit" #pragma shader_feature_local_fragment _ALPHATEST_ON #pragma shader_feature_local_fragment _GLOSSINESS_FROM_BASE_ALPHA + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + //-------------------------------------- // GPU Instancing #pragma multi_compile_instancing @@ -264,6 +274,10 @@ Shader "Universal Render Pipeline/Simple Lit" #pragma shader_feature_local_fragment _ALPHATEST_ON #pragma shader_feature_local_fragment _GLOSSINESS_FROM_BASE_ALPHA + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + //-------------------------------------- // GPU Instancing #pragma multi_compile_instancing @@ -371,6 +385,7 @@ Shader "Universal Render Pipeline/Simple Lit" #pragma multi_compile _ DYNAMICLIGHTMAP_ON #pragma multi_compile_fog #pragma multi_compile_fragment _ DEBUG_DISPLAY + #pragma multi_compile _ LOD_FADE_CROSSFADE #pragma vertex LitPassVertexSimple #pragma fragment LitPassFragmentSimple @@ -403,6 +418,10 @@ Shader "Universal Render Pipeline/Simple Lit" // ------------------------------------- // Universal Pipeline keywords + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + // This is used during shadow map generation to differentiate between directional and punctual light shadows, as they use different formulas to apply Normal Bias #pragma multi_compile_vertex _ _CASTING_PUNCTUAL_LIGHT_SHADOW @@ -434,6 +453,10 @@ Shader "Universal Render Pipeline/Simple Lit" #pragma shader_feature_local_fragment _ALPHATEST_ON #pragma shader_feature_local_fragment _GLOSSINESS_FROM_BASE_ALPHA + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + #include "Packages/com.unity.render-pipelines.universal/Shaders/SimpleLitInput.hlsl" #include "Packages/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl" ENDHLSL @@ -461,6 +484,10 @@ Shader "Universal Render Pipeline/Simple Lit" #pragma shader_feature_local_fragment _ALPHATEST_ON #pragma shader_feature_local_fragment _GLOSSINESS_FROM_BASE_ALPHA + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + //-------------------------------------- // GPU Instancing #pragma multi_compile_instancing diff --git a/com.unity.render-pipelines.universal/Shaders/SimpleLitDepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/SimpleLitDepthNormalsPass.hlsl index 222217bd383..338f443ec17 100644 --- a/com.unity.render-pipelines.universal/Shaders/SimpleLitDepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/SimpleLitDepthNormalsPass.hlsl @@ -59,6 +59,8 @@ half4 DepthNormalsFragment(Varyings input) : SV_TARGET { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + ApplyLODCrossFade(input.positionCS); + Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); #if defined(_GBUFFER_NORMALS_OCT) diff --git a/com.unity.render-pipelines.universal/Shaders/SimpleLitForwardPass.hlsl b/com.unity.render-pipelines.universal/Shaders/SimpleLitForwardPass.hlsl index da790486e4c..5275eff7ffa 100644 --- a/com.unity.render-pipelines.universal/Shaders/SimpleLitForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/SimpleLitForwardPass.hlsl @@ -182,6 +182,8 @@ half4 LitPassFragmentSimple(Varyings input) : SV_Target color.rgb = MixFog(color.rgb, inputData.fogCoord); color.a = OutputAlpha(color.a, _Surface); + ApplyLODCrossFade(input.positionCS, color); + return color; } diff --git a/com.unity.render-pipelines.universal/Shaders/SimpleLitGBufferPass.hlsl b/com.unity.render-pipelines.universal/Shaders/SimpleLitGBufferPass.hlsl index 75b1d79a0b0..207c91e0b73 100644 --- a/com.unity.render-pipelines.universal/Shaders/SimpleLitGBufferPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/SimpleLitGBufferPass.hlsl @@ -161,6 +161,8 @@ FragmentOutput LitPassFragmentSimple(Varyings input) UNITY_SETUP_INSTANCE_ID(input); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + ApplyLODCrossFade(input.positionCS); + SurfaceData surfaceData; InitializeSimpleLitSurfaceData(input.uv, surfaceData); diff --git a/com.unity.render-pipelines.universal/Shaders/Unlit.shader b/com.unity.render-pipelines.universal/Shaders/Unlit.shader index 20f851cb375..6771cce891f 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 _ LOD_FADE_CROSSFADE #pragma vertex UnlitPassVertex #pragma fragment UnlitPassFragment @@ -84,6 +85,10 @@ Shader "Universal Render Pipeline/Unlit" // Material Keywords #pragma shader_feature_local_fragment _ALPHATEST_ON + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + //-------------------------------------- // GPU Instancing #pragma multi_compile_instancing @@ -115,6 +120,7 @@ Shader "Universal Render Pipeline/Unlit" // ------------------------------------- // Unity defined keywords #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT // forward-only variant + #pragma multi_compile _ LOD_FADE_CROSSFADE //-------------------------------------- // GPU Instancing @@ -175,6 +181,7 @@ Shader "Universal Render Pipeline/Unlit" #pragma multi_compile_instancing #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION #pragma multi_compile _ DEBUG_DISPLAY + #pragma multi_compile _ LOD_FADE_CROSSFADE #pragma vertex UnlitPassVertex #pragma fragment UnlitPassFragment @@ -203,6 +210,10 @@ Shader "Universal Render Pipeline/Unlit" // Material Keywords #pragma shader_feature_local_fragment _ALPHATEST_ON + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LOD_FADE_CROSSFADE + //-------------------------------------- // GPU Instancing #pragma multi_compile_instancing @@ -233,6 +244,7 @@ Shader "Universal Render Pipeline/Unlit" // ------------------------------------- // Unity defined keywords #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT // forward-only variant + #pragma multi_compile _ LOD_FADE_CROSSFADE //-------------------------------------- // GPU Instancing diff --git a/com.unity.render-pipelines.universal/Shaders/UnlitDepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/UnlitDepthNormalsPass.hlsl index 0292b42b7b0..6cad06ab7d7 100644 --- a/com.unity.render-pipelines.universal/Shaders/UnlitDepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/UnlitDepthNormalsPass.hlsl @@ -38,6 +38,8 @@ float4 DepthNormalsFragment(Varyings input) : SV_TARGET { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + ApplyLODCrossFade(input.positionCS); + // Output... #if defined(_GBUFFER_NORMALS_OCT) float3 normalWS = normalize(input.normalWS); diff --git a/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl b/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl index f75b5d679c3..988acbe75d2 100644 --- a/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl @@ -131,6 +131,8 @@ half4 UnlitPassFragment(Varyings input) : SV_Target #endif finalColor.rgb = MixFog(finalColor.rgb, fogFactor); + ApplyLODCrossFade(input.positionCS, finalColor); + return finalColor; } From e3ae91b291d223d9d025d56b64d688fe33ffc3e0 Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Wed, 15 Dec 2021 18:55:13 -0800 Subject: [PATCH 04/26] Refactoring. --- .../Runtime/UniversalRenderPipeline.cs | 10 ++++++-- .../BlueNoise64/L/LDR_LLL1_0.png.meta | 24 +++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index 8f5f0601440..6b26476a519 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -1233,9 +1233,15 @@ static void SetupPerFrameShaderConstants() // Required for 2D Unlit Shadergraph master node as it doesn't currently support hidden properties. Shader.SetGlobalColor(ShaderPropertyId.rendererColor, Color.white); - Texture2D blueNoiseTexture = PostProcessData.GetDefaultPostProcessData().textures.blueNoise64LTex; - Shader.SetGlobalTexture(ShaderPropertyId.blueNoiseDitheringTexture, blueNoiseTexture); Shader.SetGlobalInt(ShaderPropertyId.lodCrossFadeType, (int)asset.lodCrossFadeType); + + if (asset.lodCrossFadeType == LODCrossFadeType.BlueNoiseDither) + { + UniversalRendererData renderData = asset.scriptableRendererData as UniversalRendererData; + Shader.SetGlobalTexture(ShaderPropertyId.blueNoiseDitheringTexture, renderData?.postProcessData?.textures.blueNoise64LTex); + } + + LODGroup.crossFadeAnimationDuration = 2.0f; } static void CheckAndApplyDebugSettings(ref RenderingData renderingData) diff --git a/com.unity.render-pipelines.universal/Textures/BlueNoise64/L/LDR_LLL1_0.png.meta b/com.unity.render-pipelines.universal/Textures/BlueNoise64/L/LDR_LLL1_0.png.meta index a488b282d23..be748092411 100644 --- a/com.unity.render-pipelines.universal/Textures/BlueNoise64/L/LDR_LLL1_0.png.meta +++ b/com.unity.render-pipelines.universal/Textures/BlueNoise64/L/LDR_LLL1_0.png.meta @@ -150,6 +150,30 @@ TextureImporter: overridden: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: PS5 + 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: [] From 225f71cd8ec431048b72ce8a3c4e211402ed67a8 Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Thu, 16 Dec 2021 17:40:12 -0800 Subject: [PATCH 05/26] Moved to half precision. --- .../ShaderLibrary/LODCrossFade.hlsl | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl index a487e1cc8cb..e132fa769eb 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl @@ -10,24 +10,29 @@ int _LODCrossFadeType; TEXTURE2D(_BlueNoiseDitheringTexture); SAMPLER(sampler_BlueNoiseDitheringTexture); -float GetBlueNoiseDithering(uint2 seed) +half CopySign(half x, half s) { - const float blueNoiseTexSize = 64.0; + return (s >= 0) ? abs(x) : -abs(x); +} + +half GetBlueNoiseDithering(uint2 seed) +{ + const half k_BlueNoiseTexSize = 64.0; - float2 uv = seed / blueNoiseTexSize; + half2 uv = seed / k_BlueNoiseTexSize; return SAMPLE_TEXTURE2D(_BlueNoiseDitheringTexture, sampler_BlueNoiseDitheringTexture, uv).a; } //@ We can make white noise camera rotation independent. See ComputeFadeMaskSeed. But that would require world space view vector for all passes. -float GetWhiteNoiseDithering(uint2 seed) +half GetWhiteNoiseDithering(uint2 seed) { return GenerateHashedRandomFloat(seed); } -float GetBayerMatrixDithering(uint2 seed) +half GetBayerMatrixDithering(uint2 seed) { - const float4x4 k_BayerMatrix = + const half4x4 k_BayerMatrix = { 1.0 / 17.0, 9.0 / 17.0, 3.0 / 17.0, 11.0 / 17.0, 13.0 / 17.0, 5.0 / 17.0, 15.0 / 17.0, 7.0 / 17.0, @@ -38,9 +43,9 @@ float GetBayerMatrixDithering(uint2 seed) return k_BayerMatrix[seed.x % 4][seed.y % 4]; } -float GetLODDithering(float2 crossFadeSeed, float crossFadeFactor) +half GetLODDithering(float2 crossFadeSeed, half crossFadeFactor) { - float d; + half d; switch (_LODCrossFadeType) { @@ -62,7 +67,7 @@ float GetLODDithering(float2 crossFadeSeed, float crossFadeFactor) void ApplyLODCrossFade(float4 positionCS) { #ifdef LOD_FADE_CROSSFADE - float d = GetLODDithering(positionCS.xy, unity_LODFade.x); + half d = GetLODDithering(positionCS.xy, unity_LODFade.x); clip(d); #endif @@ -83,7 +88,7 @@ void ApplyLODCrossFade(float4 positionCS, inout half4 color) } else { - float d = GetLODDithering(positionCS.xy, unity_LODFade.x); + half d = GetLODDithering(positionCS.xy, unity_LODFade.x); color.a = d * 5.0 + 1.0; From c311c2af9e58a0868e0cee95fb0ad897987e9af1 Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Thu, 6 Jan 2022 13:16:12 -0800 Subject: [PATCH 06/26] Texture BayerMatrix. --- .../Runtime/Data/PostProcessData.asset | 1 + .../Runtime/Data/PostProcessData.asset.meta | 2 +- .../Runtime/Data/PostProcessData.cs | 5 +- .../Data/UniversalRenderPipelineAsset.cs | 6 +- .../Runtime/Data/UniversalRendererData.asset | 2 +- .../Runtime/UniversalRenderPipeline.cs | 10 +- .../Runtime/UniversalRenderPipelineCore.cs | 2 +- .../ShaderLibrary/LODCrossFade.hlsl | 41 ++-- .../Textures/BayerMatrix.png | 3 + .../Textures/BayerMatrix.png.meta | 195 ++++++++++++++++++ .../BlueNoise64/L/LDR_LLL1_0.png.meta | 4 +- 11 files changed, 234 insertions(+), 37 deletions(-) create mode 100644 com.unity.render-pipelines.universal/Textures/BayerMatrix.png create mode 100644 com.unity.render-pipelines.universal/Textures/BayerMatrix.png.meta diff --git a/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset b/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset index b36ddb6fef7..632b22b7f8e 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset +++ b/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset @@ -60,6 +60,7 @@ MonoBehaviour: - {fileID: 2800000, guid: 896d9004736809c4fb5973b7c12eb8b9, type: 3} - {fileID: 2800000, guid: 179f794063d2a66478e6e726f84a65bc, type: 3} blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} + bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3} filmGrainTex: - {fileID: 2800000, guid: 654c582f7f8a5a14dbd7d119cbde215d, type: 3} - {fileID: 2800000, guid: dd77ffd079630404e879388999033049, type: 3} diff --git a/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset.meta b/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset.meta index f684f137d36..66067d9b098 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset.meta +++ b/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 9e900d10afff24e49843e847501a065a +guid: ee973005a97ef0b4e8e4207d9609e05c NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.cs b/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.cs index a96d3a791eb..22e37313b78 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.cs +++ b/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.cs @@ -84,7 +84,10 @@ public sealed class TextureResources public Texture2D[] blueNoise16LTex; [Reload("Textures/BlueNoise64/L/LDR_LLL1_0.png")] - public Texture2D blueNoise64LTex; + public Texture2D blueNoise64LTex; + + [Reload("Textures/BayerMatrix.png")] + public Texture2D bayerMatrixTex; // Post-processing [Reload(new[] diff --git a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs index 5aca11e69fa..a563f80ece7 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs @@ -142,9 +142,9 @@ public enum VolumeFrameworkUpdateMode /// public enum LODCrossFadeType { - BayerMatrixDither, - WhiteNoiseDither, - BlueNoiseDither + BayerMatrixDither, + BlueNoiseDither, + HashDither } [ExcludeFromPreset] diff --git a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRendererData.asset b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRendererData.asset index bef0d9cdc8f..59b9c666f42 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRendererData.asset +++ b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRendererData.asset @@ -17,7 +17,7 @@ MonoBehaviour: m_RendererFeatures: [] m_RendererFeatureMap: m_UseNativeRenderPass: 0 - postProcessData: {fileID: 11400000, guid: 9e900d10afff24e49843e847501a065a, type: 2} + postProcessData: {fileID: 11400000, guid: ee973005a97ef0b4e8e4207d9609e05c, type: 2} xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2} shaders: blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index 6b26476a519..0f9fbf26a9a 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -1235,11 +1235,11 @@ static void SetupPerFrameShaderConstants() Shader.SetGlobalInt(ShaderPropertyId.lodCrossFadeType, (int)asset.lodCrossFadeType); - if (asset.lodCrossFadeType == LODCrossFadeType.BlueNoiseDither) - { - UniversalRendererData renderData = asset.scriptableRendererData as UniversalRendererData; - Shader.SetGlobalTexture(ShaderPropertyId.blueNoiseDitheringTexture, renderData?.postProcessData?.textures.blueNoise64LTex); - } + UniversalRendererData renderData = asset.scriptableRendererData as UniversalRendererData; + if (asset.lodCrossFadeType == LODCrossFadeType.BayerMatrixDither) + Shader.SetGlobalTexture(ShaderPropertyId.ditheringTexture, renderData?.postProcessData?.textures.bayerMatrixTex); + else if (asset.lodCrossFadeType == LODCrossFadeType.BlueNoiseDither) + Shader.SetGlobalTexture(ShaderPropertyId.ditheringTexture, renderData?.postProcessData?.textures.blueNoise64LTex); LODGroup.crossFadeAnimationDuration = 2.0f; } diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs index 73c369bdd46..dd15b52e7e9 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs @@ -334,7 +334,7 @@ internal static class ShaderPropertyId public static readonly int rendererColor = Shader.PropertyToID("_RendererColor"); public static readonly int lodCrossFadeType = Shader.PropertyToID("_LODCrossFadeType"); - public static readonly int blueNoiseDitheringTexture = Shader.PropertyToID("_BlueNoiseDitheringTexture"); + public static readonly int ditheringTexture = Shader.PropertyToID("_DitheringTexture"); } public struct PostProcessingData diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl index e132fa769eb..771ee52dedc 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl @@ -2,45 +2,40 @@ #define UNIVERSAL_PIPELINE_LODCROSSFADE_INCLUDED static const int k_LODCrossFadeTypeBayerMatrixDither = 0; -static const int k_LODCrossFadeTypeWhiteNoiseDither = 1; -static const int k_LODCrossFadeTypeBlueNoiseDither = 2; +static const int k_LODCrossFadeTypeBlueNoiseDither = 1; +static const int k_LODCrossFadeTypeHashDither = 2; int _LODCrossFadeType; -TEXTURE2D(_BlueNoiseDitheringTexture); -SAMPLER(sampler_BlueNoiseDitheringTexture); +TEXTURE2D(_DitheringTexture); +SAMPLER(sampler_DitheringTexture); half CopySign(half x, half s) { return (s >= 0) ? abs(x) : -abs(x); } -half GetBlueNoiseDithering(uint2 seed) +half GetBayerMatrixDithering(float2 seed) { - const half k_BlueNoiseTexSize = 64.0; + const half k_BayerMatrixTexSize = 4.0; - half2 uv = seed / k_BlueNoiseTexSize; + half2 uv = seed / k_BayerMatrixTexSize; - return SAMPLE_TEXTURE2D(_BlueNoiseDitheringTexture, sampler_BlueNoiseDitheringTexture, uv).a; + return SAMPLE_TEXTURE2D(_DitheringTexture, sampler_DitheringTexture, uv).a; } -//@ We can make white noise camera rotation independent. See ComputeFadeMaskSeed. But that would require world space view vector for all passes. -half GetWhiteNoiseDithering(uint2 seed) +half GetBlueNoiseDithering(float2 seed) { - return GenerateHashedRandomFloat(seed); + const half k_BlueNoiseTexSize = 64.0; + + half2 uv = seed / k_BlueNoiseTexSize; + + return SAMPLE_TEXTURE2D(_DitheringTexture, sampler_DitheringTexture, uv).a; } -half GetBayerMatrixDithering(uint2 seed) +half GetHashDithering(uint2 seed) { - const half4x4 k_BayerMatrix = - { - 1.0 / 17.0, 9.0 / 17.0, 3.0 / 17.0, 11.0 / 17.0, - 13.0 / 17.0, 5.0 / 17.0, 15.0 / 17.0, 7.0 / 17.0, - 4.0 / 17.0, 12.0 / 17.0, 2.0 / 17.0, 10.0 / 17.0, - 16.0 / 17.0, 8.0 / 17.0, 14.0 / 17.0, 6.0 / 17.0 - }; - - return k_BayerMatrix[seed.x % 4][seed.y % 4]; + return GenerateHashedRandomFloat(seed); } half GetLODDithering(float2 crossFadeSeed, half crossFadeFactor) @@ -49,8 +44,8 @@ half GetLODDithering(float2 crossFadeSeed, half crossFadeFactor) switch (_LODCrossFadeType) { - case k_LODCrossFadeTypeWhiteNoiseDither: - d = GetWhiteNoiseDithering(crossFadeSeed); + case k_LODCrossFadeTypeHashDither: + d = GetHashDithering(crossFadeSeed); break; case k_LODCrossFadeTypeBlueNoiseDither: d = GetBlueNoiseDithering(crossFadeSeed); diff --git a/com.unity.render-pipelines.universal/Textures/BayerMatrix.png b/com.unity.render-pipelines.universal/Textures/BayerMatrix.png new file mode 100644 index 00000000000..34355811228 --- /dev/null +++ b/com.unity.render-pipelines.universal/Textures/BayerMatrix.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab857985cb2fbbda35a23b55d0da84e26684cf8979ae777341e9dd9b952d940c +size 597 diff --git a/com.unity.render-pipelines.universal/Textures/BayerMatrix.png.meta b/com.unity.render-pipelines.universal/Textures/BayerMatrix.png.meta new file mode 100644 index 00000000000..b95c4d34252 --- /dev/null +++ b/com.unity.render-pipelines.universal/Textures/BayerMatrix.png.meta @@ -0,0 +1,195 @@ +fileFormatVersion: 2 +guid: f9ee4ed84c1d10c49aabb9b210b0fc44 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 0 + 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: 0 + aniso: 2 + 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: 2 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 10 + 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: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: PS5 + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: tvOS + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: CloudRendering + maxTextureSize: 8192 + 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/com.unity.render-pipelines.universal/Textures/BlueNoise64/L/LDR_LLL1_0.png.meta b/com.unity.render-pipelines.universal/Textures/BlueNoise64/L/LDR_LLL1_0.png.meta index be748092411..2cf95b20eb2 100644 --- a/com.unity.render-pipelines.universal/Textures/BlueNoise64/L/LDR_LLL1_0.png.meta +++ b/com.unity.render-pipelines.universal/Textures/BlueNoise64/L/LDR_LLL1_0.png.meta @@ -34,7 +34,7 @@ TextureImporter: maxTextureSize: 2048 textureSettings: serializedVersion: 2 - filterMode: 1 + filterMode: 0 aniso: 1 mipBias: 0 wrapU: 0 @@ -68,7 +68,7 @@ TextureImporter: platformSettings: - serializedVersion: 3 buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 + maxTextureSize: 512 resizeAlgorithm: 0 textureFormat: -1 textureCompression: 0 From 45e4fe9a938e4946f35b15db7899b2df25076584 Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Tue, 11 Jan 2022 16:34:08 -0800 Subject: [PATCH 07/26] iOS cross fade fix. --- .../ShaderLibrary/LODCrossFade.hlsl | 16 ++++++++-------- .../Shaders/BakedLitDepthNormalsPass.hlsl | 4 ++-- .../Shaders/DepthNormalsPass.hlsl | 4 ++-- .../Shaders/DepthOnlyPass.hlsl | 3 ++- .../Shaders/LitDepthNormalsPass.hlsl | 4 ++-- .../Shaders/LitGBufferPass.hlsl | 4 ++-- .../Shaders/ShadowCasterPass.hlsl | 3 ++- .../Shaders/SimpleLitDepthNormalsPass.hlsl | 4 ++-- .../Shaders/SimpleLitGBufferPass.hlsl | 4 ++-- 9 files changed, 24 insertions(+), 22 deletions(-) diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl index 771ee52dedc..2a646606a1f 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl @@ -15,6 +15,11 @@ half CopySign(half x, half s) return (s >= 0) ? abs(x) : -abs(x); } +half DitheringToAlpha(half d) +{ + return d * 8.0 + 1.0; +} + half GetBayerMatrixDithering(float2 seed) { const half k_BayerMatrixTexSize = 4.0; @@ -33,11 +38,6 @@ half GetBlueNoiseDithering(float2 seed) return SAMPLE_TEXTURE2D(_DitheringTexture, sampler_DitheringTexture, uv).a; } -half GetHashDithering(uint2 seed) -{ - return GenerateHashedRandomFloat(seed); -} - half GetLODDithering(float2 crossFadeSeed, half crossFadeFactor) { half d; @@ -45,7 +45,7 @@ half GetLODDithering(float2 crossFadeSeed, half crossFadeFactor) switch (_LODCrossFadeType) { case k_LODCrossFadeTypeHashDither: - d = GetHashDithering(crossFadeSeed); + d = GenerateHashedRandomFloat(crossFadeSeed); break; case k_LODCrossFadeTypeBlueNoiseDither: d = GetBlueNoiseDithering(crossFadeSeed); @@ -85,9 +85,9 @@ void ApplyLODCrossFade(float4 positionCS, inout half4 color) { half d = GetLODDithering(positionCS.xy, unity_LODFade.x); - color.a = d * 5.0 + 1.0; + color.a = DitheringToAlpha(d); - clip(color.a - 0.0001); + clip(color.a); } #endif } diff --git a/com.unity.render-pipelines.universal/Shaders/BakedLitDepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/BakedLitDepthNormalsPass.hlsl index 3d0d3d04f04..3a6e0f7dacd 100644 --- a/com.unity.render-pipelines.universal/Shaders/BakedLitDepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/BakedLitDepthNormalsPass.hlsl @@ -54,12 +54,12 @@ float4 DepthNormalsFragment(Varyings input) : SV_TARGET UNITY_SETUP_INSTANCE_ID(input); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); - ApplyLODCrossFade(input.positionCS); - half4 texColor = (half4) SAMPLE_TEXTURE2D(_BaseMap, sampler_BaseMap, input.uv); half alpha = texColor.a * _BaseColor.a; AlphaDiscard(alpha, _Cutoff); + ApplyLODCrossFade(input.positionCS); + #if defined(_GBUFFER_NORMALS_OCT) float3 normalWS = normalize(input.normalWS); float2 octNormalWS = PackNormalOctQuadEncode(normalWS); // values between [-1, +1], must use fp32 on some platforms diff --git a/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl index cd81405c9b4..11c613ff54f 100644 --- a/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl @@ -41,10 +41,10 @@ half4 DepthNormalsFragment(Varyings input) : SV_TARGET { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); - ApplyLODCrossFade(input.positionCS); - Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); + ApplyLODCrossFade(input.positionCS); + #if defined(_GBUFFER_NORMALS_OCT) float3 normalWS = normalize(input.normalWS); float2 octNormalWS = PackNormalOctQuadEncode(normalWS); // values between [-1, +1], must use fp32 on some platforms. diff --git a/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl b/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl index aea2f3e87c2..3fef82e7ecc 100644 --- a/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl @@ -33,9 +33,10 @@ half4 DepthOnlyFragment(Varyings input) : SV_TARGET { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); + ApplyLODCrossFade(input.positionCS); - Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); return input.positionCS.z; } #endif diff --git a/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl index 1ac82de2191..2c05fa10ca6 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl @@ -82,10 +82,10 @@ half4 DepthNormalsFragment(Varyings input) : SV_TARGET { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); - ApplyLODCrossFade(input.positionCS); - Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); + ApplyLODCrossFade(input.positionCS); + #if defined(_GBUFFER_NORMALS_OCT) float3 normalWS = normalize(input.normalWS); float2 octNormalWS = PackNormalOctQuadEncode(normalWS); // values between [-1, +1], must use fp32 on some platforms diff --git a/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl b/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl index f1bf570a978..3b5d6315389 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl @@ -181,8 +181,6 @@ FragmentOutput LitGBufferPassFragment(Varyings input) UNITY_SETUP_INSTANCE_ID(input); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); - ApplyLODCrossFade(input.positionCS); - #if defined(_PARALLAXMAP) #if defined(REQUIRES_TANGENT_SPACE_VIEW_DIR_INTERPOLATOR) half3 viewDirTS = input.viewDirTS; @@ -195,6 +193,8 @@ FragmentOutput LitGBufferPassFragment(Varyings input) SurfaceData surfaceData; InitializeStandardLitSurfaceData(input.uv, surfaceData); + ApplyLODCrossFade(input.positionCS); + InputData inputData; InitializeInputData(input, surfaceData.normalTS, inputData); SETUP_DEBUG_TEXTURE_DATA(inputData, input.uv, _BaseMap); diff --git a/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl b/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl index c4ce85799cb..a0e47c5383e 100644 --- a/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl @@ -58,9 +58,10 @@ Varyings ShadowPassVertex(Attributes input) half4 ShadowPassFragment(Varyings input) : SV_TARGET { + Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); + ApplyLODCrossFade(input.positionCS); - Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); return 0; } diff --git a/com.unity.render-pipelines.universal/Shaders/SimpleLitDepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/SimpleLitDepthNormalsPass.hlsl index 338f443ec17..f91a48b240e 100644 --- a/com.unity.render-pipelines.universal/Shaders/SimpleLitDepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/SimpleLitDepthNormalsPass.hlsl @@ -59,10 +59,10 @@ half4 DepthNormalsFragment(Varyings input) : SV_TARGET { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); - ApplyLODCrossFade(input.positionCS); - Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); + ApplyLODCrossFade(input.positionCS); + #if defined(_GBUFFER_NORMALS_OCT) float3 normalWS = normalize(input.normalWS); float2 octNormalWS = PackNormalOctQuadEncode(normalWS); // values between [-1, +1], must use fp32 on some platforms diff --git a/com.unity.render-pipelines.universal/Shaders/SimpleLitGBufferPass.hlsl b/com.unity.render-pipelines.universal/Shaders/SimpleLitGBufferPass.hlsl index 207c91e0b73..bf4d02d2c2f 100644 --- a/com.unity.render-pipelines.universal/Shaders/SimpleLitGBufferPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/SimpleLitGBufferPass.hlsl @@ -161,11 +161,11 @@ FragmentOutput LitPassFragmentSimple(Varyings input) UNITY_SETUP_INSTANCE_ID(input); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); - ApplyLODCrossFade(input.positionCS); - SurfaceData surfaceData; InitializeSimpleLitSurfaceData(input.uv, surfaceData); + ApplyLODCrossFade(input.positionCS); + InputData inputData; InitializeInputData(input, surfaceData.normalTS, inputData); SETUP_DEBUG_TEXTURE_DATA(inputData, input.uv, _BaseMap); From a2cdaf718b27f351873aa1a7df28992c2ad5b515 Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Wed, 12 Jan 2022 12:20:51 -0800 Subject: [PATCH 08/26] Speed Tree Cross Fade --- .../ShaderLibrary/LODCrossFade.hlsl | 1 + .../Nature/SpeedTree7CommonPasses.hlsl | 38 +++++-------------- .../Shaders/Nature/SpeedTree8Passes.hlsl | 38 +++++-------------- 3 files changed, 21 insertions(+), 56 deletions(-) diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl index 2a646606a1f..84abfbac74d 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl @@ -45,6 +45,7 @@ half GetLODDithering(float2 crossFadeSeed, half crossFadeFactor) switch (_LODCrossFadeType) { case k_LODCrossFadeTypeHashDither: + // Hash based dithering can be made camera rotation independent. d = GenerateHashedRandomFloat(crossFadeSeed); break; case k_LODCrossFadeTypeBlueNoiseDither: diff --git a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonPasses.hlsl b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonPasses.hlsl index 24b06077f78..6491bf9ef8b 100644 --- a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonPasses.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonPasses.hlsl @@ -138,17 +138,6 @@ half4 SpeedTree7Frag(SpeedTreeVertexOutput input) : SV_Target UNITY_SETUP_INSTANCE_ID(input); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); -#if !defined(SHADER_QUALITY_LOW) - #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group - #ifdef EFFECT_BUMP - half3 viewDirectionWS = half3(input.normalWS.w, input.tangentWS.w, input.bitangentWS.w); - #else - half3 viewDirectionWS = input.viewDirWS; - #endif - LODDitheringTransition(ComputeFadeMaskSeed(viewDirectionWS, input.clipPos.xy), unity_LODFade.x); - #endif -#endif - half2 uv = input.uvHueVariation.xy; half4 diffuse = SampleAlbedoAlpha(uv, TEXTURE2D_ARGS(_MainTex, sampler_MainTex)); diffuse.a *= _Color.a; @@ -157,6 +146,12 @@ half4 SpeedTree7Frag(SpeedTreeVertexOutput input) : SV_Target AlphaDiscard(diffuse.a, _Cutoff); #endif + #ifdef GBUFFER + ApplyLODCrossFade(input.clipPos); + #else + ApplyLODCrossFade(input.clipPos, diffuse); + #endif + half3 diffuseColor = diffuse.rgb; #ifdef GEOM_TYPE_BRANCH_DETAIL @@ -225,12 +220,6 @@ half4 SpeedTree7FragDepth(SpeedTreeVertexDepthOutput input) : SV_Target UNITY_SETUP_INSTANCE_ID(input); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); -#if !defined(SHADER_QUALITY_LOW) - #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group - LODDitheringTransition(ComputeFadeMaskSeed(input.viewDirWS, input.clipPos.xy), unity_LODFade.x); - #endif -#endif - half2 uv = input.uvHueVariation.xy; half4 diffuse = SampleAlbedoAlpha(uv, TEXTURE2D_ARGS(_MainTex, sampler_MainTex)); diffuse.a *= _Color.a; @@ -239,6 +228,8 @@ half4 SpeedTree7FragDepth(SpeedTreeVertexDepthOutput input) : SV_Target AlphaDiscard(diffuse.a, _Cutoff); #endif + ApplyLODCrossFade(input.clipPos); + #if defined(SCENESELECTIONPASS) // We use depth prepass for scene selection in the editor, this code allow to output the outline correctly return half4(_ObjectId, _PassValue, 1.0, 1.0); @@ -252,17 +243,6 @@ half4 SpeedTree7FragDepthNormal(SpeedTreeVertexDepthNormalOutput input) : SV_Tar UNITY_SETUP_INSTANCE_ID(input); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); - #if !defined(SHADER_QUALITY_LOW) - #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group - #ifdef EFFECT_BUMP - half3 viewDirectionWS = half3(input.normalWS.w, input.tangentWS.w, input.bitangentWS.w); - #else - half3 viewDirectionWS = input.viewDirWS; - #endif - LODDitheringTransition(ComputeFadeMaskSeed(viewDirectionWS, input.clipPos.xy), unity_LODFade.x); - #endif - #endif - half2 uv = input.uvHueVariation.xy; half4 diffuse = SampleAlbedoAlpha(uv, TEXTURE2D_ARGS(_MainTex, sampler_MainTex)); diffuse.a *= _Color.a; @@ -271,6 +251,8 @@ half4 SpeedTree7FragDepthNormal(SpeedTreeVertexDepthNormalOutput input) : SV_Tar AlphaDiscard(diffuse.a, _Cutoff); #endif + ApplyLODCrossFade(input.clipPos); + #if defined(EFFECT_BUMP) half3 normalTS = SampleNormal(uv, TEXTURE2D_ARGS(_BumpMap, sampler_BumpMap)); #ifdef GEOM_TYPE_BRANCH_DETAIL diff --git a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Passes.hlsl b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Passes.hlsl index c80cf5372e2..351113a7d83 100644 --- a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Passes.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Passes.hlsl @@ -363,23 +363,18 @@ half4 SpeedTree8Frag(SpeedTreeFragmentInput input) : SV_Target UNITY_SETUP_INSTANCE_ID(input.interpolated); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input.interpolated); -#if !defined(SHADER_QUALITY_LOW) - #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group - #ifdef EFFECT_BUMP - half3 viewDirectionWS = half3(input.interpolated.normalWS.w, input.interpolated.tangentWS.w, input.interpolated.bitangentWS.w); - #else - half3 viewDirectionWS = input.interpolated.viewDirWS; - #endif - LODDitheringTransition(ComputeFadeMaskSeed(viewDirectionWS, input.interpolated.clipPos.xy), unity_LODFade.x); - #endif -#endif - half2 uv = input.interpolated.uv; half4 diffuse = SampleAlbedoAlpha(uv, TEXTURE2D_ARGS(_MainTex, sampler_MainTex)) * _Color; half alpha = diffuse.a * input.interpolated.color.a; AlphaDiscard(alpha, 0.3333); +#ifdef GBUFFER + ApplyLODCrossFade(input.interpolated.clipPos); +#else + ApplyLODCrossFade(input.interpolated.clipPos, diffuse); +#endif + half3 albedo = diffuse.rgb; half3 emission = 0; half metallic = 0; @@ -496,18 +491,14 @@ half4 SpeedTree8FragDepth(SpeedTreeVertexDepthOutput input) : SV_Target UNITY_SETUP_INSTANCE_ID(input); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); -#if !defined(SHADER_QUALITY_LOW) - #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group - LODDitheringTransition(ComputeFadeMaskSeed(input.viewDirWS, input.clipPos.xy), unity_LODFade.x); - #endif -#endif - half2 uv = input.uv; half4 diffuse = SampleAlbedoAlpha(uv, TEXTURE2D_ARGS(_MainTex, sampler_MainTex)) * _Color; half alpha = diffuse.a * input.color.a; AlphaDiscard(alpha, 0.3333); + ApplyLODCrossFade(input.clipPos); + #if defined(SCENESELECTIONPASS) // We use depth prepass for scene selection in the editor, this code allow to output the outline correctly return half4(_ObjectId, _PassValue, 1.0, 1.0); @@ -555,23 +546,14 @@ half4 SpeedTree8FragDepthNormal(SpeedTreeDepthNormalFragmentInput input) : SV_Ta UNITY_SETUP_INSTANCE_ID(input.interpolated); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input.interpolated); - #if !defined(SHADER_QUALITY_LOW) - #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group - #ifdef EFFECT_BUMP - half3 viewDirectionWS = half3(input.interpolated.normalWS.w, input.interpolated.tangentWS.w, input.interpolated.bitangentWS.w); - #else - half3 viewDirectionWS = input.interpolated.viewDirWS; - #endif - LODDitheringTransition(ComputeFadeMaskSeed(viewDirectionWS, input.interpolated.clipPos.xy), unity_LODFade.x); - #endif - #endif - half2 uv = input.interpolated.uv; half4 diffuse = SampleAlbedoAlpha(uv, TEXTURE2D_ARGS(_MainTex, sampler_MainTex)) * _Color; half alpha = diffuse.a * input.interpolated.color.a; AlphaDiscard(alpha, 0.3333); + ApplyLODCrossFade(input.interpolated.clipPos); + // normal #if defined(EFFECT_BUMP) half3 normalTs = SampleNormal(uv, TEXTURE2D_ARGS(_BumpMap, sampler_BumpMap)); From a37896d76810c4aa0fd53d9d5d62615ed5312408 Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Thu, 13 Jan 2022 13:58:06 -0800 Subject: [PATCH 09/26] Alpha To Mask options --- .../SerializedUniversalRenderPipelineAsset.cs | 2 ++ .../UniversalRenderPipelineAssetUI.Drawers.cs | 4 +++- .../UniversalRenderPipelineAssetUI.Skin.cs | 3 ++- .../Runtime/Data/UniversalRenderPipelineAsset.cs | 8 +++++++- .../Runtime/Passes/DrawObjectsPass.cs | 11 ++++++++--- .../Runtime/UniversalRenderPipeline.cs | 2 -- .../ShaderLibrary/LODCrossFade.hlsl | 1 - 7 files changed, 22 insertions(+), 9 deletions(-) diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs index 52db59fb09a..9d076e01ee4 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs @@ -13,6 +13,7 @@ internal class SerializedUniversalRenderPipelineAsset public SerializedProperty opaqueDownsamplingProp { get; } public SerializedProperty supportsTerrainHolesProp { get; } public SerializedProperty lodCrossFadeTypeProp { get; } + public SerializedProperty enableLodCrossFadeAlphaToMaskProp { get; } public SerializedProperty storeActionsOptimizationProperty { get; } public SerializedProperty hdr { get; } @@ -80,6 +81,7 @@ public SerializedUniversalRenderPipelineAsset(SerializedObject serializedObject) opaqueDownsamplingProp = serializedObject.FindProperty("m_OpaqueDownsampling"); supportsTerrainHolesProp = serializedObject.FindProperty("m_SupportsTerrainHoles"); lodCrossFadeTypeProp = serializedObject.FindProperty("m_LODCrossFadeType"); + enableLodCrossFadeAlphaToMaskProp = serializedObject.FindProperty("m_EnableLODCrossFadeAlphaToMask"); hdr = serializedObject.FindProperty("m_SupportsHDR"); msaa = serializedObject.FindProperty("m_MSAA"); diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs index 8e1da03b6a6..a704f7c5c65 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs @@ -147,8 +147,10 @@ static void DrawQuality(SerializedUniversalRenderPipelineAsset serialized, Edito EditorGUILayout.PropertyField(serialized.hdr, Styles.hdrText); EditorGUILayout.PropertyField(serialized.msaa, Styles.msaaText); serialized.renderScale.floatValue = EditorGUILayout.Slider(Styles.renderScaleText, serialized.renderScale.floatValue, UniversalRenderPipeline.minRenderScale, UniversalRenderPipeline.maxRenderScale); - EditorGUILayout.PropertyField(serialized.lodCrossFadeTypeProp, Styles.lodCrossFadeTypeText); EditorGUILayout.PropertyField(serialized.upscalingFilter, Styles.upscalingFilterText); + EditorGUILayout.PropertyField(serialized.lodCrossFadeTypeProp, Styles.lodCrossFadeTypeText); + if((MsaaQuality)serialized.msaa.intValue != MsaaQuality.Disabled) + EditorGUILayout.PropertyField(serialized.enableLodCrossFadeAlphaToMaskProp, Styles.enableLodCrossFadeAlphaToMaskText); } static void DrawLighting(SerializedUniversalRenderPipelineAsset serialized, Editor ownerEditor) diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs index 618b31050ae..668fe7f1baa 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs @@ -36,8 +36,9 @@ internal static class Styles public static GUIContent hdrText = EditorGUIUtility.TrTextContent("HDR", "Controls the global HDR settings."); public static GUIContent msaaText = EditorGUIUtility.TrTextContent("Anti Aliasing (MSAA)", "Controls the global anti aliasing settings."); public static GUIContent renderScaleText = EditorGUIUtility.TrTextContent("Render Scale", "Scales the camera render target allowing the game to render at a resolution different than native resolution. UI is always rendered at native resolution."); - public static GUIContent lodCrossFadeTypeText = EditorGUIUtility.TrTextContent("LOD Cross Fade Type", "Type of the LOD Cross Fade that is used to draw Renderer LOD when LODGroup has CrossFade Fade Mode selected."); public static GUIContent upscalingFilterText = EditorGUIUtility.TrTextContent("Upscaling Filter", "Controls the type of filter used for upscaling when render scale is lower than 1.0."); + public static GUIContent lodCrossFadeTypeText = EditorGUIUtility.TrTextContent("LOD Cross Fade Type", "Type of the LOD Cross Fade that is used to draw Renderer LOD when LODGroup has CrossFade Fade Mode selected."); + public static GUIContent enableLodCrossFadeAlphaToMaskText = EditorGUIUtility.TrTextContent("Enable LOD Cross Fade AlphaToMask", "Enables AlphaToMask when blends between LODs and adjusts fragment's alpha by LOD Cross Fade value. This makes LOD Cross Fade to look smoother when Anti Aliasing (MSAA) is enabled."); // Main light public static GUIContent mainLightRenderingModeText = EditorGUIUtility.TrTextContent("Main Light", "Main light is the brightest directional light."); diff --git a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs index f20ae136069..4664ca7f759 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs @@ -180,8 +180,9 @@ public partial class UniversalRenderPipelineAsset : RenderPipelineAsset, ISerial [SerializeField] bool m_SupportsHDR = true; [SerializeField] MsaaQuality m_MSAA = MsaaQuality.Disabled; [SerializeField] float m_RenderScale = 1.0f; - [SerializeField] LODCrossFadeType m_LODCrossFadeType = LODCrossFadeType.BayerMatrixDither; [SerializeField] UpscalingFilterSelection m_UpscalingFilter = UpscalingFilterSelection.Auto; + [SerializeField] LODCrossFadeType m_LODCrossFadeType = LODCrossFadeType.BlueNoiseDither; + [SerializeField] bool m_EnableLODCrossFadeAlphaToMask = false; // TODO: Shader Quality Tiers // Main directional light Settings @@ -692,6 +693,11 @@ public LODCrossFadeType lodCrossFadeType get { return m_LODCrossFadeType; } } + public bool enableLODCrossFadeAlphaToMask + { + get { return m_EnableLODCrossFadeAlphaToMask; } + } + /// /// Returns the upscaling filter desired by the user /// Note: Filter selections differ from actual filters in that they may include "meta-filters" such as diff --git a/com.unity.render-pipelines.universal/Runtime/Passes/DrawObjectsPass.cs b/com.unity.render-pipelines.universal/Runtime/Passes/DrawObjectsPass.cs index da6ad3817a1..f6ef2edd246 100644 --- a/com.unity.render-pipelines.universal/Runtime/Passes/DrawObjectsPass.cs +++ b/com.unity.render-pipelines.universal/Runtime/Passes/DrawObjectsPass.cs @@ -95,9 +95,14 @@ public override void Execute(ScriptableRenderContext context, ref RenderingData : new Vector4(flipSign, 0.0f, 1.0f, 1.0f); cmd.SetGlobalVector(ShaderPropertyId.scaleBiasRt, scaleBias); - // Set a value that can be used by shaders to identify when they should use Alpha-To-Coverage functionality - float alphaToMaskEnabled = (renderingData.cameraData.cameraTargetDescriptor.msaaSamples > 1) ? 1.0f : 0.0f; - cmd.SetGlobalFloat(ShaderPropertyId.alphaToMaskEnabled, alphaToMaskEnabled); + var urp = UniversalRenderPipeline.asset; + + if (urp) + { + bool msaa = renderingData.cameraData.cameraTargetDescriptor.msaaSamples > 1; + float alphaToMaskEnabled = urp.enableLODCrossFadeAlphaToMask && msaa ? 1.0f : 0.0f; + cmd.SetGlobalFloat(ShaderPropertyId.alphaToMaskEnabled, alphaToMaskEnabled); + } context.ExecuteCommandBuffer(cmd); cmd.Clear(); diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index c771fdcbeb5..09d0b4ec2b5 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -1271,8 +1271,6 @@ static void SetupPerFrameShaderConstants() Shader.SetGlobalTexture(ShaderPropertyId.ditheringTexture, renderData?.postProcessData?.textures.bayerMatrixTex); else if (asset.lodCrossFadeType == LODCrossFadeType.BlueNoiseDither) Shader.SetGlobalTexture(ShaderPropertyId.ditheringTexture, renderData?.postProcessData?.textures.blueNoise64LTex); - - LODGroup.crossFadeAnimationDuration = 2.0f; } static void CheckAndApplyDebugSettings(ref RenderingData renderingData) diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl index 84abfbac74d..2a646606a1f 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl @@ -45,7 +45,6 @@ half GetLODDithering(float2 crossFadeSeed, half crossFadeFactor) switch (_LODCrossFadeType) { case k_LODCrossFadeTypeHashDither: - // Hash based dithering can be made camera rotation independent. d = GenerateHashedRandomFloat(crossFadeSeed); break; case k_LODCrossFadeTypeBlueNoiseDither: From 2fca36a84101e3574fc6262093bcf4c81aa4fca0 Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Thu, 13 Jan 2022 16:27:37 -0800 Subject: [PATCH 10/26] Removed a2c option. --- .../SerializedUniversalRenderPipelineAsset.cs | 2 -- .../UniversalRenderPipelineAssetUI.Drawers.cs | 2 -- .../UniversalRenderPipelineAssetUI.Skin.cs | 1 - .../Data/UniversalRenderPipelineAsset.cs | 8 +---- .../Runtime/Passes/DrawObjectsPass.cs | 11 ------- .../Runtime/UniversalRenderPipeline.cs | 17 +++++++++-- .../ShaderLibrary/Core.hlsl | 1 - .../ShaderLibrary/LODCrossFade.hlsl | 29 ------------------- .../ShaderLibrary/UnityInput.hlsl | 3 -- .../Shaders/BakedLitForwardPass.hlsl | 5 ++-- .../Shaders/BakedLitInput.hlsl | 1 + .../Shaders/LitForwardPass.hlsl | 4 +-- .../Shaders/LitInput.hlsl | 1 + .../Shaders/Nature/SpeedTree7CommonInput.hlsl | 1 + .../Nature/SpeedTree7CommonPasses.hlsl | 6 +--- .../Shaders/Nature/SpeedTree8Input.hlsl | 1 + .../Shaders/Nature/SpeedTree8Passes.hlsl | 4 --- .../Shaders/SimpleLitForwardPass.hlsl | 4 +-- .../Shaders/SimpleLitInput.hlsl | 1 + .../Shaders/UnlitForwardPass.hlsl | 4 +-- .../Shaders/UnlitInput.hlsl | 1 + 21 files changed, 31 insertions(+), 76 deletions(-) diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs index 9d076e01ee4..52db59fb09a 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs @@ -13,7 +13,6 @@ internal class SerializedUniversalRenderPipelineAsset public SerializedProperty opaqueDownsamplingProp { get; } public SerializedProperty supportsTerrainHolesProp { get; } public SerializedProperty lodCrossFadeTypeProp { get; } - public SerializedProperty enableLodCrossFadeAlphaToMaskProp { get; } public SerializedProperty storeActionsOptimizationProperty { get; } public SerializedProperty hdr { get; } @@ -81,7 +80,6 @@ public SerializedUniversalRenderPipelineAsset(SerializedObject serializedObject) opaqueDownsamplingProp = serializedObject.FindProperty("m_OpaqueDownsampling"); supportsTerrainHolesProp = serializedObject.FindProperty("m_SupportsTerrainHoles"); lodCrossFadeTypeProp = serializedObject.FindProperty("m_LODCrossFadeType"); - enableLodCrossFadeAlphaToMaskProp = serializedObject.FindProperty("m_EnableLODCrossFadeAlphaToMask"); hdr = serializedObject.FindProperty("m_SupportsHDR"); msaa = serializedObject.FindProperty("m_MSAA"); diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs index a704f7c5c65..6480896956a 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs @@ -149,8 +149,6 @@ static void DrawQuality(SerializedUniversalRenderPipelineAsset serialized, Edito serialized.renderScale.floatValue = EditorGUILayout.Slider(Styles.renderScaleText, serialized.renderScale.floatValue, UniversalRenderPipeline.minRenderScale, UniversalRenderPipeline.maxRenderScale); EditorGUILayout.PropertyField(serialized.upscalingFilter, Styles.upscalingFilterText); EditorGUILayout.PropertyField(serialized.lodCrossFadeTypeProp, Styles.lodCrossFadeTypeText); - if((MsaaQuality)serialized.msaa.intValue != MsaaQuality.Disabled) - EditorGUILayout.PropertyField(serialized.enableLodCrossFadeAlphaToMaskProp, Styles.enableLodCrossFadeAlphaToMaskText); } static void DrawLighting(SerializedUniversalRenderPipelineAsset serialized, Editor ownerEditor) diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs index 668fe7f1baa..7d8038f7e46 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs @@ -38,7 +38,6 @@ internal static class Styles public static GUIContent renderScaleText = EditorGUIUtility.TrTextContent("Render Scale", "Scales the camera render target allowing the game to render at a resolution different than native resolution. UI is always rendered at native resolution."); public static GUIContent upscalingFilterText = EditorGUIUtility.TrTextContent("Upscaling Filter", "Controls the type of filter used for upscaling when render scale is lower than 1.0."); public static GUIContent lodCrossFadeTypeText = EditorGUIUtility.TrTextContent("LOD Cross Fade Type", "Type of the LOD Cross Fade that is used to draw Renderer LOD when LODGroup has CrossFade Fade Mode selected."); - public static GUIContent enableLodCrossFadeAlphaToMaskText = EditorGUIUtility.TrTextContent("Enable LOD Cross Fade AlphaToMask", "Enables AlphaToMask when blends between LODs and adjusts fragment's alpha by LOD Cross Fade value. This makes LOD Cross Fade to look smoother when Anti Aliasing (MSAA) is enabled."); // Main light public static GUIContent mainLightRenderingModeText = EditorGUIUtility.TrTextContent("Main Light", "Main light is the brightest directional light."); diff --git a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs index 4664ca7f759..d7eed8c8284 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs @@ -181,8 +181,7 @@ public partial class UniversalRenderPipelineAsset : RenderPipelineAsset, ISerial [SerializeField] MsaaQuality m_MSAA = MsaaQuality.Disabled; [SerializeField] float m_RenderScale = 1.0f; [SerializeField] UpscalingFilterSelection m_UpscalingFilter = UpscalingFilterSelection.Auto; - [SerializeField] LODCrossFadeType m_LODCrossFadeType = LODCrossFadeType.BlueNoiseDither; - [SerializeField] bool m_EnableLODCrossFadeAlphaToMask = false; + [SerializeField] LODCrossFadeType m_LODCrossFadeType = LODCrossFadeType.BlueNoiseDither; // TODO: Shader Quality Tiers // Main directional light Settings @@ -693,11 +692,6 @@ public LODCrossFadeType lodCrossFadeType get { return m_LODCrossFadeType; } } - public bool enableLODCrossFadeAlphaToMask - { - get { return m_EnableLODCrossFadeAlphaToMask; } - } - /// /// Returns the upscaling filter desired by the user /// Note: Filter selections differ from actual filters in that they may include "meta-filters" such as diff --git a/com.unity.render-pipelines.universal/Runtime/Passes/DrawObjectsPass.cs b/com.unity.render-pipelines.universal/Runtime/Passes/DrawObjectsPass.cs index f6ef2edd246..c67a0e2b980 100644 --- a/com.unity.render-pipelines.universal/Runtime/Passes/DrawObjectsPass.cs +++ b/com.unity.render-pipelines.universal/Runtime/Passes/DrawObjectsPass.cs @@ -95,15 +95,6 @@ public override void Execute(ScriptableRenderContext context, ref RenderingData : new Vector4(flipSign, 0.0f, 1.0f, 1.0f); cmd.SetGlobalVector(ShaderPropertyId.scaleBiasRt, scaleBias); - var urp = UniversalRenderPipeline.asset; - - if (urp) - { - bool msaa = renderingData.cameraData.cameraTargetDescriptor.msaaSamples > 1; - float alphaToMaskEnabled = urp.enableLODCrossFadeAlphaToMask && msaa ? 1.0f : 0.0f; - cmd.SetGlobalFloat(ShaderPropertyId.alphaToMaskEnabled, alphaToMaskEnabled); - } - context.ExecuteCommandBuffer(cmd); cmd.Clear(); @@ -140,8 +131,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, filterSettings, SortingCriteria.None); } - - cmd.SetGlobalFloat(ShaderPropertyId.alphaToMaskEnabled, 0.0f); } context.ExecuteCommandBuffer(cmd); CommandBufferPool.Release(cmd); diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index 09d0b4ec2b5..d9a76b810a3 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -1267,10 +1267,23 @@ static void SetupPerFrameShaderConstants() Shader.SetGlobalInt(ShaderPropertyId.lodCrossFadeType, (int)asset.lodCrossFadeType); UniversalRendererData renderData = asset.scriptableRendererData as UniversalRendererData; + if (asset.lodCrossFadeType == LODCrossFadeType.BayerMatrixDither) - Shader.SetGlobalTexture(ShaderPropertyId.ditheringTexture, renderData?.postProcessData?.textures.bayerMatrixTex); + { + if (renderData?.postProcessData?.textures.bayerMatrixTex) + Shader.SetGlobalTexture(ShaderPropertyId.ditheringTexture, renderData.postProcessData.textures.bayerMatrixTex); + else + Debug.LogError("LOD Cross Fade: unable to find Bayer Matrix dithering Texture."); + } else if (asset.lodCrossFadeType == LODCrossFadeType.BlueNoiseDither) - Shader.SetGlobalTexture(ShaderPropertyId.ditheringTexture, renderData?.postProcessData?.textures.blueNoise64LTex); + { + if (renderData?.postProcessData?.textures.blueNoise64LTex) + Shader.SetGlobalTexture(ShaderPropertyId.ditheringTexture, renderData.postProcessData.textures.blueNoise64LTex); + else + Debug.LogError("LOD Cross Fade: unable to find Blue Noise dithering Texture."); + } + + LODGroup.crossFadeAnimationDuration = 2.0f; } static void CheckAndApplyDebugSettings(ref RenderingData renderingData) diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl index 07bfb9266a4..5f6f62b411d 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl @@ -192,6 +192,5 @@ struct VertexNormalInputs #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderVariablesFunctions.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Deprecated.hlsl" -#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" #endif diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl index 2a646606a1f..006ea9b846c 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl @@ -15,11 +15,6 @@ half CopySign(half x, half s) return (s >= 0) ? abs(x) : -abs(x); } -half DitheringToAlpha(half d) -{ - return d * 8.0 + 1.0; -} - half GetBayerMatrixDithering(float2 seed) { const half k_BayerMatrixTexSize = 4.0; @@ -68,28 +63,4 @@ void ApplyLODCrossFade(float4 positionCS) #endif } -void ApplyLODCrossFade(float4 positionCS, inout half4 color) -{ -#ifdef LOD_FADE_CROSSFADE - #if _SURFACE_TYPE_TRANSPARENT - bool alphaToMask = false; - #else - bool alphaToMask = _AlphaToMaskEnabled; - #endif - - if (!alphaToMask) - { - ApplyLODCrossFade(positionCS); - } - else - { - half d = GetLODDithering(positionCS.xy, unity_LODFade.x); - - color.a = DitheringToAlpha(d); - - clip(color.a); - } -#endif -} - #endif diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/UnityInput.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/UnityInput.hlsl index 6db87839201..a5e59020139 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/UnityInput.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/UnityInput.hlsl @@ -59,9 +59,6 @@ float4 _ProjectionParams; // w = 1 + 1.0/height float4 _ScreenParams; -// 1.0 if AlphaToMask is enabled and 0.0 otherwise -float _AlphaToMaskEnabled; - // x = Mip Bias // y = 2.0 ^ [Mip Bias] float2 _GlobalMipBias; diff --git a/com.unity.render-pipelines.universal/Shaders/BakedLitForwardPass.hlsl b/com.unity.render-pipelines.universal/Shaders/BakedLitForwardPass.hlsl index 826abe2eb3b..aab36ee3b09 100644 --- a/com.unity.render-pipelines.universal/Shaders/BakedLitForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/BakedLitForwardPass.hlsl @@ -129,15 +129,14 @@ half4 BakedLitForwardPassFragment(Varyings input) : SV_Target AlphaDiscard(alpha, _Cutoff); color = AlphaModulate(color, alpha); + ApplyLODCrossFade(input.positionCS); + #ifdef _DBUFFER ApplyDecalToBaseColorAndNormal(input.positionCS, color, inputData.normalWS); #endif half4 finalColor = UniversalFragmentBakedLit(inputData, color, alpha, normalTS); - finalColor.a = OutputAlpha(finalColor.a, _Surface); - ApplyLODCrossFade(input.positionCS, finalColor); - return finalColor; } diff --git a/com.unity.render-pipelines.universal/Shaders/BakedLitInput.hlsl b/com.unity.render-pipelines.universal/Shaders/BakedLitInput.hlsl index 8fc6239b6ac..5b9ad67a134 100644 --- a/com.unity.render-pipelines.universal/Shaders/BakedLitInput.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/BakedLitInput.hlsl @@ -2,6 +2,7 @@ #define UNIVERSAL_BAKEDLIT_INPUT_INCLUDED #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceInput.hlsl" +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" CBUFFER_START(UnityPerMaterial) float4 _BaseMap_ST; diff --git a/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl b/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl index 05a58078657..a93ed1d7feb 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl @@ -211,6 +211,8 @@ half4 LitPassFragment(Varyings input) : SV_Target SurfaceData surfaceData; InitializeStandardLitSurfaceData(input.uv, surfaceData); + ApplyLODCrossFade(input.positionCS); + InputData inputData; InitializeInputData(input, surfaceData.normalTS, inputData); SETUP_DEBUG_TEXTURE_DATA(inputData, input.uv, _BaseMap); @@ -223,8 +225,6 @@ half4 LitPassFragment(Varyings input) : SV_Target color.rgb = MixFog(color.rgb, inputData.fogCoord); color.a = OutputAlpha(color.a, _Surface); - ApplyLODCrossFade(input.positionCS, color); - return color; } diff --git a/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl b/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl index 254c9cbac5f..71f100c14a1 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl @@ -6,6 +6,7 @@ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceInput.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/ParallaxMapping.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DBuffer.hlsl" +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" #if defined(_DETAIL_MULX2) || defined(_DETAIL_SCALED) #define _DETAIL diff --git a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonInput.hlsl b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonInput.hlsl index 7d5c9f042cd..40d24c236fc 100644 --- a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonInput.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonInput.hlsl @@ -11,6 +11,7 @@ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceInput.hlsl" +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" #ifdef ENABLE_WIND #define WIND_QUALITY_NONE 0 diff --git a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonPasses.hlsl b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonPasses.hlsl index 6491bf9ef8b..be1771f3160 100644 --- a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonPasses.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonPasses.hlsl @@ -146,11 +146,7 @@ half4 SpeedTree7Frag(SpeedTreeVertexOutput input) : SV_Target AlphaDiscard(diffuse.a, _Cutoff); #endif - #ifdef GBUFFER - ApplyLODCrossFade(input.clipPos); - #else - ApplyLODCrossFade(input.clipPos, diffuse); - #endif + ApplyLODCrossFade(input.clipPos); half3 diffuseColor = diffuse.rgb; diff --git a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Input.hlsl b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Input.hlsl index 5fa3ddd16f2..123f8a225b2 100644 --- a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Input.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Input.hlsl @@ -9,6 +9,7 @@ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceInput.hlsl" +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" #if defined(ENABLE_WIND) && !defined(_WINDQUALITY_NONE) #define SPEEDTREE_Y_UP diff --git a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Passes.hlsl b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Passes.hlsl index 351113a7d83..d1b9af40c01 100644 --- a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Passes.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Passes.hlsl @@ -369,11 +369,7 @@ half4 SpeedTree8Frag(SpeedTreeFragmentInput input) : SV_Target half alpha = diffuse.a * input.interpolated.color.a; AlphaDiscard(alpha, 0.3333); -#ifdef GBUFFER ApplyLODCrossFade(input.interpolated.clipPos); -#else - ApplyLODCrossFade(input.interpolated.clipPos, diffuse); -#endif half3 albedo = diffuse.rgb; half3 emission = 0; diff --git a/com.unity.render-pipelines.universal/Shaders/SimpleLitForwardPass.hlsl b/com.unity.render-pipelines.universal/Shaders/SimpleLitForwardPass.hlsl index 5275eff7ffa..fdec4183424 100644 --- a/com.unity.render-pipelines.universal/Shaders/SimpleLitForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/SimpleLitForwardPass.hlsl @@ -170,6 +170,8 @@ half4 LitPassFragmentSimple(Varyings input) : SV_Target SurfaceData surfaceData; InitializeSimpleLitSurfaceData(input.uv, surfaceData); + ApplyLODCrossFade(input.positionCS); + InputData inputData; InitializeInputData(input, surfaceData.normalTS, inputData); SETUP_DEBUG_TEXTURE_DATA(inputData, input.uv, _BaseMap); @@ -182,8 +184,6 @@ half4 LitPassFragmentSimple(Varyings input) : SV_Target color.rgb = MixFog(color.rgb, inputData.fogCoord); color.a = OutputAlpha(color.a, _Surface); - ApplyLODCrossFade(input.positionCS, color); - return color; } diff --git a/com.unity.render-pipelines.universal/Shaders/SimpleLitInput.hlsl b/com.unity.render-pipelines.universal/Shaders/SimpleLitInput.hlsl index 87a1d6d9b27..b149436dbd0 100644 --- a/com.unity.render-pipelines.universal/Shaders/SimpleLitInput.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/SimpleLitInput.hlsl @@ -3,6 +3,7 @@ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceInput.hlsl" +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" CBUFFER_START(UnityPerMaterial) float4 _BaseMap_ST; diff --git a/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl b/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl index 988acbe75d2..e672e114019 100644 --- a/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl @@ -102,6 +102,8 @@ half4 UnlitPassFragment(Varyings input) : SV_Target AlphaDiscard(alpha, _Cutoff); color = AlphaModulate(color, alpha); + ApplyLODCrossFade(input.positionCS); + InputData inputData; InitializeInputData(input, inputData); SETUP_DEBUG_TEXTURE_DATA(inputData, input.uv, _BaseMap); @@ -131,8 +133,6 @@ half4 UnlitPassFragment(Varyings input) : SV_Target #endif finalColor.rgb = MixFog(finalColor.rgb, fogFactor); - ApplyLODCrossFade(input.positionCS, finalColor); - return finalColor; } diff --git a/com.unity.render-pipelines.universal/Shaders/UnlitInput.hlsl b/com.unity.render-pipelines.universal/Shaders/UnlitInput.hlsl index ff262d4db99..bc78a532ff2 100644 --- a/com.unity.render-pipelines.universal/Shaders/UnlitInput.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/UnlitInput.hlsl @@ -2,6 +2,7 @@ #define UNIVERSAL_UNLIT_INPUT_INCLUDED #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceInput.hlsl" +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" CBUFFER_START(UnityPerMaterial) float4 _BaseMap_ST; From e934e82bdf3d0b89b5a675b9d4fe0b3eae7678a2 Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Thu, 13 Jan 2022 16:43:58 -0800 Subject: [PATCH 11/26] Names and refactoring. --- .../Editor/ShaderGraph/Targets/UniversalTarget.cs | 14 -------------- .../Runtime/UniversalRenderPipeline.cs | 2 -- .../Runtime/UniversalRenderPipelineCore.cs | 1 - .../ShaderLibrary/LODCrossFade.hlsl | 2 +- .../Shaders/BakedLitDepthNormalsPass.hlsl | 2 +- .../Shaders/BakedLitForwardPass.hlsl | 2 +- .../Shaders/DepthNormalsPass.hlsl | 2 +- .../Shaders/DepthOnlyPass.hlsl | 4 ++-- .../Shaders/Lit.shader | 6 ------ .../Shaders/LitDepthNormalsPass.hlsl | 2 +- .../Shaders/LitForwardPass.hlsl | 2 +- .../Shaders/LitGBufferPass.hlsl | 2 +- .../Shaders/Nature/SpeedTree7CommonPasses.hlsl | 6 +++--- .../Shaders/Nature/SpeedTree8Passes.hlsl | 6 +++--- .../Shaders/ShadowCasterPass.hlsl | 2 +- .../Shaders/SimpleLitDepthNormalsPass.hlsl | 2 +- .../Shaders/SimpleLitForwardPass.hlsl | 2 +- .../Shaders/SimpleLitGBufferPass.hlsl | 2 +- .../Shaders/UnlitDepthNormalsPass.hlsl | 2 +- .../Shaders/UnlitForwardPass.hlsl | 2 +- 20 files changed, 21 insertions(+), 44 deletions(-) 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 27bde642cf7..1805b69d1b9 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs @@ -694,20 +694,6 @@ ScriptableObject IHasMetadata.GetMetadataObject() #region Passes static class CorePasses { - /// - /// Automatically enables Alpha-To-Coverage in the provided pass targets using alpha clipping - /// - /// The pass to modify - /// The target to query - internal static void AddAlphaToMaskControlToPass(ref PassDescriptor pass, UniversalTarget target) - { - // TODO: Does this also need to run when allowMaterialOverride is true? - if (target.alphaClip) - { - pass.renderStates.Add(RenderState.AlphaToMask("On")); - } - } - internal static void AddAlphaClipControlToPass(ref PassDescriptor pass, UniversalTarget target) { if (target.allowMaterialOverride) diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index d9a76b810a3..d110a7e13b6 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -1282,8 +1282,6 @@ static void SetupPerFrameShaderConstants() else Debug.LogError("LOD Cross Fade: unable to find Blue Noise dithering Texture."); } - - LODGroup.crossFadeAnimationDuration = 2.0f; } static void CheckAndApplyDebugSettings(ref RenderingData renderingData) diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs index 1d348d4a16e..f7599fa2de9 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs @@ -336,7 +336,6 @@ internal static class ShaderPropertyId public static readonly int scaledScreenParams = Shader.PropertyToID("_ScaledScreenParams"); public static readonly int worldSpaceCameraPos = Shader.PropertyToID("_WorldSpaceCameraPos"); public static readonly int screenParams = Shader.PropertyToID("_ScreenParams"); - public static readonly int alphaToMaskEnabled = Shader.PropertyToID("_AlphaToMaskEnabled"); public static readonly int projectionParams = Shader.PropertyToID("_ProjectionParams"); public static readonly int zBufferParams = Shader.PropertyToID("_ZBufferParams"); public static readonly int orthoParams = Shader.PropertyToID("unity_OrthoParams"); diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl index 006ea9b846c..089b149b9dc 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl @@ -54,7 +54,7 @@ half GetLODDithering(float2 crossFadeSeed, half crossFadeFactor) return crossFadeFactor - CopySign(d, crossFadeFactor); } -void ApplyLODCrossFade(float4 positionCS) +void LODFadeCrossFade(float4 positionCS) { #ifdef LOD_FADE_CROSSFADE half d = GetLODDithering(positionCS.xy, unity_LODFade.x); diff --git a/com.unity.render-pipelines.universal/Shaders/BakedLitDepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/BakedLitDepthNormalsPass.hlsl index 3a6e0f7dacd..1152f49edc4 100644 --- a/com.unity.render-pipelines.universal/Shaders/BakedLitDepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/BakedLitDepthNormalsPass.hlsl @@ -58,7 +58,7 @@ float4 DepthNormalsFragment(Varyings input) : SV_TARGET half alpha = texColor.a * _BaseColor.a; AlphaDiscard(alpha, _Cutoff); - ApplyLODCrossFade(input.positionCS); + LODFadeCrossFade(input.positionCS); #if defined(_GBUFFER_NORMALS_OCT) float3 normalWS = normalize(input.normalWS); diff --git a/com.unity.render-pipelines.universal/Shaders/BakedLitForwardPass.hlsl b/com.unity.render-pipelines.universal/Shaders/BakedLitForwardPass.hlsl index aab36ee3b09..742476a62eb 100644 --- a/com.unity.render-pipelines.universal/Shaders/BakedLitForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/BakedLitForwardPass.hlsl @@ -129,7 +129,7 @@ half4 BakedLitForwardPassFragment(Varyings input) : SV_Target AlphaDiscard(alpha, _Cutoff); color = AlphaModulate(color, alpha); - ApplyLODCrossFade(input.positionCS); + LODFadeCrossFade(input.positionCS); #ifdef _DBUFFER ApplyDecalToBaseColorAndNormal(input.positionCS, color, inputData.normalWS); diff --git a/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl index 11c613ff54f..0e15291274f 100644 --- a/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl @@ -43,7 +43,7 @@ half4 DepthNormalsFragment(Varyings input) : SV_TARGET Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); - ApplyLODCrossFade(input.positionCS); + LODFadeCrossFade(input.positionCS); #if defined(_GBUFFER_NORMALS_OCT) float3 normalWS = normalize(input.normalWS); diff --git a/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl b/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl index 3fef82e7ecc..949ab4c37d0 100644 --- a/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl @@ -29,13 +29,13 @@ Varyings DepthOnlyVertex(Attributes input) return output; } -half4 DepthOnlyFragment(Varyings input) : SV_TARGET +half DepthOnlyFragment(Varyings input) : SV_TARGET { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); - ApplyLODCrossFade(input.positionCS); + LODFadeCrossFade(input.positionCS); return input.positionCS.z; } diff --git a/com.unity.render-pipelines.universal/Shaders/Lit.shader b/com.unity.render-pipelines.universal/Shaders/Lit.shader index 0b99acb7bd3..d90bd871eee 100644 --- a/com.unity.render-pipelines.universal/Shaders/Lit.shader +++ b/com.unity.render-pipelines.universal/Shaders/Lit.shader @@ -93,9 +93,6 @@ Shader "Universal Render Pipeline/Lit" ZWrite[_ZWrite] Cull[_Cull] - //@ This shoult be enabled only when msaa enabled and when material is not alpha blended - AlphaToMask On - HLSLPROGRAM #pragma exclude_renderers gles gles3 glcore #pragma target 4.5 @@ -415,9 +412,6 @@ Shader "Universal Render Pipeline/Lit" ZWrite[_ZWrite] Cull[_Cull] - //@ This shoult be enabled only when msaa enabled and when material is not alpha blended - AlphaToMask On - HLSLPROGRAM #pragma only_renderers gles gles3 glcore d3d11 #pragma target 2.0 diff --git a/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl index 2c05fa10ca6..59bc3a25658 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl @@ -84,7 +84,7 @@ half4 DepthNormalsFragment(Varyings input) : SV_TARGET Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); - ApplyLODCrossFade(input.positionCS); + LODFadeCrossFade(input.positionCS); #if defined(_GBUFFER_NORMALS_OCT) float3 normalWS = normalize(input.normalWS); diff --git a/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl b/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl index a93ed1d7feb..f163e1b56a0 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl @@ -211,7 +211,7 @@ half4 LitPassFragment(Varyings input) : SV_Target SurfaceData surfaceData; InitializeStandardLitSurfaceData(input.uv, surfaceData); - ApplyLODCrossFade(input.positionCS); + LODFadeCrossFade(input.positionCS); InputData inputData; InitializeInputData(input, surfaceData.normalTS, inputData); diff --git a/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl b/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl index 3b5d6315389..3814c52917c 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl @@ -193,7 +193,7 @@ FragmentOutput LitGBufferPassFragment(Varyings input) SurfaceData surfaceData; InitializeStandardLitSurfaceData(input.uv, surfaceData); - ApplyLODCrossFade(input.positionCS); + LODFadeCrossFade(input.positionCS); InputData inputData; InitializeInputData(input, surfaceData.normalTS, inputData); diff --git a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonPasses.hlsl b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonPasses.hlsl index be1771f3160..4af7c221c92 100644 --- a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonPasses.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonPasses.hlsl @@ -146,7 +146,7 @@ half4 SpeedTree7Frag(SpeedTreeVertexOutput input) : SV_Target AlphaDiscard(diffuse.a, _Cutoff); #endif - ApplyLODCrossFade(input.clipPos); + LODFadeCrossFade(input.clipPos); half3 diffuseColor = diffuse.rgb; @@ -224,7 +224,7 @@ half4 SpeedTree7FragDepth(SpeedTreeVertexDepthOutput input) : SV_Target AlphaDiscard(diffuse.a, _Cutoff); #endif - ApplyLODCrossFade(input.clipPos); + LODFadeCrossFade(input.clipPos); #if defined(SCENESELECTIONPASS) // We use depth prepass for scene selection in the editor, this code allow to output the outline correctly @@ -247,7 +247,7 @@ half4 SpeedTree7FragDepthNormal(SpeedTreeVertexDepthNormalOutput input) : SV_Tar AlphaDiscard(diffuse.a, _Cutoff); #endif - ApplyLODCrossFade(input.clipPos); + LODFadeCrossFade(input.clipPos); #if defined(EFFECT_BUMP) half3 normalTS = SampleNormal(uv, TEXTURE2D_ARGS(_BumpMap, sampler_BumpMap)); diff --git a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Passes.hlsl b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Passes.hlsl index d1b9af40c01..71980dd4484 100644 --- a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Passes.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Passes.hlsl @@ -369,7 +369,7 @@ half4 SpeedTree8Frag(SpeedTreeFragmentInput input) : SV_Target half alpha = diffuse.a * input.interpolated.color.a; AlphaDiscard(alpha, 0.3333); - ApplyLODCrossFade(input.interpolated.clipPos); + LODFadeCrossFade(input.interpolated.clipPos); half3 albedo = diffuse.rgb; half3 emission = 0; @@ -493,7 +493,7 @@ half4 SpeedTree8FragDepth(SpeedTreeVertexDepthOutput input) : SV_Target half alpha = diffuse.a * input.color.a; AlphaDiscard(alpha, 0.3333); - ApplyLODCrossFade(input.clipPos); + LODFadeCrossFade(input.clipPos); #if defined(SCENESELECTIONPASS) // We use depth prepass for scene selection in the editor, this code allow to output the outline correctly @@ -548,7 +548,7 @@ half4 SpeedTree8FragDepthNormal(SpeedTreeDepthNormalFragmentInput input) : SV_Ta half alpha = diffuse.a * input.interpolated.color.a; AlphaDiscard(alpha, 0.3333); - ApplyLODCrossFade(input.interpolated.clipPos); + LODFadeCrossFade(input.interpolated.clipPos); // normal #if defined(EFFECT_BUMP) diff --git a/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl b/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl index a0e47c5383e..bad742a875a 100644 --- a/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl @@ -60,7 +60,7 @@ half4 ShadowPassFragment(Varyings input) : SV_TARGET { Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); - ApplyLODCrossFade(input.positionCS); + LODFadeCrossFade(input.positionCS); return 0; } diff --git a/com.unity.render-pipelines.universal/Shaders/SimpleLitDepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/SimpleLitDepthNormalsPass.hlsl index f91a48b240e..138d31d90cd 100644 --- a/com.unity.render-pipelines.universal/Shaders/SimpleLitDepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/SimpleLitDepthNormalsPass.hlsl @@ -61,7 +61,7 @@ half4 DepthNormalsFragment(Varyings input) : SV_TARGET Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); - ApplyLODCrossFade(input.positionCS); + LODFadeCrossFade(input.positionCS); #if defined(_GBUFFER_NORMALS_OCT) float3 normalWS = normalize(input.normalWS); diff --git a/com.unity.render-pipelines.universal/Shaders/SimpleLitForwardPass.hlsl b/com.unity.render-pipelines.universal/Shaders/SimpleLitForwardPass.hlsl index fdec4183424..0f484ebb614 100644 --- a/com.unity.render-pipelines.universal/Shaders/SimpleLitForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/SimpleLitForwardPass.hlsl @@ -170,7 +170,7 @@ half4 LitPassFragmentSimple(Varyings input) : SV_Target SurfaceData surfaceData; InitializeSimpleLitSurfaceData(input.uv, surfaceData); - ApplyLODCrossFade(input.positionCS); + LODFadeCrossFade(input.positionCS); InputData inputData; InitializeInputData(input, surfaceData.normalTS, inputData); diff --git a/com.unity.render-pipelines.universal/Shaders/SimpleLitGBufferPass.hlsl b/com.unity.render-pipelines.universal/Shaders/SimpleLitGBufferPass.hlsl index bf4d02d2c2f..b6f5bb730cb 100644 --- a/com.unity.render-pipelines.universal/Shaders/SimpleLitGBufferPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/SimpleLitGBufferPass.hlsl @@ -164,7 +164,7 @@ FragmentOutput LitPassFragmentSimple(Varyings input) SurfaceData surfaceData; InitializeSimpleLitSurfaceData(input.uv, surfaceData); - ApplyLODCrossFade(input.positionCS); + LODFadeCrossFade(input.positionCS); InputData inputData; InitializeInputData(input, surfaceData.normalTS, inputData); diff --git a/com.unity.render-pipelines.universal/Shaders/UnlitDepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/UnlitDepthNormalsPass.hlsl index 6cad06ab7d7..cac40e42041 100644 --- a/com.unity.render-pipelines.universal/Shaders/UnlitDepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/UnlitDepthNormalsPass.hlsl @@ -38,7 +38,7 @@ float4 DepthNormalsFragment(Varyings input) : SV_TARGET { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); - ApplyLODCrossFade(input.positionCS); + LODFadeCrossFade(input.positionCS); // Output... #if defined(_GBUFFER_NORMALS_OCT) diff --git a/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl b/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl index e672e114019..cd45b6b0e28 100644 --- a/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl @@ -102,7 +102,7 @@ half4 UnlitPassFragment(Varyings input) : SV_Target AlphaDiscard(alpha, _Cutoff); color = AlphaModulate(color, alpha); - ApplyLODCrossFade(input.positionCS); + LODFadeCrossFade(input.positionCS); InputData inputData; InitializeInputData(input, inputData); From aeb0cd7769b7c99d532fd301207166bc89ad7842 Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Thu, 13 Jan 2022 17:55:03 -0800 Subject: [PATCH 12/26] PostProcessingData reload. --- .../Data/UniversalRenderPipelineAsset.cs | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs index d7eed8c8284..dbc17493efc 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs @@ -158,8 +158,8 @@ public partial class UniversalRenderPipelineAsset : RenderPipelineAsset, ISerial ScriptableRenderer[] m_Renderers = new ScriptableRenderer[1]; // Default values set when a new UniversalRenderPipeline asset is created - [SerializeField] int k_AssetVersion = 10; - [SerializeField] int k_AssetPreviousVersion = 10; + [SerializeField] int k_AssetVersion = 11; + [SerializeField] int k_AssetPreviousVersion = 11; // Deprecated settings for upgrading sakes [SerializeField] RendererType m_RendererType = RendererType.UniversalRenderer; @@ -1205,6 +1205,12 @@ public void OnAfterDeserialize() k_AssetVersion = 10; } + if (k_AssetVersion < 11) + { + k_AssetPreviousVersion = k_AssetVersion; + k_AssetVersion = 11; + } + #if UNITY_EDITOR if (k_AssetPreviousVersion != k_AssetVersion) { @@ -1249,6 +1255,18 @@ static void UpgradeAsset(int assetInstanceID) asset.k_AssetPreviousVersion = 10; } + if(asset.k_AssetPreviousVersion < 11) + { + PostProcessData defaultPostProcessData = PostProcessData.GetDefaultPostProcessData(); + ResourceReloader.ReloadAllNullIn(defaultPostProcessData, packagePath); + + PostProcessData postProcessData = (asset.scriptableRendererData as UniversalRendererData)?.postProcessData; + if(postProcessData != defaultPostProcessData) + ResourceReloader.ReloadAllNullIn(postProcessData, packagePath); + + asset.k_AssetPreviousVersion = 11; + } + EditorUtility.SetDirty(asset); } From de8c45c0a88b9e7121a3905aa02dd614743aec9d Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Fri, 14 Jan 2022 11:31:25 -0800 Subject: [PATCH 13/26] Minor fixes. --- .../Runtime/Data/UniversalRendererData.asset | 5 +---- .../Runtime/Materials/Lit.mat | 8 ++++---- .../Shaders/LitInput.hlsl | 2 -- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRendererData.asset b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRendererData.asset index 59b9c666f42..629cdba2a71 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRendererData.asset +++ b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRendererData.asset @@ -17,7 +17,7 @@ MonoBehaviour: m_RendererFeatures: [] m_RendererFeatureMap: m_UseNativeRenderPass: 0 - postProcessData: {fileID: 11400000, guid: ee973005a97ef0b4e8e4207d9609e05c, type: 2} + postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2} shaders: blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} @@ -31,7 +31,6 @@ MonoBehaviour: 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 @@ -48,8 +47,6 @@ MonoBehaviour: m_ShadowTransparentReceive: 1 m_RenderingMode: 0 m_DepthPrimingMode: 0 - m_CopyDepthMode: 0 m_AccurateGbufferNormals: 0 m_ClusteredRendering: 0 m_TileSize: 32 - m_IntermediateTextureMode: 0 diff --git a/com.unity.render-pipelines.universal/Runtime/Materials/Lit.mat b/com.unity.render-pipelines.universal/Runtime/Materials/Lit.mat index ea027c3012b..fbf5eb384b0 100644 --- a/com.unity.render-pipelines.universal/Runtime/Materials/Lit.mat +++ b/com.unity.render-pipelines.universal/Runtime/Materials/Lit.mat @@ -27,7 +27,7 @@ Material: m_ShaderKeywords: m_LightmapFlags: 4 m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 1 + m_DoubleSidedGI: 0 m_CustomRenderQueue: 2000 stringTagMap: RenderType: Opaque @@ -113,7 +113,7 @@ Material: - _ClearCoat: 0 - _ClearCoatMask: 0 - _ClearCoatSmoothness: 0 - - _Cull: 0 + - _Cull: 2 - _Cutoff: 0.5 - _DetailAlbedoMapScale: 1 - _DetailNormalMapScale: 1 @@ -143,8 +143,8 @@ Material: - _WorkflowMode: 1 - _ZWrite: 1 m_Colors: - - _BaseColor: {r: 0, g: 0, b: 0, a: 1} - - _Color: {r: 0, g: 0, b: 0, a: 1} + - _BaseColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _SpecColor: {r: 1, g: 1, b: 1, a: 1} m_BuildTextureStacks: [] diff --git a/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl b/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl index 71f100c14a1..3cf35b37f0a 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl @@ -243,6 +243,4 @@ inline void InitializeStandardLitSurfaceData(float2 uv, out SurfaceData outSurfa #endif } -//@ View invariant dithering is not needed for non camera rendering. - #endif // UNIVERSAL_INPUT_SURFACE_PBR_INCLUDED From 6ca2269844703f4899063c8da67022f31073d6bb Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Wed, 26 Jan 2022 13:45:31 -0800 Subject: [PATCH 14/26] ShaderGraph support. --- .../Editor/Decal/DecalPass.template | 17 ++----- .../Includes/DepthNormalsOnlyPass.hlsl | 4 ++ .../ShaderGraph/Includes/DepthOnlyPass.hlsl | 4 ++ .../ShaderGraph/Includes/PBRForwardPass.hlsl | 4 ++ .../ShaderGraph/Includes/PBRGBufferPass.hlsl | 4 ++ .../ShaderGraph/Includes/ShaderPassDecal.hlsl | 2 +- .../Includes/ShadowCasterPass.hlsl | 4 ++ .../ShaderGraph/Includes/UnlitPass.hlsl | 4 ++ .../Targets/UniversalDecalSubTarget.cs | 19 +++----- .../Targets/UniversalLitSubTarget.cs | 5 ++ .../ShaderGraph/Targets/UniversalTarget.cs | 47 +++++++++++++++++++ .../Targets/UniversalUnlitSubTarget.cs | 2 + .../Runtime/UniversalRenderPipelineCore.cs | 1 + .../ShaderLibrary/LODCrossFade.hlsl | 2 - .../Shaders/BakedLitDepthNormalsPass.hlsl | 7 ++- .../Shaders/BakedLitForwardPass.hlsl | 5 ++ .../Shaders/BakedLitInput.hlsl | 1 - .../Shaders/DepthNormalsPass.hlsl | 5 ++ .../Shaders/DepthOnlyPass.hlsl | 5 ++ .../Shaders/LitDepthNormalsPass.hlsl | 7 ++- .../Shaders/LitForwardPass.hlsl | 5 ++ .../Shaders/LitGBufferPass.hlsl | 6 ++- .../Shaders/LitInput.hlsl | 1 - .../Shaders/Nature/SpeedTree7CommonInput.hlsl | 1 - .../Nature/SpeedTree7CommonPasses.hlsl | 15 ++++-- .../Shaders/Nature/SpeedTree8Input.hlsl | 1 - .../Shaders/Nature/SpeedTree8Passes.hlsl | 13 ++++- .../Shaders/ShadowCasterPass.hlsl | 5 ++ .../Shaders/SimpleLitDepthNormalsPass.hlsl | 7 ++- .../Shaders/SimpleLitForwardPass.hlsl | 5 ++ .../Shaders/SimpleLitGBufferPass.hlsl | 5 ++ .../Shaders/SimpleLitInput.hlsl | 1 - .../Shaders/UnlitDepthNormalsPass.hlsl | 7 ++- .../Shaders/UnlitForwardPass.hlsl | 5 ++ .../Shaders/UnlitInput.hlsl | 1 - 35 files changed, 182 insertions(+), 45 deletions(-) diff --git a/com.unity.render-pipelines.universal/Editor/Decal/DecalPass.template b/com.unity.render-pipelines.universal/Editor/Decal/DecalPass.template index 1a019c30d84..1d3beeaaf0b 100644 --- a/com.unity.render-pipelines.universal/Editor/Decal/DecalPass.template +++ b/com.unity.render-pipelines.universal/Editor/Decal/DecalPass.template @@ -103,17 +103,7 @@ Pass // -------------------------------------------------- // Build Surface Data - uint2 ComputeFadeMaskSeed(uint2 positionSS) - { - uint2 fadeMaskSeed; - - // Can't use the view direction, it is the same across the entire screen. - fadeMaskSeed = positionSS; - - return fadeMaskSeed; - } - - void GetSurfaceData(Varyings input, half3 viewDirectioWS, uint2 positionSS, float angleFadeFactor, out DecalSurfaceData surfaceData) + void GetSurfaceData(Varyings input, half3 viewDirectioWS, float4 positionCS, float angleFadeFactor, out DecalSurfaceData surfaceData) { #if (SHADERPASS == SHADERPASS_DBUFFER_PROJECTOR) || (SHADERPASS == SHADERPASS_FORWARD_EMISSIVE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_SCREEN_SPACE_PROJECTOR) || (SHADERPASS == SHADERPASS_DECAL_GBUFFER_PROJECTOR) half4x4 normalToWorld = UNITY_ACCESS_INSTANCED_PROP(Decal, _NormalToWorld); @@ -125,10 +115,9 @@ Pass $Varyings.texCoord2: input.texCoord2.xy = input.texCoord2.xy * scale + offset; $Varyings.texCoord3: input.texCoord3.xy = input.texCoord3.xy * scale + offset; #else - #ifdef LOD_FADE_CROSSFADE // enable dithering LOD transition if user select CrossFade transition in LOD group - LODDitheringTransition(ComputeFadeMaskSeed(positionSS), unity_LODFade.x); + #ifdef LOD_FADE_CROSSFADE + LODFadeCrossFade(positionCS); #endif - half fadeFactor = half(1.0); #endif 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..058768bdbff 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/DepthNormalsOnlyPass.hlsl +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/DepthNormalsOnlyPass.hlsl @@ -21,6 +21,10 @@ half4 frag(PackedVaryings packedInput) : SV_TARGET clip(surfaceDescription.Alpha - surfaceDescription.AlphaClipThreshold); #endif + #ifdef LOD_FADE_CROSSFADE + LODFadeCrossFade(unpacked.positionCS); + #endif + #if defined(_GBUFFER_NORMALS_OCT) float3 normalWS = normalize(unpacked.normalWS); float2 octNormalWS = PackNormalOctQuadEncode(normalWS); // values between [-1, +1], must use fp32 on some platforms diff --git a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/DepthOnlyPass.hlsl b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/DepthOnlyPass.hlsl index 996ecb1f75a..bb93886ce7e 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/DepthOnlyPass.hlsl +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/DepthOnlyPass.hlsl @@ -21,6 +21,10 @@ half4 frag(PackedVaryings packedInput) : SV_TARGET clip(surfaceDescription.Alpha - surfaceDescription.AlphaClipThreshold); #endif + #ifdef LOD_FADE_CROSSFADE + LODFadeCrossFade(unpacked.positionCS); + #endif + return packedInput.positionCS.z; } 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..47bc24bc7d1 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/PBRForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/PBRForwardPass.hlsl @@ -79,6 +79,10 @@ half4 frag(PackedVaryings packedInput) : SV_TARGET half alpha = 1; #endif + #ifdef LOD_FADE_CROSSFADE + LODFadeCrossFade(unpacked.positionCS); + #endif + InputData inputData; InitializeInputData(unpacked, surfaceDescription, inputData); // TODO: Mip debug modes would require this, open question how to do this on ShaderGraph. diff --git a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/PBRGBufferPass.hlsl b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/PBRGBufferPass.hlsl index ec1fc90c268..789feda9923 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/PBRGBufferPass.hlsl +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/PBRGBufferPass.hlsl @@ -78,6 +78,10 @@ FragmentOutput frag(PackedVaryings packedInput) half alpha = 1; #endif + #ifdef LOD_FADE_CROSSFADE + LODFadeCrossFade(unpacked.positionCS); + #endif + InputData inputData; InitializeInputData(unpacked, surfaceDescription, inputData); // TODO: Mip debug modes would require this, open question how to do this on ShaderGraph. 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 11ddc967491..c76d128d102 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPassDecal.hlsl +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPassDecal.hlsl @@ -266,7 +266,7 @@ void Frag(PackedVaryings packedInput, #endif DecalSurfaceData surfaceData; - GetSurfaceData(input, viewDirectionWS, (uint2)positionSS, angleFadeFactor, surfaceData); + GetSurfaceData(input, viewDirectionWS, input.positionCS, angleFadeFactor, surfaceData); #if defined(DECAL_DBUFFER) ENCODE_INTO_DBUFFER(surfaceData, outDBuffer); diff --git a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShadowCasterPass.hlsl b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShadowCasterPass.hlsl index 298062f99a8..119656c03d7 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShadowCasterPass.hlsl +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShadowCasterPass.hlsl @@ -20,6 +20,10 @@ half4 frag(PackedVaryings packedInput) : SV_TARGET clip(surfaceDescription.Alpha - surfaceDescription.AlphaClipThreshold); #endif + #ifdef LOD_FADE_CROSSFADE + LODFadeCrossFade(unpacked.positionCS); + #endif + return 0; } 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..76b2b6ee18e 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/UnlitPass.hlsl +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/UnlitPass.hlsl @@ -46,6 +46,10 @@ half4 frag(PackedVaryings packedInput) : SV_TARGET half alpha = half(1.0); #endif + #ifdef LOD_FADE_CROSSFADE + LODFadeCrossFade(unpacked.positionCS); + #endif + #if defined(_ALPHAMODULATE_ON) surfaceDescription.BaseColor = AlphaModulate(surfaceDescription.BaseColor, alpha); #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..f02be131cee 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalDecalSubTarget.cs +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalDecalSubTarget.cs @@ -919,21 +919,12 @@ static class Descriptors new KeywordEntry() { displayName = "HIGH", referenceName = "HIGH" }, } }; - - public static readonly KeywordDescriptor LodCrossFade = new KeywordDescriptor() - { - displayName = "LOD Cross Fade", - referenceName = "LOD_FADE_CROSSFADE", - type = KeywordType.Boolean, - definition = KeywordDefinition.MultiCompile, - scope = KeywordScope.Global, - }; } public static KeywordCollection DBufferMesh = new KeywordCollection { { CoreKeywordDescriptors.DBuffer }, - { Descriptors.LodCrossFade, new FieldCondition(Fields.LodCrossFade, true) }, + { CoreKeywordDescriptors.LODFadeCrossFade, new FieldCondition(Fields.LodCrossFade, true) }, }; public static KeywordCollection DBufferProjector = new KeywordCollection @@ -954,7 +945,7 @@ static class Descriptors { CoreKeywordDescriptors.ShadowsShadowmask }, { CoreKeywordDescriptors.ClusteredRendering }, { Descriptors.DecalsNormalBlend }, - { Descriptors.LodCrossFade, new FieldCondition(Fields.LodCrossFade, true) }, + { CoreKeywordDescriptors.LODFadeCrossFade, new FieldCondition(Fields.LodCrossFade, true) }, }; public static readonly KeywordCollection ScreenSpaceProjector = new KeywordCollection @@ -979,7 +970,7 @@ static class Descriptors { Descriptors.DecalsNormalBlend }, { CoreKeywordDescriptors.GBufferNormalsOct }, { CoreKeywordDescriptors.RenderPassEnabled }, - { Descriptors.LodCrossFade, new FieldCondition(Fields.LodCrossFade, true) }, + { CoreKeywordDescriptors.LODFadeCrossFade, new FieldCondition(Fields.LodCrossFade, true) }, }; public static readonly KeywordCollection GBufferProjector = new KeywordCollection @@ -1003,6 +994,7 @@ static class DecalIncludes const string kVaryings = "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/Varyings.hlsl"; const string kDBuffer = "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DBuffer.hlsl"; const string kGBuffer = "Packages/com.unity.render-pipelines.universal/ShaderLibrary/UnityGBuffer.hlsl"; + const string kLODCrossFade = "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl"; public static IncludeCollection DecalPregraph = new IncludeCollection { @@ -1024,6 +1016,7 @@ static class DecalIncludes { CoreIncludes.ShaderGraphPregraph }, { DecalPregraph }, { kDBuffer, IncludeLocation.Pregraph }, + { kLODCrossFade, IncludeLocation.Pregraph, new FieldCondition(Fields.LodCrossFade, true) }, // Post-graph { DecalPostgraph }, @@ -1035,6 +1028,7 @@ static class DecalIncludes { CoreIncludes.CorePregraph }, { CoreIncludes.ShaderGraphPregraph }, { DecalPregraph }, + { kLODCrossFade, IncludeLocation.Pregraph, new FieldCondition(Fields.LodCrossFade, true) }, // Post-graph { DecalPostgraph }, @@ -1047,6 +1041,7 @@ static class DecalIncludes { CoreIncludes.ShaderGraphPregraph }, { kGBuffer, IncludeLocation.Pregraph }, { DecalPregraph }, + { kLODCrossFade, IncludeLocation.Pregraph, new FieldCondition(Fields.LodCrossFade, true) }, // Post-graph { DecalPostgraph }, 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 ce9837fac2c..d0a4417add5 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalLitSubTarget.cs +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalLitSubTarget.cs @@ -469,6 +469,7 @@ public static PassDescriptor Forward(UniversalTarget target, WorkflowMode workfl CorePasses.AddTargetSurfaceControlsToPass(ref result, target, blendModePreserveSpecular); AddWorkflowModeControlToPass(ref result, target, workflowMode); AddReceiveShadowsControlToPass(ref result, target, target.receiveShadows); + CorePasses.AddLODCrossFadeControlToPass(ref result, target); return result; } @@ -520,6 +521,7 @@ public static PassDescriptor ForwardOnly( CorePasses.AddTargetSurfaceControlsToPass(ref result, target, blendModePreserveSpecular); AddWorkflowModeControlToPass(ref result, target, workflowMode); AddReceiveShadowsControlToPass(ref result, target, target.receiveShadows); + CorePasses.AddLODCrossFadeControlToPass(ref result, target); return result; } @@ -561,6 +563,7 @@ public static PassDescriptor GBuffer(UniversalTarget target, WorkflowMode workfl CorePasses.AddTargetSurfaceControlsToPass(ref result, target, blendModePreserveSpecular); AddWorkflowModeControlToPass(ref result, target, workflowMode); AddReceiveShadowsControlToPass(ref result, target, target.receiveShadows); + CorePasses.AddLODCrossFadeControlToPass(ref result, target); return result; } @@ -674,6 +677,7 @@ public static PassDescriptor DepthNormal(UniversalTarget target) }; CorePasses.AddAlphaClipControlToPass(ref result, target); + CorePasses.AddLODCrossFadeControlToPass(ref result, target); return result; } @@ -713,6 +717,7 @@ public static PassDescriptor DepthNormalOnly(UniversalTarget target) }; CorePasses.AddAlphaClipControlToPass(ref result, target); + CorePasses.AddLODCrossFadeControlToPass(ref result, target); return result; } 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 1805b69d1b9..8e584267c5f 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs @@ -135,6 +135,9 @@ sealed class UniversalTarget : Target, IHasMetadata, ILegacyTarget [SerializeField] bool m_ReceiveShadows = true; + [SerializeField] + bool m_SupportsLODCrossFade = true; + [SerializeField] string m_CustomEditorGUI; @@ -240,6 +243,12 @@ public bool receiveShadows set => m_ReceiveShadows = value; } + public bool supportsLodCrossFade + { + get => m_SupportsLODCrossFade; + set => m_SupportsLODCrossFade = value; + } + public string customEditorGUI { get => m_CustomEditorGUI; @@ -519,6 +528,16 @@ public void AddDefaultSurfacePropertiesGUI(ref TargetPropertyGUIContext context, receiveShadows = evt.newValue; onChange(); }); + + context.AddProperty("Supports LOD Cross Fade", new Toggle() { value = supportsLodCrossFade }, (evt) => + { + if (Equals(supportsLodCrossFade, evt.newValue)) + return; + + registerUndo("Change Supports LOD Cross Fade"); + supportsLodCrossFade = evt.newValue; + onChange(); + }); } public bool TrySetActiveSubTarget(Type subTargetType) @@ -702,6 +721,15 @@ internal static void AddAlphaClipControlToPass(ref PassDescriptor pass, Universa pass.defines.Add(CoreKeywordDescriptors.AlphaTestOn, 1); } + internal static void AddLODCrossFadeControlToPass(ref PassDescriptor pass, UniversalTarget target) + { + if (target.supportsLodCrossFade) + { + pass.includes.Add(CoreIncludes.LODCrossFade); + pass.keywords.Add(CoreKeywordDescriptors.LODFadeCrossFade); + } + } + internal static void AddTargetSurfaceControlsToPass(ref PassDescriptor pass, UniversalTarget target, bool blendModePreserveSpecular = false) { // the surface settings can either be material controlled or target controlled @@ -765,6 +793,7 @@ public static PassDescriptor DepthOnly(UniversalTarget target) }; AddAlphaClipControlToPass(ref result, target); + AddLODCrossFadeControlToPass(ref result, target); return result; } @@ -805,6 +834,7 @@ public static PassDescriptor DepthNormal(UniversalTarget target) }; AddAlphaClipControlToPass(ref result, target); + AddLODCrossFadeControlToPass(ref result, target); return result; } @@ -845,6 +875,7 @@ public static PassDescriptor DepthNormalOnly(UniversalTarget target) }; AddAlphaClipControlToPass(ref result, target); + AddLODCrossFadeControlToPass(ref result, target); return result; } @@ -884,6 +915,7 @@ public static PassDescriptor ShadowCaster(UniversalTarget target) }; AddAlphaClipControlToPass(ref result, target); + AddLODCrossFadeControlToPass(ref result, target); return result; } @@ -1400,6 +1432,7 @@ static class CoreIncludes const string kTextureStack = "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"; const string kDBuffer = "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DBuffer.hlsl"; const string kSelectionPickingPass = "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/SelectionPickingPass.hlsl"; + const string kLODCrossFade = "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl"; public static readonly IncludeCollection CorePregraph = new IncludeCollection { @@ -1480,6 +1513,11 @@ static class CoreIncludes { CorePostgraph }, { kSelectionPickingPass, IncludeLocation.Postgraph }, }; + + public static readonly IncludeCollection LODCrossFade = new IncludeCollection + { + { kLODCrossFade, IncludeLocation.Pregraph } + }; } #endregion @@ -1840,6 +1878,15 @@ static class CoreKeywordDescriptors definition = KeywordDefinition.ShaderFeature, scope = KeywordScope.Global, }; + + public static readonly KeywordDescriptor LODFadeCrossFade = new KeywordDescriptor() + { + displayName = ShaderKeywordStrings.LOD_FADE_CROSSFADE, + referenceName = ShaderKeywordStrings.LOD_FADE_CROSSFADE, + type = KeywordType.Boolean, + definition = KeywordDefinition.MultiCompile, + scope = KeywordScope.Global, + }; } #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 1f545756fc2..f536c6e0885 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalUnlitSubTarget.cs +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalUnlitSubTarget.cs @@ -258,6 +258,7 @@ public static PassDescriptor Forward(UniversalTarget target) }; CorePasses.AddTargetSurfaceControlsToPass(ref result, target); + CorePasses.AddLODCrossFadeControlToPass(ref result, target); return result; } @@ -297,6 +298,7 @@ public static PassDescriptor DepthNormalOnly(UniversalTarget target) }; CorePasses.AddTargetSurfaceControlsToPass(ref result, target); + CorePasses.AddLODCrossFadeControlToPass(ref result, target); return result; } diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs index f7599fa2de9..e46d00f0731 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs @@ -463,6 +463,7 @@ public static class ShaderKeywordStrings public static readonly string _CLEARCOAT = "_CLEARCOAT"; public static readonly string _CLEARCOATMAP = "_CLEARCOATMAP"; public static readonly string DEBUG_DISPLAY = "DEBUG_DISPLAY"; + public static readonly string LOD_FADE_CROSSFADE = "LOD_FADE_CROSSFADE"; public static readonly string _EMISSION = "_EMISSION"; public static readonly string _RECEIVE_SHADOWS_OFF = "_RECEIVE_SHADOWS_OFF"; diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl index 089b149b9dc..371fe4cc444 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl @@ -56,11 +56,9 @@ half GetLODDithering(float2 crossFadeSeed, half crossFadeFactor) void LODFadeCrossFade(float4 positionCS) { -#ifdef LOD_FADE_CROSSFADE half d = GetLODDithering(positionCS.xy, unity_LODFade.x); clip(d); -#endif } #endif diff --git a/com.unity.render-pipelines.universal/Shaders/BakedLitDepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/BakedLitDepthNormalsPass.hlsl index 1152f49edc4..cb3f0164455 100644 --- a/com.unity.render-pipelines.universal/Shaders/BakedLitDepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/BakedLitDepthNormalsPass.hlsl @@ -2,6 +2,9 @@ #define UNIVERSAL_BAKEDLIT_DEPTH_NORMALS_PASS_INCLUDED #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" +#if defined(LOD_FADE_CROSSFADE) + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" +#endif struct Attributes { @@ -58,7 +61,9 @@ float4 DepthNormalsFragment(Varyings input) : SV_TARGET half alpha = texColor.a * _BaseColor.a; AlphaDiscard(alpha, _Cutoff); - LODFadeCrossFade(input.positionCS); + #ifdef LOD_FADE_CROSSFADE + LODFadeCrossFade(input.positionCS); + #endif #if defined(_GBUFFER_NORMALS_OCT) float3 normalWS = normalize(input.normalWS); diff --git a/com.unity.render-pipelines.universal/Shaders/BakedLitForwardPass.hlsl b/com.unity.render-pipelines.universal/Shaders/BakedLitForwardPass.hlsl index 742476a62eb..75b77f84efe 100644 --- a/com.unity.render-pipelines.universal/Shaders/BakedLitForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/BakedLitForwardPass.hlsl @@ -1,5 +1,8 @@ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" +#if defined(LOD_FADE_CROSSFADE) + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" +#endif struct Attributes { @@ -129,7 +132,9 @@ half4 BakedLitForwardPassFragment(Varyings input) : SV_Target AlphaDiscard(alpha, _Cutoff); color = AlphaModulate(color, alpha); +#ifdef LOD_FADE_CROSSFADE LODFadeCrossFade(input.positionCS); +#endif #ifdef _DBUFFER ApplyDecalToBaseColorAndNormal(input.positionCS, color, inputData.normalWS); diff --git a/com.unity.render-pipelines.universal/Shaders/BakedLitInput.hlsl b/com.unity.render-pipelines.universal/Shaders/BakedLitInput.hlsl index 5b9ad67a134..8fc6239b6ac 100644 --- a/com.unity.render-pipelines.universal/Shaders/BakedLitInput.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/BakedLitInput.hlsl @@ -2,7 +2,6 @@ #define UNIVERSAL_BAKEDLIT_INPUT_INCLUDED #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceInput.hlsl" -#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" CBUFFER_START(UnityPerMaterial) float4 _BaseMap_ST; diff --git a/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl index 0e15291274f..dd9029d08d7 100644 --- a/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/DepthNormalsPass.hlsl @@ -2,6 +2,9 @@ #define UNIVERSAL_DEPTH_NORMALS_PASS_INCLUDED #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" +#if defined(LOD_FADE_CROSSFADE) + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" +#endif struct Attributes { @@ -43,7 +46,9 @@ half4 DepthNormalsFragment(Varyings input) : SV_TARGET Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); +#ifdef LOD_FADE_CROSSFADE LODFadeCrossFade(input.positionCS); +#endif #if defined(_GBUFFER_NORMALS_OCT) float3 normalWS = normalize(input.normalWS); diff --git a/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl b/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl index 949ab4c37d0..53749ef7047 100644 --- a/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl @@ -2,6 +2,9 @@ #define UNIVERSAL_DEPTH_ONLY_PASS_INCLUDED #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" +#if defined(LOD_FADE_CROSSFADE) + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" +#endif struct Attributes { @@ -35,7 +38,9 @@ half DepthOnlyFragment(Varyings input) : SV_TARGET Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); +#ifdef LOD_FADE_CROSSFADE LODFadeCrossFade(input.positionCS); +#endif return input.positionCS.z; } diff --git a/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl index 59bc3a25658..d56a5e22ed9 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl @@ -2,6 +2,9 @@ #define UNIVERSAL_FORWARD_LIT_DEPTH_NORMALS_PASS_INCLUDED #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" +#if defined(LOD_FADE_CROSSFADE) +# include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" +#endif #if defined(_DETAIL_MULX2) || defined(_DETAIL_SCALED) #define _DETAIL @@ -84,7 +87,9 @@ half4 DepthNormalsFragment(Varyings input) : SV_TARGET Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); - LODFadeCrossFade(input.positionCS); + #ifdef LOD_FADE_CROSSFADE + LODFadeCrossFade(input.positionCS); + #endif #if defined(_GBUFFER_NORMALS_OCT) float3 normalWS = normalize(input.normalWS); diff --git a/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl b/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl index f163e1b56a0..6e28939336e 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitForwardPass.hlsl @@ -2,6 +2,9 @@ #define UNIVERSAL_FORWARD_LIT_PASS_INCLUDED #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" +#if defined(LOD_FADE_CROSSFADE) + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" +#endif // GLES2 has limited amount of interpolators #if defined(_PARALLAXMAP) && !defined(SHADER_API_GLES) @@ -211,7 +214,9 @@ half4 LitPassFragment(Varyings input) : SV_Target SurfaceData surfaceData; InitializeStandardLitSurfaceData(input.uv, surfaceData); +#ifdef LOD_FADE_CROSSFADE LODFadeCrossFade(input.positionCS); +#endif InputData inputData; InitializeInputData(input, surfaceData.normalTS, inputData); diff --git a/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl b/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl index 3814c52917c..30d07afd938 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl @@ -3,7 +3,9 @@ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/UnityGBuffer.hlsl" -#include "Packages/com.unity.shadergraph/ShaderGraphLibrary/LODDitheringTransition.hlsl" +#if defined(LOD_FADE_CROSSFADE) + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" +#endif // TODO: Currently we support viewDirTS caclulated in vertex shader and in fragments shader. // As both solutions have their advantages and disadvantages (etc. shader target 2.0 has only 8 interpolators). @@ -193,7 +195,9 @@ FragmentOutput LitGBufferPassFragment(Varyings input) SurfaceData surfaceData; InitializeStandardLitSurfaceData(input.uv, surfaceData); +#ifdef LOD_FADE_CROSSFADE LODFadeCrossFade(input.positionCS); +#endif InputData inputData; InitializeInputData(input, surfaceData.normalTS, inputData); diff --git a/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl b/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl index 3cf35b37f0a..638c394e5a5 100644 --- a/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl @@ -6,7 +6,6 @@ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceInput.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/ParallaxMapping.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DBuffer.hlsl" -#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" #if defined(_DETAIL_MULX2) || defined(_DETAIL_SCALED) #define _DETAIL diff --git a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonInput.hlsl b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonInput.hlsl index 40d24c236fc..7d5c9f042cd 100644 --- a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonInput.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonInput.hlsl @@ -11,7 +11,6 @@ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceInput.hlsl" -#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" #ifdef ENABLE_WIND #define WIND_QUALITY_NONE 0 diff --git a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonPasses.hlsl b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonPasses.hlsl index 4af7c221c92..086e81374d0 100644 --- a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonPasses.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7CommonPasses.hlsl @@ -5,6 +5,9 @@ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/UnityGBuffer.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderVariablesFunctions.hlsl" #include "SpeedTreeUtility.hlsl" +#if defined(LOD_FADE_CROSSFADE) + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" +#endif struct SpeedTreeVertexInput { @@ -146,7 +149,9 @@ half4 SpeedTree7Frag(SpeedTreeVertexOutput input) : SV_Target AlphaDiscard(diffuse.a, _Cutoff); #endif - LODFadeCrossFade(input.clipPos); + #ifdef LOD_FADE_CROSSFADE + LODFadeCrossFade(input.clipPos); + #endif half3 diffuseColor = diffuse.rgb; @@ -224,7 +229,9 @@ half4 SpeedTree7FragDepth(SpeedTreeVertexDepthOutput input) : SV_Target AlphaDiscard(diffuse.a, _Cutoff); #endif - LODFadeCrossFade(input.clipPos); + #ifdef LOD_FADE_CROSSFADE + LODFadeCrossFade(input.clipPos); + #endif #if defined(SCENESELECTIONPASS) // We use depth prepass for scene selection in the editor, this code allow to output the outline correctly @@ -247,7 +254,9 @@ half4 SpeedTree7FragDepthNormal(SpeedTreeVertexDepthNormalOutput input) : SV_Tar AlphaDiscard(diffuse.a, _Cutoff); #endif - LODFadeCrossFade(input.clipPos); + #ifdef LOD_FADE_CROSSFADE + LODFadeCrossFade(input.clipPos); + #endif #if defined(EFFECT_BUMP) half3 normalTS = SampleNormal(uv, TEXTURE2D_ARGS(_BumpMap, sampler_BumpMap)); diff --git a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Input.hlsl b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Input.hlsl index 123f8a225b2..5fa3ddd16f2 100644 --- a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Input.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Input.hlsl @@ -9,7 +9,6 @@ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceInput.hlsl" -#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" #if defined(ENABLE_WIND) && !defined(_WINDQUALITY_NONE) #define SPEEDTREE_Y_UP diff --git a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Passes.hlsl b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Passes.hlsl index 71980dd4484..03640efc7f1 100644 --- a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Passes.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Passes.hlsl @@ -4,6 +4,9 @@ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/UnityGBuffer.hlsl" #include "SpeedTreeUtility.hlsl" +#if defined(LOD_FADE_CROSSFADE) + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" +#endif struct SpeedTreeVertexInput { @@ -369,7 +372,9 @@ half4 SpeedTree8Frag(SpeedTreeFragmentInput input) : SV_Target half alpha = diffuse.a * input.interpolated.color.a; AlphaDiscard(alpha, 0.3333); - LODFadeCrossFade(input.interpolated.clipPos); + #ifdef LOD_FADE_CROSSFADE + LODFadeCrossFade(input.interpolated.clipPos); + #endif half3 albedo = diffuse.rgb; half3 emission = 0; @@ -493,7 +498,9 @@ half4 SpeedTree8FragDepth(SpeedTreeVertexDepthOutput input) : SV_Target half alpha = diffuse.a * input.color.a; AlphaDiscard(alpha, 0.3333); +#ifdef LOD_FADE_CROSSFADE LODFadeCrossFade(input.clipPos); +#endif #if defined(SCENESELECTIONPASS) // We use depth prepass for scene selection in the editor, this code allow to output the outline correctly @@ -548,7 +555,9 @@ half4 SpeedTree8FragDepthNormal(SpeedTreeDepthNormalFragmentInput input) : SV_Ta half alpha = diffuse.a * input.interpolated.color.a; AlphaDiscard(alpha, 0.3333); - LODFadeCrossFade(input.interpolated.clipPos); + #ifdef LOD_FADE_CROSSFADE + LODFadeCrossFade(input.interpolated.clipPos); + #endif // normal #if defined(EFFECT_BUMP) diff --git a/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl b/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl index bad742a875a..3a12e1aa93e 100644 --- a/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl @@ -3,6 +3,9 @@ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl" +#if defined(LOD_FADE_CROSSFADE) + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" +#endif // Shadow Casting Light geometric parameters. These variables are used when applying the shadow Normal Bias and are set by UnityEngine.Rendering.Universal.ShadowUtils.SetupShadowCasterConstantBuffer in com.unity.render-pipelines.universal/Runtime/ShadowUtils.cs // For Directional lights, _LightDirection is used when applying shadow Normal Bias. @@ -60,7 +63,9 @@ half4 ShadowPassFragment(Varyings input) : SV_TARGET { Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); +#ifdef LOD_FADE_CROSSFADE LODFadeCrossFade(input.positionCS); +#endif return 0; } diff --git a/com.unity.render-pipelines.universal/Shaders/SimpleLitDepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/SimpleLitDepthNormalsPass.hlsl index 138d31d90cd..8211f156f1d 100644 --- a/com.unity.render-pipelines.universal/Shaders/SimpleLitDepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/SimpleLitDepthNormalsPass.hlsl @@ -2,6 +2,9 @@ #define UNIVERSAL_SIMPLE_LIT_DEPTH_NORMALS_PASS_INCLUDED #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" +#if defined(LOD_FADE_CROSSFADE) + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" +#endif struct Attributes { @@ -61,7 +64,9 @@ half4 DepthNormalsFragment(Varyings input) : SV_TARGET Alpha(SampleAlbedoAlpha(input.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a, _BaseColor, _Cutoff); - LODFadeCrossFade(input.positionCS); + #ifdef LOD_FADE_CROSSFADE + LODFadeCrossFade(input.positionCS); + #endif #if defined(_GBUFFER_NORMALS_OCT) float3 normalWS = normalize(input.normalWS); diff --git a/com.unity.render-pipelines.universal/Shaders/SimpleLitForwardPass.hlsl b/com.unity.render-pipelines.universal/Shaders/SimpleLitForwardPass.hlsl index 0f484ebb614..5757a411ab7 100644 --- a/com.unity.render-pipelines.universal/Shaders/SimpleLitForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/SimpleLitForwardPass.hlsl @@ -2,6 +2,9 @@ #define UNIVERSAL_SIMPLE_LIT_PASS_INCLUDED #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" +#if defined(LOD_FADE_CROSSFADE) + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" +#endif struct Attributes { @@ -170,7 +173,9 @@ half4 LitPassFragmentSimple(Varyings input) : SV_Target SurfaceData surfaceData; InitializeSimpleLitSurfaceData(input.uv, surfaceData); +#ifdef LOD_FADE_CROSSFADE LODFadeCrossFade(input.positionCS); +#endif InputData inputData; InitializeInputData(input, surfaceData.normalTS, inputData); diff --git a/com.unity.render-pipelines.universal/Shaders/SimpleLitGBufferPass.hlsl b/com.unity.render-pipelines.universal/Shaders/SimpleLitGBufferPass.hlsl index b6f5bb730cb..514bb7d8e07 100644 --- a/com.unity.render-pipelines.universal/Shaders/SimpleLitGBufferPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/SimpleLitGBufferPass.hlsl @@ -3,6 +3,9 @@ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/UnityGBuffer.hlsl" +#if defined(LOD_FADE_CROSSFADE) + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" +#endif // keep this file in sync with LitForwardPass.hlsl @@ -164,7 +167,9 @@ FragmentOutput LitPassFragmentSimple(Varyings input) SurfaceData surfaceData; InitializeSimpleLitSurfaceData(input.uv, surfaceData); +#ifdef LOD_FADE_CROSSFADE LODFadeCrossFade(input.positionCS); +#endif InputData inputData; InitializeInputData(input, surfaceData.normalTS, inputData); diff --git a/com.unity.render-pipelines.universal/Shaders/SimpleLitInput.hlsl b/com.unity.render-pipelines.universal/Shaders/SimpleLitInput.hlsl index b149436dbd0..87a1d6d9b27 100644 --- a/com.unity.render-pipelines.universal/Shaders/SimpleLitInput.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/SimpleLitInput.hlsl @@ -3,7 +3,6 @@ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceInput.hlsl" -#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" CBUFFER_START(UnityPerMaterial) float4 _BaseMap_ST; diff --git a/com.unity.render-pipelines.universal/Shaders/UnlitDepthNormalsPass.hlsl b/com.unity.render-pipelines.universal/Shaders/UnlitDepthNormalsPass.hlsl index cac40e42041..f241c73b421 100644 --- a/com.unity.render-pipelines.universal/Shaders/UnlitDepthNormalsPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/UnlitDepthNormalsPass.hlsl @@ -2,6 +2,9 @@ #define UNIVERSAL_UNLIT_DEPTH_NORMALS_PASS_INCLUDED #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" +#if defined(LOD_FADE_CROSSFADE) + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" +#endif struct Attributes { @@ -38,7 +41,9 @@ float4 DepthNormalsFragment(Varyings input) : SV_TARGET { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); - LODFadeCrossFade(input.positionCS); + #ifdef LOD_FADE_CROSSFADE + LODFadeCrossFade(input.positionCS); + #endif // Output... #if defined(_GBUFFER_NORMALS_OCT) diff --git a/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl b/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl index cd45b6b0e28..8873343fb9a 100644 --- a/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl @@ -4,6 +4,9 @@ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Unlit.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" +#if defined(LOD_FADE_CROSSFADE) + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" +#endif struct Attributes { @@ -102,7 +105,9 @@ half4 UnlitPassFragment(Varyings input) : SV_Target AlphaDiscard(alpha, _Cutoff); color = AlphaModulate(color, alpha); +#ifdef LOD_FADE_CROSSFADE LODFadeCrossFade(input.positionCS); +#endif InputData inputData; InitializeInputData(input, inputData); diff --git a/com.unity.render-pipelines.universal/Shaders/UnlitInput.hlsl b/com.unity.render-pipelines.universal/Shaders/UnlitInput.hlsl index bc78a532ff2..ff262d4db99 100644 --- a/com.unity.render-pipelines.universal/Shaders/UnlitInput.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/UnlitInput.hlsl @@ -2,7 +2,6 @@ #define UNIVERSAL_UNLIT_INPUT_INCLUDED #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceInput.hlsl" -#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" CBUFFER_START(UnityPerMaterial) float4 _BaseMap_ST; From c478515df4a5000552b2ee9a2fe7384043c77b38 Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Wed, 26 Jan 2022 18:19:35 -0800 Subject: [PATCH 15/26] Moved dithering textures refs to pipeline asset. --- .../UniversalRenderPipelineAssetUI.Drawers.cs | 8 +++++++ .../Runtime/Data/PostProcessData.cs | 6 ----- .../Data/UniversalRenderPipelineAsset.cs | 24 +++++++++++++------ .../Runtime/UniversalRenderPipeline.cs | 16 ++----------- 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs index 6480896956a..b8035530d7a 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs @@ -97,6 +97,11 @@ static bool ValidateRendererGraphicsAPIs(UniversalRenderPipelineAsset pipelineAs return unsupportedGraphicsApisMessage == null; } + static bool ValidateCrossFadeDitheringTextures(UniversalRenderPipelineAsset pipelineAsset) + { + return pipelineAsset.bayerMatrixTex && pipelineAsset.blueNoise64LTex; + } + static readonly ExpandedState k_ExpandedState = new(Expandable.Rendering, "URP"); readonly static AdditionalPropertiesState k_AdditionalPropertiesState = new(0, "URP"); @@ -149,6 +154,9 @@ static void DrawQuality(SerializedUniversalRenderPipelineAsset serialized, Edito serialized.renderScale.floatValue = EditorGUILayout.Slider(Styles.renderScaleText, serialized.renderScale.floatValue, UniversalRenderPipeline.minRenderScale, UniversalRenderPipeline.maxRenderScale); EditorGUILayout.PropertyField(serialized.upscalingFilter, Styles.upscalingFilterText); EditorGUILayout.PropertyField(serialized.lodCrossFadeTypeProp, Styles.lodCrossFadeTypeText); + if(!ValidateCrossFadeDitheringTextures(serialized.asset)) + CoreEditorUtils.DrawFixMeBox("Asset doesn't hold references to dithering textures. LOD Cross Fade might not work correctly.", + () => ResourceReloader.ReloadAllNullIn(serialized.asset, UniversalRenderPipelineAsset.packagePath)); } static void DrawLighting(SerializedUniversalRenderPipelineAsset serialized, Editor ownerEditor) diff --git a/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.cs b/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.cs index 12e00178976..53bc8fd1e63 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.cs +++ b/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.cs @@ -86,12 +86,6 @@ public sealed class TextureResources [Reload("Textures/BlueNoise16/L/LDR_LLL1_{0}.png", 0, 32)] public Texture2D[] blueNoise16LTex; - [Reload("Textures/BlueNoise64/L/LDR_LLL1_0.png")] - public Texture2D blueNoise64LTex; - - [Reload("Textures/BayerMatrix.png")] - public Texture2D bayerMatrixTex; - // Post-processing [Reload(new[] { diff --git a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs index dbc17493efc..e8957a32d60 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs @@ -245,6 +245,12 @@ public partial class UniversalRenderPipelineAsset : RenderPipelineAsset, ISerial [SerializeField] VolumeFrameworkUpdateMode m_VolumeFrameworkUpdateMode = VolumeFrameworkUpdateMode.EveryFrame; + [Reload("Textures/BlueNoise64/L/LDR_LLL1_0.png")] + [SerializeField] Texture2D m_BlueNoise64LTex; + + [Reload("Textures/BayerMatrix.png")] + [SerializeField] Texture2D m_BayerMatrixTex; + // Note: A lut size of 16^3 is barely usable with the HDR grading mode. 32 should be the // minimum, the lut being encoded in log. Lower sizes would work better with an additional // 1D shaper lut but for now we'll keep it simple. @@ -692,6 +698,16 @@ public LODCrossFadeType lodCrossFadeType get { return m_LODCrossFadeType; } } + public Texture2D blueNoise64LTex + { + get { return m_BlueNoise64LTex; } + } + + public Texture2D bayerMatrixTex + { + get { return m_BayerMatrixTex; } + } + /// /// Returns the upscaling filter desired by the user /// Note: Filter selections differ from actual filters in that they may include "meta-filters" such as @@ -1257,13 +1273,7 @@ static void UpgradeAsset(int assetInstanceID) if(asset.k_AssetPreviousVersion < 11) { - PostProcessData defaultPostProcessData = PostProcessData.GetDefaultPostProcessData(); - ResourceReloader.ReloadAllNullIn(defaultPostProcessData, packagePath); - - PostProcessData postProcessData = (asset.scriptableRendererData as UniversalRendererData)?.postProcessData; - if(postProcessData != defaultPostProcessData) - ResourceReloader.ReloadAllNullIn(postProcessData, packagePath); - + ResourceReloader.ReloadAllNullIn(asset, packagePath); asset.k_AssetPreviousVersion = 11; } diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index d110a7e13b6..3502344961d 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -1266,22 +1266,10 @@ static void SetupPerFrameShaderConstants() Shader.SetGlobalInt(ShaderPropertyId.lodCrossFadeType, (int)asset.lodCrossFadeType); - UniversalRendererData renderData = asset.scriptableRendererData as UniversalRendererData; - if (asset.lodCrossFadeType == LODCrossFadeType.BayerMatrixDither) - { - if (renderData?.postProcessData?.textures.bayerMatrixTex) - Shader.SetGlobalTexture(ShaderPropertyId.ditheringTexture, renderData.postProcessData.textures.bayerMatrixTex); - else - Debug.LogError("LOD Cross Fade: unable to find Bayer Matrix dithering Texture."); - } + Shader.SetGlobalTexture(ShaderPropertyId.ditheringTexture, asset.bayerMatrixTex); else if (asset.lodCrossFadeType == LODCrossFadeType.BlueNoiseDither) - { - if (renderData?.postProcessData?.textures.blueNoise64LTex) - Shader.SetGlobalTexture(ShaderPropertyId.ditheringTexture, renderData.postProcessData.textures.blueNoise64LTex); - else - Debug.LogError("LOD Cross Fade: unable to find Blue Noise dithering Texture."); - } + Shader.SetGlobalTexture(ShaderPropertyId.ditheringTexture, asset.blueNoise64LTex); } static void CheckAndApplyDebugSettings(ref RenderingData renderingData) From 428b903d9a990befb147afff73af9efe736f5198 Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Thu, 27 Jan 2022 17:14:10 -0800 Subject: [PATCH 16/26] Graphics test added. --- .../OpenGLES3/None/248_LOD_CrossFade.png | 3 + .../OpenGLES3/None/248_LOD_CrossFade.png.meta | 147 ++ .../Android/Vulkan/None/248_LOD_CrossFade.png | 3 + .../Vulkan/None/248_LOD_CrossFade.png.meta | 147 ++ .../OpenGLCore/None/248_LOD_CrossFade.png | 3 + .../None/248_LOD_CrossFade.png.meta | 147 ++ .../Vulkan/None/248_LOD_CrossFade.png | 3 + .../Vulkan/None/248_LOD_CrossFade.png.meta | 147 ++ .../Vulkan/None/248_LOD_CrossFade.png | 3 + .../Vulkan/None/248_LOD_CrossFade.png.meta | 147 ++ .../Metal/None/248_LOD_CrossFade.png | 3 + .../Metal/None/248_LOD_CrossFade.png.meta | 147 ++ .../OpenGLCore/None/248_LOD_CrossFade.png | 3 + .../None/248_LOD_CrossFade.png.meta | 147 ++ .../Metal/None/248_LOD_CrossFade.png | 3 + .../Metal/None/248_LOD_CrossFade.png.meta | 147 ++ .../OpenGLCore/None/248_LOD_CrossFade.png | 3 + .../None/248_LOD_CrossFade.png.meta | 147 ++ .../Direct3D11/None/248_LOD_CrossFade.png | 3 + .../None/248_LOD_CrossFade.png.meta | 147 ++ .../Direct3D12/None/248_LOD_CrossFade.png | 3 + .../None/248_LOD_CrossFade.png.meta | 147 ++ .../Vulkan/None/248_LOD_CrossFade.png | 3 + .../Vulkan/None/248_LOD_CrossFade.png.meta | 147 ++ .../Direct3D11/None/248_LOD_CrossFade.png | 3 + .../None/248_LOD_CrossFade.png.meta | 147 ++ .../Direct3D12/None/248_LOD_CrossFade.png | 3 + .../None/248_LOD_CrossFade.png.meta | 147 ++ .../Vulkan/None/248_LOD_CrossFade.png | 3 + .../Vulkan/None/248_LOD_CrossFade.png.meta | 147 ++ .../Metal/None/248_LOD_CrossFade.png | 3 + .../Metal/None/248_LOD_CrossFade.png.meta | 147 ++ .../Assets/Scenes/248_LOD_CrossFade.meta | 8 + .../Assets/Scenes/248_LOD_CrossFade.unity | 1948 +++++++++++++++++ .../Scenes/248_LOD_CrossFade.unity.meta | 7 + .../Scenes/248_LOD_CrossFade/Baked Lit 0.mat | 132 ++ .../248_LOD_CrossFade/Baked Lit 0.mat.meta | 8 + .../Scenes/248_LOD_CrossFade/Baked Lit 1.mat | 132 ++ .../248_LOD_CrossFade/Baked Lit 1.mat.meta | 8 + .../248_LOD_CrossFade/Complex Lit 0.mat | 137 ++ .../248_LOD_CrossFade/Complex Lit 0.mat.meta | 8 + .../248_LOD_CrossFade/Complex Lit 1.mat | 137 ++ .../248_LOD_CrossFade/Complex Lit 1.mat.meta | 8 + .../Assets/Scenes/248_LOD_CrossFade/Lit 0.mat | 131 ++ .../Scenes/248_LOD_CrossFade/Lit 0.mat.meta | 8 + .../Assets/Scenes/248_LOD_CrossFade/Lit 1.mat | 131 ++ .../Scenes/248_LOD_CrossFade/Lit 1.mat.meta | 8 + .../ShaderGraph Lit 1.shadergraph | 668 ++++++ .../ShaderGraph Lit 1.shadergraph.meta | 10 + .../ShaderGraph Lit.shadergraph | 668 ++++++ .../ShaderGraph Lit.shadergraph.meta | 10 + .../ShaderGraph Unlit 1.shadergraph | 350 +++ .../ShaderGraph Unlit 1.shadergraph.meta | 10 + .../ShaderGraph Unlit.shadergraph | 350 +++ .../ShaderGraph Unlit.shadergraph.meta | 10 + .../Scenes/248_LOD_CrossFade/Simple Lit 0.mat | 135 ++ .../248_LOD_CrossFade/Simple Lit 0.mat.meta | 8 + .../Scenes/248_LOD_CrossFade/Simple Lit 1.mat | 135 ++ .../248_LOD_CrossFade/Simple Lit 1.mat.meta | 8 + .../Scenes/248_LOD_CrossFade/Unlit 0.mat | 133 ++ .../Scenes/248_LOD_CrossFade/Unlit 0.mat.meta | 8 + .../Scenes/248_LOD_CrossFade/Unlit 1.mat | 133 ++ .../Scenes/248_LOD_CrossFade/Unlit 1.mat.meta | 8 + .../ProjectSettings/EditorBuildSettings.asset | 7 +- .../CHANGELOG.md | 5 + .../Data/UniversalRenderPipelineAsset.cs | 3 + 66 files changed, 7869 insertions(+), 1 deletion(-) create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/OpenGLES3/None/248_LOD_CrossFade.png create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/OpenGLES3/None/248_LOD_CrossFade.png.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/Vulkan/None/248_LOD_CrossFade.png create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/Vulkan/None/248_LOD_CrossFade.png.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/OpenGLCore/None/248_LOD_CrossFade.png create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/OpenGLCore/None/248_LOD_CrossFade.png.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/248_LOD_CrossFade.png create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/248_LOD_CrossFade.png.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/248_LOD_CrossFade.png create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/248_LOD_CrossFade.png.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/248_LOD_CrossFade.png create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/248_LOD_CrossFade.png.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/OpenGLCore/None/248_LOD_CrossFade.png create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/OpenGLCore/None/248_LOD_CrossFade.png.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/Metal/None/248_LOD_CrossFade.png create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/Metal/None/248_LOD_CrossFade.png.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/OpenGLCore/None/248_LOD_CrossFade.png create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/OpenGLCore/None/248_LOD_CrossFade.png.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/248_LOD_CrossFade.png create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/248_LOD_CrossFade.png.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/248_LOD_CrossFade.png create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/248_LOD_CrossFade.png.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/248_LOD_CrossFade.png create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/248_LOD_CrossFade.png.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/248_LOD_CrossFade.png create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/248_LOD_CrossFade.png.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D12/None/248_LOD_CrossFade.png create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D12/None/248_LOD_CrossFade.png.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Vulkan/None/248_LOD_CrossFade.png create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Vulkan/None/248_LOD_CrossFade.png.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/iPhonePlayer/Metal/None/248_LOD_CrossFade.png create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/iPhonePlayer/Metal/None/248_LOD_CrossFade.png.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade.unity create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade.unity.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Baked Lit 0.mat create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Baked Lit 0.mat.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Baked Lit 1.mat create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Baked Lit 1.mat.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Complex Lit 0.mat create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Complex Lit 0.mat.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Complex Lit 1.mat create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Complex Lit 1.mat.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Lit 0.mat create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Lit 0.mat.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Lit 1.mat create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Lit 1.mat.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Lit 1.shadergraph create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Lit 1.shadergraph.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Lit.shadergraph create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Lit.shadergraph.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Unlit 1.shadergraph create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Unlit 1.shadergraph.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Unlit.shadergraph create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Unlit.shadergraph.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Simple Lit 0.mat create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Simple Lit 0.mat.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Simple Lit 1.mat create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Simple Lit 1.mat.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Unlit 0.mat create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Unlit 0.mat.meta create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Unlit 1.mat create mode 100644 TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Unlit 1.mat.meta diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/OpenGLES3/None/248_LOD_CrossFade.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/OpenGLES3/None/248_LOD_CrossFade.png new file mode 100644 index 00000000000..854397bb48c --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/OpenGLES3/None/248_LOD_CrossFade.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df428fa2036372ea9a6931b485134b9ebce79f1706bf1fafbc17a05e6de19076 +size 28424 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/OpenGLES3/None/248_LOD_CrossFade.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/OpenGLES3/None/248_LOD_CrossFade.png.meta new file mode 100644 index 00000000000..eef00e48c4c --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/OpenGLES3/None/248_LOD_CrossFade.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: c75c56c62f0195749aa6e9421005c57f +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: 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: 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: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: PS5 + 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/248_LOD_CrossFade.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/Vulkan/None/248_LOD_CrossFade.png new file mode 100644 index 00000000000..854397bb48c --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/Vulkan/None/248_LOD_CrossFade.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df428fa2036372ea9a6931b485134b9ebce79f1706bf1fafbc17a05e6de19076 +size 28424 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/Vulkan/None/248_LOD_CrossFade.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/Vulkan/None/248_LOD_CrossFade.png.meta new file mode 100644 index 00000000000..fd52901dd0b --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/Android/Vulkan/None/248_LOD_CrossFade.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: f48bff267b2ebda4e9f55d960cdf033c +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: 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: 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: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: PS5 + 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/248_LOD_CrossFade.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/OpenGLCore/None/248_LOD_CrossFade.png new file mode 100644 index 00000000000..854397bb48c --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/OpenGLCore/None/248_LOD_CrossFade.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df428fa2036372ea9a6931b485134b9ebce79f1706bf1fafbc17a05e6de19076 +size 28424 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/OpenGLCore/None/248_LOD_CrossFade.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/OpenGLCore/None/248_LOD_CrossFade.png.meta new file mode 100644 index 00000000000..b4d1f91b3b1 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/OpenGLCore/None/248_LOD_CrossFade.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: 81134ef4493d37f4a9953d830c2d4572 +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: 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: 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: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: PS5 + 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/248_LOD_CrossFade.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/248_LOD_CrossFade.png new file mode 100644 index 00000000000..854397bb48c --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/248_LOD_CrossFade.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df428fa2036372ea9a6931b485134b9ebce79f1706bf1fafbc17a05e6de19076 +size 28424 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/248_LOD_CrossFade.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/248_LOD_CrossFade.png.meta new file mode 100644 index 00000000000..0ca9d2321ef --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/248_LOD_CrossFade.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: e69121c42bf611b41988012cc762e673 +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: 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: 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: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: PS5 + 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/248_LOD_CrossFade.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/248_LOD_CrossFade.png new file mode 100644 index 00000000000..854397bb48c --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/248_LOD_CrossFade.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df428fa2036372ea9a6931b485134b9ebce79f1706bf1fafbc17a05e6de19076 +size 28424 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/248_LOD_CrossFade.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/248_LOD_CrossFade.png.meta new file mode 100644 index 00000000000..edb6b10129d --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/248_LOD_CrossFade.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: a91976441667905469aa44f9de8c014c +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: 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: 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: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: PS5 + 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/248_LOD_CrossFade.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/248_LOD_CrossFade.png new file mode 100644 index 00000000000..854397bb48c --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/248_LOD_CrossFade.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df428fa2036372ea9a6931b485134b9ebce79f1706bf1fafbc17a05e6de19076 +size 28424 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/248_LOD_CrossFade.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/248_LOD_CrossFade.png.meta new file mode 100644 index 00000000000..5e2e044b0cf --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/248_LOD_CrossFade.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: 0bab6d6e9dbd75f40881f56368868202 +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: 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: 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: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: PS5 + 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/248_LOD_CrossFade.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/OpenGLCore/None/248_LOD_CrossFade.png new file mode 100644 index 00000000000..854397bb48c --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/OpenGLCore/None/248_LOD_CrossFade.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df428fa2036372ea9a6931b485134b9ebce79f1706bf1fafbc17a05e6de19076 +size 28424 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/OpenGLCore/None/248_LOD_CrossFade.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/OpenGLCore/None/248_LOD_CrossFade.png.meta new file mode 100644 index 00000000000..93fb3975682 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXEditor/OpenGLCore/None/248_LOD_CrossFade.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: 4ce50ed0178a92145a4d7adb447b61da +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: 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: 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: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: PS5 + 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/248_LOD_CrossFade.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/Metal/None/248_LOD_CrossFade.png new file mode 100644 index 00000000000..854397bb48c --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/Metal/None/248_LOD_CrossFade.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df428fa2036372ea9a6931b485134b9ebce79f1706bf1fafbc17a05e6de19076 +size 28424 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/Metal/None/248_LOD_CrossFade.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/Metal/None/248_LOD_CrossFade.png.meta new file mode 100644 index 00000000000..78a8731e189 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/Metal/None/248_LOD_CrossFade.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: e51009d123b63aa4d884247ae62b674b +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: 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: 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: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: PS5 + 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/248_LOD_CrossFade.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/OpenGLCore/None/248_LOD_CrossFade.png new file mode 100644 index 00000000000..854397bb48c --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/OpenGLCore/None/248_LOD_CrossFade.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df428fa2036372ea9a6931b485134b9ebce79f1706bf1fafbc17a05e6de19076 +size 28424 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/OpenGLCore/None/248_LOD_CrossFade.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/OpenGLCore/None/248_LOD_CrossFade.png.meta new file mode 100644 index 00000000000..a7a3c4d7a15 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/OSXPlayer/OpenGLCore/None/248_LOD_CrossFade.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: 6d30f67bf229c1b4bb096be32525d329 +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: 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: 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: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: PS5 + 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/248_LOD_CrossFade.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/248_LOD_CrossFade.png new file mode 100644 index 00000000000..854397bb48c --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/248_LOD_CrossFade.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df428fa2036372ea9a6931b485134b9ebce79f1706bf1fafbc17a05e6de19076 +size 28424 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/248_LOD_CrossFade.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/248_LOD_CrossFade.png.meta new file mode 100644 index 00000000000..cfa54083f3e --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/248_LOD_CrossFade.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: df2e9590c1497e4498ee2b2819b5af6f +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 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: PS5 + 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/Direct3D12/None/248_LOD_CrossFade.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/248_LOD_CrossFade.png new file mode 100644 index 00000000000..854397bb48c --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/248_LOD_CrossFade.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df428fa2036372ea9a6931b485134b9ebce79f1706bf1fafbc17a05e6de19076 +size 28424 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/248_LOD_CrossFade.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/248_LOD_CrossFade.png.meta new file mode 100644 index 00000000000..19c035825ac --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/248_LOD_CrossFade.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: c86cf286a45754e43a7ff2d072ed3dd6 +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: 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: 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: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: PS5 + 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/248_LOD_CrossFade.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/248_LOD_CrossFade.png new file mode 100644 index 00000000000..854397bb48c --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/248_LOD_CrossFade.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df428fa2036372ea9a6931b485134b9ebce79f1706bf1fafbc17a05e6de19076 +size 28424 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/248_LOD_CrossFade.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/248_LOD_CrossFade.png.meta new file mode 100644 index 00000000000..9ca0e36f529 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/248_LOD_CrossFade.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: 3330b99d38a056846abffa4e2ccc007b +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: 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: 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: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: PS5 + 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/248_LOD_CrossFade.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/248_LOD_CrossFade.png new file mode 100644 index 00000000000..854397bb48c --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/248_LOD_CrossFade.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df428fa2036372ea9a6931b485134b9ebce79f1706bf1fafbc17a05e6de19076 +size 28424 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/248_LOD_CrossFade.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/248_LOD_CrossFade.png.meta new file mode 100644 index 00000000000..05440dd1149 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/248_LOD_CrossFade.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: 7ac0525937a154b4fb1a7adfad4d121d +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: 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: 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: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: PS5 + 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/248_LOD_CrossFade.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D12/None/248_LOD_CrossFade.png new file mode 100644 index 00000000000..854397bb48c --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D12/None/248_LOD_CrossFade.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df428fa2036372ea9a6931b485134b9ebce79f1706bf1fafbc17a05e6de19076 +size 28424 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D12/None/248_LOD_CrossFade.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D12/None/248_LOD_CrossFade.png.meta new file mode 100644 index 00000000000..0c6b222ec8a --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D12/None/248_LOD_CrossFade.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: 6ba126652841c2149a7cc538df2a4972 +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: 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: 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: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: PS5 + 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/248_LOD_CrossFade.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Vulkan/None/248_LOD_CrossFade.png new file mode 100644 index 00000000000..854397bb48c --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Vulkan/None/248_LOD_CrossFade.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df428fa2036372ea9a6931b485134b9ebce79f1706bf1fafbc17a05e6de19076 +size 28424 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Vulkan/None/248_LOD_CrossFade.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Vulkan/None/248_LOD_CrossFade.png.meta new file mode 100644 index 00000000000..6ef98685d29 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsPlayer/Vulkan/None/248_LOD_CrossFade.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: 994efb2c4b3252a4cae68d881220346c +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: 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: 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: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: PS5 + 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/248_LOD_CrossFade.png b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/iPhonePlayer/Metal/None/248_LOD_CrossFade.png new file mode 100644 index 00000000000..854397bb48c --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/iPhonePlayer/Metal/None/248_LOD_CrossFade.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df428fa2036372ea9a6931b485134b9ebce79f1706bf1fafbc17a05e6de19076 +size 28424 diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/iPhonePlayer/Metal/None/248_LOD_CrossFade.png.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/iPhonePlayer/Metal/None/248_LOD_CrossFade.png.meta new file mode 100644 index 00000000000..6fa6c075494 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/ReferenceImages/Linear/iPhonePlayer/Metal/None/248_LOD_CrossFade.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: f9401fa481504a84d986be183ce1c4db +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: 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: 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: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: PS5 + 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/248_LOD_CrossFade.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade.meta new file mode 100644 index 00000000000..d024734c8d0 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a91b05367874bb847872cbdb392ac268 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade.unity b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade.unity new file mode 100644 index 00000000000..e808b22eb55 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade.unity @@ -0,0 +1,1948 @@ +%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: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + 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.12731749, g: 0.13414757, b: 0.1210787, 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: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + 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: 0} + m_LightingSettings: {fileID: 0} +--- !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 &84691125 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 84691127} + - component: {fileID: 84691126} + m_Layer: 0 + m_Name: CrossFade Baked Lit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!205 &84691126 +LODGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 84691125} + serializedVersion: 2 + m_LocalReferencePoint: {x: 0, y: 0, z: 0} + m_Size: 1 + m_FadeMode: 1 + m_AnimateCrossFading: 0 + m_LastLODIsBillboard: 0 + m_LODs: + - screenRelativeHeight: 0.3 + fadeTransitionWidth: 0.5 + renderers: + - renderer: {fileID: 990138377} + - screenRelativeHeight: 0 + fadeTransitionWidth: 0.5 + renderers: + - renderer: {fileID: 1585792253} + m_Enabled: 1 +--- !u!4 &84691127 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 84691125} + 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: + - {fileID: 990138379} + - {fileID: 1585792255} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &203187185 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 203187187} + - component: {fileID: 203187186} + m_Layer: 0 + m_Name: CrossFade ShaderGraph Lit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!205 &203187186 +LODGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 203187185} + serializedVersion: 2 + m_LocalReferencePoint: {x: 0, y: 0, z: 0} + m_Size: 1 + m_FadeMode: 1 + m_AnimateCrossFading: 0 + m_LastLODIsBillboard: 0 + m_LODs: + - screenRelativeHeight: 0.3 + fadeTransitionWidth: 0.5 + renderers: + - renderer: {fileID: 1518560847} + - screenRelativeHeight: 0 + fadeTransitionWidth: 0.5 + renderers: + - renderer: {fileID: 1174524111} + m_Enabled: 1 +--- !u!4 &203187187 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 203187185} + 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: + - {fileID: 1518560849} + - {fileID: 1174524113} + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &465389430 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 465389432} + - component: {fileID: 465389431} + m_Layer: 0 + m_Name: CrossFade Unlit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!205 &465389431 +LODGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 465389430} + serializedVersion: 2 + m_LocalReferencePoint: {x: 0, y: 0, z: 0} + m_Size: 1 + m_FadeMode: 1 + m_AnimateCrossFading: 0 + m_LastLODIsBillboard: 0 + m_LODs: + - screenRelativeHeight: 0.3 + fadeTransitionWidth: 0.5 + renderers: + - renderer: {fileID: 543175329} + - screenRelativeHeight: 0 + fadeTransitionWidth: 0.5 + renderers: + - renderer: {fileID: 1294346383} + m_Enabled: 1 +--- !u!4 &465389432 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 465389430} + 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: + - {fileID: 543175331} + - {fileID: 1294346385} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &485374114 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 485374117} + - component: {fileID: 485374116} + - component: {fileID: 485374115} + m_Layer: 0 + m_Name: Quad 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &485374115 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 485374114} + 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: 8dcb186bba4fdfc4f96f4ec020fd9d52, 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 &485374116 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 485374114} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &485374117 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 485374114} + 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: 1959018816} + m_RootOrder: -1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &493860116 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 493860119} + - component: {fileID: 493860118} + - component: {fileID: 493860117} + m_Layer: 0 + m_Name: Quad 0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &493860117 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 493860116} + 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: -876546973899608171, guid: aa8f5fe9e47963a4f903cdc8c2ca7c21, type: 3} + 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 &493860118 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 493860116} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &493860119 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 493860116} + 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: 591211867} + m_RootOrder: -1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &533906014 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 533906018} + - component: {fileID: 533906017} + - component: {fileID: 533906015} + m_Layer: 0 + m_Name: Quad 0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &533906015 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 533906014} + 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: 39cfa1d543f26df469467100545e3f2d, 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 &533906017 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 533906014} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &533906018 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 533906014} + 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: 861498641} + m_RootOrder: -1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &543175328 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 543175331} + - component: {fileID: 543175330} + - component: {fileID: 543175329} + m_Layer: 0 + m_Name: Quad 0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &543175329 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 543175328} + 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: 8498d99636122af41b5fcfb72099975e, 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 &543175330 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 543175328} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &543175331 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 543175328} + 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: 465389432} + m_RootOrder: -1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &591211865 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 591211867} + - component: {fileID: 591211866} + m_Layer: 0 + m_Name: CrossFade ShaderGraph Unlit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!205 &591211866 +LODGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 591211865} + serializedVersion: 2 + m_LocalReferencePoint: {x: 0, y: 0, z: 0} + m_Size: 1 + m_FadeMode: 1 + m_AnimateCrossFading: 0 + m_LastLODIsBillboard: 0 + m_LODs: + - screenRelativeHeight: 0.3 + fadeTransitionWidth: 0.5 + renderers: + - renderer: {fileID: 493860117} + - screenRelativeHeight: 0 + fadeTransitionWidth: 0.5 + renderers: + - renderer: {fileID: 1973231713} + m_Enabled: 1 +--- !u!4 &591211867 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 591211865} + 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: + - {fileID: 493860119} + - {fileID: 1973231715} + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &836379002 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 836379005} + - component: {fileID: 836379004} + - component: {fileID: 836379003} + m_Layer: 0 + m_Name: Quad 0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &836379003 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 836379002} + 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: 7385977b44a1eed4c838cbe60247d6f6, 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 &836379004 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 836379002} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &836379005 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 836379002} + 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: 900447539} + m_RootOrder: -1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &861498639 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 861498641} + - component: {fileID: 861498640} + m_Layer: 0 + m_Name: CrossFade Lit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!205 &861498640 +LODGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 861498639} + serializedVersion: 2 + m_LocalReferencePoint: {x: 0, y: 0, z: 0} + m_Size: 1 + m_FadeMode: 1 + m_AnimateCrossFading: 0 + m_LastLODIsBillboard: 0 + m_LODs: + - screenRelativeHeight: 0.3 + fadeTransitionWidth: 0.5 + renderers: + - renderer: {fileID: 533906015} + - screenRelativeHeight: 0 + fadeTransitionWidth: 0.5 + renderers: + - renderer: {fileID: 1939442846} + m_Enabled: 1 +--- !u!4 &861498641 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 861498639} + 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: 533906018} + - {fileID: 1939442849} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &900447537 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 900447539} + - component: {fileID: 900447538} + m_Layer: 0 + m_Name: CrossFade Complex Lit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!205 &900447538 +LODGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 900447537} + serializedVersion: 2 + m_LocalReferencePoint: {x: 0, y: 0, z: 0} + m_Size: 1 + m_FadeMode: 1 + m_AnimateCrossFading: 0 + m_LastLODIsBillboard: 0 + m_LODs: + - screenRelativeHeight: 0.3 + fadeTransitionWidth: 0.5 + renderers: + - renderer: {fileID: 836379003} + - screenRelativeHeight: 0 + fadeTransitionWidth: 0.5 + renderers: + - renderer: {fileID: 1962049254} + m_Enabled: 1 +--- !u!4 &900447539 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 900447537} + 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: + - {fileID: 836379005} + - {fileID: 1962049256} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &961739749 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 961739753} + - component: {fileID: 961739752} + - component: {fileID: 961739751} + - component: {fileID: 961739750} + - component: {fileID: 961739754} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &961739750 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 961739749} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 0 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 0 + 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!81 &961739751 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 961739749} + m_Enabled: 1 +--- !u!20 &961739752 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 961739749} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0, g: 0, b: 0, 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: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + 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: 0 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &961739753 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 961739749} + m_LocalRotation: {x: -0, y: 0.24021108, z: -0, w: 0.97072065} + m_LocalPosition: {x: 0.062, y: 0, z: -2.551} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 27.798, z: 0} +--- !u!114 &961739754 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 961739749} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73231aa468d81ea49bc3d914080de185, type: 3} + m_Name: + m_EditorClassIdentifier: + ImageComparisonSettings: + TargetWidth: 720 + TargetHeight: 440 + PerPixelCorrectnessThreshold: 0.001 + PerPixelGammaThreshold: 0.003921569 + PerPixelAlphaThreshold: 0.003921569 + AverageCorrectnessThreshold: 0.005 + IncorrectPixelsThreshold: 0.0000038146973 + UseHDR: 0 + UseBackBuffer: 0 + ImageResolution: 0 + ActiveImageTests: 1 + ActivePixelTests: 7 + WaitFrames: 0 + XRCompatible: 1 + CheckMemoryAllocation: 1 +--- !u!1 &990138376 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 990138379} + - component: {fileID: 990138378} + - component: {fileID: 990138377} + m_Layer: 0 + m_Name: Quad 0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &990138377 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 990138376} + 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: f28da8d17e9c7e345816ad01070c8ecd, 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 &990138378 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 990138376} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &990138379 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 990138376} + 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: 84691127} + m_RootOrder: -1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1174524110 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1174524113} + - component: {fileID: 1174524112} + - component: {fileID: 1174524111} + m_Layer: 0 + m_Name: Quad 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1174524111 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1174524110} + 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: -876546973899608171, guid: f696651564d092544bf0841820b66cff, type: 3} + 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 &1174524112 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1174524110} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1174524113 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1174524110} + 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: 203187187} + m_RootOrder: -1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1286927644 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1286927647} + - component: {fileID: 1286927646} + - component: {fileID: 1286927645} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1286927645 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1286927644} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_UsePipelineSettings: 1 + m_AdditionalLightsShadowResolutionTier: 2 + m_LightLayerMask: 1 + m_CustomShadowLayers: 0 + m_ShadowLayerMask: 1 + m_LightCookieSize: {x: 1, y: 1} + m_LightCookieOffset: {x: 0, y: 0} +--- !u!108 &1286927646 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1286927644} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1286927647 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1286927644} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -1.06, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1294346382 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1294346385} + - component: {fileID: 1294346384} + - component: {fileID: 1294346383} + m_Layer: 0 + m_Name: Quad 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1294346383 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1294346382} + 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: acae50092e375524c89f41412f21dcdc, 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 &1294346384 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1294346382} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1294346385 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1294346382} + 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: 465389432} + m_RootOrder: -1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1518560846 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1518560849} + - component: {fileID: 1518560848} + - component: {fileID: 1518560847} + m_Layer: 0 + m_Name: Quad 0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1518560847 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1518560846} + 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: -876546973899608171, guid: 3334f42ddafb98c4e80f007b48772b35, type: 3} + 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 &1518560848 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1518560846} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1518560849 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1518560846} + 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: 203187187} + m_RootOrder: -1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1585792252 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1585792255} + - component: {fileID: 1585792254} + - component: {fileID: 1585792253} + m_Layer: 0 + m_Name: Quad 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1585792253 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1585792252} + 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: 1e88a497d9211e2488a7b45a27fe3a63, 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 &1585792254 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1585792252} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1585792255 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1585792252} + 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: 84691127} + m_RootOrder: -1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1939442845 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1939442849} + - component: {fileID: 1939442848} + - component: {fileID: 1939442846} + m_Layer: 0 + m_Name: Quad 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1939442846 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1939442845} + 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: 444fdad4dc469c745a05ba198ef30953, 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 &1939442848 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1939442845} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1939442849 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1939442845} + 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: 861498641} + m_RootOrder: -1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1959018814 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1959018816} + - component: {fileID: 1959018815} + m_Layer: 0 + m_Name: CrossFade Simple Lit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!205 &1959018815 +LODGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1959018814} + serializedVersion: 2 + m_LocalReferencePoint: {x: 0, y: 0, z: 0} + m_Size: 1 + m_FadeMode: 1 + m_AnimateCrossFading: 0 + m_LastLODIsBillboard: 0 + m_LODs: + - screenRelativeHeight: 0.3 + fadeTransitionWidth: 0.5 + renderers: + - renderer: {fileID: 2072799373} + - screenRelativeHeight: 0 + fadeTransitionWidth: 0.5 + renderers: + - renderer: {fileID: 485374115} + m_Enabled: 1 +--- !u!4 &1959018816 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1959018814} + 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: + - {fileID: 2072799375} + - {fileID: 485374117} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1962049253 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1962049256} + - component: {fileID: 1962049255} + - component: {fileID: 1962049254} + m_Layer: 0 + m_Name: Quad 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1962049254 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1962049253} + 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: 1a6df056ce9f44043a5b9f9537fd5c11, 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 &1962049255 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1962049253} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1962049256 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1962049253} + 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: 900447539} + m_RootOrder: -1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1973231712 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1973231715} + - component: {fileID: 1973231714} + - component: {fileID: 1973231713} + m_Layer: 0 + m_Name: Quad 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1973231713 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1973231712} + 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: -876546973899608171, guid: e218ccae4b3e12540ab8ca2e0a6ea74d, type: 3} + 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 &1973231714 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1973231712} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1973231715 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1973231712} + 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: 591211867} + m_RootOrder: -1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2072799372 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2072799375} + - component: {fileID: 2072799374} + - component: {fileID: 2072799373} + m_Layer: 0 + m_Name: Quad 0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &2072799373 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072799372} + 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: 6d9e6dc9b046fd24f90e982903768d19, 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 &2072799374 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072799372} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &2072799375 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072799372} + 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: 1959018816} + m_RootOrder: -1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade.unity.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade.unity.meta new file mode 100644 index 00000000000..c91dabf161b --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3b4bfea1d564d9541bb3a139484410ef +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Baked Lit 0.mat b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Baked Lit 0.mat new file mode 100644 index 00000000000..3ab15075f7f --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Baked Lit 0.mat @@ -0,0 +1,132 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7271037507989722835 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 6 +--- !u!21 &2100000 +Material: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Baked Lit 0 + m_Shader: {fileID: 4800000, guid: 0ca6dca7396eb48e5849247ffd444914, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BlendOp: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 0, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Baked Lit 0.mat.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Baked Lit 0.mat.meta new file mode 100644 index 00000000000..c7e30777813 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Baked Lit 0.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f28da8d17e9c7e345816ad01070c8ecd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Baked Lit 1.mat b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Baked Lit 1.mat new file mode 100644 index 00000000000..5637380b3fa --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Baked Lit 1.mat @@ -0,0 +1,132 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7271037507989722835 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 6 +--- !u!21 &2100000 +Material: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Baked Lit 1 + m_Shader: {fileID: 4800000, guid: 0ca6dca7396eb48e5849247ffd444914, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BlendOp: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Baked Lit 1.mat.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Baked Lit 1.mat.meta new file mode 100644 index 00000000000..4f48951eef6 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Baked Lit 1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1e88a497d9211e2488a7b45a27fe3a63 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Complex Lit 0.mat b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Complex Lit 0.mat new file mode 100644 index 00000000000..9feba06af13 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Complex Lit 0.mat @@ -0,0 +1,137 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7271037507989722835 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 6 +--- !u!21 &2100000 +Material: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Complex Lit 0 + m_Shader: {fileID: 4800000, guid: ee7e4c9a5f6364b688a332c67fc32cca, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ShaderKeywords: _ENVIRONMENTREFLECTIONS_OFF _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ClearCoatMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BlendOp: 0 + - _BumpScale: 1 + - _ClearCoat: 0 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 0 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 0, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Complex Lit 0.mat.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Complex Lit 0.mat.meta new file mode 100644 index 00000000000..ff860028f38 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Complex Lit 0.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7385977b44a1eed4c838cbe60247d6f6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Complex Lit 1.mat b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Complex Lit 1.mat new file mode 100644 index 00000000000..75d4d5385aa --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Complex Lit 1.mat @@ -0,0 +1,137 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7271037507989722835 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 6 +--- !u!21 &2100000 +Material: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Complex Lit 1 + m_Shader: {fileID: 4800000, guid: ee7e4c9a5f6364b688a332c67fc32cca, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ShaderKeywords: _ENVIRONMENTREFLECTIONS_OFF _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ClearCoatMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BlendOp: 0 + - _BumpScale: 1 + - _ClearCoat: 0 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 0 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Complex Lit 1.mat.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Complex Lit 1.mat.meta new file mode 100644 index 00000000000..a96f9872dbe --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Complex Lit 1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1a6df056ce9f44043a5b9f9537fd5c11 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Lit 0.mat b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Lit 0.mat new file mode 100644 index 00000000000..bb08d3aa44a --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Lit 0.mat @@ -0,0 +1,131 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7271037507989722835 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 6 +--- !u!21 &2100000 +Material: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Lit 0 + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ShaderKeywords: _ENVIRONMENTREFLECTIONS_OFF _RECEIVE_SHADOWS_OFF _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 0 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 0 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 0, b: 0, a: 1} + - _Color: {r: 1, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Lit 0.mat.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Lit 0.mat.meta new file mode 100644 index 00000000000..323b33a9c29 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Lit 0.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 39cfa1d543f26df469467100545e3f2d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Lit 1.mat b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Lit 1.mat new file mode 100644 index 00000000000..2e1ce8f7570 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Lit 1.mat @@ -0,0 +1,131 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7271037507989722835 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 6 +--- !u!21 &2100000 +Material: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Lit 1 + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ShaderKeywords: _ENVIRONMENTREFLECTIONS_OFF _RECEIVE_SHADOWS_OFF _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 0 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 0 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Lit 1.mat.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Lit 1.mat.meta new file mode 100644 index 00000000000..9953dc7b2b5 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Lit 1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 444fdad4dc469c745a05ba198ef30953 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Lit 1.shadergraph b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Lit 1.shadergraph new file mode 100644 index 00000000000..405cef9af75 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Lit 1.shadergraph @@ -0,0 +1,668 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "b0fc8ac8af494af6be9030c2596a7802", + "m_Properties": [], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "0eabce13ee7242348d924ee49c487e86" + } + ], + "m_Nodes": [ + { + "m_Id": "e1494422488a4ba29326f33942f2c9d7" + }, + { + "m_Id": "f6255a5f5f8742c1805a0a5f6f6c5448" + }, + { + "m_Id": "8d87d29c0a2242ad97aa6fbf23c99230" + }, + { + "m_Id": "d064dc06e7cf4e6dbd418c3793b17a62" + }, + { + "m_Id": "470eefb5322745d69508f2f1357d3665" + }, + { + "m_Id": "79876f5b630645ffacdec5e0d6177c65" + }, + { + "m_Id": "c66538f5e2b94fe586417a8f6830632e" + }, + { + "m_Id": "0886ca9023154c97855b1c325a3e8ca9" + }, + { + "m_Id": "ce987e66b5f74572b1d28a2fed0b6dd9" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [ + { + "m_Id": "e1494422488a4ba29326f33942f2c9d7" + }, + { + "m_Id": "f6255a5f5f8742c1805a0a5f6f6c5448" + }, + { + "m_Id": "8d87d29c0a2242ad97aa6fbf23c99230" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 200.0 + }, + "m_Blocks": [ + { + "m_Id": "d064dc06e7cf4e6dbd418c3793b17a62" + }, + { + "m_Id": "470eefb5322745d69508f2f1357d3665" + }, + { + "m_Id": "79876f5b630645ffacdec5e0d6177c65" + }, + { + "m_Id": "c66538f5e2b94fe586417a8f6830632e" + }, + { + "m_Id": "0886ca9023154c97855b1c325a3e8ca9" + }, + { + "m_Id": "ce987e66b5f74572b1d28a2fed0b6dd9" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "1bbc92eb8c52478594fb900650778a6d" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "069fbecb3a5643e2be8511e030a6e9fe", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "0886ca9023154c97855b1c325a3e8ca9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Occlusion", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "7d15473f24e541f5924f2250ade619fc" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Occlusion" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "0eabce13ee7242348d924ee49c487e86", + "m_Name": "", + "m_ChildObjectList": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "16f57cff3d05488eb76df1eab944629e", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "1bbc92eb8c52478594fb900650778a6d", + "m_ActiveSubTarget": { + "m_Id": "3865999808074c1099a57dfe1dc54996" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 0, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": false, + "m_ReceiveShadows": false, + "m_SupportsLODCrossFade": true, + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "2c0cbad9bb4e499fbd04fc61b864c32e", + "m_Id": 0, + "m_DisplayName": "Specular Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Specular", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalLitSubTarget", + "m_ObjectId": "3865999808074c1099a57dfe1dc54996", + "m_WorkflowMode": 0, + "m_NormalDropOffSpace": 0, + "m_ClearCoat": false, + "m_BlendModePreserveSpecular": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "3df2bbc783a2438da6028af0c59820a9", + "m_Id": 0, + "m_DisplayName": "Emission", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Emission", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 1, + "m_DefaultColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "470eefb5322745d69508f2f1357d3665", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.NormalTS", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "eed6c8dedb7644e8abcfe92d8f11fa1f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.NormalTS" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "79876f5b630645ffacdec5e0d6177c65", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Smoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "b15e8fd5c82f4a5582cc2f0ab30a84fa" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Smoothness" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7d15473f24e541f5924f2250ade619fc", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Occlusion", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "8d87d29c0a2242ad97aa6fbf23c99230", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "b8865c317d7a46fcb0cf076ef3707bf0" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "a1efb0c5d31b4fd8ac9f7591adc19f27", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b15e8fd5c82f4a5582cc2f0ab30a84fa", + "m_Id": 0, + "m_DisplayName": "Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Smoothness", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "b8865c317d7a46fcb0cf076ef3707bf0", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "c66538f5e2b94fe586417a8f6830632e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Emission", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "3df2bbc783a2438da6028af0c59820a9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Emission" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "ce987e66b5f74572b1d28a2fed0b6dd9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Specular", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "2c0cbad9bb4e499fbd04fc61b864c32e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Specular" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "d064dc06e7cf4e6dbd418c3793b17a62", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "16f57cff3d05488eb76df1eab944629e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "e1494422488a4ba29326f33942f2c9d7", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "a1efb0c5d31b4fd8ac9f7591adc19f27" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "eed6c8dedb7644e8abcfe92d8f11fa1f", + "m_Id": 0, + "m_DisplayName": "Normal (Tangent Space)", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "NormalTS", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "f6255a5f5f8742c1805a0a5f6f6c5448", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "069fbecb3a5643e2be8511e030a6e9fe" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Lit 1.shadergraph.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Lit 1.shadergraph.meta new file mode 100644 index 00000000000..54c2d3eacfa --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Lit 1.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: f696651564d092544bf0841820b66cff +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Lit.shadergraph b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Lit.shadergraph new file mode 100644 index 00000000000..1bc1fa99be1 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Lit.shadergraph @@ -0,0 +1,668 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "b0fc8ac8af494af6be9030c2596a7802", + "m_Properties": [], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "0eabce13ee7242348d924ee49c487e86" + } + ], + "m_Nodes": [ + { + "m_Id": "e1494422488a4ba29326f33942f2c9d7" + }, + { + "m_Id": "f6255a5f5f8742c1805a0a5f6f6c5448" + }, + { + "m_Id": "8d87d29c0a2242ad97aa6fbf23c99230" + }, + { + "m_Id": "d064dc06e7cf4e6dbd418c3793b17a62" + }, + { + "m_Id": "470eefb5322745d69508f2f1357d3665" + }, + { + "m_Id": "79876f5b630645ffacdec5e0d6177c65" + }, + { + "m_Id": "c66538f5e2b94fe586417a8f6830632e" + }, + { + "m_Id": "0886ca9023154c97855b1c325a3e8ca9" + }, + { + "m_Id": "611f9205b2184986950f3a69be6bb0d8" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [ + { + "m_Id": "e1494422488a4ba29326f33942f2c9d7" + }, + { + "m_Id": "f6255a5f5f8742c1805a0a5f6f6c5448" + }, + { + "m_Id": "8d87d29c0a2242ad97aa6fbf23c99230" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 200.0 + }, + "m_Blocks": [ + { + "m_Id": "d064dc06e7cf4e6dbd418c3793b17a62" + }, + { + "m_Id": "470eefb5322745d69508f2f1357d3665" + }, + { + "m_Id": "79876f5b630645ffacdec5e0d6177c65" + }, + { + "m_Id": "c66538f5e2b94fe586417a8f6830632e" + }, + { + "m_Id": "0886ca9023154c97855b1c325a3e8ca9" + }, + { + "m_Id": "611f9205b2184986950f3a69be6bb0d8" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "1bbc92eb8c52478594fb900650778a6d" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "069fbecb3a5643e2be8511e030a6e9fe", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "0886ca9023154c97855b1c325a3e8ca9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Occlusion", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "7d15473f24e541f5924f2250ade619fc" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Occlusion" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "0eabce13ee7242348d924ee49c487e86", + "m_Name": "", + "m_ChildObjectList": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "16f57cff3d05488eb76df1eab944629e", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "1bbc92eb8c52478594fb900650778a6d", + "m_ActiveSubTarget": { + "m_Id": "3865999808074c1099a57dfe1dc54996" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 0, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": false, + "m_ReceiveShadows": false, + "m_SupportsLODCrossFade": true, + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "1fc4749e22d742cdbebe1810afa958da", + "m_Id": 0, + "m_DisplayName": "Specular Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Specular", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalLitSubTarget", + "m_ObjectId": "3865999808074c1099a57dfe1dc54996", + "m_WorkflowMode": 0, + "m_NormalDropOffSpace": 0, + "m_ClearCoat": false, + "m_BlendModePreserveSpecular": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "3df2bbc783a2438da6028af0c59820a9", + "m_Id": 0, + "m_DisplayName": "Emission", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Emission", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 1, + "m_DefaultColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "470eefb5322745d69508f2f1357d3665", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.NormalTS", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "eed6c8dedb7644e8abcfe92d8f11fa1f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.NormalTS" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "611f9205b2184986950f3a69be6bb0d8", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Specular", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "1fc4749e22d742cdbebe1810afa958da" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Specular" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "79876f5b630645ffacdec5e0d6177c65", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Smoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "b15e8fd5c82f4a5582cc2f0ab30a84fa" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Smoothness" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7d15473f24e541f5924f2250ade619fc", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Occlusion", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "8d87d29c0a2242ad97aa6fbf23c99230", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "b8865c317d7a46fcb0cf076ef3707bf0" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "a1efb0c5d31b4fd8ac9f7591adc19f27", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b15e8fd5c82f4a5582cc2f0ab30a84fa", + "m_Id": 0, + "m_DisplayName": "Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Smoothness", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "b8865c317d7a46fcb0cf076ef3707bf0", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "c66538f5e2b94fe586417a8f6830632e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Emission", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "3df2bbc783a2438da6028af0c59820a9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Emission" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "d064dc06e7cf4e6dbd418c3793b17a62", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "16f57cff3d05488eb76df1eab944629e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "e1494422488a4ba29326f33942f2c9d7", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "a1efb0c5d31b4fd8ac9f7591adc19f27" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "eed6c8dedb7644e8abcfe92d8f11fa1f", + "m_Id": 0, + "m_DisplayName": "Normal (Tangent Space)", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "NormalTS", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "f6255a5f5f8742c1805a0a5f6f6c5448", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "069fbecb3a5643e2be8511e030a6e9fe" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Lit.shadergraph.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Lit.shadergraph.meta new file mode 100644 index 00000000000..56e28d3dbdb --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Lit.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 3334f42ddafb98c4e80f007b48772b35 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Unlit 1.shadergraph b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Unlit 1.shadergraph new file mode 100644 index 00000000000..8f2f8565c57 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Unlit 1.shadergraph @@ -0,0 +1,350 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "b0fc8ac8af494af6be9030c2596a7802", + "m_Properties": [], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "0cb4cad3387c45e98ccc46bb9735cc63" + } + ], + "m_Nodes": [ + { + "m_Id": "e1494422488a4ba29326f33942f2c9d7" + }, + { + "m_Id": "f6255a5f5f8742c1805a0a5f6f6c5448" + }, + { + "m_Id": "8d87d29c0a2242ad97aa6fbf23c99230" + }, + { + "m_Id": "d064dc06e7cf4e6dbd418c3793b17a62" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [ + { + "m_Id": "e1494422488a4ba29326f33942f2c9d7" + }, + { + "m_Id": "f6255a5f5f8742c1805a0a5f6f6c5448" + }, + { + "m_Id": "8d87d29c0a2242ad97aa6fbf23c99230" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 200.0 + }, + "m_Blocks": [ + { + "m_Id": "d064dc06e7cf4e6dbd418c3793b17a62" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "1bbc92eb8c52478594fb900650778a6d" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "069fbecb3a5643e2be8511e030a6e9fe", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "0cb4cad3387c45e98ccc46bb9735cc63", + "m_Name": "", + "m_ChildObjectList": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "16f57cff3d05488eb76df1eab944629e", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "1bbc92eb8c52478594fb900650778a6d", + "m_ActiveSubTarget": { + "m_Id": "8ea03629dfb14d55805d54195a87748b" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 0, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": false, + "m_ReceiveShadows": true, + "m_SupportsLODCrossFade": true, + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "8d87d29c0a2242ad97aa6fbf23c99230", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "b8865c317d7a46fcb0cf076ef3707bf0" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalUnlitSubTarget", + "m_ObjectId": "8ea03629dfb14d55805d54195a87748b" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "a1efb0c5d31b4fd8ac9f7591adc19f27", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "b8865c317d7a46fcb0cf076ef3707bf0", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "d064dc06e7cf4e6dbd418c3793b17a62", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "16f57cff3d05488eb76df1eab944629e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "e1494422488a4ba29326f33942f2c9d7", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "a1efb0c5d31b4fd8ac9f7591adc19f27" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "f6255a5f5f8742c1805a0a5f6f6c5448", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "069fbecb3a5643e2be8511e030a6e9fe" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Unlit 1.shadergraph.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Unlit 1.shadergraph.meta new file mode 100644 index 00000000000..35c784577a9 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Unlit 1.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: e218ccae4b3e12540ab8ca2e0a6ea74d +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Unlit.shadergraph b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Unlit.shadergraph new file mode 100644 index 00000000000..27cf0495ee4 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Unlit.shadergraph @@ -0,0 +1,350 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "b0fc8ac8af494af6be9030c2596a7802", + "m_Properties": [], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "0cb4cad3387c45e98ccc46bb9735cc63" + } + ], + "m_Nodes": [ + { + "m_Id": "e1494422488a4ba29326f33942f2c9d7" + }, + { + "m_Id": "f6255a5f5f8742c1805a0a5f6f6c5448" + }, + { + "m_Id": "8d87d29c0a2242ad97aa6fbf23c99230" + }, + { + "m_Id": "d064dc06e7cf4e6dbd418c3793b17a62" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [ + { + "m_Id": "e1494422488a4ba29326f33942f2c9d7" + }, + { + "m_Id": "f6255a5f5f8742c1805a0a5f6f6c5448" + }, + { + "m_Id": "8d87d29c0a2242ad97aa6fbf23c99230" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 200.0 + }, + "m_Blocks": [ + { + "m_Id": "d064dc06e7cf4e6dbd418c3793b17a62" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "1bbc92eb8c52478594fb900650778a6d" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "069fbecb3a5643e2be8511e030a6e9fe", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "0cb4cad3387c45e98ccc46bb9735cc63", + "m_Name": "", + "m_ChildObjectList": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "16f57cff3d05488eb76df1eab944629e", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "1bbc92eb8c52478594fb900650778a6d", + "m_ActiveSubTarget": { + "m_Id": "8ea03629dfb14d55805d54195a87748b" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 0, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": false, + "m_ReceiveShadows": true, + "m_SupportsLODCrossFade": true, + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "8d87d29c0a2242ad97aa6fbf23c99230", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "b8865c317d7a46fcb0cf076ef3707bf0" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalUnlitSubTarget", + "m_ObjectId": "8ea03629dfb14d55805d54195a87748b" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "a1efb0c5d31b4fd8ac9f7591adc19f27", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "b8865c317d7a46fcb0cf076ef3707bf0", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "d064dc06e7cf4e6dbd418c3793b17a62", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "16f57cff3d05488eb76df1eab944629e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "e1494422488a4ba29326f33942f2c9d7", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "a1efb0c5d31b4fd8ac9f7591adc19f27" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "f6255a5f5f8742c1805a0a5f6f6c5448", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "069fbecb3a5643e2be8511e030a6e9fe" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Unlit.shadergraph.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Unlit.shadergraph.meta new file mode 100644 index 00000000000..6a4b59845f6 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/ShaderGraph Unlit.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: aa8f5fe9e47963a4f903cdc8c2ca7c21 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Simple Lit 0.mat b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Simple Lit 0.mat new file mode 100644 index 00000000000..7a31c7d3d44 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Simple Lit 0.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7271037507989722835 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 6 +--- !u!21 &2100000 +Material: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Simple Lit 0 + m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ShaderKeywords: _RECEIVE_SHADOWS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossinessSource: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 0 + - _Shininess: 0 + - _Smoothness: 0.5 + - _SmoothnessSource: 0 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 0, b: 0, a: 1} + - _Color: {r: 1, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Simple Lit 0.mat.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Simple Lit 0.mat.meta new file mode 100644 index 00000000000..18a75ecb467 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Simple Lit 0.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6d9e6dc9b046fd24f90e982903768d19 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Simple Lit 1.mat b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Simple Lit 1.mat new file mode 100644 index 00000000000..f1b66c4241b --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Simple Lit 1.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7271037507989722835 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 6 +--- !u!21 &2100000 +Material: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Simple Lit 1 + m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ShaderKeywords: _RECEIVE_SHADOWS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossinessSource: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 0 + - _Shininess: 0 + - _Smoothness: 0.5 + - _SmoothnessSource: 0 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Simple Lit 1.mat.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Simple Lit 1.mat.meta new file mode 100644 index 00000000000..a1728c9b9f1 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Simple Lit 1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8dcb186bba4fdfc4f96f4ec020fd9d52 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Unlit 0.mat b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Unlit 0.mat new file mode 100644 index 00000000000..736162063e9 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Unlit 0.mat @@ -0,0 +1,133 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7271037507989722835 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 6 +--- !u!21 &2100000 +Material: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Unlit 0 + m_Shader: {fileID: 4800000, guid: 650dd9526735d5b46b79224bc6e94025, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BlendOp: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _SampleGI: 0 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 0, b: 0, a: 1} + - _Color: {r: 1, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Unlit 0.mat.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Unlit 0.mat.meta new file mode 100644 index 00000000000..293acece5c3 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Unlit 0.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8498d99636122af41b5fcfb72099975e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Unlit 1.mat b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Unlit 1.mat new file mode 100644 index 00000000000..9fb9cdbcadd --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Unlit 1.mat @@ -0,0 +1,133 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7271037507989722835 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 6 +--- !u!21 &2100000 +Material: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Unlit 1 + m_Shader: {fileID: 4800000, guid: 650dd9526735d5b46b79224bc6e94025, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BlendOp: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _SampleGI: 0 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Unlit 1.mat.meta b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Unlit 1.mat.meta new file mode 100644 index 00000000000..9aa5d751f91 --- /dev/null +++ b/TestProjects/UniversalGraphicsTest_Foundation/Assets/Scenes/248_LOD_CrossFade/Unlit 1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: acae50092e375524c89f41412f21dcdc +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/UniversalGraphicsTest_Foundation/ProjectSettings/EditorBuildSettings.asset b/TestProjects/UniversalGraphicsTest_Foundation/ProjectSettings/EditorBuildSettings.asset index 3cb5acf2075..9826607055d 100644 --- a/TestProjects/UniversalGraphicsTest_Foundation/ProjectSettings/EditorBuildSettings.asset +++ b/TestProjects/UniversalGraphicsTest_Foundation/ProjectSettings/EditorBuildSettings.asset @@ -275,4 +275,9 @@ EditorBuildSettings: - enabled: 1 path: Assets/Scenes/206_Motion_Vectors.unity guid: aa08e99a89c77574e9a00b9888fc75ce - m_configObjects: {} + - enabled: 1 + path: Assets/Scenes/248_LOD_CrossFade.unity + guid: 3b4bfea1d564d9541bb3a139484410ef + m_configObjects: + com.unity.addressableassets: {fileID: 11400000, guid: 909d5c6c7931abd468c1601c97d7a7ce, + type: 2} diff --git a/com.unity.render-pipelines.universal/CHANGELOG.md b/com.unity.render-pipelines.universal/CHANGELOG.md index a789087fc68..d0fc4ba354d 100644 --- a/com.unity.render-pipelines.universal/CHANGELOG.md +++ b/com.unity.render-pipelines.universal/CHANGELOG.md @@ -4,6 +4,11 @@ All notable changes to this package will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Added +- All builtin URP shaders as long as URP ShaderGraph shaders will support Mesh LOD CrossFade which type can be selected in UniversalRenderPipelineAsset.lodCrossFadeType property. + ## [14.0.0] - 2021-11-17 ### Added diff --git a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs index e8957a32d60..0aeabda92c3 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs @@ -133,8 +133,11 @@ public enum VolumeFrameworkUpdateMode /// public enum LODCrossFadeType { + /// Unity uses Bayer Matrix Texture to compute LOD CrossFade dithering. BayerMatrixDither, + /// Unity uses precomputed Blue Noise Texture to compute LOD CrossFade dithering. BlueNoiseDither, + /// Unity uses a Hash function to compute LOD CrossFade dithering. HashDither } From ebe8aa025a7ab21a5b40e5210e0ea2bb8ff6315f Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Thu, 27 Jan 2022 18:11:57 -0800 Subject: [PATCH 17/26] Dithering textures refactoring. --- .../UniversalRenderPipelineAssetUI.Drawers.cs | 2 +- .../Data/UniversalRenderPipelineAsset.cs | 30 +++++++++---------- .../Runtime/UniversalRenderPipeline.cs | 4 +-- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs index b8035530d7a..bca7533625f 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs @@ -99,7 +99,7 @@ static bool ValidateRendererGraphicsAPIs(UniversalRenderPipelineAsset pipelineAs static bool ValidateCrossFadeDitheringTextures(UniversalRenderPipelineAsset pipelineAsset) { - return pipelineAsset.bayerMatrixTex && pipelineAsset.blueNoise64LTex; + return pipelineAsset.textures?.bayerMatrixTex && pipelineAsset.textures?.blueNoise64LTex; } static readonly ExpandedState k_ExpandedState = new(Expandable.Rendering, "URP"); diff --git a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs index 0aeabda92c3..ea4d6a25545 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs @@ -248,12 +248,6 @@ public partial class UniversalRenderPipelineAsset : RenderPipelineAsset, ISerial [SerializeField] VolumeFrameworkUpdateMode m_VolumeFrameworkUpdateMode = VolumeFrameworkUpdateMode.EveryFrame; - [Reload("Textures/BlueNoise64/L/LDR_LLL1_0.png")] - [SerializeField] Texture2D m_BlueNoise64LTex; - - [Reload("Textures/BayerMatrix.png")] - [SerializeField] Texture2D m_BayerMatrixTex; - // Note: A lut size of 16^3 is barely usable with the HDR grading mode. 32 should be the // minimum, the lut being encoded in log. Lower sizes would work better with an additional // 1D shaper lut but for now we'll keep it simple. @@ -289,6 +283,8 @@ public static UniversalRenderPipelineAsset Create(ScriptableRendererData rendere // Only enable for new URP assets by default instance.m_ConservativeEnclosingSphere = true; + ResourceReloader.ReloadAllNullIn(instance, packagePath); + return instance; } @@ -701,16 +697,6 @@ public LODCrossFadeType lodCrossFadeType get { return m_LODCrossFadeType; } } - public Texture2D blueNoise64LTex - { - get { return m_BlueNoise64LTex; } - } - - public Texture2D bayerMatrixTex - { - get { return m_BayerMatrixTex; } - } - /// /// Returns the upscaling filter desired by the user /// Note: Filter selections differ from actual filters in that they may include "meta-filters" such as @@ -1320,5 +1306,17 @@ internal bool ValidateRendererData(int index) if (index == -1) index = m_DefaultRendererIndex; return index < m_RendererDataList.Length ? m_RendererDataList[index] != null : false; } + + [Serializable, ReloadGroup] + public sealed class TextureResources + { + [Reload("Textures/BlueNoise64/L/LDR_LLL1_0.png")] + public Texture2D blueNoise64LTex; + + [Reload("Textures/BayerMatrix.png")] + public Texture2D bayerMatrixTex; + } + + public TextureResources textures; } } diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index 3502344961d..fe20f2393e8 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -1267,9 +1267,9 @@ static void SetupPerFrameShaderConstants() Shader.SetGlobalInt(ShaderPropertyId.lodCrossFadeType, (int)asset.lodCrossFadeType); if (asset.lodCrossFadeType == LODCrossFadeType.BayerMatrixDither) - Shader.SetGlobalTexture(ShaderPropertyId.ditheringTexture, asset.bayerMatrixTex); + Shader.SetGlobalTexture(ShaderPropertyId.ditheringTexture, asset.textures.bayerMatrixTex); else if (asset.lodCrossFadeType == LODCrossFadeType.BlueNoiseDither) - Shader.SetGlobalTexture(ShaderPropertyId.ditheringTexture, asset.blueNoise64LTex); + Shader.SetGlobalTexture(ShaderPropertyId.ditheringTexture, asset.textures.blueNoise64LTex); } static void CheckAndApplyDebugSettings(ref RenderingData renderingData) From 4ae0f68ced45aa8848e15a26ddb58e54b2205a01 Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Fri, 28 Jan 2022 13:36:28 -0800 Subject: [PATCH 18/26] Documentation. --- .../Documentation~/universalrp-asset.md | 1 + .../Runtime/Data/PostProcessData.asset | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/com.unity.render-pipelines.universal/Documentation~/universalrp-asset.md b/com.unity.render-pipelines.universal/Documentation~/universalrp-asset.md index 1a9ed3b2779..88362c88d37 100644 --- a/com.unity.render-pipelines.universal/Documentation~/universalrp-asset.md +++ b/com.unity.render-pipelines.universal/Documentation~/universalrp-asset.md @@ -67,6 +67,7 @@ These settings control the quality level of the URP. This is where you can make | __HDR__ | Enable this to allow rendering in High Dynamic Range (HDR) by default for every camera in your Scene. With HDR, the brightest part of the image can be greater than 1. This gives you a wider range of light intensities, so your lighting looks more realistic. With it, you can still see details and experience less saturation even with bright light. This is useful if you want a wide range of lighting or to use [bloom](https://docs.unity3d.com/Manual/PostProcessing-Bloom.html) effects. If you’re targeting lower-end hardware, you can disable this to skip HDR calculations and get better performance. You can override this for individual cameras in the Camera Inspector. | | __MSAA__ | Use [Multi Sample Anti-aliasing](https://en.wikipedia.org/wiki/Multisample_anti-aliasing) by default for every Camera in your Scene while rendering. This softens edges of your geometry, so they’re not jagged or flickering. In the drop-down menu, select how many samples to use per pixel: __2x__, __4x__, or __8x__. The more samples you choose, the smoother your object edges are. If you want to skip MSAA calculations, or you don’t need them in a 2D game, select __Disabled__. You can override this for individual cameras in the Camera Inspector.
**Note:** On mobile platforms that do not support the [StoreAndResolve](https://docs.unity3d.com/ScriptReference/Rendering.RenderBufferStoreAction.StoreAndResolve.html) store action, if __Opaque Texture__ is selected in the URP asset, Unity ignores the **Anti Aliasing (MSAA)** property at runtime (as if Anti Aliasing (MSAA) is set to Disabled). | | __Render Scale__ | This slider scales the render target resolution (not the resolution of your current device). Use this when you want to render at a smaller resolution for performance reasons or to upscale rendering to improve quality. This only scales the game rendering. UI rendering is left at the native resolution for the device. | +| __LOD Cross Fade Type__ | When [LODGroup](https://docs.unity3d.com/Manual/class-LODGroup.html) has '__Cross Fade__' __Fade Mode__ selected, Unity will render Renderer's LODs with cross fade blending between them using alpha testing. This property defines the type of LOD Cross Fade which can be __BayerMatrixDither__, __BlueNoiseDither__ or __HashDither__. | ### Lighting diff --git a/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset b/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset index 9ace7de90c7..4ea37194e38 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset +++ b/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset @@ -60,8 +60,6 @@ MonoBehaviour: - {fileID: 2800000, guid: fa042edbfc40fbd4bad0ab9d505b1223, type: 3} - {fileID: 2800000, guid: 896d9004736809c4fb5973b7c12eb8b9, type: 3} - {fileID: 2800000, guid: 179f794063d2a66478e6e726f84a65bc, type: 3} - blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} - bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3} filmGrainTex: - {fileID: 2800000, guid: 654c582f7f8a5a14dbd7d119cbde215d, type: 3} - {fileID: 2800000, guid: dd77ffd079630404e879388999033049, type: 3} From 067e9d42c16b81ff018bf546dcfaabfa14399129 Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Mon, 31 Jan 2022 14:27:55 -0800 Subject: [PATCH 19/26] Fixed broken post processing guid. --- .../Runtime/Data/PostProcessData.asset.meta | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset.meta b/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset.meta index 66067d9b098..22a9006a32a 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset.meta +++ b/com.unity.render-pipelines.universal/Runtime/Data/PostProcessData.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ee973005a97ef0b4e8e4207d9609e05c +guid: 41439944d30ece34e96484bdb6645b55 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 From 4f7920e3896747962b7a77cde3660bff8d18bd47 Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Wed, 2 Feb 2022 18:02:13 -0800 Subject: [PATCH 20/26] Added cross fade shader variant stripping. --- .../Documentation~/universalrp-asset.md | 3 ++- .../Editor/ShaderPreprocessor.cs | 10 ++++++++++ .../SerializedUniversalRenderPipelineAsset.cs | 6 ++++-- .../UniversalRenderPipelineAssetUI.Drawers.cs | 7 +++++-- .../UniversalRenderPipelineAssetUI.Skin.cs | 3 ++- .../Data/UniversalRenderPipelineAsset.cs | 20 ++++++++++++------- .../Runtime/UniversalRenderPipeline.cs | 6 +++--- .../Runtime/UniversalRenderPipelineCore.cs | 2 +- .../ShaderLibrary/LODCrossFade.hlsl | 16 +++++++-------- 9 files changed, 48 insertions(+), 25 deletions(-) diff --git a/com.unity.render-pipelines.universal/Documentation~/universalrp-asset.md b/com.unity.render-pipelines.universal/Documentation~/universalrp-asset.md index 88362c88d37..b18c6191103 100644 --- a/com.unity.render-pipelines.universal/Documentation~/universalrp-asset.md +++ b/com.unity.render-pipelines.universal/Documentation~/universalrp-asset.md @@ -67,7 +67,8 @@ These settings control the quality level of the URP. This is where you can make | __HDR__ | Enable this to allow rendering in High Dynamic Range (HDR) by default for every camera in your Scene. With HDR, the brightest part of the image can be greater than 1. This gives you a wider range of light intensities, so your lighting looks more realistic. With it, you can still see details and experience less saturation even with bright light. This is useful if you want a wide range of lighting or to use [bloom](https://docs.unity3d.com/Manual/PostProcessing-Bloom.html) effects. If you’re targeting lower-end hardware, you can disable this to skip HDR calculations and get better performance. You can override this for individual cameras in the Camera Inspector. | | __MSAA__ | Use [Multi Sample Anti-aliasing](https://en.wikipedia.org/wiki/Multisample_anti-aliasing) by default for every Camera in your Scene while rendering. This softens edges of your geometry, so they’re not jagged or flickering. In the drop-down menu, select how many samples to use per pixel: __2x__, __4x__, or __8x__. The more samples you choose, the smoother your object edges are. If you want to skip MSAA calculations, or you don’t need them in a 2D game, select __Disabled__. You can override this for individual cameras in the Camera Inspector.
**Note:** On mobile platforms that do not support the [StoreAndResolve](https://docs.unity3d.com/ScriptReference/Rendering.RenderBufferStoreAction.StoreAndResolve.html) store action, if __Opaque Texture__ is selected in the URP asset, Unity ignores the **Anti Aliasing (MSAA)** property at runtime (as if Anti Aliasing (MSAA) is set to Disabled). | | __Render Scale__ | This slider scales the render target resolution (not the resolution of your current device). Use this when you want to render at a smaller resolution for performance reasons or to upscale rendering to improve quality. This only scales the game rendering. UI rendering is left at the native resolution for the device. | -| __LOD Cross Fade Type__ | When [LODGroup](https://docs.unity3d.com/Manual/class-LODGroup.html) has '__Cross Fade__' __Fade Mode__ selected, Unity will render Renderer's LODs with cross fade blending between them using alpha testing. This property defines the type of LOD Cross Fade which can be __BayerMatrixDither__, __BlueNoiseDither__ or __HashDither__. | +| __LOD Cross Fade__ | If you disable this option, the URP removes all LOD Cross Fade Shader variants when you build for the Unity Player, which decreases build time. | +| __LOD Cross Fade Dithering Type__ | When [LODGroup](https://docs.unity3d.com/Manual/class-LODGroup.html) has '__Cross Fade__' __Fade Mode__ selected, Unity will render Renderer's LODs with cross fade blending between them using alpha testing. This property defines the type of LOD Cross Fade which can be __BayerMatrix__, __BlueNoise__ or __Hash__. | ### Lighting diff --git a/com.unity.render-pipelines.universal/Editor/ShaderPreprocessor.cs b/com.unity.render-pipelines.universal/Editor/ShaderPreprocessor.cs index 4bea4261d86..6f343a5f8a6 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderPreprocessor.cs +++ b/com.unity.render-pipelines.universal/Editor/ShaderPreprocessor.cs @@ -50,6 +50,7 @@ enum ShaderFeatures ScreenSpaceOcclusionAfterOpaque = (1 << 28), AdditionalLightsKeepOffVariants = (1 << 29), ShadowsKeepOffVariants = (1 << 30), + LODCrossFade = (1 << 31) } [Flags] @@ -112,6 +113,7 @@ internal class ShaderPreprocessor : IPreprocessShaders LocalKeyword m_DecalNormalBlendHigh; LocalKeyword m_ClusteredRendering; LocalKeyword m_EditorVisualization; + LocalKeyword m_LODFadeCrossFade; LocalKeyword m_LocalDetailMulx2; LocalKeyword m_LocalDetailScaled; @@ -184,6 +186,7 @@ void InitializeLocalShaderKeywords(Shader shader) m_DecalNormalBlendHigh = TryGetLocalKeyword(shader, ShaderKeywordStrings.DecalNormalBlendHigh); m_ClusteredRendering = TryGetLocalKeyword(shader, ShaderKeywordStrings.ClusteredRendering); m_EditorVisualization = TryGetLocalKeyword(shader, ShaderKeywordStrings.EDITOR_VISUALIZATION); + m_LODFadeCrossFade = TryGetLocalKeyword(shader, ShaderKeywordStrings.LOD_FADE_CROSSFADE); m_LocalDetailMulx2 = TryGetLocalKeyword(shader, ShaderKeywordStrings._DETAIL_MULX2); m_LocalDetailScaled = TryGetLocalKeyword(shader, ShaderKeywordStrings._DETAIL_SCALED); @@ -646,6 +649,10 @@ bool StripUnused(ShaderFeatures features, Shader shader, ShaderSnippetData snipp shader.name.Contains(kTerrainShaderName)) return true; + if (compilerData.shaderKeywordSet.IsEnabled(m_LODFadeCrossFade) && + !IsFeatureEnabled(features, ShaderFeatures.LODCrossFade)) + return true; + return false; } @@ -923,6 +930,9 @@ private static ShaderFeatures GetSupportedShaderFeatures(UniversalRenderPipeline if (pipelineAsset.supportsTerrainHoles) shaderFeatures |= ShaderFeatures.TerrainHoles; + if (pipelineAsset.supportsLODCrossFade) + shaderFeatures |= ShaderFeatures.LODCrossFade; + if (pipelineAsset.useFastSRGBLinearConversion) shaderFeatures |= ShaderFeatures.UseFastSRGBLinearConversion; diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs index c5e111f2e75..448a09752d3 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs @@ -12,7 +12,8 @@ internal class SerializedUniversalRenderPipelineAsset public SerializedProperty requireOpaqueTextureProp { get; } public SerializedProperty opaqueDownsamplingProp { get; } public SerializedProperty supportsTerrainHolesProp { get; } - public SerializedProperty lodCrossFadeTypeProp { get; } + public SerializedProperty supportsLodCrossFadeProp { get; } + public SerializedProperty lodCrossFadeDitheringTypeProp { get; } public SerializedProperty storeActionsOptimizationProperty { get; } public SerializedProperty hdr { get; } @@ -81,7 +82,8 @@ public SerializedUniversalRenderPipelineAsset(SerializedObject serializedObject) requireOpaqueTextureProp = serializedObject.FindProperty("m_RequireOpaqueTexture"); opaqueDownsamplingProp = serializedObject.FindProperty("m_OpaqueDownsampling"); supportsTerrainHolesProp = serializedObject.FindProperty("m_SupportsTerrainHoles"); - lodCrossFadeTypeProp = serializedObject.FindProperty("m_LODCrossFadeType"); + supportsLodCrossFadeProp = serializedObject.FindProperty("m_SupportsLODCrossFade"); + lodCrossFadeDitheringTypeProp = serializedObject.FindProperty("m_LODCrossFadeDitheringType"); hdr = serializedObject.FindProperty("m_SupportsHDR"); msaa = serializedObject.FindProperty("m_MSAA"); diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs index 884c72b90f3..28c5d696066 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs @@ -167,10 +167,13 @@ static void DrawQuality(SerializedUniversalRenderPipelineAsset serialized, Edito --EditorGUI.indentLevel; } - EditorGUILayout.PropertyField(serialized.lodCrossFadeTypeProp, Styles.lodCrossFadeTypeText); - if(!ValidateCrossFadeDitheringTextures(serialized.asset)) + EditorGUILayout.PropertyField(serialized.supportsLodCrossFadeProp, Styles.supportsLodCrossFadeText); + EditorGUI.BeginDisabledGroup(!serialized.supportsLodCrossFadeProp.boolValue); + EditorGUILayout.PropertyField(serialized.lodCrossFadeDitheringTypeProp, Styles.lodCrossFadeDitheringTypeText); + if (!ValidateCrossFadeDitheringTextures(serialized.asset)) CoreEditorUtils.DrawFixMeBox("Asset doesn't hold references to dithering textures. LOD Cross Fade might not work correctly.", () => ResourceReloader.ReloadAllNullIn(serialized.asset, UniversalRenderPipelineAsset.packagePath)); + EditorGUI.EndDisabledGroup(); } static void DrawLighting(SerializedUniversalRenderPipelineAsset serialized, Editor ownerEditor) diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs index 038dfee142d..a8e10df88f0 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs @@ -39,7 +39,8 @@ internal static class Styles public static GUIContent upscalingFilterText = EditorGUIUtility.TrTextContent("Upscaling Filter", "Controls the type of filter used for upscaling when render scale is lower than 1.0."); public static GUIContent fsrOverrideSharpness = EditorGUIUtility.TrTextContent("Override FSR Sharpness", "Overrides the FSR sharpness value for the render pipeline asset."); public static GUIContent fsrSharpnessText = EditorGUIUtility.TrTextContent("FSR Sharpness", "Controls the intensity of the sharpening filter used by FidelityFX Super Resolution."); - public static GUIContent lodCrossFadeTypeText = EditorGUIUtility.TrTextContent("LOD Cross Fade Type", "Type of the LOD Cross Fade that is used to draw Renderer LOD when LODGroup has CrossFade Fade Mode selected."); + public static GUIContent supportsLodCrossFadeText = EditorGUIUtility.TrTextContent("LOD Cross Fade", "When disabled, Universal Rendering Pipeline removes all LOD Cross Fade Shader variants when you build for the Unity Player. This decreases build time."); + public static GUIContent lodCrossFadeDitheringTypeText = EditorGUIUtility.TrTextContent("LOD Cross Fade Dithering Type", "Type of the LOD Cross Fade Dithering that is used to draw Renderer LOD when LODGroup has CrossFade Fade Mode selected."); // Main light public static GUIContent mainLightRenderingModeText = EditorGUIUtility.TrTextContent("Main Light", "Main light is the brightest directional light."); diff --git a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs index e00cf9f7829..358fc3318ec 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs @@ -285,14 +285,14 @@ public enum VolumeFrameworkUpdateMode /// /// Type of the LOD CrossFade. /// - public enum LODCrossFadeType + public enum LODCrossFadeDitheringType { /// Unity uses Bayer Matrix Texture to compute LOD CrossFade dithering. - BayerMatrixDither, + BayerMatrix, /// Unity uses precomputed Blue Noise Texture to compute LOD CrossFade dithering. - BlueNoiseDither, + BlueNoise, /// Unity uses a Hash function to compute LOD CrossFade dithering. - HashDither + Hash } /// Defines the upscaling filter selected by the user the universal render pipeline asset. @@ -353,7 +353,8 @@ public partial class UniversalRenderPipelineAsset : RenderPipelineAsset, ISerial [SerializeField] UpscalingFilterSelection m_UpscalingFilter = UpscalingFilterSelection.Auto; [SerializeField] bool m_FsrOverrideSharpness = false; [SerializeField] float m_FsrSharpness = FSRUtils.kDefaultSharpnessLinear; - [SerializeField] LODCrossFadeType m_LODCrossFadeType = LODCrossFadeType.BlueNoiseDither; + [SerializeField] bool m_SupportsLODCrossFade = true; + [SerializeField] LODCrossFadeDitheringType m_LODCrossFadeDitheringType = LODCrossFadeDitheringType.BlueNoise; // TODO: Shader Quality Tiers // Main directional light Settings @@ -863,9 +864,14 @@ public float renderScale set { m_RenderScale = ValidateRenderScale(value); } } - public LODCrossFadeType lodCrossFadeType + public bool supportsLODCrossFade { - get { return m_LODCrossFadeType; } + get { return m_SupportsLODCrossFade; } + } + + public LODCrossFadeDitheringType lodCrossFadeDitheringType + { + get { return m_LODCrossFadeDitheringType; } } /// diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index 46d74c7959b..78ba9605061 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -1309,11 +1309,11 @@ static void SetupPerFrameShaderConstants() // Required for 2D Unlit Shadergraph master node as it doesn't currently support hidden properties. Shader.SetGlobalColor(ShaderPropertyId.rendererColor, Color.white); - Shader.SetGlobalInt(ShaderPropertyId.lodCrossFadeType, (int)asset.lodCrossFadeType); + Shader.SetGlobalInt(ShaderPropertyId.lodCrossFadeDitheringType, (int)asset.lodCrossFadeDitheringType); - if (asset.lodCrossFadeType == LODCrossFadeType.BayerMatrixDither) + if (asset.lodCrossFadeDitheringType == LODCrossFadeDitheringType.BayerMatrix) Shader.SetGlobalTexture(ShaderPropertyId.ditheringTexture, asset.textures.bayerMatrixTex); - else if (asset.lodCrossFadeType == LODCrossFadeType.BlueNoiseDither) + else if (asset.lodCrossFadeDitheringType == LODCrossFadeDitheringType.BlueNoise) Shader.SetGlobalTexture(ShaderPropertyId.ditheringTexture, asset.textures.blueNoise64LTex); } diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs index 8333e2109f4..468102fd96b 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs @@ -374,7 +374,7 @@ 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 lodCrossFadeType = Shader.PropertyToID("_LODCrossFadeType"); + public static readonly int lodCrossFadeDitheringType = Shader.PropertyToID("_LODCrossFadeDitheringType"); public static readonly int ditheringTexture = Shader.PropertyToID("_DitheringTexture"); } diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl index 371fe4cc444..8263cb107dc 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl @@ -1,11 +1,11 @@ #ifndef UNIVERSAL_PIPELINE_LODCROSSFADE_INCLUDED #define UNIVERSAL_PIPELINE_LODCROSSFADE_INCLUDED -static const int k_LODCrossFadeTypeBayerMatrixDither = 0; -static const int k_LODCrossFadeTypeBlueNoiseDither = 1; -static const int k_LODCrossFadeTypeHashDither = 2; +static const int k_LODCrossFadeDithereringTypeBayerMatrix = 0; +static const int k_LODCrossFadeDithereringTypeBlueNoise = 1; +static const int k_LODCrossFadeDithereringTypeHash = 2; -int _LODCrossFadeType; +int _LODCrossFadeDitheringType; TEXTURE2D(_DitheringTexture); SAMPLER(sampler_DitheringTexture); @@ -37,15 +37,15 @@ half GetLODDithering(float2 crossFadeSeed, half crossFadeFactor) { half d; - switch (_LODCrossFadeType) + switch (_LODCrossFadeDitheringType) { - case k_LODCrossFadeTypeHashDither: + case k_LODCrossFadeDithereringTypeHash: d = GenerateHashedRandomFloat(crossFadeSeed); break; - case k_LODCrossFadeTypeBlueNoiseDither: + case k_LODCrossFadeDithereringTypeBlueNoise: d = GetBlueNoiseDithering(crossFadeSeed); break; - case k_LODCrossFadeTypeBayerMatrixDither: + case k_LODCrossFadeDithereringTypeBayerMatrix: default: d = GetBayerMatrixDithering(crossFadeSeed); break; From 55d8b49ca39d04519a1af60173e6c68669e291a8 Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Thu, 3 Feb 2022 12:51:54 -0800 Subject: [PATCH 21/26] Formatting fixes. --- com.unity.render-pipelines.universal/CHANGELOG.md | 2 +- .../Editor/ShaderGraph/Targets/UniversalTarget.cs | 2 +- .../UniversalRenderPipelineAssetUI.Skin.cs | 2 +- .../Runtime/Data/UniversalRenderPipelineAsset.cs | 2 +- .../ShaderLibrary/LODCrossFade.hlsl | 2 +- com.unity.render-pipelines.universal/Shaders/Lit.shader | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/com.unity.render-pipelines.universal/CHANGELOG.md b/com.unity.render-pipelines.universal/CHANGELOG.md index 6ed153432a5..af094d10552 100644 --- a/com.unity.render-pipelines.universal/CHANGELOG.md +++ b/com.unity.render-pipelines.universal/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] ### Added -- All builtin URP shaders as long as URP ShaderGraph shaders will support Mesh LOD CrossFade which type can be selected in UniversalRenderPipelineAsset.lodCrossFadeType property. +- All builtin URP shaders as long as URP ShaderGraph shaders will support Mesh LOD CrossFade which type can be selected in UniversalRenderPipelineAsset.lodCrossFadeType property. ## [14.0.1] - 2021-12-07 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 8e584267c5f..b862f5dc268 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs @@ -727,7 +727,7 @@ internal static void AddLODCrossFadeControlToPass(ref PassDescriptor pass, Unive { pass.includes.Add(CoreIncludes.LODCrossFade); pass.keywords.Add(CoreKeywordDescriptors.LODFadeCrossFade); - } + } } internal static void AddTargetSurfaceControlsToPass(ref PassDescriptor pass, UniversalTarget target, bool blendModePreserveSpecular = false) diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs index a8e10df88f0..aa9714a1c85 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs @@ -36,7 +36,7 @@ internal static class Styles public static GUIContent hdrText = EditorGUIUtility.TrTextContent("HDR", "Controls the global HDR settings."); public static GUIContent msaaText = EditorGUIUtility.TrTextContent("Anti Aliasing (MSAA)", "Controls the global anti aliasing settings."); public static GUIContent renderScaleText = EditorGUIUtility.TrTextContent("Render Scale", "Scales the camera render target allowing the game to render at a resolution different than native resolution. UI is always rendered at native resolution."); - public static GUIContent upscalingFilterText = EditorGUIUtility.TrTextContent("Upscaling Filter", "Controls the type of filter used for upscaling when render scale is lower than 1.0."); + public static GUIContent upscalingFilterText = EditorGUIUtility.TrTextContent("Upscaling Filter", "Controls the type of filter used for upscaling when render scale is lower than 1.0."); public static GUIContent fsrOverrideSharpness = EditorGUIUtility.TrTextContent("Override FSR Sharpness", "Overrides the FSR sharpness value for the render pipeline asset."); public static GUIContent fsrSharpnessText = EditorGUIUtility.TrTextContent("FSR Sharpness", "Controls the intensity of the sharpening filter used by FidelityFX Super Resolution."); public static GUIContent supportsLodCrossFadeText = EditorGUIUtility.TrTextContent("LOD Cross Fade", "When disabled, Universal Rendering Pipeline removes all LOD Cross Fade Shader variants when you build for the Unity Player. This decreases build time."); diff --git a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs index 358fc3318ec..02501984364 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs @@ -354,7 +354,7 @@ public partial class UniversalRenderPipelineAsset : RenderPipelineAsset, ISerial [SerializeField] bool m_FsrOverrideSharpness = false; [SerializeField] float m_FsrSharpness = FSRUtils.kDefaultSharpnessLinear; [SerializeField] bool m_SupportsLODCrossFade = true; - [SerializeField] LODCrossFadeDitheringType m_LODCrossFadeDitheringType = LODCrossFadeDitheringType.BlueNoise; + [SerializeField] LODCrossFadeDitheringType m_LODCrossFadeDitheringType = LODCrossFadeDitheringType.BlueNoise; // TODO: Shader Quality Tiers // Main directional light Settings diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl index 8263cb107dc..b97ea3a6bdd 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl @@ -17,7 +17,7 @@ half CopySign(half x, half s) half GetBayerMatrixDithering(float2 seed) { - const half k_BayerMatrixTexSize = 4.0; + const half k_BayerMatrixTexSize = 4.0; half2 uv = seed / k_BayerMatrixTexSize; diff --git a/com.unity.render-pipelines.universal/Shaders/Lit.shader b/com.unity.render-pipelines.universal/Shaders/Lit.shader index d90bd871eee..c6e393005cf 100644 --- a/com.unity.render-pipelines.universal/Shaders/Lit.shader +++ b/com.unity.render-pipelines.universal/Shaders/Lit.shader @@ -135,7 +135,7 @@ Shader "Universal Render Pipeline/Lit" #pragma multi_compile _ DIRLIGHTMAP_COMBINED #pragma multi_compile _ LIGHTMAP_ON #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ LOD_FADE_CROSSFADE + #pragma multi_compile _ LOD_FADE_CROSSFADE #pragma multi_compile_fog #pragma multi_compile_fragment _ DEBUG_DISPLAY From ae906050eb1e248cf3e3fccfd8332f489c219721 Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Fri, 4 Feb 2022 13:24:33 -0800 Subject: [PATCH 22/26] Removed Hash dithering type. --- .../CHANGELOG.md | 2 +- .../Documentation~/universalrp-asset.md | 2 +- .../ShaderGraph/Targets/UniversalTarget.cs | 2 +- .../UniversalRenderPipelineAssetUI.Skin.cs | 4 +- .../Runtime/UniversalRenderPipeline.cs | 8 ++- .../Runtime/UniversalRenderPipelineCore.cs | 2 +- .../ShaderLibrary/LODCrossFade.hlsl | 49 ++----------------- 7 files changed, 17 insertions(+), 52 deletions(-) diff --git a/com.unity.render-pipelines.universal/CHANGELOG.md b/com.unity.render-pipelines.universal/CHANGELOG.md index af094d10552..dfbc19f6c01 100644 --- a/com.unity.render-pipelines.universal/CHANGELOG.md +++ b/com.unity.render-pipelines.universal/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] ### Added -- All builtin URP shaders as long as URP ShaderGraph shaders will support Mesh LOD CrossFade which type can be selected in UniversalRenderPipelineAsset.lodCrossFadeType property. +- All builtin URP shaders as long as URP ShaderGraph shaders will support Mesh LOD CrossFade which type can be selected in UniversalRenderPipelineAsset.lodCrossFadeDitheringType property. ## [14.0.1] - 2021-12-07 diff --git a/com.unity.render-pipelines.universal/Documentation~/universalrp-asset.md b/com.unity.render-pipelines.universal/Documentation~/universalrp-asset.md index b18c6191103..4425fccad74 100644 --- a/com.unity.render-pipelines.universal/Documentation~/universalrp-asset.md +++ b/com.unity.render-pipelines.universal/Documentation~/universalrp-asset.md @@ -67,7 +67,7 @@ These settings control the quality level of the URP. This is where you can make | __HDR__ | Enable this to allow rendering in High Dynamic Range (HDR) by default for every camera in your Scene. With HDR, the brightest part of the image can be greater than 1. This gives you a wider range of light intensities, so your lighting looks more realistic. With it, you can still see details and experience less saturation even with bright light. This is useful if you want a wide range of lighting or to use [bloom](https://docs.unity3d.com/Manual/PostProcessing-Bloom.html) effects. If you’re targeting lower-end hardware, you can disable this to skip HDR calculations and get better performance. You can override this for individual cameras in the Camera Inspector. | | __MSAA__ | Use [Multi Sample Anti-aliasing](https://en.wikipedia.org/wiki/Multisample_anti-aliasing) by default for every Camera in your Scene while rendering. This softens edges of your geometry, so they’re not jagged or flickering. In the drop-down menu, select how many samples to use per pixel: __2x__, __4x__, or __8x__. The more samples you choose, the smoother your object edges are. If you want to skip MSAA calculations, or you don’t need them in a 2D game, select __Disabled__. You can override this for individual cameras in the Camera Inspector.
**Note:** On mobile platforms that do not support the [StoreAndResolve](https://docs.unity3d.com/ScriptReference/Rendering.RenderBufferStoreAction.StoreAndResolve.html) store action, if __Opaque Texture__ is selected in the URP asset, Unity ignores the **Anti Aliasing (MSAA)** property at runtime (as if Anti Aliasing (MSAA) is set to Disabled). | | __Render Scale__ | This slider scales the render target resolution (not the resolution of your current device). Use this when you want to render at a smaller resolution for performance reasons or to upscale rendering to improve quality. This only scales the game rendering. UI rendering is left at the native resolution for the device. | -| __LOD Cross Fade__ | If you disable this option, the URP removes all LOD Cross Fade Shader variants when you build for the Unity Player, which decreases build time. | +| __LOD Cross Fade__ | Controls whether LOD Cross Fade enabled or disabled. If you disable this option, the URP removes all LOD Cross Fade Shader variants when you build for the Unity Player, which decreases build time. | | __LOD Cross Fade Dithering Type__ | When [LODGroup](https://docs.unity3d.com/Manual/class-LODGroup.html) has '__Cross Fade__' __Fade Mode__ selected, Unity will render Renderer's LODs with cross fade blending between them using alpha testing. This property defines the type of LOD Cross Fade which can be __BayerMatrix__, __BlueNoise__ or __Hash__. | ### Lighting 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 b862f5dc268..c8e4378bf00 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs @@ -136,7 +136,7 @@ sealed class UniversalTarget : Target, IHasMetadata, ILegacyTarget bool m_ReceiveShadows = true; [SerializeField] - bool m_SupportsLODCrossFade = true; + bool m_SupportsLODCrossFade = false; [SerializeField] string m_CustomEditorGUI; diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs index aa9714a1c85..a20fe2631e0 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs @@ -39,8 +39,8 @@ internal static class Styles public static GUIContent upscalingFilterText = EditorGUIUtility.TrTextContent("Upscaling Filter", "Controls the type of filter used for upscaling when render scale is lower than 1.0."); public static GUIContent fsrOverrideSharpness = EditorGUIUtility.TrTextContent("Override FSR Sharpness", "Overrides the FSR sharpness value for the render pipeline asset."); public static GUIContent fsrSharpnessText = EditorGUIUtility.TrTextContent("FSR Sharpness", "Controls the intensity of the sharpening filter used by FidelityFX Super Resolution."); - public static GUIContent supportsLodCrossFadeText = EditorGUIUtility.TrTextContent("LOD Cross Fade", "When disabled, Universal Rendering Pipeline removes all LOD Cross Fade Shader variants when you build for the Unity Player. This decreases build time."); - public static GUIContent lodCrossFadeDitheringTypeText = EditorGUIUtility.TrTextContent("LOD Cross Fade Dithering Type", "Type of the LOD Cross Fade Dithering that is used to draw Renderer LOD when LODGroup has CrossFade Fade Mode selected."); + public static GUIContent supportsLodCrossFadeText = EditorGUIUtility.TrTextContent("LOD Cross Fade", "Controls whether LOD Cross Fade enabled or disabled. When disabled, Universal Rendering Pipeline removes all LOD Cross Fade Shader variants when you build for the Unity Player. This decreases build time."); + public static GUIContent lodCrossFadeDitheringTypeText = EditorGUIUtility.TrTextContent("LOD Cross Fade Dithering Type", "Controls the LOD Cross Fade Dithering Type that will be used to draw Renderer LOD when LODGroup has CrossFade Fade Mode selected."); // Main light public static GUIContent mainLightRenderingModeText = EditorGUIUtility.TrTextContent("Main Light", "Main light is the brightest directional light."); diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index 78ba9605061..5bb955c3292 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -1309,12 +1309,16 @@ static void SetupPerFrameShaderConstants() // Required for 2D Unlit Shadergraph master node as it doesn't currently support hidden properties. Shader.SetGlobalColor(ShaderPropertyId.rendererColor, Color.white); - Shader.SetGlobalInt(ShaderPropertyId.lodCrossFadeDitheringType, (int)asset.lodCrossFadeDitheringType); - if (asset.lodCrossFadeDitheringType == LODCrossFadeDitheringType.BayerMatrix) + { + Shader.SetGlobalFloat(ShaderPropertyId.ditheringTextureInvSize, 1.0f / asset.textures.bayerMatrixTex.width); Shader.SetGlobalTexture(ShaderPropertyId.ditheringTexture, asset.textures.bayerMatrixTex); + } else if (asset.lodCrossFadeDitheringType == LODCrossFadeDitheringType.BlueNoise) + { + Shader.SetGlobalFloat(ShaderPropertyId.ditheringTextureInvSize, 1.0f / asset.textures.blueNoise64LTex.width); Shader.SetGlobalTexture(ShaderPropertyId.ditheringTexture, asset.textures.blueNoise64LTex); + } } static void CheckAndApplyDebugSettings(ref RenderingData renderingData) diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs index 468102fd96b..a1a0be503fd 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs @@ -374,8 +374,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 lodCrossFadeDitheringType = Shader.PropertyToID("_LODCrossFadeDitheringType"); public static readonly int ditheringTexture = Shader.PropertyToID("_DitheringTexture"); + public static readonly int ditheringTextureInvSize = Shader.PropertyToID("_DitheringTextureInvSize"); } /// diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl index b97ea3a6bdd..ae0b5c2e032 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl @@ -1,11 +1,7 @@ #ifndef UNIVERSAL_PIPELINE_LODCROSSFADE_INCLUDED #define UNIVERSAL_PIPELINE_LODCROSSFADE_INCLUDED -static const int k_LODCrossFadeDithereringTypeBayerMatrix = 0; -static const int k_LODCrossFadeDithereringTypeBlueNoise = 1; -static const int k_LODCrossFadeDithereringTypeHash = 2; - -int _LODCrossFadeDitheringType; +float _DitheringTextureInvSize; TEXTURE2D(_DitheringTexture); SAMPLER(sampler_DitheringTexture); @@ -15,48 +11,13 @@ half CopySign(half x, half s) return (s >= 0) ? abs(x) : -abs(x); } -half GetBayerMatrixDithering(float2 seed) -{ - const half k_BayerMatrixTexSize = 4.0; - - half2 uv = seed / k_BayerMatrixTexSize; - - return SAMPLE_TEXTURE2D(_DitheringTexture, sampler_DitheringTexture, uv).a; -} - -half GetBlueNoiseDithering(float2 seed) -{ - const half k_BlueNoiseTexSize = 64.0; - - half2 uv = seed / k_BlueNoiseTexSize; - - return SAMPLE_TEXTURE2D(_DitheringTexture, sampler_DitheringTexture, uv).a; -} - -half GetLODDithering(float2 crossFadeSeed, half crossFadeFactor) +void LODFadeCrossFade(float4 positionCS) { - half d; + half2 uv = positionCS.xy * _DitheringTextureInvSize; - switch (_LODCrossFadeDitheringType) - { - case k_LODCrossFadeDithereringTypeHash: - d = GenerateHashedRandomFloat(crossFadeSeed); - break; - case k_LODCrossFadeDithereringTypeBlueNoise: - d = GetBlueNoiseDithering(crossFadeSeed); - break; - case k_LODCrossFadeDithereringTypeBayerMatrix: - default: - d = GetBayerMatrixDithering(crossFadeSeed); - break; - } + half d = SAMPLE_TEXTURE2D(_DitheringTexture, sampler_DitheringTexture, uv).a; - return crossFadeFactor - CopySign(d, crossFadeFactor); -} - -void LODFadeCrossFade(float4 positionCS) -{ - half d = GetLODDithering(positionCS.xy, unity_LODFade.x); + d = unity_LODFade.x - CopySign(d, unity_LODFade.x); clip(d); } From 19b8f62aa640fb436569af47f21311c94d12cdef Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Mon, 7 Feb 2022 14:19:41 -0800 Subject: [PATCH 23/26] Moved LOD Cross Fade enabled to Unity QualitySettings. The property now can disable cross fade completely. --- ...edUniversalRenderPipelineGlobalSettings.cs | 2 + ...lRenderPipelineGlobalSettingsUI.Drawers.cs | 1 + ...rsalRenderPipelineGlobalSettingsUI.Skin.cs | 1 + .../Editor/ShaderPreprocessor.cs | 57 ++++++++++++++++--- .../SerializedUniversalRenderPipelineAsset.cs | 2 - .../UniversalRenderPipelineAssetUI.Drawers.cs | 31 +++++++++- .../UniversalRenderPipelineAssetUI.Skin.cs | 1 - .../Data/UniversalRenderPipelineAsset.cs | 10 +--- .../UniversalRenderPipelineGlobalSettings.cs | 8 +++ 9 files changed, 91 insertions(+), 22 deletions(-) diff --git a/com.unity.render-pipelines.universal/Editor/GlobalSettings/SerializedUniversalRenderPipelineGlobalSettings.cs b/com.unity.render-pipelines.universal/Editor/GlobalSettings/SerializedUniversalRenderPipelineGlobalSettings.cs index 1b15d41bfc4..8ca04ad7be6 100644 --- a/com.unity.render-pipelines.universal/Editor/GlobalSettings/SerializedUniversalRenderPipelineGlobalSettings.cs +++ b/com.unity.render-pipelines.universal/Editor/GlobalSettings/SerializedUniversalRenderPipelineGlobalSettings.cs @@ -25,6 +25,7 @@ class SerializedUniversalRenderPipelineGlobalSettings : ISerializedRenderPipelin public SerializedProperty stripDebugVariants; public SerializedProperty stripUnusedPostProcessingVariants; public SerializedProperty stripUnusedVariants; + public SerializedProperty stripUnusedLODCrossFadeVariants; public SerializedUniversalRenderPipelineGlobalSettings(SerializedObject serializedObject) { @@ -52,6 +53,7 @@ public SerializedUniversalRenderPipelineGlobalSettings(SerializedObject serializ stripDebugVariants = serializedObject.FindProperty("m_StripDebugVariants"); stripUnusedPostProcessingVariants = serializedObject.FindProperty("m_StripUnusedPostProcessingVariants"); stripUnusedVariants = serializedObject.FindProperty("m_StripUnusedVariants"); + stripUnusedLODCrossFadeVariants = serializedObject.FindProperty("m_StripUnusedLODCrossFadeVariants"); shaderVariantLogLevel = serializedObject.FindProperty("m_ShaderVariantLogLevel"); exportShaderVariants = serializedObject.FindProperty("m_ExportShaderVariants"); } 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..5272f8dab5f 100644 --- a/com.unity.render-pipelines.universal/Editor/GlobalSettings/UniversalRenderPipelineGlobalSettingsUI.Drawers.cs +++ b/com.unity.render-pipelines.universal/Editor/GlobalSettings/UniversalRenderPipelineGlobalSettingsUI.Drawers.cs @@ -68,6 +68,7 @@ static void OnContextClickLightLayerNames(Vector2 position, SerializedUniversalR EditorGUILayout.PropertyField(universalRenderPipelineGlobalSettings.stripDebugVariants, Styles.stripDebugVariantsLabel); EditorGUILayout.PropertyField(universalRenderPipelineGlobalSettings.stripUnusedPostProcessingVariants, Styles.stripUnusedPostProcessingVariantsLabel); EditorGUILayout.PropertyField(universalRenderPipelineGlobalSettings.stripUnusedVariants, Styles.stripUnusedVariantsLabel); + EditorGUILayout.PropertyField(universalRenderPipelineGlobalSettings.stripUnusedLODCrossFadeVariants, Styles.stripUnusedLODCrossFadeVariantsLabel); } }))), CED.Group((serialized, owner) => EditorGUILayout.Space()) 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..9e89ec543c0 100644 --- a/com.unity.render-pipelines.universal/Editor/GlobalSettings/UniversalRenderPipelineGlobalSettingsUI.Skin.cs +++ b/com.unity.render-pipelines.universal/Editor/GlobalSettings/UniversalRenderPipelineGlobalSettingsUI.Skin.cs @@ -19,6 +19,7 @@ internal class Styles 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."); + public static readonly GUIContent stripUnusedLODCrossFadeVariantsLabel = EditorGUIUtility.TrTextContent("Strip Unused LOD Cross Fade Variants", "Controls whether strip off variants if the LOD Cross Fade feature is disabled. It strips based on QualitySettings.enableLODCrossFade in the project."); } } } diff --git a/com.unity.render-pipelines.universal/Editor/ShaderPreprocessor.cs b/com.unity.render-pipelines.universal/Editor/ShaderPreprocessor.cs index 6f343a5f8a6..a7442a2bda8 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderPreprocessor.cs +++ b/com.unity.render-pipelines.universal/Editor/ShaderPreprocessor.cs @@ -506,6 +506,13 @@ bool StripUnusedFeatures(ShaderFeatures features, Shader shader, ShaderSnippetDa m_DecalNormalBlendHigh, ShaderFeatures.DecalNormalBlendHigh)) return true; + if(globalSettings && globalSettings.stripUnusedLODCrossFadeVariants) + { + if (compilerData.shaderKeywordSet.IsEnabled(m_LODFadeCrossFade) && + !IsFeatureEnabled(features, ShaderFeatures.LODCrossFade)) + return true; + } + return false; } @@ -649,10 +656,6 @@ bool StripUnused(ShaderFeatures features, Shader shader, ShaderSnippetData snipp shader.name.Contains(kTerrainShaderName)) return true; - if (compilerData.shaderKeywordSet.IsEnabled(m_LODFadeCrossFade) && - !IsFeatureEnabled(features, ShaderFeatures.LODCrossFade)) - return true; - return false; } @@ -780,6 +783,8 @@ public void OnPostprocessBuild(BuildReport report) #endif + private static bool s_LODCrossFadeSupported; + public void OnPreprocessBuild(BuildReport report) { FetchAllSupportedFeatures(); @@ -830,6 +835,42 @@ static bool TryGetRenderPipelineAssetsForBuildTarget(BuildTarget buildTarget, Li return true; } + static bool TryGetLODCrossFadeEnabledForBuildTarget(BuildTarget buildTarget) + { + var qualitySettings = new SerializedObject(QualitySettings.GetQualitySettings()); + if (qualitySettings == null) + return false; + + var property = qualitySettings.FindProperty("m_QualitySettings"); + if (property == null) + return false; + + var activeBuildTargetGroup = BuildPipeline.GetBuildTargetGroup(buildTarget); + var activeBuildTargetGroupName = activeBuildTargetGroup.ToString(); + + for (int i = 0; i < property.arraySize; i++) + { + var qualitySettingsLevel = property.GetArrayElementAtIndex(i); + + var excludedTargetPlatforms = qualitySettingsLevel.FindPropertyRelative("excludedTargetPlatforms"); + if (excludedTargetPlatforms == null) + continue; + + foreach (SerializedProperty excludedTargetPlatform in excludedTargetPlatforms) + { + var excludedBuildTargetGroupName = excludedTargetPlatform.stringValue; + if (activeBuildTargetGroupName == excludedBuildTargetGroupName) + continue; + } + + var enableLODCrossFade = qualitySettingsLevel.FindPropertyRelative("enableLODCrossFade"); + if (enableLODCrossFade.boolValue) + return true; + } + + return false; + } + private static void FetchAllSupportedFeatures() { List urps = new List(); @@ -846,6 +887,8 @@ private static void FetchAllSupportedFeatures() } } + s_LODCrossFadeSupported = TryGetLODCrossFadeEnabledForBuildTarget(EditorUserBuildSettings.activeBuildTarget); + s_SupportedFeaturesList.Clear(); foreach (UniversalRenderPipelineAsset urp in urps) @@ -930,15 +973,15 @@ private static ShaderFeatures GetSupportedShaderFeatures(UniversalRenderPipeline if (pipelineAsset.supportsTerrainHoles) shaderFeatures |= ShaderFeatures.TerrainHoles; - if (pipelineAsset.supportsLODCrossFade) - shaderFeatures |= ShaderFeatures.LODCrossFade; - if (pipelineAsset.useFastSRGBLinearConversion) shaderFeatures |= ShaderFeatures.UseFastSRGBLinearConversion; if (pipelineAsset.supportsLightLayers) shaderFeatures |= ShaderFeatures.LightLayers; + if (s_LODCrossFadeSupported) + shaderFeatures |= ShaderFeatures.LODCrossFade; + bool hasScreenSpaceShadows = false; bool hasScreenSpaceOcclusion = false; bool hasDeferredRenderer = false; diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs index 448a09752d3..0cd779d1285 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs @@ -12,7 +12,6 @@ internal class SerializedUniversalRenderPipelineAsset public SerializedProperty requireOpaqueTextureProp { get; } public SerializedProperty opaqueDownsamplingProp { get; } public SerializedProperty supportsTerrainHolesProp { get; } - public SerializedProperty supportsLodCrossFadeProp { get; } public SerializedProperty lodCrossFadeDitheringTypeProp { get; } public SerializedProperty storeActionsOptimizationProperty { get; } @@ -82,7 +81,6 @@ public SerializedUniversalRenderPipelineAsset(SerializedObject serializedObject) requireOpaqueTextureProp = serializedObject.FindProperty("m_RequireOpaqueTexture"); opaqueDownsamplingProp = serializedObject.FindProperty("m_OpaqueDownsampling"); supportsTerrainHolesProp = serializedObject.FindProperty("m_SupportsTerrainHoles"); - supportsLodCrossFadeProp = serializedObject.FindProperty("m_SupportsLODCrossFade"); lodCrossFadeDitheringTypeProp = serializedObject.FindProperty("m_LODCrossFadeDitheringType"); hdr = serializedObject.FindProperty("m_SupportsHDR"); diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs index 28c5d696066..0d9a288a62c 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs @@ -167,13 +167,38 @@ static void DrawQuality(SerializedUniversalRenderPipelineAsset serialized, Edito --EditorGUI.indentLevel; } - EditorGUILayout.PropertyField(serialized.supportsLodCrossFadeProp, Styles.supportsLodCrossFadeText); - EditorGUI.BeginDisabledGroup(!serialized.supportsLodCrossFadeProp.boolValue); + EditorGUILayout.PropertyField(serialized.lodCrossFadeDitheringTypeProp, Styles.lodCrossFadeDitheringTypeText); if (!ValidateCrossFadeDitheringTextures(serialized.asset)) CoreEditorUtils.DrawFixMeBox("Asset doesn't hold references to dithering textures. LOD Cross Fade might not work correctly.", () => ResourceReloader.ReloadAllNullIn(serialized.asset, UniversalRenderPipelineAsset.packagePath)); - EditorGUI.EndDisabledGroup(); + + var qualitySettings = new SerializedObject(QualitySettings.GetQualitySettings()); + + if (qualitySettings != null) + { + var property = qualitySettings.FindProperty("m_QualitySettings"); + + if (property != null) + { + for (int i = 0; i < property.arraySize; i++) + { + var urp = QualitySettings.GetRenderPipelineAssetAt(i); + + if (serialized.asset == urp) + { + var qualitySettingsLevel = property.GetArrayElementAtIndex(i); + var enableLODCrossFade = qualitySettingsLevel.FindPropertyRelative("enableLODCrossFade"); + + if (!enableLODCrossFade.boolValue) + { + EditorGUILayout.HelpBox(System.String.Format("LOD Cross Fade is disabled in QualitySettings. For the {0} quality level.", qualitySettingsLevel.displayName), MessageType.Warning); + break; + } + } + } + } + } } static void DrawLighting(SerializedUniversalRenderPipelineAsset serialized, Editor ownerEditor) diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs index a20fe2631e0..c9a34e3814a 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs @@ -39,7 +39,6 @@ internal static class Styles public static GUIContent upscalingFilterText = EditorGUIUtility.TrTextContent("Upscaling Filter", "Controls the type of filter used for upscaling when render scale is lower than 1.0."); public static GUIContent fsrOverrideSharpness = EditorGUIUtility.TrTextContent("Override FSR Sharpness", "Overrides the FSR sharpness value for the render pipeline asset."); public static GUIContent fsrSharpnessText = EditorGUIUtility.TrTextContent("FSR Sharpness", "Controls the intensity of the sharpening filter used by FidelityFX Super Resolution."); - public static GUIContent supportsLodCrossFadeText = EditorGUIUtility.TrTextContent("LOD Cross Fade", "Controls whether LOD Cross Fade enabled or disabled. When disabled, Universal Rendering Pipeline removes all LOD Cross Fade Shader variants when you build for the Unity Player. This decreases build time."); public static GUIContent lodCrossFadeDitheringTypeText = EditorGUIUtility.TrTextContent("LOD Cross Fade Dithering Type", "Controls the LOD Cross Fade Dithering Type that will be used to draw Renderer LOD when LODGroup has CrossFade Fade Mode selected."); // Main light diff --git a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs index 02501984364..1c4a01467d2 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs @@ -290,9 +290,7 @@ public enum LODCrossFadeDitheringType /// Unity uses Bayer Matrix Texture to compute LOD CrossFade dithering. BayerMatrix, /// Unity uses precomputed Blue Noise Texture to compute LOD CrossFade dithering. - BlueNoise, - /// Unity uses a Hash function to compute LOD CrossFade dithering. - Hash + BlueNoise } /// Defines the upscaling filter selected by the user the universal render pipeline asset. @@ -353,7 +351,6 @@ public partial class UniversalRenderPipelineAsset : RenderPipelineAsset, ISerial [SerializeField] UpscalingFilterSelection m_UpscalingFilter = UpscalingFilterSelection.Auto; [SerializeField] bool m_FsrOverrideSharpness = false; [SerializeField] float m_FsrSharpness = FSRUtils.kDefaultSharpnessLinear; - [SerializeField] bool m_SupportsLODCrossFade = true; [SerializeField] LODCrossFadeDitheringType m_LODCrossFadeDitheringType = LODCrossFadeDitheringType.BlueNoise; // TODO: Shader Quality Tiers @@ -864,11 +861,6 @@ public float renderScale set { m_RenderScale = ValidateRenderScale(value); } } - public bool supportsLODCrossFade - { - get { return m_SupportsLODCrossFade; } - } - public LODCrossFadeDitheringType lodCrossFadeDitheringType { get { return m_LODCrossFadeDitheringType; } diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineGlobalSettings.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineGlobalSettings.cs index c93c0604c48..1784b2e55f0 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineGlobalSettings.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineGlobalSettings.cs @@ -321,6 +321,8 @@ internal void ResetRenderingLayerNames() [SerializeField] bool m_StripUnusedVariants = true; + [SerializeField] bool m_StripUnusedLODCrossFadeVariants = true; + /// /// Controls whether debug display shaders for Rendering Debugger are available in Player builds. /// @@ -343,6 +345,12 @@ internal void ResetRenderingLayerNames() /// public bool stripUnusedVariants { get => m_StripUnusedVariants; set { m_StripUnusedVariants = value; } } + /// + /// Controls whether strip off variants if the LOD Cross Fade feature is disabled. + /// It strips based on QualitySettings.enableLODCrossFade in the project. + /// + public bool stripUnusedLODCrossFadeVariants { get => m_StripUnusedLODCrossFadeVariants; set { m_StripUnusedLODCrossFadeVariants = value; } } + #endregion } } From 86d0918673fd8e96fa2ac5619fd91e67979f9d3c Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Mon, 7 Feb 2022 17:43:22 -0800 Subject: [PATCH 24/26] URP enableLODCrossFade overrides Unity enableLODCrossFade. --- ...rsalRenderPipelineGlobalSettingsUI.Skin.cs | 2 +- .../Editor/ShaderPreprocessor.cs | 52 ++----------------- .../SerializedUniversalRenderPipelineAsset.cs | 2 + .../UniversalRenderPipelineAssetUI.Drawers.cs | 31 ++--------- .../UniversalRenderPipelineAssetUI.Skin.cs | 1 + .../Data/UniversalRenderPipelineAsset.cs | 6 +++ .../Runtime/UniversalRenderPipeline.cs | 5 +- 7 files changed, 22 insertions(+), 77 deletions(-) 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 9e89ec543c0..fe09944c545 100644 --- a/com.unity.render-pipelines.universal/Editor/GlobalSettings/UniversalRenderPipelineGlobalSettingsUI.Skin.cs +++ b/com.unity.render-pipelines.universal/Editor/GlobalSettings/UniversalRenderPipelineGlobalSettingsUI.Skin.cs @@ -19,7 +19,7 @@ internal class Styles 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."); - public static readonly GUIContent stripUnusedLODCrossFadeVariantsLabel = EditorGUIUtility.TrTextContent("Strip Unused LOD Cross Fade Variants", "Controls whether strip off variants if the LOD Cross Fade feature is disabled. It strips based on QualitySettings.enableLODCrossFade in the project."); + public static readonly GUIContent stripUnusedLODCrossFadeVariantsLabel = EditorGUIUtility.TrTextContent("Strip Unused LOD Cross Fade Variants", "Controls whether strip off variants if the LOD Cross Fade feature is disabled. It strips based on the UniversalRenderingPipelineAsset.enableLODCrossFade property."); } } } diff --git a/com.unity.render-pipelines.universal/Editor/ShaderPreprocessor.cs b/com.unity.render-pipelines.universal/Editor/ShaderPreprocessor.cs index a7442a2bda8..f40f7be7e3f 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderPreprocessor.cs +++ b/com.unity.render-pipelines.universal/Editor/ShaderPreprocessor.cs @@ -506,12 +506,10 @@ bool StripUnusedFeatures(ShaderFeatures features, Shader shader, ShaderSnippetDa m_DecalNormalBlendHigh, ShaderFeatures.DecalNormalBlendHigh)) return true; - if(globalSettings && globalSettings.stripUnusedLODCrossFadeVariants) - { - if (compilerData.shaderKeywordSet.IsEnabled(m_LODFadeCrossFade) && - !IsFeatureEnabled(features, ShaderFeatures.LODCrossFade)) - return true; - } + var stripUnusedLODCrossFadeVariants = UniversalRenderPipelineGlobalSettings.instance?.stripUnusedLODCrossFadeVariants == true; + if (stripUnusedLODCrossFadeVariants && + stripTool.StripMultiCompileKeepOffVariant(m_LODFadeCrossFade, ShaderFeatures.LODCrossFade)) + return true; return false; } @@ -783,8 +781,6 @@ public void OnPostprocessBuild(BuildReport report) #endif - private static bool s_LODCrossFadeSupported; - public void OnPreprocessBuild(BuildReport report) { FetchAllSupportedFeatures(); @@ -835,42 +831,6 @@ static bool TryGetRenderPipelineAssetsForBuildTarget(BuildTarget buildTarget, Li return true; } - static bool TryGetLODCrossFadeEnabledForBuildTarget(BuildTarget buildTarget) - { - var qualitySettings = new SerializedObject(QualitySettings.GetQualitySettings()); - if (qualitySettings == null) - return false; - - var property = qualitySettings.FindProperty("m_QualitySettings"); - if (property == null) - return false; - - var activeBuildTargetGroup = BuildPipeline.GetBuildTargetGroup(buildTarget); - var activeBuildTargetGroupName = activeBuildTargetGroup.ToString(); - - for (int i = 0; i < property.arraySize; i++) - { - var qualitySettingsLevel = property.GetArrayElementAtIndex(i); - - var excludedTargetPlatforms = qualitySettingsLevel.FindPropertyRelative("excludedTargetPlatforms"); - if (excludedTargetPlatforms == null) - continue; - - foreach (SerializedProperty excludedTargetPlatform in excludedTargetPlatforms) - { - var excludedBuildTargetGroupName = excludedTargetPlatform.stringValue; - if (activeBuildTargetGroupName == excludedBuildTargetGroupName) - continue; - } - - var enableLODCrossFade = qualitySettingsLevel.FindPropertyRelative("enableLODCrossFade"); - if (enableLODCrossFade.boolValue) - return true; - } - - return false; - } - private static void FetchAllSupportedFeatures() { List urps = new List(); @@ -887,8 +847,6 @@ private static void FetchAllSupportedFeatures() } } - s_LODCrossFadeSupported = TryGetLODCrossFadeEnabledForBuildTarget(EditorUserBuildSettings.activeBuildTarget); - s_SupportedFeaturesList.Clear(); foreach (UniversalRenderPipelineAsset urp in urps) @@ -979,7 +937,7 @@ private static ShaderFeatures GetSupportedShaderFeatures(UniversalRenderPipeline if (pipelineAsset.supportsLightLayers) shaderFeatures |= ShaderFeatures.LightLayers; - if (s_LODCrossFadeSupported) + if (pipelineAsset.enableLODCrossFade) shaderFeatures |= ShaderFeatures.LODCrossFade; bool hasScreenSpaceShadows = false; diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs index 0cd779d1285..3c43d71f120 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs @@ -12,6 +12,7 @@ internal class SerializedUniversalRenderPipelineAsset public SerializedProperty requireOpaqueTextureProp { get; } public SerializedProperty opaqueDownsamplingProp { get; } public SerializedProperty supportsTerrainHolesProp { get; } + public SerializedProperty enableLODCrossFadeProp { get; } public SerializedProperty lodCrossFadeDitheringTypeProp { get; } public SerializedProperty storeActionsOptimizationProperty { get; } @@ -81,6 +82,7 @@ public SerializedUniversalRenderPipelineAsset(SerializedObject serializedObject) requireOpaqueTextureProp = serializedObject.FindProperty("m_RequireOpaqueTexture"); opaqueDownsamplingProp = serializedObject.FindProperty("m_OpaqueDownsampling"); supportsTerrainHolesProp = serializedObject.FindProperty("m_SupportsTerrainHoles"); + enableLODCrossFadeProp = serializedObject.FindProperty("m_EnableLODCrossFade"); lodCrossFadeDitheringTypeProp = serializedObject.FindProperty("m_LODCrossFadeDitheringType"); hdr = serializedObject.FindProperty("m_SupportsHDR"); diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs index 0d9a288a62c..48a18bda25b 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs @@ -167,38 +167,13 @@ static void DrawQuality(SerializedUniversalRenderPipelineAsset serialized, Edito --EditorGUI.indentLevel; } - + EditorGUILayout.PropertyField(serialized.enableLODCrossFadeProp, Styles.enableLODCrossFadeText); + EditorGUI.BeginDisabledGroup(!serialized.enableLODCrossFadeProp.boolValue); EditorGUILayout.PropertyField(serialized.lodCrossFadeDitheringTypeProp, Styles.lodCrossFadeDitheringTypeText); if (!ValidateCrossFadeDitheringTextures(serialized.asset)) CoreEditorUtils.DrawFixMeBox("Asset doesn't hold references to dithering textures. LOD Cross Fade might not work correctly.", () => ResourceReloader.ReloadAllNullIn(serialized.asset, UniversalRenderPipelineAsset.packagePath)); - - var qualitySettings = new SerializedObject(QualitySettings.GetQualitySettings()); - - if (qualitySettings != null) - { - var property = qualitySettings.FindProperty("m_QualitySettings"); - - if (property != null) - { - for (int i = 0; i < property.arraySize; i++) - { - var urp = QualitySettings.GetRenderPipelineAssetAt(i); - - if (serialized.asset == urp) - { - var qualitySettingsLevel = property.GetArrayElementAtIndex(i); - var enableLODCrossFade = qualitySettingsLevel.FindPropertyRelative("enableLODCrossFade"); - - if (!enableLODCrossFade.boolValue) - { - EditorGUILayout.HelpBox(System.String.Format("LOD Cross Fade is disabled in QualitySettings. For the {0} quality level.", qualitySettingsLevel.displayName), MessageType.Warning); - break; - } - } - } - } - } + EditorGUI.EndDisabledGroup(); } static void DrawLighting(SerializedUniversalRenderPipelineAsset serialized, Editor ownerEditor) diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs index c9a34e3814a..31dd03de4db 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs @@ -39,6 +39,7 @@ internal static class Styles public static GUIContent upscalingFilterText = EditorGUIUtility.TrTextContent("Upscaling Filter", "Controls the type of filter used for upscaling when render scale is lower than 1.0."); public static GUIContent fsrOverrideSharpness = EditorGUIUtility.TrTextContent("Override FSR Sharpness", "Overrides the FSR sharpness value for the render pipeline asset."); public static GUIContent fsrSharpnessText = EditorGUIUtility.TrTextContent("FSR Sharpness", "Controls the intensity of the sharpening filter used by FidelityFX Super Resolution."); + public static GUIContent enableLODCrossFadeText = EditorGUIUtility.TrTextContent("LOD Cross Fade", "Controls whether LOD Cross Fade enabled or disabled."); public static GUIContent lodCrossFadeDitheringTypeText = EditorGUIUtility.TrTextContent("LOD Cross Fade Dithering Type", "Controls the LOD Cross Fade Dithering Type that will be used to draw Renderer LOD when LODGroup has CrossFade Fade Mode selected."); // Main light diff --git a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs index 1c4a01467d2..37255a87183 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs @@ -351,6 +351,7 @@ public partial class UniversalRenderPipelineAsset : RenderPipelineAsset, ISerial [SerializeField] UpscalingFilterSelection m_UpscalingFilter = UpscalingFilterSelection.Auto; [SerializeField] bool m_FsrOverrideSharpness = false; [SerializeField] float m_FsrSharpness = FSRUtils.kDefaultSharpnessLinear; + [SerializeField] bool m_EnableLODCrossFade = true; [SerializeField] LODCrossFadeDitheringType m_LODCrossFadeDitheringType = LODCrossFadeDitheringType.BlueNoise; // TODO: Shader Quality Tiers @@ -861,6 +862,11 @@ public float renderScale set { m_RenderScale = ValidateRenderScale(value); } } + public bool enableLODCrossFade + { + get { return m_EnableLODCrossFade; } + } + public LODCrossFadeDitheringType lodCrossFadeDitheringType { get { return m_LODCrossFadeDitheringType; } diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index 5bb955c3292..333405b51bd 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -211,6 +211,8 @@ public UniversalRenderPipeline(UniversalRenderPipelineAsset asset) DebugManager.instance.RefreshEditor(); m_DebugDisplaySettingsUI.RegisterDebug(UniversalRenderPipelineDebugDisplaySettings.Instance); + + QualitySettings.enableLODCrossFade = asset.enableLODCrossFade; } /// @@ -774,7 +776,8 @@ static void SetSupportedRenderingFeatures() receiveShadows = false, reflectionProbes = false, reflectionProbesBlendDistance = true, - particleSystemInstancing = true + particleSystemInstancing = true, + overridesLODCrossFade = true }; SceneViewDrawMode.SetupDrawMode(); #endif From 40aa114bd0222772948c7d237cb916c3d18e201d Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Mon, 7 Feb 2022 17:49:52 -0800 Subject: [PATCH 25/26] Comment fix. --- .../Runtime/UniversalRenderPipelineGlobalSettings.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineGlobalSettings.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineGlobalSettings.cs index 1784b2e55f0..17d226696f3 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineGlobalSettings.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineGlobalSettings.cs @@ -347,7 +347,7 @@ internal void ResetRenderingLayerNames() /// /// Controls whether strip off variants if the LOD Cross Fade feature is disabled. - /// It strips based on QualitySettings.enableLODCrossFade in the project. + /// It strips based on UniversalRenderingPipelineAsset.enableLODCrossFade property. /// public bool stripUnusedLODCrossFadeVariants { get => m_StripUnusedLODCrossFadeVariants; set { m_StripUnusedLODCrossFadeVariants = value; } } From 4f8d396266f008f55160f6511ef7579029df66e2 Mon Sep 17 00:00:00 2001 From: Aleksei Dobroliubov Date: Tue, 8 Feb 2022 16:18:10 -0800 Subject: [PATCH 26/26] Property rename fix. --- .../Runtime/UniversalRenderPipeline.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index 333405b51bd..31a8b058ce5 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -777,7 +777,7 @@ static void SetSupportedRenderingFeatures() reflectionProbes = false, reflectionProbesBlendDistance = true, particleSystemInstancing = true, - overridesLODCrossFade = true + overridesEnableLODCrossFade = true }; SceneViewDrawMode.SetupDrawMode(); #endif