From 8b646cb39531426967a78c5a7745d161c53658b7 Mon Sep 17 00:00:00 2001 From: Felix Herbst Date: Tue, 7 May 2024 16:05:38 +0200 Subject: [PATCH 001/117] fix: empty or invalid root transforms should not be exported --- Runtime/Scripts/GLTFSceneExporter.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Runtime/Scripts/GLTFSceneExporter.cs b/Runtime/Scripts/GLTFSceneExporter.cs index 9b238217f..82e348b33 100644 --- a/Runtime/Scripts/GLTFSceneExporter.cs +++ b/Runtime/Scripts/GLTFSceneExporter.cs @@ -605,7 +605,8 @@ public GLTFSceneExporter(Transform[] rootTransforms, ExportContext context) var normalChannelShader = Resources.Load("NormalChannel", typeof(Shader)) as Shader; _normalChannelMaterial = new Material(normalChannelShader); - _rootTransforms = rootTransforms; + // Remove invalid transforms + _rootTransforms = rootTransforms?.Where(x => x).ToArray() ?? Array.Empty(); _exportedTransforms = new Dictionary(); _exportedCameras = new Dictionary(); @@ -915,6 +916,8 @@ public static string GetFileName(string directory, string fileNameThatMayHaveExt /// private static string EnsureValidFileName(string filename) { + if (filename == null) return ""; + var invalidChars = Regex.Escape(new string(Path.GetInvalidFileNameChars())); var invalidReStr = string.Format(@"[{0}]+", invalidChars); @@ -999,6 +1002,11 @@ private SceneId ExportScene(string name, Transform[] rootObjTransforms) scene.Nodes = new List(rootObjTransforms.Length); foreach (var transform in rootObjTransforms) { + if (!transform) + { + Debug.LogWarning("GLTFSceneExporter", $"Skipping empty transform in root transforms provided for scene export for {name}", transform); + continue; + } scene.Nodes.Add(ExportNode(transform)); } From d6416be277e89ffc3241df9504764abd0de7a93b Mon Sep 17 00:00:00 2001 From: Felix Herbst Date: Tue, 7 May 2024 16:05:53 +0200 Subject: [PATCH 002/117] fix: when no root transforms are exported, no scene should be created by default --- Runtime/Scripts/GLTFSceneExporter.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Runtime/Scripts/GLTFSceneExporter.cs b/Runtime/Scripts/GLTFSceneExporter.cs index 82e348b33..d969a4ed0 100644 --- a/Runtime/Scripts/GLTFSceneExporter.cs +++ b/Runtime/Scripts/GLTFSceneExporter.cs @@ -977,6 +977,8 @@ private bool ShouldExportTransform(Transform transform) private SceneId ExportScene(string name, Transform[] rootObjTransforms) { + if (rootObjTransforms == null || rootObjTransforms.Length < 1) return null; + exportSceneMarker.Begin(); var scene = new GLTFScene(); From d1ffc441def00d73c9f9dc677d1eefd0e38e50f1 Mon Sep 17 00:00:00 2001 From: pfcDorn Date: Tue, 14 May 2024 12:15:17 +0200 Subject: [PATCH 003/117] fix 737 - wrong image filenames- was ignoring extension and wrong filename duplication avoidance --- .../Scripts/SceneExporter/ExporterTextures.cs | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/Runtime/Scripts/SceneExporter/ExporterTextures.cs b/Runtime/Scripts/SceneExporter/ExporterTextures.cs index 9f861be1c..e0b778de6 100644 --- a/Runtime/Scripts/SceneExporter/ExporterTextures.cs +++ b/Runtime/Scripts/SceneExporter/ExporterTextures.cs @@ -18,10 +18,32 @@ public partial class GLTFSceneExporter private string GetUniqueName(HashSet existingNames, string name) { if (!existingNames.Contains(name)) return name; - var i = 1; - while (existingNames.Contains( $"{name}-{i}")) - i++; - return $"{name}-{i}"; + + string newName = name; + if (Path.HasExtension(name)) + { + string extension = Path.GetExtension(name); + string baseName = Path.GetFileNameWithoutExtension(name); + var i = 1; + newName = $"{baseName}-{i}{extension}"; + while (existingNames.Contains($"{baseName}-{i}{extension}")) + { + i++; + newName = $"{baseName}-{i}{extension}"; + } + } + else + { + var i = 1; + newName = $"{name}-{i}"; + while (existingNames.Contains($"{name}-{i}")) + { + i++; + newName = $"{name}-{i}"; + } + } + + return newName; } private void ExportImages(string outputPath) @@ -32,7 +54,7 @@ private void ExportImages(string outputPath) var image = _imageInfos[t].texture; var textureMapType = _imageInfos[t].textureMapType; - var fileOutputPath = Path.Combine(outputPath, GetUniqueName(_imageExportPaths, _imageInfos[t].outputPath)); + var fileOutputPath = Path.Combine(outputPath, _imageInfos[t].outputPath); _imageExportPaths.Add(fileOutputPath); var canBeExportedFromDisk = _imageInfos[t].canBeExportedFromDisk; From 0e85b0fa946d3dbeaa5708508fb0a881826fce78 Mon Sep 17 00:00:00 2001 From: pfcDorn Date: Tue, 14 May 2024 12:24:24 +0200 Subject: [PATCH 004/117] removed loaded node count error log - in some cases (e.g. LODs) there will be always more created nodes/gamesobjects --- Runtime/Scripts/GLTFSceneImporter.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Runtime/Scripts/GLTFSceneImporter.cs b/Runtime/Scripts/GLTFSceneImporter.cs index 17a760e7f..b58f2976b 100644 --- a/Runtime/Scripts/GLTFSceneImporter.cs +++ b/Runtime/Scripts/GLTFSceneImporter.cs @@ -508,7 +508,6 @@ public void Dispose() } _gltfStream.Stream.Close(); DisposeNativeBuffers(); - if (progressStatus.NodeLoaded != progressStatus.NodeTotal) Debug.Log(LogType.Error, $"Nodes loaded ({progressStatus.NodeLoaded}) does not match node total in the scene ({progressStatus.NodeTotal}) (File: {_gltfFileName})"); if (progressStatus.TextureLoaded > progressStatus.TextureTotal) Debug.Log(LogType.Error, $"Textures loaded ({progressStatus.TextureLoaded}) is larger than texture total in the scene ({progressStatus.TextureTotal}) (File: {_gltfFileName})"); onLoadComplete?.Invoke(LastLoadedScene, null); From 01eef045a8d310626ba16be28462ba6ab1fc4d6d Mon Sep 17 00:00:00 2001 From: pfcDorn Date: Tue, 14 May 2024 13:41:36 +0200 Subject: [PATCH 005/117] removed loaded texture count error log - when multiple samplers are used for one texture, the textures will be duplicated --- Runtime/Scripts/GLTFSceneImporter.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Runtime/Scripts/GLTFSceneImporter.cs b/Runtime/Scripts/GLTFSceneImporter.cs index b58f2976b..1f792ad7c 100644 --- a/Runtime/Scripts/GLTFSceneImporter.cs +++ b/Runtime/Scripts/GLTFSceneImporter.cs @@ -508,7 +508,6 @@ public void Dispose() } _gltfStream.Stream.Close(); DisposeNativeBuffers(); - if (progressStatus.TextureLoaded > progressStatus.TextureTotal) Debug.Log(LogType.Error, $"Textures loaded ({progressStatus.TextureLoaded}) is larger than texture total in the scene ({progressStatus.TextureTotal}) (File: {_gltfFileName})"); onLoadComplete?.Invoke(LastLoadedScene, null); } From dafcf1f091f9cd55c5f51e367eb9686f505b9e78 Mon Sep 17 00:00:00 2001 From: hybridherbst Date: Wed, 29 May 2024 23:22:10 +0200 Subject: [PATCH 006/117] set legacy animation import mode --- Runtime/Scripts/GLTFSceneImporter.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Runtime/Scripts/GLTFSceneImporter.cs b/Runtime/Scripts/GLTFSceneImporter.cs index 17a760e7f..1bc1e88cf 100644 --- a/Runtime/Scripts/GLTFSceneImporter.cs +++ b/Runtime/Scripts/GLTFSceneImporter.cs @@ -1304,6 +1304,7 @@ protected virtual async Task ConstructScene(GLTFScene scene, bool showSceneObj, for (int i = 0; i < constructedClips.Count; i++) { var clip = constructedClips[i]; + clip.wrapMode = _options.AnimationLoopTime ? WrapMode.Loop : WrapMode.Default; animation.AddClip(clip, clip.name); if (i == 0) { From dcacd833320eab456dbf23d9406ff1c91e5022a5 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Fri, 5 Jul 2024 09:06:28 +0200 Subject: [PATCH 007/117] fixes #740 - added missing ExtTransform for some textures in animationpointer import/export, fixes when only offset exist --- .../Schema/AnimationPointerData.cs | 3 + .../AnimationPointerUtilities.cs | 141 ++++++++------ .../MaterialPropertiesRemapper.cs | 172 +++++++++--------- .../SceneImporter/ImporterAnimation.cs | 24 ++- 4 files changed, 190 insertions(+), 150 deletions(-) diff --git a/Runtime/Plugins/GLTFSerialization/Schema/AnimationPointerData.cs b/Runtime/Plugins/GLTFSerialization/Schema/AnimationPointerData.cs index d0b6af020..4455e3ee5 100644 --- a/Runtime/Plugins/GLTFSerialization/Schema/AnimationPointerData.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/AnimationPointerData.cs @@ -12,9 +12,12 @@ public class AnimationPointerData public ImportValuesConversion importAccessorContentConversion; public string primaryPath = ""; + public string primaryProperty = ""; + public AttributeAccessor primaryData; public string secondaryPath = ""; + public string secondaryProperty = ""; public AttributeAccessor secondaryData; } diff --git a/Runtime/Scripts/Plugins/AnimationPointer/AnimationPointerUtilities.cs b/Runtime/Scripts/Plugins/AnimationPointer/AnimationPointerUtilities.cs index 049f90f28..b2d8804cd 100644 --- a/Runtime/Scripts/Plugins/AnimationPointer/AnimationPointerUtilities.cs +++ b/Runtime/Scripts/Plugins/AnimationPointer/AnimationPointerUtilities.cs @@ -1,4 +1,5 @@ -using GLTF.Schema; +using GLTF; +using GLTF.Schema; using UnityEngine; namespace UnityGLTF.Plugins @@ -8,18 +9,21 @@ internal static class AnimationPointerHelpers private static readonly string[] MATERIAL_PROPERTY_COMPONENTS = {"x", "y", "z", "w"}; private static readonly string[] MATERIAL_COLOR_PROPERTY_COMPONENTS = {"r", "g", "b", "a"}; - internal static bool BuildImportMaterialAnimationPointerData(MaterialPropertiesRemapper remapper, Material material, - string gltfProperty, GLTFAccessorAttributeType valueType, out AnimationPointerData pointerData) + internal static bool BuildImportMaterialAnimationPointerData(string pointerPath, MaterialPropertiesRemapper remapper, Material material, + string gltfProperty, AttributeAccessor accessor, out AnimationPointerData pointerData) { + var valueType = accessor.AccessorId.Value.Type; pointerData = new AnimationPointerData(); + pointerData.primaryPath = pointerPath; + pointerData.primaryData = accessor; + if (!remapper.GetUnityPropertyName(material, gltfProperty, out string unityPropertyName, out MaterialPointerPropertyMap propertyMap, out bool isSecondaryGltfProperty)) return false; - - // e.g. Emission Factor and Emission Color are combined into a single property - if (isSecondaryGltfProperty && propertyMap.CombinePrimaryAndSecondaryOnImport) - return false; + pointerData.primaryProperty = propertyMap.GltfPropertyName; + pointerData.secondaryProperty = propertyMap.GltfSecondaryPropertyName; + if (propertyMap.CombinePrimaryAndSecondaryOnImport) { if (propertyMap.CombinePrimaryAndSecondaryDataFunction == null) @@ -36,23 +40,31 @@ internal static bool BuildImportMaterialAnimationPointerData(MaterialPropertiesR valueType = propertyMap.OverrideCombineResultType; } + if (isSecondaryGltfProperty) + { + pointerData.primaryPath = ""; + pointerData.primaryData = null; + pointerData.secondaryPath = pointerPath; + pointerData.secondaryData = accessor; + } + switch (valueType) { case GLTFAccessorAttributeType.SCALAR: pointerData.unityPropertyNames = GetAnimationChannelProperties(unityPropertyName, 1, isSecondaryGltfProperty ? 1 : 0 ); - pointerData.importAccessorContentConversion = (data, frame) => MaterialValueConversion(data.primaryData.AccessorContent, frame, primaryComponentCount, propertyMap, pointerDataCopy); + pointerData.importAccessorContentConversion = (data, frame) => MaterialValueConversion(frame, primaryComponentCount, propertyMap, pointerDataCopy); break; case GLTFAccessorAttributeType.VEC2: pointerData.unityPropertyNames = GetAnimationChannelProperties(unityPropertyName, 2, isSecondaryGltfProperty ? 2 : 0); - pointerData.importAccessorContentConversion = (data, frame) => MaterialValueConversion(data.primaryData.AccessorContent, frame, primaryComponentCount, propertyMap, pointerDataCopy); + pointerData.importAccessorContentConversion = (data, frame) => MaterialValueConversion(frame, primaryComponentCount, propertyMap, pointerDataCopy); break; case GLTFAccessorAttributeType.VEC3: pointerData.unityPropertyNames = GetAnimationChannelProperties(unityPropertyName, 3, isColor: propertyMap.IsColor); - pointerData.importAccessorContentConversion = (data, frame) => MaterialValueConversion(data.primaryData.AccessorContent, frame, primaryComponentCount, propertyMap, pointerDataCopy); + pointerData.importAccessorContentConversion = (data, frame) => MaterialValueConversion(frame, primaryComponentCount, propertyMap, pointerDataCopy); break; case GLTFAccessorAttributeType.VEC4: pointerData.unityPropertyNames = GetAnimationChannelProperties(unityPropertyName, 4, isColor: propertyMap.IsColor); - pointerData.importAccessorContentConversion = (data, frame) => MaterialValueConversion(data.primaryData.AccessorContent, frame, primaryComponentCount, propertyMap, pointerDataCopy); + pointerData.importAccessorContentConversion = (data, frame) => MaterialValueConversion(frame, primaryComponentCount, propertyMap, pointerDataCopy); break; default: return false; @@ -81,63 +93,72 @@ internal static string[] GetAnimationChannelProperties(string propertyName, int return result; } - internal static float[] MaterialValueConversion(NumericArray data, int index, int componentCount, MaterialPointerPropertyMap map, AnimationPointerData pointerData) + internal static float[] MaterialValueConversion(int index, int componentCount, MaterialPointerPropertyMap map, AnimationPointerData pointerData) { int resultComponentCount = componentCount; if (map.CombineComponentResult == MaterialPointerPropertyMap.CombineResultType.Override) { resultComponentCount = map.OverrideCombineResultType.ComponentCount(); } + float[] primary = new float[0]; float[] result = new float[resultComponentCount]; - - - switch (componentCount) + if (pointerData.primaryData != null) { - case 1: - result[0] = data.AsFloats[index]; - break; - case 2: - var frameData2 = data.AsFloat2s[index]; - result[0] = frameData2.x; - result[1] = frameData2.y; - break; - case 3: - var frameData3 = data.AsFloat3s[index]; - if (map.PropertyType == MaterialPointerPropertyMap.PropertyTypeOption.SRGBColor) - { - Color gammaColor = new Color(frameData3.x, frameData3.y, frameData3.z).gamma; - result[0] = gammaColor.r; - result[1] = gammaColor.g; - result[2] = gammaColor.b; - } - else - { - result[0] = frameData3.x; - result[1] = frameData3.y; - result[2] = frameData3.z; - } - break; - case 4: - var frameData4 = data.AsFloat4s[index]; - if (map.PropertyType == MaterialPointerPropertyMap.PropertyTypeOption.SRGBColor) - { - Color gammaColor = new Color(frameData4.x, frameData4.y, frameData4.z, frameData4.z).gamma; - result[0] = gammaColor.r; - result[1] = gammaColor.g; - result[2] = gammaColor.b; - result[3] = gammaColor.a; - } - else - { - result[0] = frameData4.x; - result[1] = frameData4.y; - result[2] = frameData4.z; - result[3] = frameData4.w; - } + var primaryData = pointerData.primaryData.AccessorContent; + switch (componentCount) + { + case 1: + primary = new float[1]; + primary[0] = primaryData.AsFloats[index]; + break; + case 2: + primary = new float[2]; + var frameData2 = primaryData.AsFloat2s[index]; + primary[0] = frameData2.x; + primary[1] = frameData2.y; + break; + case 3: + primary = new float[3]; + var frameData3 = primaryData.AsFloat3s[index]; + if (map.PropertyType == MaterialPointerPropertyMap.PropertyTypeOption.SRGBColor) + { + Color gammaColor = new Color(frameData3.x, frameData3.y, frameData3.z).gamma; + primary[0] = gammaColor.r; + primary[1] = gammaColor.g; + primary[2] = gammaColor.b; + } + else + { + primary[0] = frameData3.x; + primary[1] = frameData3.y; + primary[2] = frameData3.z; + } - break; + break; + case 4: + primary = new float[4]; + var frameData4 = primaryData.AsFloat4s[index]; + if (map.PropertyType == MaterialPointerPropertyMap.PropertyTypeOption.SRGBColor) + { + Color gammaColor = new Color(frameData4.x, frameData4.y, frameData4.z, frameData4.z).gamma; + primary[0] = gammaColor.r; + primary[1] = gammaColor.g; + primary[2] = gammaColor.b; + primary[3] = gammaColor.a; + } + else + { + primary[0] = frameData4.x; + primary[1] = frameData4.y; + primary[2] = frameData4.z; + primary[3] = frameData4.w; + } + + break; + } } + if (map.CombinePrimaryAndSecondaryOnImport && map.CombinePrimaryAndSecondaryDataFunction != null) { float[] secondary = new float[0]; @@ -163,12 +184,14 @@ internal static float[] MaterialValueConversion(NumericArray data, int index, in secondary = new float[] { s4.x, s4.y, s4.z, s4.w }; break; default: - return result; + return primary; } } - result = map.CombinePrimaryAndSecondaryDataFunction(result, secondary); + result = map.CombinePrimaryAndSecondaryDataFunction(primary, secondary, result.Length); } + else + result = primary; return result; } diff --git a/Runtime/Scripts/Plugins/AnimationPointer/MaterialPropertiesRemapper.cs b/Runtime/Scripts/Plugins/AnimationPointer/MaterialPropertiesRemapper.cs index 330dfc7f8..37c75dcb1 100644 --- a/Runtime/Scripts/Plugins/AnimationPointer/MaterialPropertiesRemapper.cs +++ b/Runtime/Scripts/Plugins/AnimationPointer/MaterialPropertiesRemapper.cs @@ -64,7 +64,7 @@ public string[] PropertyNames public string ExtensionName = null; // The arrays contains the components of the primary and secondary properties. e.g. for a Vector3, the arrays will contain 3 elements - public delegate float[] CombinePrimaryAndSecondaryData(float[] primary, float[] secondary); + public delegate float[] CombinePrimaryAndSecondaryData(float[] primary, float[] secondary, int expectedResultLength); /// /// Function to combine primary and secondary data on import. @@ -119,13 +119,32 @@ private void CreatePropertyIds() } } - private static float[] CombineTextureTransform(float[] primary, float[] secondary) + private static float[] CombineTextureTransform(float[] primary, float[] secondary, int expectedResultLength) { - var result = new float[4]; - result[0] = primary[0]; - result[1] = primary[1]; - result[2] = secondary[0]; - result[3] = 1f - secondary[1] - primary[1]; + var result = new float[expectedResultLength]; + + if (primary.Length >= 2) + { + result[0] = primary[0]; + result[1] = primary[1]; + } + + if (primary.Length == 0) + { + result[0] = 1; + result[1] = 1; + } + + if (secondary.Length == 2) + { + result[2] = secondary[0]; + result[3] = 1f - secondary[1] - result[1]; + } + else + { + result[2] = 0; + result[3] = 0; + } return result; } @@ -151,6 +170,46 @@ public enum ImportExportUsageOption private Dictionary importMaps = new Dictionary(); private Dictionary exportMaps = new Dictionary (); + public void AddTextureExtTransforms(string gltfTextureName, string[] unityTextureNames, string extension = null) + { + var stNames = new string[unityTextureNames.Length]; + for (int i = 0; i < stNames.Length; i++) + stNames[i] = $"{unityTextureNames[i]}_ST"; + + var stMap = new MaterialPointerPropertyMap(MaterialPointerPropertyMap.PropertyTypeOption.TextureTransform) + { + PropertyNames = stNames, + GltfPropertyName = $"{gltfTextureName}/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.SCALE}", + GltfSecondaryPropertyName = $"{gltfTextureName}/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.OFFSET}", + ExtensionName = extension + }; + AddMap(stMap); + + var rotNames = new string[unityTextureNames.Length]; + for (int i = 0; i < stNames.Length; i++) + rotNames[i] = $"{unityTextureNames[i]}Rotation"; + + var rotMap = new MaterialPointerPropertyMap(MaterialPointerPropertyMap.PropertyTypeOption.Float) + { + PropertyNames = rotNames, + GltfPropertyName = $"{gltfTextureName}/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.ROTATION}", + ExtensionName = extension + }; + AddMap(rotMap); + + var texCoordNames = new string[unityTextureNames.Length]; + for (int i = 0; i < stNames.Length; i++) + texCoordNames[i] = $"{unityTextureNames[i]}TexCoord"; + + var texCoordMap = new MaterialPointerPropertyMap(MaterialPointerPropertyMap.PropertyTypeOption.Float) + { + PropertyNames = texCoordNames, + GltfPropertyName = $"{gltfTextureName}/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.TEXCOORD}", + ExtensionName = extension + }; + AddMap(texCoordMap); + } + public void AddMap(MaterialPointerPropertyMap map, ImportExportUsageOption importExport = ImportExportUsageOption.ImportAndExport) { if (importExport == ImportExportUsageOption.ImportOnly || @@ -279,15 +338,6 @@ public DefaultMaterialPropertiesRemapper() }; AddMap(roughness); - var roughnessTex = new MaterialPointerPropertyMap(MaterialPointerPropertyMap.PropertyTypeOption.TextureTransform) - { - PropertyNames = new[] { "metallicRoughnessTexture_ST", "_metallicRoughnessTexture_ST", "_MetallicRoughnessTexture_ST" }, - GltfPropertyName = $"pbrMetallicRoughness/metallicRoughnessTexture/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.SCALE}", - GltfSecondaryPropertyName = $"pbrMetallicRoughness/metallicRoughnessTexture/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.OFFSET}", - ExtensionName = ExtTextureTransformExtensionFactory.EXTENSION_NAME - }; - AddMap(roughnessTex); - var dispersion = new MaterialPointerPropertyMap(MaterialPointerPropertyMap.PropertyTypeOption.Float) { PropertyNames = new[] { "dispersion"}, @@ -302,17 +352,6 @@ public DefaultMaterialPropertiesRemapper() }; AddMap(metallic); - var baseColorTexture = new MaterialPointerPropertyMap(MaterialPointerPropertyMap.PropertyTypeOption.TextureTransform) - { - PropertyNames = new[] { "_MainTex_ST", "_BaseMap_ST", "_BaseColorTexture_ST", "baseColorTexture_ST" }, - GltfPropertyName = - $"pbrMetallicRoughness/baseColorTexture/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.SCALE}", - GltfSecondaryPropertyName = - $"pbrMetallicRoughness/baseColorTexture/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.OFFSET}", - ExtensionName = ExtTextureTransformExtensionFactory.EXTENSION_NAME, - }; - AddMap(baseColorTexture); - var emissiveFactor = new MaterialPointerPropertyMap(MaterialPointerPropertyMap.PropertyTypeOption.SRGBColor) { PropertyNames = new[] { "_EmissionColor", "_EmissiveFactor", "emissiveFactor" }, @@ -322,10 +361,10 @@ public DefaultMaterialPropertiesRemapper() ExtensionName = KHR_materials_emissive_strength_Factory.EXTENSION_NAME, CombinePrimaryAndSecondaryOnImport = true, ExportKeepColorAlpha = false, - CombinePrimaryAndSecondaryDataFunction = (primary, secondary) => + CombinePrimaryAndSecondaryDataFunction = (primary, secondary, exptedResultLength) => { float strength = (secondary != null && secondary.Length > 0) ? secondary[0] : 1f; - var result = new float[primary.Length]; + var result = new float[exptedResultLength]; for (int i = 0; i < 3; i++) result[i] = primary[i] * strength; if (result.Length == 4) @@ -342,18 +381,7 @@ public DefaultMaterialPropertiesRemapper() } }; AddMap(emissiveFactor); - - var emissiveTexture = new MaterialPointerPropertyMap(MaterialPointerPropertyMap.PropertyTypeOption.TextureTransform) - { - PropertyNames = new[] { "_EmissionMap_ST", "_EmissiveTexture_ST", "emissiveTexture_ST" }, - GltfPropertyName = - $"emissiveTexture/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.SCALE}", - GltfSecondaryPropertyName = - $"emissiveTexture/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.OFFSET}", - ExtensionName = ExtTextureTransformExtensionFactory.EXTENSION_NAME - }; - AddMap(emissiveTexture); - + var alphaCutoff = new MaterialPointerPropertyMap(MaterialPointerPropertyMap.PropertyTypeOption.Float) { PropertyNames = new[] { "_AlphaCutoff", "alphaCutoff", "_Cutoff" }, @@ -367,18 +395,7 @@ public DefaultMaterialPropertiesRemapper() GltfPropertyName = "normalTexture/scale" }; AddMap(normalScale); - - var normalTexture = new MaterialPointerPropertyMap(MaterialPointerPropertyMap.PropertyTypeOption.TextureTransform) - { - PropertyNames = new[] { "_BumpMap_ST", "_NormalTexture_ST", "normalTexture_ST" }, - GltfPropertyName = - $"normalTexture/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.SCALE}", - GltfSecondaryPropertyName = - $"normalTexture/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.OFFSET}", - ExtensionName = ExtTextureTransformExtensionFactory.EXTENSION_NAME - }; - AddMap(normalTexture); - + var occlusionStrength = new MaterialPointerPropertyMap(MaterialPointerPropertyMap.PropertyTypeOption.Float) { PropertyNames = new[] { "_OcclusionStrength", "occlusionStrength", "occlusionTextureStrength" }, @@ -386,17 +403,6 @@ public DefaultMaterialPropertiesRemapper() }; AddMap(occlusionStrength); - var occlusionTexture = new MaterialPointerPropertyMap(MaterialPointerPropertyMap.PropertyTypeOption.TextureTransform) - { - PropertyNames = new[] { "_OcclusionMap_ST", "_OcclusionTexture_ST", "occlusionTexture_ST" }, - GltfPropertyName = - $"occlusionTexture/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.SCALE}", - GltfSecondaryPropertyName = - $"occlusionTexture/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.OFFSET}", - ExtensionName = ExtTextureTransformExtensionFactory.EXTENSION_NAME - }; - AddMap(occlusionTexture); - // KHR_materials_transmission var transmissionFactor = new MaterialPointerPropertyMap(MaterialPointerPropertyMap.PropertyTypeOption.Float) { @@ -492,28 +498,26 @@ public DefaultMaterialPropertiesRemapper() }; AddMap(clearcoatRoughnessFactor); - var clearcoatTexture = new MaterialPointerPropertyMap(MaterialPointerPropertyMap.PropertyTypeOption.TextureTransform) - { - PropertyNames = new[] { "_clearcoatTexture_ST", "clearcoatTexture_ST", "ClearcoatTexture_ST" }, - GltfPropertyName = - $"{nameof(KHR_materials_clearcoat.clearcoatTexture)}/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.SCALE}", - GltfSecondaryPropertyName = - $"{nameof(KHR_materials_clearcoat.clearcoatTexture)}/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.OFFSET}", - ExtensionName = ExtTextureTransformExtensionFactory.EXTENSION_NAME - }; - AddMap(clearcoatTexture); + AddTextureExtTransforms("pbrMetallicRoughness/baseColorTexture", new[] { "_MainTex", "_BaseMap", "_BaseColorTexture", "baseColorTexture" }); + AddTextureExtTransforms("emissiveTexture", new[] { "_EmissionMap", "_EmissiveTexture", "emissiveTexture" } ); + AddTextureExtTransforms("normalTexture", new[] { "_BumpMap", "_NormalTexture", "normalTexture" }); + AddTextureExtTransforms("occlusionTexture", new[] { "_OcclusionMap", "_OcclusionTexture", "occlusionTexture" }); + AddTextureExtTransforms("pbrMetallicRoughness/metallicRoughnessTexture", new[] { "metallicRoughnessTexture", "_metallicRoughnessTexture", "_MetallicRoughnessTexture" }); - var clearcoatRoughnessTexture = new MaterialPointerPropertyMap(MaterialPointerPropertyMap.PropertyTypeOption.TextureTransform) - { - PropertyNames = new[] { "_clearcoatRoughnessTexture_ST", "clearcoatRoughnessTexture_ST", "ClearcoatRoughnessTexture_ST" }, - GltfPropertyName = - $"{nameof(KHR_materials_clearcoat.clearcoatRoughnessTexture)}/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.SCALE}", - GltfSecondaryPropertyName = - $"{nameof(KHR_materials_clearcoat.clearcoatRoughnessTexture)}/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.OFFSET}", - ExtensionName = ExtTextureTransformExtensionFactory.EXTENSION_NAME - }; - AddMap(clearcoatRoughnessTexture); + string clearCoatExt = "extensions/"+nameof(KHR_materials_clearcoat)+"/"; + AddTextureExtTransforms(clearCoatExt+ nameof(KHR_materials_clearcoat.clearcoatTexture), new[] { "_ClearcoatTexture", "clearcoatTexture", "ClearcoatTexture" }, nameof(KHR_materials_clearcoat)); + AddTextureExtTransforms(clearCoatExt+ nameof(KHR_materials_clearcoat.clearcoatRoughnessTexture), new[] { "_ClearcoatRoughnessTexture", "clearcoatRoughnessTexture", "ClearcoatRoughnessTexture" }, nameof(KHR_materials_clearcoat)); + AddTextureExtTransforms(clearCoatExt+ nameof(KHR_materials_clearcoat.clearcoatNormalTexture), new[] { "_ClearcoatNormalTexture_", "clearcoatNormalTexture", "ClearcoatNormalTexture" }, nameof(KHR_materials_clearcoat)); + AddTextureExtTransforms("extensions/"+nameof(KHR_materials_volume)+"/"+nameof(KHR_materials_volume.thicknessTexture), new[] {"thicknessTexture", "_thicknessTexture"}, nameof(KHR_materials_volume)); + AddTextureExtTransforms("extensions/"+nameof(KHR_materials_transmission)+"/"+nameof(KHR_materials_transmission.transmissionTexture), new[] {"transmissionTexture", "_transmissionTexture"}, nameof(KHR_materials_transmission)); + + AddTextureExtTransforms("extensions/"+nameof(KHR_materials_iridescence)+"/"+nameof(KHR_materials_iridescence.iridescenceTexture), new[] { "iridescenceTexture", "_iridescenceTexture"}, nameof(KHR_materials_iridescence)); + AddTextureExtTransforms("extensions/"+nameof(KHR_materials_iridescence)+"/"+nameof(KHR_materials_iridescence.iridescenceThicknessTexture), new[] { "iridescenceThicknessTexture", "_iridescenceThicknessTexture"}, nameof(KHR_materials_iridescence)); + + AddTextureExtTransforms("extensions/"+nameof(KHR_materials_specular)+"/"+nameof(KHR_materials_specular.specularTexture), new[] { "specularTexture", "_specularTexture"}, nameof(KHR_materials_specular)); + AddTextureExtTransforms("extensions/"+nameof(KHR_materials_specular)+"/"+nameof(KHR_materials_specular.specularColorTexture), new[] { "specularColorTexture", "_specularColorTexture"}, nameof(KHR_materials_specular)); + // TODO KHR_materials_sheen // case "_SheenColorFactor": diff --git a/Runtime/Scripts/SceneImporter/ImporterAnimation.cs b/Runtime/Scripts/SceneImporter/ImporterAnimation.cs index 960c9df6c..79029c28e 100644 --- a/Runtime/Scripts/SceneImporter/ImporterAnimation.cs +++ b/Runtime/Scripts/SceneImporter/ImporterAnimation.cs @@ -384,16 +384,26 @@ AttributeAccessor FindSecondaryChannel(string animationPointerPath) if (!mat.UnityMaterial) continue; - if (!AnimationPointerHelpers.BuildImportMaterialAnimationPointerData(pointerImportContext.materialPropertiesRemapper, mat.UnityMaterial, gltfPropertyPath, samplerCache.Output.AccessorId.Value.Type, out pointerData)) + if (!AnimationPointerHelpers.BuildImportMaterialAnimationPointerData(pointer.path, pointerImportContext.materialPropertiesRemapper, mat.UnityMaterial, gltfPropertyPath, samplerCache.Output, out pointerData)) continue; - - pointerData.primaryData = samplerCache.Output; - pointerData.primaryPath = pointer.path; - if (!string.IsNullOrEmpty(pointerData.secondaryPath)) + pointerData.targetNodeIds = nodeIds; + if (string.IsNullOrEmpty(pointerData.primaryPath)) + { + pointerData.primaryPath = "/" + pointerHierarchy.ExtractPath().Replace(rootIndex.next.ExtractPath(), pointerData.primaryProperty); + pointerData.primaryData = FindSecondaryChannel(pointerData.primaryPath); + if (pointerData.primaryData != null) + { + //cancel here and process this combined property later when we found first the Primary Property + continue; + } + } + else + if (!string.IsNullOrEmpty(pointerData.secondaryProperty)) { // When an property has potentially a second Sampler, we need to find it. e.g. like EmissionFactor and EmissionStrength - string secondaryPath = $"/{pointerHierarchy.elementName}/{rootIndex.index.ToString()}/{pointerData.secondaryPath}"; - pointerData.secondaryData = FindSecondaryChannel(secondaryPath); + + pointerData.secondaryPath = "/" + pointerHierarchy.ExtractPath().Replace(rootIndex.next.ExtractPath(), pointerData.secondaryProperty); + pointerData.secondaryData = FindSecondaryChannel(pointerData.secondaryPath); } break; case "cameras": From 6d8ff3edecf5c97e72bc79a7e733aa58f053c28c Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 11 Jul 2024 13:52:07 +0200 Subject: [PATCH 008/117] fixes #746 - added uv-starts-at-top check - based on unity docs --- Runtime/Shaders/ShaderGraph/PBRHelpers.cginc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc b/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc index d87dc03a4..1435ee864 100644 --- a/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc +++ b/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc @@ -51,6 +51,11 @@ float3 Sample4Tap(float2 uv, float lod) void SampleSceneColor_float(float2 uv, float lod, out float3 color) { + #if !UNITY_UV_STARTS_AT_TOP + if (_CameraOpaqueTexture_TexelSize.y > 0) + uv.y = 1-uv.y; + #endif + #define REQUIRE_OPAQUE_TEXTURE // seems we need to define this ourselves? HDSceneColorNode does that as well #if defined(USE_CAMERA_OPAQUE) From 378f17f05652ed86897be85dd26b161b77344e35 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 11 Jul 2024 13:54:24 +0200 Subject: [PATCH 009/117] exposed texture readwrite enabled and generate mipmaps option to importer --- Editor/Scripts/GLTFImporter.cs | 6 +++++- Editor/Scripts/GLTFImporterInspector.cs | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Editor/Scripts/GLTFImporter.cs b/Editor/Scripts/GLTFImporter.cs index ba92c260e..080872f31 100644 --- a/Editor/Scripts/GLTFImporter.cs +++ b/Editor/Scripts/GLTFImporter.cs @@ -104,6 +104,8 @@ private static void EnsureShadersAreLoaded() [SerializeField] internal bool _animationLoopPose = false; [SerializeField] internal bool _importMaterials = true; [SerializeField] internal bool _enableGpuInstancing = false; + [SerializeField] internal bool _texturesReadWriteEnabled = true; + [SerializeField] internal bool _generateMipMaps = true; [Tooltip("Enable this to get the same main asset identifiers as glTFast uses. This is recommended for new asset imports. Note that changing this for already imported assets will break their scene references and require manually re-adding the affected assets.")] [SerializeField] internal bool _useSceneNameIdentifier = false; [Tooltip("Compress textures after import using the platform default settings. If you need more control, use a .gltf file instead.")] @@ -912,7 +914,7 @@ private void CreateGLTFScene(GLTFImportContext context, out GameObject scene, ImportTangents = _importTangents, ImportBlendShapeNames = _importBlendShapeNames, BlendShapeFrameWeight = _blendShapeFrameWeight, - CameraImport = _importCamera + CameraImport = _importCamera, }; using (var stream = File.OpenRead(projectFilePath)) @@ -940,6 +942,8 @@ private void CreateGLTFScene(GLTFImportContext context, out GameObject scene, stream.Position = 0; // Make sure the read position is changed back to the beginning of the file var loader = new GLTFSceneImporter(gltfRoot, stream, importOptions); + loader.KeepCPUCopyOfTexture = _texturesReadWriteEnabled; + loader.GenerateMipMapsForTextures = _generateMipMaps; loader.LoadUnreferencedImagesAndMaterials = true; loader.MaximumLod = _maximumLod; loader.IsMultithreaded = true; diff --git a/Editor/Scripts/GLTFImporterInspector.cs b/Editor/Scripts/GLTFImporterInspector.cs index 173b36fd2..34544ed22 100644 --- a/Editor/Scripts/GLTFImporterInspector.cs +++ b/Editor/Scripts/GLTFImporterInspector.cs @@ -115,7 +115,9 @@ private void ModelInspectorGUI() var importedTextures = serializedObject.FindProperty("m_Textures"); if (importedTextures.arraySize > 0) { - EditorGUILayout.LabelField("Compression", EditorStyles.boldLabel); + EditorGUILayout.LabelField("Textures", EditorStyles.boldLabel); + EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._texturesReadWriteEnabled))); + EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._generateMipMaps))); EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._textureCompression))); } } From d64d755de633c0777bf99d36eb7952e7189bd2a5 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 11 Jul 2024 13:58:05 +0200 Subject: [PATCH 010/117] fixes #752 - added missing generate mitmaps to ktx texture load --- Runtime/Scripts/SceneImporter/ImporterTextures.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Runtime/Scripts/SceneImporter/ImporterTextures.cs b/Runtime/Scripts/SceneImporter/ImporterTextures.cs index b5f0e2e86..104601fb2 100644 --- a/Runtime/Scripts/SceneImporter/ImporterTextures.cs +++ b/Runtime/Scripts/SceneImporter/ImporterTextures.cs @@ -164,7 +164,7 @@ async Task CheckMimeTypeAndLoadImage(GLTFImage image, Texture2D textu #endif var ktxTexture = new KtxUnity.KtxTexture(); - var resultTextureData = await ktxTexture.LoadFromBytes(data, isLinear); + var resultTextureData = await ktxTexture.LoadFromBytes(data, isLinear, mipChain: GenerateMipMapsForTextures); texture = resultTextureData.texture; texture.name = textureName; } From ebc6ea421b4095104adb4d33ec3fd9c3525481f5 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 11 Jul 2024 14:01:56 +0200 Subject: [PATCH 011/117] fixes #751 - also add bone when name is already correct --- Editor/Scripts/Internal/AvatarUtils.cs | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/Editor/Scripts/Internal/AvatarUtils.cs b/Editor/Scripts/Internal/AvatarUtils.cs index e81a32231..3d564292e 100644 --- a/Editor/Scripts/Internal/AvatarUtils.cs +++ b/Editor/Scripts/Internal/AvatarUtils.cs @@ -227,19 +227,23 @@ private static HumanBone[] CreateHuman(GameObject avatarRoot) Transform[] avatarTransforms = avatarRoot.GetComponentsInChildren(); foreach (Transform avatarTransform in avatarTransforms) { - if (HumanSkeletonNames.TryGetValue(avatarTransform.name, out string humanName)) + string humanName = avatarTransform.name; + if (HumanSkeletonNames.TryGetValue(humanName, out string newHumanName)) + humanName = newHumanName; + else + if (!HumanSkeletonNames.ContainsValue(humanName)) + continue; + + HumanBone bone = new HumanBone { - HumanBone bone = new HumanBone - { - boneName = avatarTransform.name, - humanName = humanName, - limit = new HumanLimit() - }; - bone.limit.useDefaultValues = true; + boneName = avatarTransform.name, + humanName = humanName, + limit = new HumanLimit() + }; + bone.limit.useDefaultValues = true; - human.Add(bone); - } - } + human.Add(bone); + } return human.ToArray(); } } From 495e557cc81dbe89dd04169b8043a93970540abd Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Tue, 16 Jul 2024 13:32:31 +0200 Subject: [PATCH 012/117] added missing using system for uwp target - fixes #757 --- Runtime/Scripts/GLTFComponent.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Runtime/Scripts/GLTFComponent.cs b/Runtime/Scripts/GLTFComponent.cs index ffaa64d18..c678720b4 100644 --- a/Runtime/Scripts/GLTFComponent.cs +++ b/Runtime/Scripts/GLTFComponent.cs @@ -8,6 +8,9 @@ using UnityEngine.Events; using UnityGLTF.Loader; using UnityGLTF.Plugins; +#if WINDOWS_UWP +using System; +#endif namespace UnityGLTF { From 731ddd1c99972cdbf3f0e8bcbddbc85f821a1709 Mon Sep 17 00:00:00 2001 From: Felix Herbst Date: Tue, 23 Jul 2024 15:33:41 +0200 Subject: [PATCH 013/117] feat: allow importing non-standard VEC3 and VEC4 TEXCOORD_n data and convert it to VEC2 --- Runtime/Plugins/GLTFSerialization/Schema/Accessor.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Runtime/Plugins/GLTFSerialization/Schema/Accessor.cs b/Runtime/Plugins/GLTFSerialization/Schema/Accessor.cs index d39ee6bc4..33db830cb 100644 --- a/Runtime/Plugins/GLTFSerialization/Schema/Accessor.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/Accessor.cs @@ -738,7 +738,7 @@ public unsafe float2[] AsTexcoordArray(ref NumericArray contents, NativeArray(bufferViewData); - uint stride = BufferView.Value.ByteStride > 0 ? BufferView.Value.ByteStride : componentSize * 2; + uint typeBasedStride = Type == GLTFAccessorAttributeType.VEC2 ? (uint) 2 : Type == GLTFAccessorAttributeType.VEC3 ? (uint) 3 : (uint) 4; + uint stride = BufferView.Value.ByteStride > 0 ? BufferView.Value.ByteStride : componentSize * typeBasedStride; if (!normalizeIntValues) maxValue = 1; if (ComponentType == GLTFComponentType.Float) From 7813092a7527445867cc6f27120a1e46d5aab3df Mon Sep 17 00:00:00 2001 From: Felix Herbst Date: Tue, 23 Jul 2024 17:10:40 +0200 Subject: [PATCH 014/117] changelog/version --- CHANGELOG.md | 16 ++++++++++++++++ package.json | 4 ++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cab9de063..a5dd89711 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,22 @@ 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). +## [2.13.0] - 2024-07-23 + +- fix: empty or invalid root transforms should not be exported +- fix: when no root transforms are exported, no scene should be created by default +- fix: image filenames were sometimes incorrectly exported when exporting .gltf files (#737) +- fix: set wrap mode for legacy animation import mode +- fix: added missing ExtTransform for some textures in animationpointer import/export, fixes when only offset exist (#740) +- fix: added uv-starts-at-top check for transmission support on WebGL and other platforms (#746) +- fix: added missing generate mitmaps to ktx texture load (#752) +- fix: bone name mapping for exact names was not applied on humanoid import (#751) +- fix: added missing using system for uwp target (#757) +- feat: allow importing non-standard VEC3 and VEC4 TEXCOORD_n data and convert it to VEC2 +- add: exposed texture readwrite enabled and generate mipmaps option to importer +- change: removed log for loaded node count mismatch, extensions can modify node counts so the log was misleading +- change: removed loaded texture count error log: when multiple samplers are used for one texture, the textures will be duplicated + ## [2.12.0] - 2024-05-06 - fix: PolySpatial support now also includes emission textures and colors diff --git a/package.json b/package.json index 59d0d2edb..4b0d07e17 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,9 @@ { "name": "org.khronos.unitygltf", "displayName": "UnityGLTF", - "version": "2.12.0", + "version": "2.13.0", "unity": "2020.3", - "description": "Import and export glTF 2.0 assets, both in the editor and at runtime. Excellent support for animations, materials, extensions. Can be extended with plugins for both import and export usecases.", + "description": "Import and export glTF 2.0 assets, both in the editor and at runtime. Excellent support for animations, materials, extensions. Can be extended with plugins for both import and export use cases.", "repository": { "url": "https://github.com/KhronosGroup/UnityGLTF.git" }, From 04de8ec32104af2db0fc445904964790404452c7 Mon Sep 17 00:00:00 2001 From: hybridherbst Date: Wed, 14 Aug 2024 12:37:08 +0200 Subject: [PATCH 015/117] feat: allow flipping humanoid rig root bone for VRM-style humanoid rig import support --- Editor/Scripts/GLTFImporter.cs | 3 +- Editor/Scripts/GLTFImporterInspector.cs | 7 + Editor/Scripts/Internal/AvatarUtils.cs | 231 +++++++++++++---------- Editor/Scripts/Internal/HumanoidSetup.cs | 9 +- 4 files changed, 147 insertions(+), 103 deletions(-) diff --git a/Editor/Scripts/GLTFImporter.cs b/Editor/Scripts/GLTFImporter.cs index 080872f31..4e30eda3a 100644 --- a/Editor/Scripts/GLTFImporter.cs +++ b/Editor/Scripts/GLTFImporter.cs @@ -99,6 +99,7 @@ private static void EnsureShadersAreLoaded() [SerializeField] internal GLTFImporterNormals _importTangents = GLTFImporterNormals.Import; [SerializeField] internal CameraImportOption _importCamera = CameraImportOption.ImportAndCameraDisabled; [SerializeField] internal AnimationMethod _importAnimations = AnimationMethod.Mecanim; + [SerializeField] internal bool _mecanimHumanoidFlip = false; [SerializeField] internal bool _addAnimatorComponent = false; [SerializeField] internal bool _animationLoopTime = true; [SerializeField] internal bool _animationLoopPose = false; @@ -526,7 +527,7 @@ string GetUniqueName(string desiredName) if (gltfScene && _importAnimations == AnimationMethod.MecanimHumanoid) { - var avatar = HumanoidSetup.AddAvatarToGameObject(gltfScene); + var avatar = HumanoidSetup.AddAvatarToGameObject(gltfScene, _mecanimHumanoidFlip); if (avatar) ctx.AddObjectToAsset("avatar", avatar); } diff --git a/Editor/Scripts/GLTFImporterInspector.cs b/Editor/Scripts/GLTFImporterInspector.cs index 34544ed22..a8eb5d283 100644 --- a/Editor/Scripts/GLTFImporterInspector.cs +++ b/Editor/Scripts/GLTFImporterInspector.cs @@ -144,6 +144,13 @@ private void AnimationInspectorGUI() var anim = serializedObject.FindProperty(nameof(GLTFImporter._importAnimations)); EditorGUILayout.PropertyField(anim, new GUIContent("Animation Type")); + if (anim.enumValueIndex == (int)AnimationMethod.MecanimHumanoid) + { + var flip = serializedObject.FindProperty(nameof(GLTFImporter._mecanimHumanoidFlip)); + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(flip, new GUIContent("Flip Forward", "Some formats like VRM have a different forward direction for Avatars. Enable this option if the animation looks inverted.")); + EditorGUI.indentLevel--; + } if (hasAnimationData && anim.enumValueIndex > 0) { var loopTime = serializedObject.FindProperty(nameof(GLTFImporter._animationLoopTime)); diff --git a/Editor/Scripts/Internal/AvatarUtils.cs b/Editor/Scripts/Internal/AvatarUtils.cs index 3d564292e..a9a7a5e66 100644 --- a/Editor/Scripts/Internal/AvatarUtils.cs +++ b/Editor/Scripts/Internal/AvatarUtils.cs @@ -12,75 +12,78 @@ internal class AvatarUtils // This does not need to be hard-coded. public static Dictionary HumanSkeletonNames = new Dictionary() { - {"mixamorig:Spine1", "Chest"}, - {"mixamorig:Head", "Head" }, - {"mixamorig:Hips", "Hips" }, - {"mixamorig:LeftHandIndex3", "Left Index Distal" }, - {"mixamorig:LeftHandIndex2", "Left Index Intermediate" }, - {"mixamorig:LeftHandIndex1", "Left Index Proximal" }, - {"mixamorig:LeftHandPinky3", "Left Little Distal" }, - {"mixamorig:LeftHandPinky2", "Left Little Intermediate" }, - {"mixamorig:LeftHandPinky1", "Left Little Proximal" }, - {"mixamorig:LeftHandMiddle3", "Left Middle Distal" }, - {"mixamorig:LeftHandMiddle2", "Left Middle Intermediate" }, - {"mixamorig:LeftHandMiddle1", "Left Middle Proximal" }, - {"mixamorig:LeftHandRing3", "Left Ring Distal" }, - {"mixamorig:LeftHandRing2", "Left Ring Intermediate" }, - {"mixamorig:LeftHandRing1", "Left Ring Proximal" }, - {"mixamorig:LeftHandThumb3", "Left Thumb Distal" }, - {"mixamorig:LeftHandThumb2", "Left Thumb Intermediate" }, - {"mixamorig:LeftHandThumb1", "Left Thumb Proximal" }, - {"mixamorig:LeftFoot", "LeftFoot" }, - {"mixamorig:LeftHand", "LeftHand" }, - {"mixamorig:LeftForeArm", "LeftLowerArm" }, - {"mixamorig:LeftLeg", "LeftLowerLeg" }, - {"mixamorig:LeftShoulder", "LeftShoulder" }, - {"mixamorig:LeftToeBase", "LeftToes" }, - {"mixamorig:LeftArm", "LeftUpperArm" }, - {"mixamorig:LeftUpLeg", "LeftUpperLeg" }, - {"mixamorig:Neck", "Neck" }, - {"mixamorig:RightHandIndex3", "Right Index Distal" }, - {"mixamorig:RightHandIndex2", "Right Index Intermediate" }, - {"mixamorig:RightHandIndex1", "Right Index Proximal" }, - {"mixamorig:RightHandPinky3", "Right Little Distal" }, - {"mixamorig:RightHandPinky2", "Right Little Intermediate" }, - {"mixamorig:RightHandPinky1", "Right Little Proximal" }, - {"mixamorig:RightHandMiddle3", "Right Middle Distal" }, - {"mixamorig:RightHandMiddle2", "Right Middle Intermediate" }, - {"mixamorig:RightHandMiddle1", "Right Middle Proximal" }, - {"mixamorig:RightHandRing3", "Right Ring Distal" }, - {"mixamorig:RightHandRing2", "Right Ring Intermediate" }, - {"mixamorig:RightHandRing1", "Right Ring Proximal" }, - {"mixamorig:RightHandThumb3", "Right Thumb Distal" }, - {"mixamorig:RightHandThumb2", "Right Thumb Intermediate" }, - {"mixamorig:RightHandThumb1", "Right Thumb Proximal" }, - {"mixamorig:RightFoot", "RightFoot" }, - {"mixamorig:RightHand", "RightHand" }, - {"mixamorig:RightForeArm", "RightLowerArm" }, - {"mixamorig:RightLeg", "RightLowerLeg" }, - {"mixamorig:RightShoulder", "RightShoulder" }, - {"mixamorig:RightToeBase", "RightToes" }, - {"mixamorig:RightArm", "RightUpperArm" }, - {"mixamorig:RightUpLeg", "RightUpperLeg" }, - {"mixamorig:Spine", "Spine" }, - {"mixamorig:Spine2", "UpperChest" }, + {"mixamorig:spine1", "Chest"}, + {"mixamorig:head", "Head" }, + {"mixamorig:hips", "Hips" }, + {"mixamorig:lefthandindex3", "Left Index Distal" }, + {"mixamorig:lefthandindex2", "Left Index Intermediate" }, + {"mixamorig:lefthandindex1", "Left Index Proximal" }, + {"mixamorig:leftHandpinky3", "Left Little Distal" }, + {"mixamorig:lefthandpinky2", "Left Little Intermediate" }, + {"mixamorig:lefthandpinky1", "Left Little Proximal" }, + {"mixamorig:lefthandmiddle3", "Left Middle Distal" }, + {"mixamorig:leftHandmiddle2", "Left Middle Intermediate" }, + {"mixamorig:lefthandmiddle1", "Left Middle Proximal" }, + {"mixamorig:lefthandring3", "Left Ring Distal" }, + {"mixamorig:lefthandring2", "Left Ring Intermediate" }, + {"mixamorig:lefthandring1", "Left Ring Proximal" }, + {"mixamorig:lefthandthumb3", "Left Thumb Distal" }, + {"mixamorig:lefthandthumb2", "Left Thumb Intermediate" }, + {"mixamorig:lefthandthumb1", "Left Thumb Proximal" }, + {"mixamorig:leftfoot", "LeftFoot" }, + {"mixamorig:lefthand", "LeftHand" }, + {"mixamorig:leftforearm", "LeftLowerArm" }, + {"mixamorig:leftleg", "LeftLowerLeg" }, + {"mixamorig:leftshoulder", "LeftShoulder" }, + {"mixamorig:lefttoebase", "LeftToes" }, + {"mixamorig:leftarm", "LeftUpperArm" }, + {"mixamorig:leftupleg", "LeftUpperLeg" }, + {"mixamorig:neck", "Neck" }, + {"mixamorig:righthandindex3", "Right Index Distal" }, + {"mixamorig:righthandindex2", "Right Index Intermediate" }, + {"mixamorig:righthandindex1", "Right Index Proximal" }, + {"mixamorig:righthandpinky3", "Right Little Distal" }, + {"mixamorig:righthandpinky2", "Right Little Intermediate" }, + {"mixamorig:righthandpinky1", "Right Little Proximal" }, + {"mixamorig:righthandmiddle3", "Right Middle Distal" }, + {"mixamorig:righthandmiddle2", "Right Middle Intermediate" }, + {"mixamorig:righthandmiddle1", "Right Middle Proximal" }, + {"mixamorig:righthandring3", "Right Ring Distal" }, + {"mixamorig:righthandring2", "Right Ring Intermediate" }, + {"mixamorig:righthandring1", "Right Ring Proximal" }, + {"mixamorig:righthandthumb3", "Right Thumb Distal" }, + {"mixamorig:righthandthumb2", "Right Thumb Intermediate" }, + {"mixamorig:righthandthumb1", "Right Thumb Proximal" }, + {"mixamorig:rightfoot", "RightFoot" }, + {"mixamorig:righthand", "RightHand" }, + {"mixamorig:rightforearm", "RightLowerArm" }, + {"mixamorig:rightleg", "RightLowerLeg" }, + {"mixamorig:rightshoulder", "RightShoulder" }, + {"mixamorig:righttoebase", "RightToes" }, + {"mixamorig:rightarm", "RightUpperArm" }, + {"mixamorig:rightupleg", "RightUpperLeg" }, + {"mixamorig:spine", "Spine" }, + {"mixamorig:spine2", "UpperChest" }, // Other common Avatar formats can also be added here // { "root", "" }, { "hips", "Hips" }, { "spine", "Spine" }, + { "spine1", "Chest" }, { "chest", "Chest" }, - { "upperChest", "UpperChest" }, + { "upperchest", "UpperChest" }, { "neck", "Neck" }, { "head", "Head" }, - { "leftEye", "LeftEye" }, + { "lefteye", "LeftEye" }, // { "eyeL_end", "" }, - { "rightEye", "RightEye" }, + { "righteye", "RightEye" }, // { "eyeR_end", "" }, - { "leftShoulder", "LeftShoulder" }, - { "leftUpperArm", "LeftUpperArm" }, - { "leftLowerArm", "LeftLowerArm" }, - { "leftHand", "LeftHand" }, + { "leftshoulder", "LeftShoulder" }, + { "leftupperarm", "LeftUpperArm" }, + { "leftarm", "LeftUpperArm" }, + { "leftlowerarm", "LeftLowerArm" }, + { "leftforearm", "LeftLowerArm" }, + { "lefthand", "LeftHand" }, // { "leftThumbMetacarpal", "" }, // { "leftThumbProximal", "" }, // { "leftThumbDistal", "" }, @@ -101,10 +104,10 @@ internal class AvatarUtils // { "leftLittleIntermediate", "" }, // { "leftLittleDistal", "" }, // { "littledistalL_end", "" }, - { "rightShoulder", "RightShoulder" }, - { "rightUpperArm", "RightUpperArm" }, - { "rightLowerArm", "RightLowerArm" }, - { "rightHand", "RightHand" }, + { "rightshoulder", "RightShoulder" }, + { "rightupperarm", "RightUpperArm" }, + { "rightlowerarm", "RightLowerArm" }, + { "righthand", "RightHand" }, // { "rightThumbMetacarpal", "" }, // { "rightThumbProximal", "" }, // { "rightThumbDistal", "" }, @@ -125,43 +128,49 @@ internal class AvatarUtils // { "rightLittleIntermediate", "" }, // { "rightLittleDistal", "" }, // { "littledistalR_end", "" }, - { "leftUpperLeg", "LeftUpperLeg" }, - { "leftLowerLeg", "LeftLowerLeg" }, - { "leftFoot", "LeftFoot" }, - { "leftToes", "LeftToes" }, + { "leftupperleg", "LeftUpperLeg" }, + { "leftupleg", "LeftUpperLeg" }, + { "leftlowerleg", "LeftLowerLeg" }, + { "leftleg", "LeftLowerLeg" }, + { "leftfoot", "LeftFoot" }, + { "lefttoes", "LeftToes" }, + { "lefttoebase", "LeftToes" }, // { "toesL_end", "" }, - { "rightUpperLeg", "RightUpperLeg" }, - { "rightLowerLeg", "RightLowerLeg" }, - { "rightFoot", "RightFoot" }, - { "rightToes", "RightToes" }, + { "rightupperleg", "RightUpperLeg" }, + { "rightupleg", "RightUpperLeg" }, + { "rightlowerleg", "RightLowerLeg" }, + { "rightleg", "RightLowerLeg" }, + { "rightfoot", "RightFoot" }, + { "righttoes", "RightToes" }, + { "righttoebase", "RightToes" }, // { "toesR_end", "" }, // Meta Avatar - {"Hips_jnt", "Hips"}, - {"SpineLower_jnt", "Spine"}, - {"SpineMiddle_jnt", "Chest"}, - {"Chest_jnt", "UpperChest"}, - {"Neck_jnt", "Neck"}, - {"Head_jnt", "Head"}, - {"Jaw_jnt", "Jaw"}, - {"LeftEye_jnt", "LeftEye"}, - {"RightEye_jnt", "RightEye"}, - {"LeftShoulder_jnt", "LeftShoulder"}, - {"LeftArmUpper_jnt", "LeftUpperArm"}, - {"LeftArmLower_jnt", "LeftLowerArm"}, - {"LeftHandWrist_jnt", "LeftHand"}, - {"RightShoulder_jnt", "RightShoulder"}, - {"RightArmUpper_jnt", "RightUpperArm"}, - {"RightArmLower_jnt", "RightLowerArm"}, - {"RightHandWrist_jnt", "RightHand"}, - {"LeftLegUpper_jnt", "LeftUpperLeg"}, - {"LeftLegLower_jnt", "LeftLowerLeg"}, - {"LeftFootBall_jnt", "LeftFoot"}, - {"LeftFootToe_jnt", "LeftToes"}, - {"RightLegUpper_jnt", "RightUpperLeg"}, - {"RightLegLower_jnt", "RightLowerLeg"}, - {"RightFootBall_jnt", "RightFoot"}, - {"RightFootToe_jnt", "RightToes"} + {"hips_jnt", "Hips"}, + {"spinelower_jnt", "Spine"}, + {"spinemiddle_jnt", "Chest"}, + {"chest_jnt", "UpperChest"}, + {"neck_jnt", "Neck"}, + {"head_jnt", "Head"}, + {"jaw_jnt", "Jaw"}, + {"lefteye_jnt", "LeftEye"}, + {"righteye_jnt", "RightEye"}, + {"leftshoulder_jnt", "LeftShoulder"}, + {"leftarmupper_jnt", "LeftUpperArm"}, + {"leftarmlower_jnt", "LeftLowerArm"}, + {"lefthandwrist_jnt", "LeftHand"}, + {"rightshoulder_jnt", "RightShoulder"}, + {"rightarmupper_jnt", "RightUpperArm"}, + {"rightarmlower_jnt", "RightLowerArm"}, + {"righthandwrist_jnt", "RightHand"}, + {"leftlegupper_jnt", "LeftUpperLeg"}, + {"leftleglower_jnt", "LeftLowerLeg"}, + {"leftfootball_jnt", "LeftFoot"}, + {"leftfoottoe_jnt", "LeftToes"}, + {"rightlegupper_jnt", "RightUpperLeg"}, + {"rightleglower_jnt", "RightLowerLeg"}, + {"rightfootball_jnt", "RightFoot"}, + {"rightfoottoe_jnt", "RightToes"} }; @@ -227,13 +236,33 @@ private static HumanBone[] CreateHuman(GameObject avatarRoot) Transform[] avatarTransforms = avatarRoot.GetComponentsInChildren(); foreach (Transform avatarTransform in avatarTransforms) { - string humanName = avatarTransform.name; - if (HumanSkeletonNames.TryGetValue(humanName, out string newHumanName)) + string humanName = avatarTransform.name.ToLowerInvariant(); + if (HumanSkeletonNames.TryGetValue(humanName, out string newHumanName)) { humanName = newHumanName; - else + } + else { + // strip away trailing _1, _2, etc. + var split = humanName.Split('_'); + var partAfterLastUnderscore = split[split.Length - 1]; + + // if the last part is a number, remove it + if (int.TryParse(partAfterLastUnderscore, out _)) + humanName = string.Join("_", split, 0, split.Length - 1); + if (HumanSkeletonNames.TryGetValue(humanName, out newHumanName)) + humanName = newHumanName; + + // we can also try prepending "mixamorig:" to the name if (!HumanSkeletonNames.ContainsValue(humanName)) - continue; - + { + humanName = "mixamorig:" + humanName; + if (HumanSkeletonNames.TryGetValue(humanName, out newHumanName)) + humanName = newHumanName; + } + } + + if (!HumanSkeletonNames.ContainsValue(humanName)) + continue; + HumanBone bone = new HumanBone { boneName = avatarTransform.name, diff --git a/Editor/Scripts/Internal/HumanoidSetup.cs b/Editor/Scripts/Internal/HumanoidSetup.cs index bbd7ce3c9..76d950fcc 100644 --- a/Editor/Scripts/Internal/HumanoidSetup.cs +++ b/Editor/Scripts/Internal/HumanoidSetup.cs @@ -10,7 +10,7 @@ internal static class HumanoidSetup { private static MethodInfo _SetupHumanSkeleton; - internal static Avatar AddAvatarToGameObject(GameObject gameObject) + internal static Avatar AddAvatarToGameObject(GameObject gameObject, bool flipForward) { HumanDescription description = AvatarUtils.CreateHumanDescription(gameObject); var bones = description.human; @@ -19,8 +19,15 @@ internal static Avatar AddAvatarToGameObject(GameObject gameObject) description.skeleton = skeletonBones; description.hasTranslationDoF = hasTranslationDoF; + var previousRotation = gameObject.transform.rotation; + if (flipForward) + gameObject.transform.rotation *= Quaternion.Euler(0,180,0); + Avatar avatar = AvatarBuilder.BuildHumanAvatar(gameObject, description); avatar.name = "Avatar"; + + if (flipForward) + gameObject.transform.rotation = previousRotation; if (!avatar.isValid || !avatar.isHuman) { From 4bfef282c2beefbda058b3f0a2e24fe510bd3b59 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Tue, 27 Aug 2024 14:52:45 +0200 Subject: [PATCH 016/117] output throwed execption to log instead of hiding it --- Runtime/Scripts/GLTFSceneImporter.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Runtime/Scripts/GLTFSceneImporter.cs b/Runtime/Scripts/GLTFSceneImporter.cs index ea95fb19c..bc2b36281 100644 --- a/Runtime/Scripts/GLTFSceneImporter.cs +++ b/Runtime/Scripts/GLTFSceneImporter.cs @@ -496,7 +496,9 @@ public void Dispose() DisposeNativeBuffers(); onLoadComplete?.Invoke(null, ExceptionDispatchInfo.Capture(ex)); - Debug.Log(LogType.Error, $"Error loading file: {_gltfFileName}"); + Debug.Log(LogType.Error, $"Error loading file: {_gltfFileName}" + + System.Environment.NewLine + "Message: " + ex.Message + + System.Environment.NewLine + "StackTrace: " + ex.StackTrace); throw; } finally From a79bd75c53e1040334cfebe4de7015088756f441 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Wed, 4 Sep 2024 12:20:37 +0200 Subject: [PATCH 017/117] fixed wrong callback subscription EditorApplication.update > delayCall --- Editor/Scripts/ShaderGraph/MaterialEditorBridge.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Editor/Scripts/ShaderGraph/MaterialEditorBridge.cs b/Editor/Scripts/ShaderGraph/MaterialEditorBridge.cs index fc1d6993b..a783b07e7 100644 --- a/Editor/Scripts/ShaderGraph/MaterialEditorBridge.cs +++ b/Editor/Scripts/ShaderGraph/MaterialEditorBridge.cs @@ -81,7 +81,7 @@ private static void OnImmutableMaterialChanged(Material material) // after importing a changed material, which can be confusing. Could be caching inside PBRGraphGUI AssetDatabase.Refresh(); - EditorApplication.update += () => + EditorApplication.delayCall += () => { // Repaint Inspector, newly imported values can be different if we're not perfectly round tripping foreach (var editor in ActiveEditorTracker.sharedTracker.activeEditors) From 100e6f6dc861bb2234485bf31247adabdd1793ee Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Wed, 4 Sep 2024 15:21:48 +0200 Subject: [PATCH 018/117] readme update: blend shape known issue rephrased for more clarity --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7cbadb230..2485a6325 100644 --- a/README.md +++ b/README.md @@ -359,7 +359,7 @@ If your plugin reads/writes custom extension data, you need to also implement `G ## Known Issues -- Blend shapes with in-betweens are currently not supported. +- Blend shape in-betweens will not be exported as glTF does not have that functionality. - Support for glTF files with multiple scenes is limited. - Some material options (e.g. MAOS maps) are currently not exported correctly. From 4ca9035e91387b3381e414123a7cd28bee4fe997 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 5 Sep 2024 08:26:09 +0200 Subject: [PATCH 019/117] readme update: added animation pointer import support --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2485a6325..4e99b603b 100644 --- a/README.md +++ b/README.md @@ -295,13 +295,13 @@ Animation components and their legacy clips can also be exported. ### KHR_animation_pointer support -UnityGLTF supports exporting animations with the KHR_animation_pointer extension. +UnityGLTF supports importing and exporting animations with the KHR_animation_pointer extension. The core glTF spec only allows animation node transforms and blend shape weights, while this extension allows animating arbitrary properties in the glTF file – including material and object properties, even in custom extensions and script components. Exporting with KHR_animation_pointer can be turned on in `Project Settings > UnityGLTF` by enabling the KHR_animation_pointer plugin. -> **Note:** The exported files can be viewed with Gestaltor, Babylon Sandbox, and Needle Engine, but currently not with three.js / model-viewer. See https://github.com/mrdoob/three.js/pull/24108. They can also not be reimported into UnityGLTF at this point. +> **Note:** The exported files can be viewed with Gestaltor, Babylon Sandbox, and Needle Engine, but currently not with three.js / model-viewer. See https://github.com/mrdoob/three.js/pull/24108. ## Blend Shape Export From 3c38a981424b623e5ac00f26a94e95a9d20d597e Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Wed, 4 Sep 2024 15:20:29 +0200 Subject: [PATCH 020/117] readme update: removed known issue with MAOS maps, is fixed --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 4e99b603b..e293a8f5a 100644 --- a/README.md +++ b/README.md @@ -361,7 +361,6 @@ If your plugin reads/writes custom extension data, you need to also implement `G - Blend shape in-betweens will not be exported as glTF does not have that functionality. - Support for glTF files with multiple scenes is limited. -- Some material options (e.g. MAOS maps) are currently not exported correctly. ## Contributing From 0665439dbecbf2d31507848eb73c061b8f9f21d3 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Wed, 4 Sep 2024 15:01:36 +0200 Subject: [PATCH 021/117] added Asset.ToString methods, added gltf.Asset string to importer and extend the Importer Inspector with new Info tab --- Editor/Scripts/GLTFImporter.cs | 4 +-- Editor/Scripts/GLTFImporterInspector.cs | 23 ++++++++++++ .../Plugins/GLTFSerialization/Schema/Asset.cs | 35 +++++++++++++++++++ 3 files changed, 60 insertions(+), 2 deletions(-) diff --git a/Editor/Scripts/GLTFImporter.cs b/Editor/Scripts/GLTFImporter.cs index 080872f31..9476fe477 100644 --- a/Editor/Scripts/GLTFImporter.cs +++ b/Editor/Scripts/GLTFImporter.cs @@ -110,7 +110,7 @@ private static void EnsureShadersAreLoaded() [SerializeField] internal bool _useSceneNameIdentifier = false; [Tooltip("Compress textures after import using the platform default settings. If you need more control, use a .gltf file instead.")] [SerializeField] internal GLTFImporterTextureCompressionQuality _textureCompression = GLTFImporterTextureCompressionQuality.None; - + [SerializeField, Multiline] internal string _gltfAsset = default; // for humanoid importer [SerializeField] internal bool m_OptimizeGameObjects = false; [SerializeField] internal HumanDescription m_HumanDescription = new HumanDescription(); @@ -959,7 +959,7 @@ private void CreateGLTFScene(GLTFImportContext context, out GameObject scene, scene = loader.LastLoadedScene; animationClips = loader.CreatedAnimationClips; - + _gltfAsset = loader.Root.Asset.ToString(true); importer = loader; } } diff --git a/Editor/Scripts/GLTFImporterInspector.cs b/Editor/Scripts/GLTFImporterInspector.cs index 34544ed22..72b879092 100644 --- a/Editor/Scripts/GLTFImporterInspector.cs +++ b/Editor/Scripts/GLTFImporterInspector.cs @@ -40,6 +40,7 @@ public override void OnEnable() AddTab(new GLTFAssetImporterTab(this, "Materials", MaterialInspectorGUI)); AddTab(new GLTFAssetImporterTab(this, "Used Extensions", ExtensionInspectorGUI)); + AddTab(new GLTFAssetImporterTab(this, "Info", AssetInfoInspectorGUI)); base.OnEnable(); } @@ -362,6 +363,28 @@ void ExtractAsset(T subAsset, bool importImmediately) EditorGUILayout.EndFoldoutHeaderGroup(); } + private void AssetInfoInspectorGUI() + { + var t = target as GLTFImporter; + if (!t) return; + var assetProp = serializedObject.FindProperty(nameof(GLTFImporter._gltfAsset)); + if (assetProp == null) + return; + + if (string.IsNullOrEmpty(t._gltfAsset)) + { + EditorGUILayout.LabelField("[ No informations included ]"); + return; + } + GUIStyle style = new GUIStyle(GUI.skin.label); + style.richText = true; + style.wordWrap = true; + EditorGUILayout.Space(); + + var rect = GUILayoutUtility.GetRect(new GUIContent(t._gltfAsset), style); + EditorGUI.SelectableLabel(rect, t._gltfAsset, style); + } + private void ExtensionInspectorGUI() { var t = target as GLTFImporter; diff --git a/Runtime/Plugins/GLTFSerialization/Schema/Asset.cs b/Runtime/Plugins/GLTFSerialization/Schema/Asset.cs index f855dc16d..62815d57d 100644 --- a/Runtime/Plugins/GLTFSerialization/Schema/Asset.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/Asset.cs @@ -1,4 +1,5 @@ using System; +using System.Text; using Newtonsoft.Json; namespace GLTF.Schema @@ -101,5 +102,39 @@ public override void Serialize(JsonWriter writer) writer.WriteEndObject(); } + + public override string ToString() + { + return ToString(false); + } + + public string ToString(bool richFormat) + { + string bStart = richFormat ? "" : ""; + string bEnd = richFormat ? "" : ""; + + var sb = new StringBuilder(); + if (!string.IsNullOrEmpty(Generator)) + sb.AppendLine($"{bStart}{nameof(Generator)}: {bEnd}{Generator}"); + + if (!string.IsNullOrEmpty(Version)) + sb.AppendLine($"{bStart}{nameof(Version)}: {bEnd}{Version}"); + + if (!string.IsNullOrEmpty(MinVersion)) + sb.AppendLine($"{bStart}{nameof(MinVersion)}: {bEnd}{MinVersion}"); + + if (!string.IsNullOrEmpty(Copyright)) + sb.AppendLine($"{bStart}{nameof(Copyright)}: {bEnd}{Copyright}"); + + if (Extras != null) + { + sb.AppendLine(""); + sb.AppendLine($"{bStart}Extras: {bEnd}"); + foreach (var extra in Extras) + sb.AppendLine(extra.ToString()); + } + + return sb.ToString(); + } } } From e610bc2803572fa429399e45baa57b683d6b38f1 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Wed, 28 Aug 2024 15:13:14 +0200 Subject: [PATCH 022/117] added mesh deduplication on import --- Editor/Scripts/GLTFImporter.cs | 3 + Editor/Scripts/GLTFImporterInspector.cs | 1 + Runtime/Scripts/GLTFSceneImporter.cs | 78 +++++++++++++++++++ .../Scripts/SceneImporter/ImporterMeshes.cs | 42 ++++++++++ 4 files changed, 124 insertions(+) diff --git a/Editor/Scripts/GLTFImporter.cs b/Editor/Scripts/GLTFImporter.cs index 080872f31..3b6a02de1 100644 --- a/Editor/Scripts/GLTFImporter.cs +++ b/Editor/Scripts/GLTFImporter.cs @@ -86,6 +86,8 @@ private static void EnsureShadersAreLoaded() [Tooltip("Turn this off to create an explicit GameObject for the glTF scene. A scene root will always be created if there's more than one root node.")] [SerializeField] internal bool _removeEmptyRootObjects = true; [SerializeField] internal float _scaleFactor = 1.0f; + [Tooltip("Reduces identical resources. e.g. when identical meshes are found, only one will be imported.")] + [SerializeField] internal bool _deduplicateResources = false; [SerializeField] internal int _maximumLod = 300; [SerializeField] internal bool _readWriteEnabled = true; [SerializeField] internal bool _generateColliders = false; @@ -915,6 +917,7 @@ private void CreateGLTFScene(GLTFImportContext context, out GameObject scene, ImportBlendShapeNames = _importBlendShapeNames, BlendShapeFrameWeight = _blendShapeFrameWeight, CameraImport = _importCamera, + DeduplicateResources = _deduplicateResources, }; using (var stream = File.OpenRead(projectFilePath)) diff --git a/Editor/Scripts/GLTFImporterInspector.cs b/Editor/Scripts/GLTFImporterInspector.cs index 34544ed22..38394d3ff 100644 --- a/Editor/Scripts/GLTFImporterInspector.cs +++ b/Editor/Scripts/GLTFImporterInspector.cs @@ -81,6 +81,7 @@ private void ModelInspectorGUI() EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._removeEmptyRootObjects))); EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._scaleFactor))); EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._importCamera))); + EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._deduplicateResources))); // EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._maximumLod)), new GUIContent("Maximum Shader LOD")); EditorGUILayout.Separator(); diff --git a/Runtime/Scripts/GLTFSceneImporter.cs b/Runtime/Scripts/GLTFSceneImporter.cs index bc2b36281..db67148c8 100644 --- a/Runtime/Scripts/GLTFSceneImporter.cs +++ b/Runtime/Scripts/GLTFSceneImporter.cs @@ -41,6 +41,7 @@ public class ImportOptions public bool AnimationLoopTime = true; public bool AnimationLoopPose = false; + public bool DeduplicateResources = false; public bool SwapUVs = false; public GLTFImporterNormals ImportNormals = GLTFImporterNormals.Import; public GLTFImporterNormals ImportTangents = GLTFImporterNormals.Import; @@ -116,6 +117,75 @@ public void Clear() Indices = null; subMeshVertexOffset = null; } + + public bool IsEqual(UnityMeshData other) + { + bool CompareArray(T[] array1, T[] array2) + { + if (array1 == null && array2 == null) + return true; + if (array1 == array2) + return true; + if (array1?.Length != array2?.Length) + return false; + + for (int i = 0; i < array1.Length; i++) + { + if (!array1[i].Equals(array2[i])) + return false; + } + + return true; + } + + bool CompareArray2(T[][] array1, T[][] array2) + { + if (array1 == null && array2 == null) + return true; + if (array1 == array2) + return true; + if (array1?.Length != array2?.Length) + return false; + + for (int i = 0; i < array1.Length; i++) + { + if (array1[i] == null && array2[i] == null) + continue; + if (array1[i] == array2[i]) + continue; + + if (array1[i].Length != array2[i].Length) + return false; + + for (int j = 0; j < array1.Length; j++) + { + if (!array1[i][j].Equals(array2[i][j])) + return false; + } + } + + return true; + } + + if (!CompareArray(Vertices, other.Vertices) + || !CompareArray(Normals, other.Normals) + || !CompareArray(Tangents, other.Tangents) + || !CompareArray(Uv1, other.Uv1) + || !CompareArray(Uv2, other.Uv2) + || !CompareArray(Uv3, other.Uv3) + || !CompareArray(Uv4, other.Uv4) + || !CompareArray(Colors, other.Colors) + || !CompareArray(BoneWeights, other.BoneWeights) + || !CompareArray(Topology, other.Topology) + || !CompareArray(DrawModes, other.DrawModes) + || !CompareArray2(MorphTargetVertices, other.MorphTargetVertices) + || !CompareArray2(MorphTargetNormals, other.MorphTargetNormals) + || !CompareArray2(MorphTargetTangents, other.MorphTargetTangents) + || !CompareArray2(Indices, other.Indices)) + return false; + + return true; + } } public struct ImportProgress @@ -703,6 +773,14 @@ private void InitializeGltfTopLevelObject() // Free up some Memory, Accessor contents are no longer needed FreeUpAccessorContents(); + + if (_options.DeduplicateResources) + { + if (IsMultithreaded) + await Task.Run(CheckForMeshDuplicates, cancellationToken); + else + CheckForMeshDuplicates(); + } await ConstructScene(scene, showSceneObj, cancellationToken); diff --git a/Runtime/Scripts/SceneImporter/ImporterMeshes.cs b/Runtime/Scripts/SceneImporter/ImporterMeshes.cs index 8c195f337..cd86d3eb0 100644 --- a/Runtime/Scripts/SceneImporter/ImporterMeshes.cs +++ b/Runtime/Scripts/SceneImporter/ImporterMeshes.cs @@ -1361,5 +1361,47 @@ private static T[][] Allocate2dArray(uint x, uint y) for (var i = 0; i < x; i++) result[i] = new T[y]; return result; } + + private void CheckForMeshDuplicates() + { + Dictionary meshDuplicates = new Dictionary(); + + for (int meshIndex = 0; meshIndex < _gltfRoot.Meshes.Count; meshIndex++) + { + if (meshDuplicates.ContainsKey(meshIndex)) + continue; + + for (int i = meshIndex+1; i < _gltfRoot.Meshes.Count; i++) + { + + if (i == meshIndex) + continue; + if (_assetCache.MeshCache[i] == null) + continue; + + if (_assetCache.UnityMeshDataCache[i] == null + || _assetCache.UnityMeshDataCache[meshIndex] == null) + continue; + + var meshIsEqual = _assetCache.UnityMeshDataCache[i] + .IsEqual(_assetCache.UnityMeshDataCache[meshIndex]); + + if (meshIsEqual) + meshDuplicates[i] = meshIndex; + } + } + + foreach (var dm in meshDuplicates) + { + for (int i = 0; i < _gltfRoot.Nodes.Count; i++) + { + if (_gltfRoot.Nodes[i].Mesh != null && _gltfRoot.Nodes[i].Mesh.Id == dm.Key) + { + _gltfRoot.Nodes[i].Mesh.Id = dm.Value; + } + } + } + + } } } From fcdbc47db8d80a7cde414cfd1930e0b5d51dcc4e Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 29 Aug 2024 09:49:41 +0200 Subject: [PATCH 023/117] deduplication fix of meshes with different weights --- Runtime/Scripts/SceneImporter/ImporterMeshes.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Runtime/Scripts/SceneImporter/ImporterMeshes.cs b/Runtime/Scripts/SceneImporter/ImporterMeshes.cs index cd86d3eb0..8a3b01cf0 100644 --- a/Runtime/Scripts/SceneImporter/ImporterMeshes.cs +++ b/Runtime/Scripts/SceneImporter/ImporterMeshes.cs @@ -1397,6 +1397,9 @@ private void CheckForMeshDuplicates() { if (_gltfRoot.Nodes[i].Mesh != null && _gltfRoot.Nodes[i].Mesh.Id == dm.Key) { + if (_gltfRoot.Nodes[i].Weights == null && _gltfRoot.Meshes[dm.Value].Weights != null) + _gltfRoot.Nodes[i].Weights = _gltfRoot.Meshes[_gltfRoot.Nodes[i].Mesh.Id].Weights; + _gltfRoot.Nodes[i].Mesh.Id = dm.Value; } } From e6d92f56616af9aa80121c12fd438abc6454f900 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 29 Aug 2024 11:24:29 +0200 Subject: [PATCH 024/117] add texture deduplication on import --- Editor/Scripts/GLTFImporter.cs | 6 +- Runtime/Scripts/GLTFSceneImporter.cs | 27 +++- .../Scripts/SceneImporter/ImporterTextures.cs | 131 ++++++++++++++---- 3 files changed, 128 insertions(+), 36 deletions(-) diff --git a/Editor/Scripts/GLTFImporter.cs b/Editor/Scripts/GLTFImporter.cs index 3b6a02de1..e73bd0247 100644 --- a/Editor/Scripts/GLTFImporter.cs +++ b/Editor/Scripts/GLTFImporter.cs @@ -85,9 +85,9 @@ private static void EnsureShadersAreLoaded() [Tooltip("Turn this off to create an explicit GameObject for the glTF scene. A scene root will always be created if there's more than one root node.")] [SerializeField] internal bool _removeEmptyRootObjects = true; - [SerializeField] internal float _scaleFactor = 1.0f; - [Tooltip("Reduces identical resources. e.g. when identical meshes are found, only one will be imported.")] - [SerializeField] internal bool _deduplicateResources = false; + [SerializeField] internal float _scaleFactor = 1.0f; + [Tooltip("Reduces identical resources. e.g. when identical meshes are found, only one will be imported.")] + [SerializeField] internal DeduplicateOptions _deduplicateResources = DeduplicateOptions.None; [SerializeField] internal int _maximumLod = 300; [SerializeField] internal bool _readWriteEnabled = true; [SerializeField] internal bool _generateColliders = false; diff --git a/Runtime/Scripts/GLTFSceneImporter.cs b/Runtime/Scripts/GLTFSceneImporter.cs index db67148c8..aa2872ee0 100644 --- a/Runtime/Scripts/GLTFSceneImporter.cs +++ b/Runtime/Scripts/GLTFSceneImporter.cs @@ -25,6 +25,14 @@ namespace UnityGLTF { + [Flags] + public enum DeduplicateOptions + { + None = 0, + Meshes = 1, + Textures = 2, + } + public class ImportOptions { #pragma warning disable CS0618 // Type or member is obsolete @@ -40,8 +48,7 @@ public class ImportOptions public AnimationMethod AnimationMethod = AnimationMethod.Legacy; public bool AnimationLoopTime = true; public bool AnimationLoopPose = false; - - public bool DeduplicateResources = false; + public DeduplicateOptions DeduplicateResources = DeduplicateOptions.None; public bool SwapUVs = false; public GLTFImporterNormals ImportNormals = GLTFImporterNormals.Import; public GLTFImporterNormals ImportTangents = GLTFImporterNormals.Import; @@ -774,12 +781,22 @@ private void InitializeGltfTopLevelObject() // Free up some Memory, Accessor contents are no longer needed FreeUpAccessorContents(); - if (_options.DeduplicateResources) + if (_options.DeduplicateResources != DeduplicateOptions.None) { if (IsMultithreaded) - await Task.Run(CheckForMeshDuplicates, cancellationToken); + { + if (_options.DeduplicateResources.HasFlag(DeduplicateOptions.Meshes)) + await Task.Run(CheckForMeshDuplicates, cancellationToken); + if (_options.DeduplicateResources.HasFlag(DeduplicateOptions.Textures)) + await Task.Run(CheckForDuplicateImages, cancellationToken); + } else - CheckForMeshDuplicates(); + { + if (_options.DeduplicateResources.HasFlag(DeduplicateOptions.Meshes)) + CheckForMeshDuplicates(); + if (_options.DeduplicateResources.HasFlag(DeduplicateOptions.Textures)) + CheckForDuplicateImages(); + } } await ConstructScene(scene, showSceneObj, cancellationToken); diff --git a/Runtime/Scripts/SceneImporter/ImporterTextures.cs b/Runtime/Scripts/SceneImporter/ImporterTextures.cs index 104601fb2..816dc0210 100644 --- a/Runtime/Scripts/SceneImporter/ImporterTextures.cs +++ b/Runtime/Scripts/SceneImporter/ImporterTextures.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.IO; using System.Threading.Tasks; using GLTF.Schema; @@ -20,6 +21,7 @@ namespace UnityGLTF public partial class GLTFSceneImporter { internal const string EMPTY_TEXTURE_NAME_SUFFIX = " \0"; + private Dictionary _imageDeduplicationLinks; // Org Image ID -> distinct Image ID private class TextureData { @@ -70,7 +72,98 @@ private async Task FromTextureInfo(TextureInfo textureInfo, bool is return result; } + + private static int ComputeHash(byte[] data) + { + unchecked + { + const int p = 16777619; + int hash = (int)2166136261; + for (int i = 0; i < data.Length; i++) + hash = (hash ^ data[i]) * p; + + return hash; + } + } + + private Dictionary CollectImageHashes() + { + Dictionary hashes = new Dictionary(); + + int index = -1; + foreach (var image in _gltfRoot.Images) + { + index++; + if (image.Uri == null) + { + if (image.BufferView == null) + continue; + + var stream = GetImageStream(image); + if (stream == null || stream.Length == 0) + continue; + + // Create a hash for the stream data + var bufferData = new byte[stream.Length]; + stream.Read(bufferData, 0, bufferData.Length); + + int streamHash = ComputeHash(bufferData); + + hashes.Add(index, streamHash); + } + else + { + hashes.Add(index, image.Uri.GetHashCode()); + } + } + + return hashes; + } + + private void CheckForDuplicateImages() + { + var hashes = CollectImageHashes(); + var reverseHashes = new Dictionary(); + foreach (var h in hashes) + reverseHashes[h.Value] = h.Key; + + _imageDeduplicationLinks = new Dictionary(); + foreach (var h in hashes) + _imageDeduplicationLinks[h.Key] = reverseHashes[h.Value]; + } + + private Stream GetImageStream(GLTFImage image) + { + Stream stream = null; + if (image.Uri == null) + { + if (image.BufferView == null) + return null; + + var bufferView = image.BufferView.Value; + BufferCacheData bufferContents = _assetCache.BufferCache[bufferView.Buffer.Id]; + if (bufferContents.bufferData.IsCreated) + { + bufferContents.Stream.Position = bufferView.ByteOffset + bufferContents.ChunkOffset; + stream = new SubStream(bufferContents.Stream, 0, bufferView.ByteLength); + } + } + else + { + string uri = image.Uri; + + byte[] bufferData; + URIHelper.TryParseBase64(uri, out bufferData); + if (bufferData != null) + { + stream = new MemoryStream(bufferData, 0, bufferData.Length, false, true); + } + } + + return stream; + } + protected async Task ConstructImage(GLTFImage image, int imageCacheIndex, bool markGpuOnly, bool isLinear, bool isNormal) { if (_assetCache.InvalidImageCache[imageCacheIndex]) @@ -78,33 +171,7 @@ protected async Task ConstructImage(GLTFImage image, int imageCacheIndex, bool m if (_assetCache.ImageCache[imageCacheIndex] == null) { - Stream stream = null; - if (image.Uri == null) - { - var bufferView = image.BufferView.Value; - BufferCacheData bufferContents = _assetCache.BufferCache[bufferView.Buffer.Id]; - if (bufferContents.bufferData.IsCreated) - { - bufferContents.Stream.Position = bufferView.ByteOffset + bufferContents.ChunkOffset; - stream = new SubStream(bufferContents.Stream, 0, bufferView.ByteLength); - } - } - else - { - string uri = image.Uri; - - byte[] bufferData; - URIHelper.TryParseBase64(uri, out bufferData); - if (bufferData != null) - { - stream = new MemoryStream(bufferData, 0, bufferData.Length, false, true); - } - else - { - stream = _assetCache.ImageStreamCache[imageCacheIndex]; - } - } - + Stream stream = GetImageStream(image); await YieldOnTimeoutAndThrowOnLowMemory(); await ConstructUnityTexture(stream, markGpuOnly, isLinear, isNormal, image, imageCacheIndex); } @@ -332,7 +399,15 @@ protected virtual int GetTextureSourceId(GLTFTexture texture) { return ((KHR_texture_basisu)texture.Extensions[KHR_texture_basisu.EXTENSION_NAME]).source.Id; } - return texture.Source?.Id ?? 0; + + int id = texture.Source?.Id ?? 0; + if (_imageDeduplicationLinks != null) + { + if (_imageDeduplicationLinks.TryGetValue(id, out int replacedId)) + id = replacedId; + } + + return id; } protected virtual bool IsTextureFlipped(GLTFTexture texture) From 9f99aa8b03201fec3382e2e39283403e338c7715 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 29 Aug 2024 11:49:13 +0200 Subject: [PATCH 025/117] extracted UnityMeshData from SceneImporter --- Runtime/Scripts/GLTFSceneImporter.cs | 117 +---------------- .../Scripts/SceneImporter/UnityMeshData.cs | 119 ++++++++++++++++++ .../SceneImporter/UnityMeshData.cs.meta | 3 + 3 files changed, 123 insertions(+), 116 deletions(-) create mode 100644 Runtime/Scripts/SceneImporter/UnityMeshData.cs create mode 100644 Runtime/Scripts/SceneImporter/UnityMeshData.cs.meta diff --git a/Runtime/Scripts/GLTFSceneImporter.cs b/Runtime/Scripts/GLTFSceneImporter.cs index aa2872ee0..d37eb7d41 100644 --- a/Runtime/Scripts/GLTFSceneImporter.cs +++ b/Runtime/Scripts/GLTFSceneImporter.cs @@ -15,9 +15,7 @@ using UnityGLTF.Loader; using UnityGLTF.Plugins; using Quaternion = UnityEngine.Quaternion; -using Vector2 = UnityEngine.Vector2; using Vector3 = UnityEngine.Vector3; -using Vector4 = UnityEngine.Vector4; #if !WINDOWS_UWP && !UNITY_WEBGL using ThreadPriority = System.Threading.ThreadPriority; #endif @@ -81,120 +79,7 @@ public enum AnimationMethod Mecanim, MecanimHumanoid, } - - public class UnityMeshData - { - public bool[] subMeshDataCreated; - public Vector3[] Vertices; - public Vector3[] Normals; - public Vector4[] Tangents; - public Vector2[] Uv1; - public Vector2[] Uv2; - public Vector2[] Uv3; - public Vector2[] Uv4; - public Color[] Colors; - public BoneWeight[] BoneWeights; - - public Vector3[][] MorphTargetVertices; - public Vector3[][] MorphTargetNormals; - public Vector3[][] MorphTargetTangents; - - public MeshTopology[] Topology; - public DrawMode[] DrawModes; - public int[][] Indices; - - public HashSet alreadyAddedAccessors = new HashSet(); - public uint[] subMeshVertexOffset; - - public void Clear() - { - Vertices = null; - Normals = null; - Tangents = null; - Uv1 = null; - Uv2 = null; - Uv3 = null; - Uv4 = null; - Colors = null; - BoneWeights = null; - MorphTargetVertices = null; - MorphTargetNormals = null; - MorphTargetTangents = null; - Topology = null; - Indices = null; - subMeshVertexOffset = null; - } - - public bool IsEqual(UnityMeshData other) - { - bool CompareArray(T[] array1, T[] array2) - { - if (array1 == null && array2 == null) - return true; - if (array1 == array2) - return true; - if (array1?.Length != array2?.Length) - return false; - - for (int i = 0; i < array1.Length; i++) - { - if (!array1[i].Equals(array2[i])) - return false; - } - - return true; - } - - bool CompareArray2(T[][] array1, T[][] array2) - { - if (array1 == null && array2 == null) - return true; - if (array1 == array2) - return true; - if (array1?.Length != array2?.Length) - return false; - - for (int i = 0; i < array1.Length; i++) - { - if (array1[i] == null && array2[i] == null) - continue; - if (array1[i] == array2[i]) - continue; - - if (array1[i].Length != array2[i].Length) - return false; - - for (int j = 0; j < array1.Length; j++) - { - if (!array1[i][j].Equals(array2[i][j])) - return false; - } - } - - return true; - } - - if (!CompareArray(Vertices, other.Vertices) - || !CompareArray(Normals, other.Normals) - || !CompareArray(Tangents, other.Tangents) - || !CompareArray(Uv1, other.Uv1) - || !CompareArray(Uv2, other.Uv2) - || !CompareArray(Uv3, other.Uv3) - || !CompareArray(Uv4, other.Uv4) - || !CompareArray(Colors, other.Colors) - || !CompareArray(BoneWeights, other.BoneWeights) - || !CompareArray(Topology, other.Topology) - || !CompareArray(DrawModes, other.DrawModes) - || !CompareArray2(MorphTargetVertices, other.MorphTargetVertices) - || !CompareArray2(MorphTargetNormals, other.MorphTargetNormals) - || !CompareArray2(MorphTargetTangents, other.MorphTargetTangents) - || !CompareArray2(Indices, other.Indices)) - return false; - - return true; - } - } - + public struct ImportProgress { public bool IsDownloaded; diff --git a/Runtime/Scripts/SceneImporter/UnityMeshData.cs b/Runtime/Scripts/SceneImporter/UnityMeshData.cs new file mode 100644 index 000000000..dd20da156 --- /dev/null +++ b/Runtime/Scripts/SceneImporter/UnityMeshData.cs @@ -0,0 +1,119 @@ +using System.Collections.Generic; +using GLTF.Schema; +using UnityEngine; + +namespace UnityGLTF +{ + public class UnityMeshData + { + public bool[] subMeshDataCreated; + public Vector3[] Vertices; + public Vector3[] Normals; + public Vector4[] Tangents; + public Vector2[] Uv1; + public Vector2[] Uv2; + public Vector2[] Uv3; + public Vector2[] Uv4; + public Color[] Colors; + public BoneWeight[] BoneWeights; + + public Vector3[][] MorphTargetVertices; + public Vector3[][] MorphTargetNormals; + public Vector3[][] MorphTargetTangents; + + public MeshTopology[] Topology; + public DrawMode[] DrawModes; + public int[][] Indices; + + public HashSet alreadyAddedAccessors = new HashSet(); + public uint[] subMeshVertexOffset; + + public void Clear() + { + Vertices = null; + Normals = null; + Tangents = null; + Uv1 = null; + Uv2 = null; + Uv3 = null; + Uv4 = null; + Colors = null; + BoneWeights = null; + MorphTargetVertices = null; + MorphTargetNormals = null; + MorphTargetTangents = null; + Topology = null; + Indices = null; + subMeshVertexOffset = null; + } + + public bool IsEqual(UnityMeshData other) + { + bool CompareArray(T[] array1, T[] array2) + { + if (array1 == null && array2 == null) + return true; + if (array1 == array2) + return true; + if (array1?.Length != array2?.Length) + return false; + + for (int i = 0; i < array1.Length; i++) + { + if (!array1[i].Equals(array2[i])) + return false; + } + + return true; + } + + bool CompareArray2(T[][] array1, T[][] array2) + { + if (array1 == null && array2 == null) + return true; + if (array1 == array2) + return true; + if (array1?.Length != array2?.Length) + return false; + + for (int i = 0; i < array1.Length; i++) + { + if (array1[i] == null && array2[i] == null) + continue; + if (array1[i] == array2[i]) + continue; + + if (array1[i].Length != array2[i].Length) + return false; + + for (int j = 0; j < array1.Length; j++) + { + if (!array1[i][j].Equals(array2[i][j])) + return false; + } + } + + return true; + } + + if (!CompareArray(Vertices, other.Vertices) + || !CompareArray(Normals, other.Normals) + || !CompareArray(Tangents, other.Tangents) + || !CompareArray(Uv1, other.Uv1) + || !CompareArray(Uv2, other.Uv2) + || !CompareArray(Uv3, other.Uv3) + || !CompareArray(Uv4, other.Uv4) + || !CompareArray(Colors, other.Colors) + || !CompareArray(BoneWeights, other.BoneWeights) + || !CompareArray(Topology, other.Topology) + || !CompareArray(DrawModes, other.DrawModes) + || !CompareArray2(MorphTargetVertices, other.MorphTargetVertices) + || !CompareArray2(MorphTargetNormals, other.MorphTargetNormals) + || !CompareArray2(MorphTargetTangents, other.MorphTargetTangents) + || !CompareArray2(Indices, other.Indices)) + return false; + + return true; + } + } +} \ No newline at end of file diff --git a/Runtime/Scripts/SceneImporter/UnityMeshData.cs.meta b/Runtime/Scripts/SceneImporter/UnityMeshData.cs.meta new file mode 100644 index 000000000..a10a6fa31 --- /dev/null +++ b/Runtime/Scripts/SceneImporter/UnityMeshData.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5142460d60f647e0b377dd3cc0c0a909 +timeCreated: 1724924750 \ No newline at end of file From 53c412136c3930ca8c1392a994c4f9fcffdb4793 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 29 Aug 2024 11:53:23 +0200 Subject: [PATCH 026/117] code formatting --- .../Scripts/SceneImporter/ImporterTextures.cs | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/Runtime/Scripts/SceneImporter/ImporterTextures.cs b/Runtime/Scripts/SceneImporter/ImporterTextures.cs index 816dc0210..14cad852f 100644 --- a/Runtime/Scripts/SceneImporter/ImporterTextures.cs +++ b/Runtime/Scripts/SceneImporter/ImporterTextures.cs @@ -134,35 +134,35 @@ private void CheckForDuplicateImages() } private Stream GetImageStream(GLTFImage image) - { + { Stream stream = null; - if (image.Uri == null) - { - if (image.BufferView == null) - return null; - - var bufferView = image.BufferView.Value; - BufferCacheData bufferContents = _assetCache.BufferCache[bufferView.Buffer.Id]; - if (bufferContents.bufferData.IsCreated) - { - bufferContents.Stream.Position = bufferView.ByteOffset + bufferContents.ChunkOffset; - stream = new SubStream(bufferContents.Stream, 0, bufferView.ByteLength); - } - } - else - { - string uri = image.Uri; - - byte[] bufferData; - URIHelper.TryParseBase64(uri, out bufferData); - if (bufferData != null) - { - stream = new MemoryStream(bufferData, 0, bufferData.Length, false, true); - } - } - - return stream; - } + if (image.Uri == null) + { + if (image.BufferView == null) + return null; + + var bufferView = image.BufferView.Value; + BufferCacheData bufferContents = _assetCache.BufferCache[bufferView.Buffer.Id]; + if (bufferContents.bufferData.IsCreated) + { + bufferContents.Stream.Position = bufferView.ByteOffset + bufferContents.ChunkOffset; + stream = new SubStream(bufferContents.Stream, 0, bufferView.ByteLength); + } + } + else + { + string uri = image.Uri; + + byte[] bufferData; + URIHelper.TryParseBase64(uri, out bufferData); + if (bufferData != null) + { + stream = new MemoryStream(bufferData, 0, bufferData.Length, false, true); + } + } + + return stream; + } protected async Task ConstructImage(GLTFImage image, int imageCacheIndex, bool markGpuOnly, bool isLinear, bool isNormal) { From 8fe7bc58c873fe02a1686866fcb5275deba44bf9 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Tue, 27 Aug 2024 16:37:29 +0200 Subject: [PATCH 027/117] made ShaderOverride public on GLTFComponent --- Runtime/Scripts/GLTFComponent.cs | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/Runtime/Scripts/GLTFComponent.cs b/Runtime/Scripts/GLTFComponent.cs index c678720b4..c1e2a85b3 100644 --- a/Runtime/Scripts/GLTFComponent.cs +++ b/Runtime/Scripts/GLTFComponent.cs @@ -48,6 +48,16 @@ public class GLTFComponent : MonoBehaviour [SerializeField] private Shader shaderOverride = null; + + public Shader ShaderOverride + { + get => shaderOverride; + set + { + shaderOverride = value; + ApplyOverrideShader(); + } + } [Header("Import Settings")] public GLTFImporterNormals ImportNormals = GLTFImporterNormals.Import; @@ -130,14 +140,7 @@ await sceneImporter.LoadSceneAsync( ); // Override the shaders on all materials if a shader is provided - if (shaderOverride != null) - { - Renderer[] renderers = gameObject.GetComponentsInChildren(); - foreach (Renderer renderer in renderers) - { - renderer.sharedMaterial.shader = shaderOverride; - } - } + ApplyOverrideShader(); LastLoadedScene = sceneImporter.LastLoadedScene; @@ -163,6 +166,18 @@ await sceneImporter.LoadSceneAsync( } } } + + public void ApplyOverrideShader() + { + if (shaderOverride != null) + { + Renderer[] renderers = gameObject.GetComponentsInChildren(); + foreach (Renderer renderer in renderers) + { + renderer.sharedMaterial.shader = shaderOverride; + } + } + } private void LoadCompleteAction(GameObject obj, ExceptionDispatchInfo exceptionDispatchInfo) { From 41a6b8e23c972b8ca8eb8ac77848b03543419166 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Tue, 3 Sep 2024 12:06:56 +0200 Subject: [PATCH 028/117] added simplified sheen function to PBRHelpers --- Runtime/Shaders/ShaderGraph/PBRHelpers.cginc | 28 ++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc b/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc index 1435ee864..93fc71815 100644 --- a/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc +++ b/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc @@ -129,6 +129,34 @@ void WorkaroundTilingOffset_float(UnityTexture2D Tex, float4 LegacyST, out float OutTex = Tex; } +void Sheen_float(float roughness, float3 sheenColor, float3 albedo, float3 viewDir, float3 normal, out float3 resultColor) +{ + // Not physical auccurate! but looks good enough and a perfomance friendly approximation + + #if UNITY_VERSION >= 202120 + Light mainLight = GetMainLight(); + float3 lightDirection = mainLight.direction; + #else + float3 lightDirection = viewDir; + #endif + + float oneMinusRoughness = 1.0 - roughness; + float NdotV = max(dot(normal, viewDir), 0.0); + float halfDir = normalize(viewDir + lightDirection); + float sheenColorMax = max(max(sheenColor.x, sheenColor.y), sheenColor.z); + + float sheen = pow(1.0 - NdotV, 5.0 + oneMinusRoughness * 4 * pow(sheenColorMax,2)) ; + sheen = oneMinusRoughness * halfDir * sheen + sheen; + + float sheenEnergyComp = 1.0 - 0.157 * sheen; + resultColor = albedo * sheenEnergyComp + sheen * sheenColor + (sheenColor * sheenColorMax * 0.157 * roughness); +} + +void Sheen_half(half roughness, half3 sheenColor, half3 albedo, half3 viewDir, half3 normal, out half3 resultColor) +{ + Sheen_float(roughness, sheenColor, albedo, viewDir, normal, resultColor); +} + void WorkaroundTilingOffset_half(UnityTexture2D Tex, half4 LegacyST, out half4 TilingOffset, out UnityTexture2D OutTex) { #if UNITY_VERSION >= 202120 From 6ee14469044ca715fc86880978ebebc2d94bf7f1 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Tue, 3 Sep 2024 12:11:17 +0200 Subject: [PATCH 029/117] added Sheen to pbrGraph --- .../Shaders/ShaderGraph/PBRGraph.shadergraph | 3231 +++++++++++++++-- .../Shaders/ShaderGraph/Sheen.shadersubgraph | 827 +++++ .../ShaderGraph/Sheen.shadersubgraph.meta | 10 + 3 files changed, 3776 insertions(+), 292 deletions(-) create mode 100644 Runtime/Shaders/ShaderGraph/Sheen.shadersubgraph create mode 100644 Runtime/Shaders/ShaderGraph/Sheen.shadersubgraph.meta diff --git a/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph b/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph index 8eeaaa8c3..bdc9c4b31 100644 --- a/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph +++ b/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph @@ -230,6 +230,36 @@ }, { "m_Id": "758a2d34271948b5bbec3c69ff668cd6" + }, + { + "m_Id": "c6121b1054504ce3a7a4efba71bf9873" + }, + { + "m_Id": "6b364daf1f8b4ba3a33235d8c63e9109" + }, + { + "m_Id": "268e450c1cfd43939c6a4005b8eb7f15" + }, + { + "m_Id": "40e39f38f5f14be5b1f3e8a801e0d3c6" + }, + { + "m_Id": "5fab76e7df744539b4a2b338cc7dad44" + }, + { + "m_Id": "133666e5702e4ae38bad50224f5b3de0" + }, + { + "m_Id": "448558b95e074169a6ffe6fd7bfc2443" + }, + { + "m_Id": "a01314083833431cab82400f6eb05186" + }, + { + "m_Id": "ba933f4433144acb99e0e5830eedbecd" + }, + { + "m_Id": "cb6f985ac6a64e0c9a6b2ebc9c77a63c" } ], "m_Keywords": [ @@ -242,14 +272,14 @@ { "m_Id": "87f49076b11a43f2bc2c05c9154c93d4" }, - { - "m_Id": "97df40c83f5a4671a59db5b30b4c6316" - }, { "m_Id": "14eb9f49890e4fdf8e6c058bfe728c2c" }, { "m_Id": "13bf38d3fb4046ed924a4a13ca312622" + }, + { + "m_Id": "7423ab95bc1741d181ffdcb861c1f3fe" } ], "m_Dropdowns": [], @@ -631,9 +661,6 @@ { "m_Id": "7f4c33107f064c7da4d5577b6541188d" }, - { - "m_Id": "2796de049db74614be6bfe0317d3403f" - }, { "m_Id": "a0f839c542124faea4358fe4a8083771" }, @@ -960,6 +987,63 @@ }, { "m_Id": "ad74a2b685714e43868498ca3d91e475" + }, + { + "m_Id": "ad76d5c5b88d460d9862201316b82a76" + }, + { + "m_Id": "2ceecca278fb421e9b2a55c157f045ae" + }, + { + "m_Id": "208644bed0f04bbb800ea30a2297dd87" + }, + { + "m_Id": "20316d20817f4522ac33d753759d9116" + }, + { + "m_Id": "6bc6081927414a54967aba433d1a4cc2" + }, + { + "m_Id": "564dfe6617854c74924e85ddad9d2aee" + }, + { + "m_Id": "0845a41c58b64028ae98f71e3c49221d" + }, + { + "m_Id": "ab8852869aed43e4b1f698bac31c6b78" + }, + { + "m_Id": "2f9b446a6033419db864e58478f1c480" + }, + { + "m_Id": "260f3614e33a470b94fc38f693da5e93" + }, + { + "m_Id": "06db79095b024baf987eb00f1a802177" + }, + { + "m_Id": "ec0cf97e6f8a45b6bc27980002dcfbc3" + }, + { + "m_Id": "9fbbe30fbcec4c9bb5239bf2c89b1a63" + }, + { + "m_Id": "bf4bc0ecdc8f484db87384921a2e2c94" + }, + { + "m_Id": "644e2e1876414d4197b4275bb3a14b53" + }, + { + "m_Id": "179aaafeae5640429c34bb60b5d854cb" + }, + { + "m_Id": "155ed8d9e10844ff8bab213258a3348a" + }, + { + "m_Id": "49b1bd5f6fa04b1fb25b22f346e420b5" + }, + { + "m_Id": "6fb6e7d6f90d4821a59d6a33569cdde0" } ], "m_GroupDatas": [ @@ -983,6 +1067,9 @@ }, { "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + }, + { + "m_Id": "c6190d7ef66644e4b76c6b232c6877fa" } ], "m_StickyNoteDatas": [ @@ -1104,6 +1191,20 @@ "m_SlotId": 0 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "06db79095b024baf987eb00f1a802177" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "0845a41c58b64028ae98f71e3c49221d" + }, + "m_SlotId": -1162300524 + } + }, { "m_OutputSlot": { "m_Node": { @@ -1146,6 +1247,34 @@ "m_SlotId": -725852216 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0845a41c58b64028ae98f71e3c49221d" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6bc6081927414a54967aba433d1a4cc2" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0845a41c58b64028ae98f71e3c49221d" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6bc6081927414a54967aba433d1a4cc2" + }, + "m_SlotId": 1 + } + }, { "m_OutputSlot": { "m_Node": { @@ -1328,6 +1457,20 @@ "m_SlotId": 0 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "155ed8d9e10844ff8bab213258a3348a" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ab8852869aed43e4b1f698bac31c6b78" + }, + "m_SlotId": -1162300524 + } + }, { "m_OutputSlot": { "m_Node": { @@ -1356,6 +1499,20 @@ "m_SlotId": 1470722099 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "179aaafeae5640429c34bb60b5d854cb" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ab8852869aed43e4b1f698bac31c6b78" + }, + "m_SlotId": -725852216 + } + }, { "m_OutputSlot": { "m_Node": { @@ -1510,6 +1667,34 @@ "m_SlotId": 0 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "20316d20817f4522ac33d753759d9116" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ad76d5c5b88d460d9862201316b82a76" + }, + "m_SlotId": 1491009813 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "208644bed0f04bbb800ea30a2297dd87" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "192a2fa94873447f8287e671a84cfef5" + }, + "m_SlotId": 0 + } + }, { "m_OutputSlot": { "m_Node": { @@ -1625,15 +1810,15 @@ { "m_OutputSlot": { "m_Node": { - "m_Id": "2796de049db74614be6bfe0317d3403f" + "m_Id": "260f3614e33a470b94fc38f693da5e93" }, "m_SlotId": 0 }, "m_InputSlot": { "m_Node": { - "m_Id": "1fd92dcb775e44539582c91fa2d715ee" + "m_Id": "0845a41c58b64028ae98f71e3c49221d" }, - "m_SlotId": 1 + "m_SlotId": -725852216 } }, { @@ -1692,6 +1877,20 @@ "m_SlotId": 1470722099 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2ceecca278fb421e9b2a55c157f045ae" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6fb6e7d6f90d4821a59d6a33569cdde0" + }, + "m_SlotId": 1 + } + }, { "m_OutputSlot": { "m_Node": { @@ -1720,6 +1919,20 @@ "m_SlotId": -1162300524 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2dc0377e855949349c7a1052f7e3ff6c" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "20316d20817f4522ac33d753759d9116" + }, + "m_SlotId": 0 + } + }, { "m_OutputSlot": { "m_Node": { @@ -1734,6 +1947,20 @@ "m_SlotId": 0 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2f9b446a6033419db864e58478f1c480" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "0845a41c58b64028ae98f71e3c49221d" + }, + "m_SlotId": -532409878 + } + }, { "m_OutputSlot": { "m_Node": { @@ -1986,6 +2213,20 @@ "m_SlotId": 0 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "49b1bd5f6fa04b1fb25b22f346e420b5" + }, + "m_SlotId": 7 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6fb6e7d6f90d4821a59d6a33569cdde0" + }, + "m_SlotId": 0 + } + }, { "m_OutputSlot": { "m_Node": { @@ -2098,6 +2339,20 @@ "m_SlotId": 1309511136 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "564dfe6617854c74924e85ddad9d2aee" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ad76d5c5b88d460d9862201316b82a76" + }, + "m_SlotId": 1128211854 + } + }, { "m_OutputSlot": { "m_Node": { @@ -2406,6 +2661,20 @@ "m_SlotId": 0 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "644e2e1876414d4197b4275bb3a14b53" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ab8852869aed43e4b1f698bac31c6b78" + }, + "m_SlotId": 1309511136 + } + }, { "m_OutputSlot": { "m_Node": { @@ -2476,6 +2745,20 @@ "m_SlotId": -1162300524 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "6bc6081927414a54967aba433d1a4cc2" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "564dfe6617854c74924e85ddad9d2aee" + }, + "m_SlotId": 0 + } + }, { "m_OutputSlot": { "m_Node": { @@ -2504,6 +2787,20 @@ "m_SlotId": -725852216 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "6fb6e7d6f90d4821a59d6a33569cdde0" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ad76d5c5b88d460d9862201316b82a76" + }, + "m_SlotId": 661176540 + } + }, { "m_OutputSlot": { "m_Node": { @@ -3288,6 +3585,20 @@ "m_SlotId": 0 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9fbbe30fbcec4c9bb5239bf2c89b1a63" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "564dfe6617854c74924e85ddad9d2aee" + }, + "m_SlotId": 1 + } + }, { "m_OutputSlot": { "m_Node": { @@ -3297,7 +3608,7 @@ }, "m_InputSlot": { "m_Node": { - "m_Id": "2796de049db74614be6bfe0317d3403f" + "m_Id": "1fd92dcb775e44539582c91fa2d715ee" }, "m_SlotId": 1 } @@ -3456,6 +3767,34 @@ "m_SlotId": 2 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ab8852869aed43e4b1f698bac31c6b78" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "49b1bd5f6fa04b1fb25b22f346e420b5" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ab8852869aed43e4b1f698bac31c6b78" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "49b1bd5f6fa04b1fb25b22f346e420b5" + }, + "m_SlotId": 1 + } + }, { "m_OutputSlot": { "m_Node": { @@ -3512,6 +3851,20 @@ "m_SlotId": 0 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ad76d5c5b88d460d9862201316b82a76" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "208644bed0f04bbb800ea30a2297dd87" + }, + "m_SlotId": 1 + } + }, { "m_OutputSlot": { "m_Node": { @@ -3703,9 +4056,23 @@ }, "m_InputSlot": { "m_Node": { - "m_Id": "192a2fa94873447f8287e671a84cfef5" + "m_Id": "208644bed0f04bbb800ea30a2297dd87" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ba7ecde994b4474184c1c30ed4439bb3" }, "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ad76d5c5b88d460d9862201316b82a76" + }, + "m_SlotId": -312577270 } }, { @@ -3764,6 +4131,20 @@ "m_SlotId": -725852216 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "bf4bc0ecdc8f484db87384921a2e2c94" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ab8852869aed43e4b1f698bac31c6b78" + }, + "m_SlotId": -532409878 + } + }, { "m_OutputSlot": { "m_Node": { @@ -3904,20 +4285,6 @@ "m_SlotId": 0 } }, - { - "m_OutputSlot": { - "m_Node": { - "m_Id": "c63eb0c45cd446faafe694bb84a8a9d3" - }, - "m_SlotId": 0 - }, - "m_InputSlot": { - "m_Node": { - "m_Id": "2796de049db74614be6bfe0317d3403f" - }, - "m_SlotId": 2 - } - }, { "m_OutputSlot": { "m_Node": { @@ -4548,6 +4915,20 @@ "m_SlotId": 2 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ec0cf97e6f8a45b6bc27980002dcfbc3" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "0845a41c58b64028ae98f71e3c49221d" + }, + "m_SlotId": 1309511136 + } + }, { "m_OutputSlot": { "m_Node": { @@ -4761,8 +5142,8 @@ ], "m_VertexContext": { "m_Position": { - "x": 3087.0, - "y": 321.0 + "x": 3487.42822265625, + "y": 292.0000305175781 }, "m_Blocks": [ { @@ -4778,8 +5159,8 @@ }, "m_FragmentContext": { "m_Position": { - "x": 3087.000244140625, - "y": 610.0 + "x": 3487.42822265625, + "y": 581.1429443359375 }, "m_Blocks": [ { @@ -5090,6 +5471,21 @@ "m_DefaultType": 0 } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "02fd5b3c07d849908f6f5c22a67b7efa", + "m_Id": 0, + "m_DisplayName": "Sheen Roughness Map UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", @@ -5206,6 +5602,31 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "03aefff64b414049b75da59b2bfbd547", + "m_Id": 1309511136, + "m_DisplayName": "LegacyST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_LegacyST", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -5353,6 +5774,31 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "0480ed265f294a5eb631f0f7670f543d", + "m_Id": 0, + "m_DisplayName": "Sheen Color Map Tiling/Scale", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1Node", @@ -5395,6 +5841,31 @@ "m_Value": 0.0 } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "056422219f2a4621bf375e03569453c3", + "m_Id": 0, + "m_DisplayName": "Sheen Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", @@ -5476,30 +5947,6 @@ "m_Labels": [] } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", - "m_ObjectId": "0663969fd47346fabe593928bb40b508", - "m_Id": 2, - "m_DisplayName": "Off", - "m_SlotType": 0, - "m_Hidden": false, - "m_ShaderOutputName": "Off", - "m_StageCapability": 3, - "m_Value": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - }, - "m_DefaultValue": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - } -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.LerpNode", @@ -5545,6 +5992,41 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "06db79095b024baf987eb00f1a802177", + "m_Group": { + "m_Id": "c6190d7ef66644e4b76c6b232c6877fa" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2534.85693359375, + "y": -1109.1427001953125, + "width": 184.0, + "height": 34.28564453125 + } + }, + "m_Slots": [ + { + "m_Id": "45f1a15a0fd441918ad227eda12645b9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "a01314083833431cab82400f6eb05186" + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.PropertyNode", @@ -5557,10 +6039,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1098.0001220703125, - "y": -345.0000305175781, - "width": 165.9998779296875, - "height": 34.0 + "x": 1272.0, + "y": -349.7143249511719, + "width": 166.2857666015625, + "height": 34.285736083984378 } }, "m_Slots": [ @@ -5689,6 +6171,73 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "0845a41c58b64028ae98f71e3c49221d", + "m_Group": { + "m_Id": "c6190d7ef66644e4b76c6b232c6877fa" + }, + "m_Name": "TextureTransform", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2739.999755859375, + "y": -1171.428466796875, + "width": 251.428466796875, + "height": 168.57147216796876 + } + }, + "m_Slots": [ + { + "m_Id": "2cdcb2d22aeb47159f93c91f4709c35b" + }, + { + "m_Id": "28ba9c9d9be24eeabff050fe23927b38" + }, + { + "m_Id": "437cef8b49224153b58dc3257a8e1c80" + }, + { + "m_Id": "72f007094c274dc789f6760f5f366dbf" + }, + { + "m_Id": "a4be13d8ece344e1ad9c8e19b20d9a09" + }, + { + "m_Id": "556c4c89ef1c4c06b49ba1e9cd00c0db" + }, + { + "m_Id": "88b5fda030624160b20aa58383896196" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"8ecb70019a63796448768b1124086ef5\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "83a6556e-d78a-45f4-b8a2-13076ccdab77", + "0c456893-e07e-4608-8121-3220a4f6c3be", + "b3d81d39-5c6c-4c82-9d1f-36795cedd43c", + "5b31af93-5974-4d7f-aa6a-8144a78d8bb2", + "277be5c3-34fc-4771-8834-d5c25768d2ec" + ], + "m_PropertyIds": [ + -1226117840, + -725852216, + -1162300524, + -532409878, + 1309511136 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", @@ -6378,10 +6927,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1037.0, - "y": -242.0000457763672, - "width": 227.0, - "height": 34.0 + "x": 1210.857177734375, + "y": -246.85716247558595, + "width": 227.4285888671875, + "height": 34.285736083984378 } }, "m_Slots": [ @@ -6451,6 +7000,21 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "0df976d9c8cd490d99b22681172818b5", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + { "m_SGVersion": 1, "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", @@ -6861,6 +7425,35 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "133666e5702e4ae38bad50224f5b3de0", + "m_Guid": { + "m_GuidSerialized": "de1df3be-ec18-4433-ae3f-c2ceb294a03f" + }, + "m_Name": "Sheen Roughness Map", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Sheen Roughness Map", + "m_DefaultReferenceName": "_Sheen_Roughness_Map", + "m_OverrideReferenceName": "sheenRoughnessTexture", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": true, + "m_Modifiable": true, + "m_DefaultType": 0 +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", @@ -6873,10 +7466,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1320.0, - "y": 552.0, - "width": 251.0, - "height": 166.00006103515626 + "x": 1493.7142333984375, + "y": 546.8571166992188, + "width": 251.4285888671875, + "height": 168.571533203125 } }, "m_Slots": [ @@ -7129,10 +7722,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1806.000244140625, - "y": 467.9999694824219, - "width": 129.9998779296875, - "height": 118.00003051757813 + "x": 1980.0001220703125, + "y": 462.857177734375, + "width": 131.4283447265625, + "height": 119.4285888671875 } }, "m_Slots": [ @@ -7183,6 +7776,41 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "155ed8d9e10844ff8bab213258a3348a", + "m_Group": { + "m_Id": "c6190d7ef66644e4b76c6b232c6877fa" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2497.714111328125, + "y": -640.5714111328125, + "width": 213.714111328125, + "height": 34.2857666015625 + } + }, + "m_Slots": [ + { + "m_Id": "02fd5b3c07d849908f6f5c22a67b7efa" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "cb6f985ac6a64e0c9a6b2ebc9c77a63c" + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", @@ -7360,6 +7988,41 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "179aaafeae5640429c34bb60b5d854cb", + "m_Group": { + "m_Id": "c6190d7ef66644e4b76c6b232c6877fa" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2473.142578125, + "y": -674.8570556640625, + "width": 241.142822265625, + "height": 34.28564453125 + } + }, + "m_Slots": [ + { + "m_Id": "bd84a5cb83a540a8bc211f4c5e208a68" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "ba933f4433144acb99e0e5830eedbecd" + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", @@ -7446,6 +8109,31 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "18923aa7e3354178a05c53d73891c14b", + "m_Id": 1, + "m_DisplayName": "Out_Vector4", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "OutVector4", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.PropertyNode", @@ -7591,6 +8279,21 @@ "m_SerializedDescriptor": "SurfaceDescription.BaseColor" } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "19436ee68ccc482f8468f3ff552b1bc5", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -7689,6 +8392,24 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "1a11b5a8d93d4a77853bcfa9ff149641", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", @@ -8098,6 +8819,19 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "1e480502a5634d95aa885682d9694b46", + "m_Id": 0, + "m_DisplayName": "Sheen Color Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + { "m_SGVersion": 1, "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", @@ -8308,10 +9042,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1815.0001220703125, - "y": -259.0, - "width": 130.0, - "height": 118.00003051757813 + "x": 1988.5712890625, + "y": -264.0, + "width": 131.4287109375, + "height": 119.4285888671875 } }, "m_Slots": [ @@ -8351,6 +9085,157 @@ "m_BareResource": false } +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.TransformNode", + "m_ObjectId": "20316d20817f4522ac33d753759d9116", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Transform", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2673.714599609375, + "y": -131.42855834960938, + "width": 213.714111328125, + "height": 159.4285888671875 + } + }, + "m_Slots": [ + { + "m_Id": "91cff9786e1d4059b498202188ee6c15" + }, + { + "m_Id": "3a848b024095415f852cef1953be3d29" + } + ], + "synonyms": [ + "world", + "tangent", + "object", + "view", + "screen", + "convert" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Conversion": { + "from": 3, + "to": 2 + }, + "m_ConversionType": 1 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "20391c482d974088b0a624c406a2dc15", + "m_Id": -1162300524, + "m_DisplayName": "UV Channel", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_UV_Channel", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "2068eb2ce25b4ea18cc5f480e66c2579", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.KeywordNode", + "m_ObjectId": "208644bed0f04bbb800ea30a2297dd87", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Enable Sheen", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3281.71435546875, + "y": 40.571414947509769, + "width": 140.0, + "height": 119.42860412597656 + } + }, + "m_Slots": [ + { + "m_Id": "858b8788d52043ecbb70d9701939a979" + }, + { + "m_Id": "3e18a2dcd7404b02872611c6ada4d792" + }, + { + "m_Id": "5b3a8d5fa48a4d469fe065c1620d5705" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Keyword": { + "m_Id": "7423ab95bc1741d181ffdcb861c1f3fe" + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", @@ -8773,6 +9658,41 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "260f3614e33a470b94fc38f693da5e93", + "m_Group": { + "m_Id": "c6190d7ef66644e4b76c6b232c6877fa" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2499.999755859375, + "y": -1141.714111328125, + "width": 211.428466796875, + "height": 34.28564453125 + } + }, + "m_Slots": [ + { + "m_Id": "771f1ff64fd44eca8cabf1f59bf290eb" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "40e39f38f5f14be5b1f3e8a801e0d3c6" + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -8806,6 +9726,35 @@ "m_DefaultType": 0 } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "268e450c1cfd43939c6a4005b8eb7f15", + "m_Guid": { + "m_GuidSerialized": "f23d52ab-0620-4719-9ac5-4ec09911e1b5" + }, + "m_Name": "Sheen Color Map", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Sheen Color Map", + "m_DefaultReferenceName": "_Sheen_Color_Map", + "m_OverrideReferenceName": "sheenColorTexture", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": true, + "m_Modifiable": true, + "m_DefaultType": 0 +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -8870,47 +9819,6 @@ "m_Labels": [] } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.KeywordNode", - "m_ObjectId": "2796de049db74614be6bfe0317d3403f", - "m_Group": { - "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" - }, - "m_Name": "Enable Vertex Colors", - "m_DrawState": { - "m_Expanded": true, - "m_Position": { - "serializedVersion": "2", - "x": 1703.0, - "y": -66.00000762939453, - "width": 166.0001220703125, - "height": 117.99998474121094 - } - }, - "m_Slots": [ - { - "m_Id": "5d7fea3e25aa4c32aa1b8057007a7cea" - }, - { - "m_Id": "eef506e16f0d4e7fabba8e363f9f7b5b" - }, - { - "m_Id": "0663969fd47346fabe593928bb40b508" - } - ], - "synonyms": [], - "m_Precision": 0, - "m_PreviewExpanded": false, - "m_PreviewMode": 0, - "m_CustomColors": { - "m_SerializableColors": [] - }, - "m_Keyword": { - "m_Id": "97df40c83f5a4671a59db5b30b4c6316" - } -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -8987,6 +9895,54 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "2860589ea2ff4a9f962a85d381869329", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", @@ -9012,6 +9968,21 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "28ba9c9d9be24eeabff050fe23927b38", + "m_Id": -725852216, + "m_DisplayName": "Rotation", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Rotation", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.SubtractNode", @@ -9216,6 +10187,21 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2ac62981fe5f40dbaaa31a84929e0bad", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", @@ -9521,6 +10507,59 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "2cdcb2d22aeb47159f93c91f4709c35b", + "m_Id": -532409878, + "m_DisplayName": "Tex", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Tex", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "2ceecca278fb421e9b2a55c157f045ae", + "m_Group": { + "m_Id": "c6190d7ef66644e4b76c6b232c6877fa" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3018.85693359375, + "y": -492.5714111328125, + "width": 169.142822265625, + "height": 34.2857666015625 + } + }, + "m_Slots": [ + { + "m_Id": "40939e7870f04b0cbf64d551d17c440c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "6b364daf1f8b4ba3a33235d8c63e9109" + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.PropertyNode", @@ -9684,10 +10723,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1982.0, - "y": 105.0, - "width": 166.0, - "height": 118.0 + "x": 2156.0, + "y": 100.00003051757813, + "width": 166.857177734375, + "height": 119.42851257324219 } }, "m_Slots": [ @@ -9727,6 +10766,54 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "2e2300e51dd64a23a1109cc2a9019951", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", @@ -9859,6 +10946,41 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "2f9b446a6033419db864e58478f1c480", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2510.857177734375, + "y": -1193.7142333984375, + "width": 173.142822265625, + "height": 34.28564453125 + } + }, + "m_Slots": [ + { + "m_Id": "1e480502a5634d95aa885682d9694b46" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "268e450c1cfd43939c6a4005b8eb7f15" + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", @@ -9883,6 +11005,27 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "2fb37bc34d8f40dbab40a6a1c1ac7d82", + "m_Id": 1, + "m_DisplayName": "Transformed_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Transformed_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -10083,10 +11226,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1124.0, - "y": 188.99998474121095, - "width": 157.0, - "height": 34.00001525878906 + "x": 1297.7142333984375, + "y": 183.99996948242188, + "width": 157.71435546875, + "height": 34.28569030761719 } }, "m_Slots": [ @@ -10348,6 +11491,19 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "3475fd67016a4f3185ff74ede9f7db0a", + "m_Id": 3, + "m_DisplayName": "Tex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Tex", + "m_StageCapability": 3, + "m_BareResource": false +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", @@ -10361,6 +11517,54 @@ "m_BareResource": false } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "353c46aba44640a78881df192dd21ed6", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", @@ -10385,6 +11589,21 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "35b8000f15fd404683d3b4af8578acc4", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -10680,6 +11899,29 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "3a848b024095415f852cef1953be3d29", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "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_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.PropertyNode", @@ -11217,6 +12459,30 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "3e18a2dcd7404b02872611c6ada4d792", + "m_Id": 1, + "m_DisplayName": "On", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "On", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + { "m_SGVersion": 1, "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", @@ -11480,6 +12746,48 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "40939e7870f04b0cbf64d551d17c440c", + "m_Id": 0, + "m_DisplayName": "Sheen Roughness", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "40e39f38f5f14be5b1f3e8a801e0d3c6", + "m_Guid": { + "m_GuidSerialized": "ccaa2e0a-b296-4bfe-af21-1fbb51e5973a" + }, + "m_Name": "Sheen Color Map Rotation", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Sheen Color Map Rotation", + "m_DefaultReferenceName": "_Sheen_Color_Map_Rotation", + "m_OverrideReferenceName": "sheenColorTextureRotation", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HDLitData", @@ -11748,6 +13056,21 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "437cef8b49224153b58dc3257a8e1c80", + "m_Id": -1162300524, + "m_DisplayName": "UV Channel", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_UV_Channel", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", @@ -11837,6 +13160,33 @@ "m_DefaultType": 0 } +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "448558b95e074169a6ffe6fd7bfc2443", + "m_Guid": { + "m_GuidSerialized": "b20b82ce-c983-4948-a0fc-4f5fa5967ff3" + }, + "m_Name": "Sheen Roughness Map TIling/Scale", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Sheen Roughness Map TIling/Scale", + "m_DefaultReferenceName": "_Sheen_Roughness_Map_TIling_Scale", + "m_OverrideReferenceName": "sheenRoughnessTexture_ST", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", @@ -11900,6 +13250,34 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "45f11fc5445a4094aa3ceb156d62ec78", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "45f1a15a0fd441918ad227eda12645b9", + "m_Id": 0, + "m_DisplayName": "Sheen Color Map UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.FresnelNode", @@ -12309,10 +13687,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1590.0, - "y": 90.0, - "width": 304.0, - "height": 143.0 + "x": 1764.0, + "y": 85.14281463623047, + "width": 264.0001220703125, + "height": 144.57150268554688 } }, "m_Slots": [ @@ -12391,6 +13769,62 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "49b1bd5f6fa04b1fb25b22f346e420b5", + "m_Group": { + "m_Id": "c6190d7ef66644e4b76c6b232c6877fa" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3018.85693359375, + "y": -793.142822265625, + "width": 184.5712890625, + "height": 253.142822265625 + } + }, + "m_Slots": [ + { + "m_Id": "4a5194ffa50a4b1f8829d1ed3b99ccd0" + }, + { + "m_Id": "2ac62981fe5f40dbaaa31a84929e0bad" + }, + { + "m_Id": "5a416f6433054b088846fa2d5f659d22" + }, + { + "m_Id": "35b8000f15fd404683d3b4af8578acc4" + }, + { + "m_Id": "19436ee68ccc482f8468f3ff552b1bc5" + }, + { + "m_Id": "98ca4706797c482c94de11b004da6869" + }, + { + "m_Id": "87240ca5d2e24b2a8a5048d371eaeb00" + }, + { + "m_Id": "87f410daddb243429ff01365517bc7e9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -12454,6 +13888,31 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "4a5194ffa50a4b1f8829d1ed3b99ccd0", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", @@ -12623,10 +14082,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1096.0, - "y": 154.99998474121095, - "width": 185.0, - "height": 34.0 + "x": 1269.7142333984375, + "y": 150.2857208251953, + "width": 185.1429443359375, + "height": 34.28569030761719 } }, "m_Slots": [ @@ -12684,9 +14143,9 @@ "m_Theme": 0, "m_Position": { "serializedVersion": "2", - "x": 789.0, - "y": -368.0, - "width": 200.0, + "x": 962.8571166992188, + "y": -373.1428527832031, + "width": 200.00006103515626, "height": 160.0 }, "m_Group": { @@ -13125,6 +14584,31 @@ "m_BareResource": false } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "518087f8349b4053ac009634aa00e58c", + "m_Id": -312577270, + "m_DisplayName": "Albedo", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Albedo", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", @@ -13185,10 +14669,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 2821.00048828125, - "y": 1040.0001220703125, - "width": 140.99951171875, - "height": 33.9998779296875 + "x": 3221.71435546875, + "y": 1010.8572387695313, + "width": 140.5712890625, + "height": 34.28558349609375 } }, "m_Slots": [ @@ -13588,6 +15072,31 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "556c4c89ef1c4c06b49ba1e9cd00c0db", + "m_Id": 2, + "m_DisplayName": "Original_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Original_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.PropertyNode", @@ -13623,6 +15132,48 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "564dfe6617854c74924e85ddad9d2aee", + "m_Group": { + "m_Id": "c6190d7ef66644e4b76c6b232c6877fa" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3261.714111328125, + "y": -1057.7142333984375, + "width": 131.428466796875, + "height": 119.42852783203125 + } + }, + "m_Slots": [ + { + "m_Id": "353c46aba44640a78881df192dd21ed6" + }, + { + "m_Id": "2068eb2ce25b4ea18cc5f480e66c2579" + }, + { + "m_Id": "e457ab101d7e4231aac933cdc498a99f" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.SystemData", @@ -14107,6 +15658,21 @@ "m_BareResource": false } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "5a416f6433054b088846fa2d5f659d22", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", @@ -14167,10 +15733,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1293.0, - "y": 90.0, - "width": 251.0, - "height": 167.0 + "x": 1466.857177734375, + "y": 85.14281463623047, + "width": 251.4285888671875, + "height": 168.57150268554688 } }, "m_Slots": [ @@ -14376,6 +15942,30 @@ "m_EnableGlobalMipBias": true } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "5b3a8d5fa48a4d469fe065c1620d5705", + "m_Id": 2, + "m_DisplayName": "Off", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Off", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", @@ -14711,30 +16301,6 @@ "m_BareResource": false } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", - "m_ObjectId": "5d7fea3e25aa4c32aa1b8057007a7cea", - "m_Id": 0, - "m_DisplayName": "Out", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "Out", - "m_StageCapability": 3, - "m_Value": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - }, - "m_DefaultValue": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - } -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", @@ -14920,6 +16486,33 @@ "m_Channel": 0 } +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "5fab76e7df744539b4a2b338cc7dad44", + "m_Guid": { + "m_GuidSerialized": "37e62578-1ffd-4f69-ae04-28a806b32b39" + }, + "m_Name": "Sheen Color Map Tiling/Scale", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Sheen Color Map Tiling/Scale", + "m_DefaultReferenceName": "_Sheen_Color_Map_Tiling_Scale", + "m_OverrideReferenceName": "sheenColorTexture_ST", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", @@ -15552,6 +17145,41 @@ "m_SerializedDescriptor": "SurfaceDescription.NormalTS" } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "644e2e1876414d4197b4275bb3a14b53", + "m_Group": { + "m_Id": "c6190d7ef66644e4b76c6b232c6877fa" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2473.142578125, + "y": -598.28564453125, + "width": 260.571533203125, + "height": 34.2857666015625 + } + }, + "m_Slots": [ + { + "m_Id": "a5cab5c29f704fc99631fd9336dd4238" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "448558b95e074169a6ffe6fd7bfc2443" + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", @@ -16066,6 +17694,33 @@ } } +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "6b364daf1f8b4ba3a33235d8c63e9109", + "m_Guid": { + "m_GuidSerialized": "eeaebf85-24d8-42d4-99e0-19346fd68395" + }, + "m_Name": "Sheen Roughness", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Sheen Roughness", + "m_DefaultReferenceName": "_Sheen_Roughness", + "m_OverrideReferenceName": "sheenRoughnessFactor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -16081,6 +17736,28 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "6bb6caac02a34d55905008bf7c064089", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + { "m_SGVersion": 1, "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", @@ -16108,6 +17785,62 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "6bc6081927414a54967aba433d1a4cc2", + "m_Group": { + "m_Id": "c6190d7ef66644e4b76c6b232c6877fa" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3018.85693359375, + "y": -1174.8570556640625, + "width": 184.5712890625, + "height": 253.14288330078126 + } + }, + "m_Slots": [ + { + "m_Id": "f61442cc1d5f4d73aad84b5048f95654" + }, + { + "m_Id": "fd4e91a1fdda447188e6cddaf66aed5c" + }, + { + "m_Id": "f270f29c7fb64be99d259314cacc14cf" + }, + { + "m_Id": "0df976d9c8cd490d99b22681172818b5" + }, + { + "m_Id": "d7717c65ff1449be8caaec161d77e6d0" + }, + { + "m_Id": "1a11b5a8d93d4a77853bcfa9ff149641" + }, + { + "m_Id": "6bb6caac02a34d55905008bf7c064089" + }, + { + "m_Id": "45f11fc5445a4094aa3ceb156d62ec78" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -16190,10 +17923,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1734.0, - "y": 1186.0, - "width": 185.9998779296875, - "height": 34.0 + "x": 1733.1429443359375, + "y": 1180.571533203125, + "width": 186.2857666015625, + "height": 34.28564453125 } }, "m_Slots": [ @@ -16353,10 +18086,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1067.0, - "y": 586.0000610351563, - "width": 193.0001220703125, - "height": 34.0 + "x": 1240.5714111328125, + "y": 581.1428833007813, + "width": 193.142822265625, + "height": 34.28564453125 } }, "m_Slots": [ @@ -16391,6 +18124,48 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "6fb6e7d6f90d4821a59d6a33569cdde0", + "m_Group": { + "m_Id": "c6190d7ef66644e4b76c6b232c6877fa" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3249.71435546875, + "y": -674.857177734375, + "width": 126.857177734375, + "height": 119.42852783203125 + } + }, + "m_Slots": [ + { + "m_Id": "2e2300e51dd64a23a1109cc2a9019951" + }, + { + "m_Id": "2860589ea2ff4a9f962a85d381869329" + }, + { + "m_Id": "b6194ae2dd35484c98f05c59c55c603b" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", @@ -16645,6 +18420,31 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "72f007094c274dc789f6760f5f366dbf", + "m_Id": 1309511136, + "m_DisplayName": "LegacyST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_LegacyST", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", @@ -16913,6 +18713,30 @@ } } +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ShaderKeyword", + "m_ObjectId": "7423ab95bc1741d181ffdcb861c1f3fe", + "m_Guid": { + "m_GuidSerialized": "a19c2542-8dfe-4ab1-bd7f-9fcf89e79420" + }, + "m_Name": "Enable Sheen", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Enable Sheen", + "m_DefaultReferenceName": "_ENABLE_SHEEN", + "m_OverrideReferenceName": "_SHEEN_ON", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_KeywordType": 0, + "m_KeywordDefinition": 0, + "m_KeywordScope": 0, + "m_KeywordStages": 63, + "m_Entries": [], + "m_Value": 0, + "m_IsEditable": true +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -17127,6 +18951,31 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "7585776daf874c5f8d372212b504eec0", + "m_Id": 2, + "m_DisplayName": "Original_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Original_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + { "m_SGVersion": 1, "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", @@ -17405,6 +19254,21 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "771f1ff64fd44eca8cabf1f59bf290eb", + "m_Id": 0, + "m_DisplayName": "Sheen Color Map Rotation", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.PropertyNode", @@ -17452,10 +19316,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1033.0001220703125, - "y": 657.0000610351563, - "width": 227.0, - "height": 34.0 + "x": 1206.857177734375, + "y": 652.0000610351563, + "width": 227.4285888671875, + "height": 34.28558349609375 } }, "m_Slots": [ @@ -17621,6 +19485,31 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "7ae15882a94646b6921c235fee055e08", + "m_Id": 1128211854, + "m_DisplayName": "SheenColor", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_SheenColor", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.BlockNode", @@ -17789,10 +19678,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1589.0, - "y": -372.9999084472656, - "width": 184.0, - "height": 253.0 + "x": 1762.857177734375, + "y": -377.71429443359377, + "width": 184.5714111328125, + "height": 253.1428985595703 } }, "m_Slots": [ @@ -18106,10 +19995,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1394.0, - "y": -42.000003814697269, - "width": 118.0001220703125, - "height": 93.99998474121094 + "x": 1568.0, + "y": -46.85713577270508, + "width": 119.4285888671875, + "height": 95.4285888671875 } }, "m_Slots": [ @@ -18146,17 +20035,17 @@ "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", "m_ObjectId": "7f827a3cdae746509e0dbcbc94884489", "m_Group": { - "m_Id": "" + "m_Id": "cd30fe948eb24cfe871b8fdea40a16f9" }, "m_Name": "Multiply", "m_DrawState": { "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1981.5499267578125, - "y": 1070.5499267578125, - "width": 208.0, - "height": 302.0 + "x": 1948.571533203125, + "y": 1038.2857666015625, + "width": 126.857177734375, + "height": 119.428466796875 } }, "m_Slots": [ @@ -18287,10 +20176,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1095.0001220703125, - "y": 620.0000610351563, - "width": 165.0, - "height": 34.0 + "x": 1268.5714111328125, + "y": 614.8570556640625, + "width": 165.71435546875, + "height": 34.2857666015625 } }, "m_Slots": [ @@ -18508,6 +20397,19 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "833949ebdceb46bba1fc44c1c15296ff", + "m_Id": 0, + "m_DisplayName": "Sheen Roughness Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", @@ -18860,6 +20762,30 @@ "m_FunctionBody": "color = SAMPLE_TEXTURE2D_X(_CameraOpaqueTexture, sampler_CameraOpaqueTexture, UnityStereoTransformScreenSpaceTex(uv)).rgb;" } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "858b8788d52043ecbb70d9701939a979", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", @@ -19089,6 +21015,28 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "87240ca5d2e24b2a8a5048d371eaeb00", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.PropertyNode", @@ -19168,6 +21116,19 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "87f410daddb243429ff01365517bc7e9", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + { "m_SGVersion": 1, "m_Type": "UnityEditor.ShaderGraph.ShaderKeyword", @@ -19246,6 +21207,19 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "88b5fda030624160b20aa58383896196", + "m_Id": 3, + "m_DisplayName": "Tex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Tex", + "m_StageCapability": 3, + "m_BareResource": false +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", @@ -20229,6 +22203,29 @@ "m_SerializedDescriptor": "SurfaceDescription.Metallic" } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "91cff9786e1d4059b498202188ee6c15", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "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_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", @@ -20648,30 +22645,6 @@ "m_DefaultType": 0 } -{ - "m_SGVersion": 1, - "m_Type": "UnityEditor.ShaderGraph.ShaderKeyword", - "m_ObjectId": "97df40c83f5a4671a59db5b30b4c6316", - "m_Guid": { - "m_GuidSerialized": "0ed3a523-c978-4e5c-bc38-732b77ffc1b4" - }, - "m_Name": "Enable Vertex Colors", - "m_DefaultRefNameVersion": 0, - "m_RefNameGeneratedByDisplayName": "", - "m_DefaultReferenceName": "_ENABLE_VERTEX_COLORS", - "m_OverrideReferenceName": "_VERTEX_COLORS_ON", - "m_GeneratePropertyBlock": true, - "m_UseCustomSlotLabel": false, - "m_CustomSlotLabel": "", - "m_KeywordType": 0, - "m_KeywordDefinition": 0, - "m_KeywordScope": 0, - "m_KeywordStages": 63, - "m_Entries": [], - "m_Value": 1, - "m_IsEditable": true -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", @@ -20777,10 +22750,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1806.0001220703125, - "y": 255.00001525878907, - "width": 144.0, - "height": 33.99998474121094 + "x": 1980.0001220703125, + "y": 250.28567504882813, + "width": 144.5714111328125, + "height": 34.2857666015625 } }, "m_Slots": [ @@ -20842,6 +22815,24 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "98ca4706797c482c94de11b004da6869", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -21369,10 +23360,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1589.9998779296875, - "y": 529.0, - "width": 183.0, - "height": 251.0 + "x": 1764.0, + "y": 524.0, + "width": 184.571533203125, + "height": 253.14288330078126 } }, "m_Slots": [ @@ -21986,6 +23977,41 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "9fbbe30fbcec4c9bb5239bf2c89b1a63", + "m_Group": { + "m_Id": "c6190d7ef66644e4b76c6b232c6877fa" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3085.142578125, + "y": -908.5713500976563, + "width": 141.142822265625, + "height": 34.2857666015625 + } + }, + "m_Slots": [ + { + "m_Id": "056422219f2a4621bf375e03569453c3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "c6121b1054504ce3a7a4efba71bf9873" + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", @@ -22034,6 +24060,33 @@ } } +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "a01314083833431cab82400f6eb05186", + "m_Guid": { + "m_GuidSerialized": "f81fdf01-2706-4f72-81a5-b08c477f413c" + }, + "m_Name": "Sheen Color Map UV", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Sheen Color Map UV", + "m_DefaultReferenceName": "_Sheen_Color_Map_UV", + "m_OverrideReferenceName": "sheenColorTextureTexCoord", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", @@ -22092,10 +24145,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1544.0, - "y": -123.00003051757813, - "width": 130.0001220703125, - "height": 118.00001525878906 + "x": 1717.7142333984375, + "y": -127.99995422363281, + "width": 131.4285888671875, + "height": 119.42850494384766 } }, "m_Slots": [ @@ -22629,6 +24682,27 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "a4be13d8ece344e1ad9c8e19b20d9a09", + "m_Id": 1, + "m_DisplayName": "Transformed_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Transformed_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", @@ -22730,10 +24804,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1641.9998779296875, - "y": 467.9999694824219, - "width": 123.000244140625, - "height": 33.999969482421878 + "x": 1816.0, + "y": 462.857177734375, + "width": 122.857177734375, + "height": 34.28570556640625 } }, "m_Slots": [ @@ -22753,6 +24827,31 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "a5cab5c29f704fc99631fd9336dd4238", + "m_Id": 0, + "m_DisplayName": "Sheen Roughness Map TIling/Scale", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.PropertyNode", @@ -23268,6 +25367,73 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "ab8852869aed43e4b1f698bac31c6b78", + "m_Group": { + "m_Id": "c6190d7ef66644e4b76c6b232c6877fa" + }, + "m_Name": "TextureTransform", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2739.999755859375, + "y": -708.5713500976563, + "width": 251.428466796875, + "height": 168.57135009765626 + } + }, + "m_Slots": [ + { + "m_Id": "e28ea51da8424ec5a35be5f3ef64d4c6" + }, + { + "m_Id": "b0fac75630234bb1b66465cbf8900bf5" + }, + { + "m_Id": "20391c482d974088b0a624c406a2dc15" + }, + { + "m_Id": "03aefff64b414049b75da59b2bfbd547" + }, + { + "m_Id": "2fb37bc34d8f40dbab40a6a1c1ac7d82" + }, + { + "m_Id": "7585776daf874c5f8d372212b504eec0" + }, + { + "m_Id": "3475fd67016a4f3185ff74ede9f7db0a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"8ecb70019a63796448768b1124086ef5\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "83a6556e-d78a-45f4-b8a2-13076ccdab77", + "0c456893-e07e-4608-8121-3220a4f6c3be", + "b3d81d39-5c6c-4c82-9d1f-36795cedd43c", + "5b31af93-5974-4d7f-aa6a-8144a78d8bb2", + "277be5c3-34fc-4771-8834-d5c25768d2ec" + ], + "m_PropertyIds": [ + -1226117840, + -725852216, + -1162300524, + -532409878, + 1309511136 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.RedirectNodeData", @@ -23338,6 +25504,65 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "ad76d5c5b88d460d9862201316b82a76", + "m_Group": { + "m_Id": "c6190d7ef66644e4b76c6b232c6877fa" + }, + "m_Name": "Sheen", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3302.857421875, + "y": -273.142822265625, + "width": 237.71435546875, + "height": 168.57138061523438 + } + }, + "m_Slots": [ + { + "m_Id": "7ae15882a94646b6921c235fee055e08" + }, + { + "m_Id": "e00c053a626740e18ff81096500454db" + }, + { + "m_Id": "518087f8349b4053ac009634aa00e58c" + }, + { + "m_Id": "ba4d2d275bf94dfaa8b7d04199db2697" + }, + { + "m_Id": "18923aa7e3354178a05c53d73891c14b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"85ba8322ac6cb6c4aab962530c987fc0\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "3da9545f-199d-412b-8a58-ad72c630104d", + "31ebe321-3bb2-4641-93c1-24d2151851fd", + "b662fe4f-051b-4249-9056-d0cdcedea5d4", + "23090155-e987-48b5-b9b8-2fa3b790fbef" + ], + "m_PropertyIds": [ + 1128211854, + 1491009813, + -312577270, + 661176540 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", @@ -23540,6 +25765,21 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b0fac75630234bb1b66465cbf8900bf5", + "m_Id": -725852216, + "m_DisplayName": "Rotation", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Rotation", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", @@ -24163,6 +26403,54 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "b6194ae2dd35484c98f05c59c55c603b", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", @@ -24628,6 +26916,21 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ba4d2d275bf94dfaa8b7d04199db2697", + "m_Id": 661176540, + "m_DisplayName": "Roughness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Roughness", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.KeywordNode", @@ -24669,6 +26972,33 @@ } } +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "ba933f4433144acb99e0e5830eedbecd", + "m_Guid": { + "m_GuidSerialized": "b6580c8b-8b47-48ce-ab08-4699f02cc669" + }, + "m_Name": "Sheen Roughness Map Rotation", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Sheen Roughness Map Rotation", + "m_DefaultReferenceName": "_Sheen_Roughness_Map_Rotation", + "m_OverrideReferenceName": "sheenRoughnessTextureRotation", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.LerpNode", @@ -25207,6 +27537,21 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "bd84a5cb83a540a8bc211f4c5e208a68", + "m_Id": 0, + "m_DisplayName": "Sheen Roughness Map Rotation", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", @@ -25430,6 +27775,41 @@ "m_BareResource": false } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "bf4bc0ecdc8f484db87384921a2e2c94", + "m_Group": { + "m_Id": "c6190d7ef66644e4b76c6b232c6877fa" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2519.999755859375, + "y": -727.9998779296875, + "width": 203.428466796875, + "height": 34.28564453125 + } + }, + "m_Slots": [ + { + "m_Id": "833949ebdceb46bba1fc44c1c15296ff" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "133666e5702e4ae38bad50224f5b3de0" + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", @@ -25706,10 +28086,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1337.0, - "y": 272.0, - "width": 207.0, - "height": 34.0 + "x": 1510.857177734375, + "y": 266.85711669921877, + "width": 224.5714111328125, + "height": 34.285675048828128 } }, "m_Slots": [ @@ -25735,8 +28115,8 @@ "m_ObjectId": "c1f6d9e695904fea9b3abdc1e683f2c8", "m_Title": "Base Color + Normal + Emission", "m_Position": { - "x": 806.0000610351563, - "y": -558.0 + "x": 937.1428833007813, + "y": -437.14288330078127 } } @@ -26469,6 +28849,46 @@ } } +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "c6121b1054504ce3a7a4efba71bf9873", + "m_Guid": { + "m_GuidSerialized": "46554511-21f6-4c39-a82a-99ecac3c3ea7" + }, + "m_Name": "Sheen Color", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Sheen Color", + "m_DefaultReferenceName": "_Sheen_Color", + "m_OverrideReferenceName": "sheenColorFactor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "c6190d7ef66644e4b76c6b232c6877fa", + "m_Title": "Sheen", + "m_Position": { + "x": 2447.428466796875, + "y": -1234.2857666015625 + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", @@ -26506,10 +28926,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1337.0, - "y": -88.99999237060547, - "width": 134.0, - "height": 34.000003814697269 + "x": 1510.857177734375, + "y": -93.71427154541016, + "width": 134.28564453125, + "height": 34.28568649291992 } }, "m_Slots": [ @@ -27373,6 +29793,33 @@ } } +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "cb6f985ac6a64e0c9a6b2ebc9c77a63c", + "m_Guid": { + "m_GuidSerialized": "05f7ed07-20c9-440d-a331-8700b11b420e" + }, + "m_Name": "Sheen Roughness Map UV", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Sheen Roughness Map UV", + "m_DefaultReferenceName": "_Sheen_Roughness_Map_UV", + "m_OverrideReferenceName": "sheenRoughnessTextureTexCoord", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.AddNode", @@ -27673,10 +30120,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1293.0, - "y": -373.0000305175781, - "width": 251.0001220703125, - "height": 165.99998474121095 + "x": 1466.857177734375, + "y": -377.71429443359377, + "width": 251.4285888671875, + "height": 168.57142639160157 } }, "m_Slots": [ @@ -28699,10 +31146,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1134.0, - "y": 119.99999237060547, - "width": 147.0, - "height": 34.00000762939453 + "x": 1308.0, + "y": 114.8571548461914, + "width": 147.4285888671875, + "height": 34.285682678222659 } }, "m_Slots": [ @@ -28770,6 +31217,21 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d7717c65ff1449be8caaec161d77e6d0", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + { "m_SGVersion": 1, "m_Type": "UnityEditor.ShaderGraph.CustomFunctionNode", @@ -28936,10 +31398,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1105.0, - "y": 552.0000610351563, - "width": 155.0001220703125, - "height": 34.0 + "x": 1278.857177734375, + "y": 546.8571166992188, + "width": 155.4285888671875, + "height": 34.2857666015625 } }, "m_Slots": [ @@ -29864,6 +32326,29 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "e00c053a626740e18ff81096500454db", + "m_Id": 1491009813, + "m_DisplayName": "WorldNormal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_WorldNormal", + "m_StageCapability": 3, + "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_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.SplitNode", @@ -30111,6 +32596,24 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "e28ea51da8424ec5a35be5f3ef64d4c6", + "m_Id": -532409878, + "m_DisplayName": "Tex", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Tex", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.PropertyNode", @@ -30290,6 +32793,54 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "e457ab101d7e4231aac933cdc498a99f", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -31167,6 +33718,41 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "ec0cf97e6f8a45b6bc27980002dcfbc3", + "m_Group": { + "m_Id": "c6190d7ef66644e4b76c6b232c6877fa" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2483.999755859375, + "y": -1074.8570556640625, + "width": 230.28564453125, + "height": 34.2857666015625 + } + }, + "m_Slots": [ + { + "m_Id": "0480ed265f294a5eb631f0f7670f543d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "5fab76e7df744539b4a2b338cc7dad44" + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", @@ -31329,30 +33915,6 @@ } } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", - "m_ObjectId": "eef506e16f0d4e7fabba8e363f9f7b5b", - "m_Id": 1, - "m_DisplayName": "On", - "m_SlotType": 0, - "m_Hidden": false, - "m_ShaderOutputName": "On", - "m_StageCapability": 3, - "m_Value": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - }, - "m_DefaultValue": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - } -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.PropertyNode", @@ -31730,6 +34292,36 @@ { "m_Id": "758a2d34271948b5bbec3c69ff668cd6" }, + { + "m_Id": "c6121b1054504ce3a7a4efba71bf9873" + }, + { + "m_Id": "6b364daf1f8b4ba3a33235d8c63e9109" + }, + { + "m_Id": "268e450c1cfd43939c6a4005b8eb7f15" + }, + { + "m_Id": "40e39f38f5f14be5b1f3e8a801e0d3c6" + }, + { + "m_Id": "5fab76e7df744539b4a2b338cc7dad44" + }, + { + "m_Id": "a01314083833431cab82400f6eb05186" + }, + { + "m_Id": "133666e5702e4ae38bad50224f5b3de0" + }, + { + "m_Id": "448558b95e074169a6ffe6fd7bfc2443" + }, + { + "m_Id": "ba933f4433144acb99e0e5830eedbecd" + }, + { + "m_Id": "cb6f985ac6a64e0c9a6b2ebc9c77a63c" + }, { "m_Id": "b3bf6e9825a34fe5ab67bdb85f17df32" }, @@ -31743,7 +34335,7 @@ "m_Id": "87f49076b11a43f2bc2c05c9154c93d4" }, { - "m_Id": "97df40c83f5a4671a59db5b30b4c6316" + "m_Id": "7423ab95bc1741d181ffdcb861c1f3fe" }, { "m_Id": "13bf38d3fb4046ed924a4a13ca312622" @@ -31933,6 +34525,21 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f270f29c7fb64be99d259314cacc14cf", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", @@ -32153,10 +34760,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1073.0, - "y": 223.0, + "x": 1246.857177734375, + "y": 218.28565979003907, "width": 208.0, - "height": 33.999969482421878 + "height": 34.28578186035156 } }, "m_Slots": [ @@ -32298,6 +34905,31 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "f61442cc1d5f4d73aad84b5048f95654", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", @@ -32676,10 +35308,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1088.0, - "y": -276.00006103515627, - "width": 176.0, - "height": 34.00001525878906 + "x": 1261.7142333984375, + "y": -281.1428527832031, + "width": 176.571533203125, + "height": 34.28569030761719 } }, "m_Slots": [ @@ -32699,6 +35331,21 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "fd4e91a1fdda447188e6cddaf66aed5c", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", @@ -32756,10 +35403,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 1060.0, - "y": -309.00006103515627, - "width": 204.0, - "height": 34.000030517578128 + "x": 1233.7142333984375, + "y": -313.71429443359377, + "width": 204.571533203125, + "height": 34.285736083984378 } }, "m_Slots": [ diff --git a/Runtime/Shaders/ShaderGraph/Sheen.shadersubgraph b/Runtime/Shaders/ShaderGraph/Sheen.shadersubgraph new file mode 100644 index 000000000..6efe26e21 --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/Sheen.shadersubgraph @@ -0,0 +1,827 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "319ff19ff5bf4466b9ed4e04805b75ec", + "m_Properties": [ + { + "m_Id": "5d8d0eb4052c4978a64b038cac64c33c" + }, + { + "m_Id": "45cb07d535ad4c64ba5fa24166f8df61" + }, + { + "m_Id": "5ac2b99e3222424ebcf3f4f7921a5396" + }, + { + "m_Id": "803456c297b24a5f8d91fe5ef8a882c0" + } + ], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "086c8343c8d74e60ae617c1e691d63d1" + } + ], + "m_Nodes": [ + { + "m_Id": "8797dfcad3a64a39a923c76ce82244ca" + }, + { + "m_Id": "b43030e957264b22a07a79a3561704a0" + }, + { + "m_Id": "d409afa9533541f09fe2ade300c0f2f0" + }, + { + "m_Id": "d92ba81702514d83a99cbc3493497194" + }, + { + "m_Id": "0ee1b89813f5469cbf23243745b5268e" + }, + { + "m_Id": "06e8b133cd904a56ad77e8675cd11c06" + }, + { + "m_Id": "32b09966a3204e57b92e4da913c05eab" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "06e8b133cd904a56ad77e8675cd11c06" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b43030e957264b22a07a79a3561704a0" + }, + "m_SlotId": 4 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0ee1b89813f5469cbf23243745b5268e" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b43030e957264b22a07a79a3561704a0" + }, + "m_SlotId": 5 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "32b09966a3204e57b92e4da913c05eab" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b43030e957264b22a07a79a3561704a0" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b43030e957264b22a07a79a3561704a0" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "8797dfcad3a64a39a923c76ce82244ca" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d409afa9533541f09fe2ade300c0f2f0" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b43030e957264b22a07a79a3561704a0" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d92ba81702514d83a99cbc3493497194" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b43030e957264b22a07a79a3561704a0" + }, + "m_SlotId": 3 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Sub Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "8797dfcad3a64a39a923c76ce82244ca" + }, + "m_ActiveTargets": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ViewDirectionNode", + "m_ObjectId": "06e8b133cd904a56ad77e8675cd11c06", + "m_Group": { + "m_Id": "" + }, + "m_Name": "View Direction", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3054.857177734375, + "y": -1908.5714111328125, + "width": 206.85693359375, + "height": 133.1429443359375 + } + }, + "m_Slots": [ + { + "m_Id": "328b85a3e4d94c899d5f971a0c44a61a" + } + ], + "synonyms": [ + "eye direction" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Space": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "086c8343c8d74e60ae617c1e691d63d1", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "5d8d0eb4052c4978a64b038cac64c33c" + }, + { + "m_Id": "45cb07d535ad4c64ba5fa24166f8df61" + }, + { + "m_Id": "5ac2b99e3222424ebcf3f4f7921a5396" + }, + { + "m_Id": "803456c297b24a5f8d91fe5ef8a882c0" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "0ee1b89813f5469cbf23243745b5268e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3032.0, + "y": -2111.428466796875, + "width": 144.5712890625, + "height": 34.28564453125 + } + }, + "m_Slots": [ + { + "m_Id": "e5054879423c44c69632f405487c3f0d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "45cb07d535ad4c64ba5fa24166f8df61" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "328b85a3e4d94c899d5f971a0c44a61a", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "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_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "32b09966a3204e57b92e4da913c05eab", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3002.285400390625, + "y": -2074.28564453125, + "width": 137.71435546875, + "height": 34.285888671875 + } + }, + "m_Slots": [ + { + "m_Id": "bedafa26d88b4ef9b75ba261656bfaf5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "5d8d0eb4052c4978a64b038cac64c33c" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3b1a1471158146048f611e56c237b899", + "m_Id": 0, + "m_DisplayName": "Roughness", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "40985f7599b041d5bca4748130f39ce7", + "m_Id": 1, + "m_DisplayName": "Out_Vector4", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "OutVector4", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector3ShaderProperty", + "m_ObjectId": "45cb07d535ad4c64ba5fa24166f8df61", + "m_Guid": { + "m_GuidSerialized": "31ebe321-3bb2-4641-93c1-24d2151851fd" + }, + "m_Name": "WorldNormal", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "WorldNormal", + "m_DefaultReferenceName": "_WorldNormal", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "5ac2b99e3222424ebcf3f4f7921a5396", + "m_Guid": { + "m_GuidSerialized": "b662fe4f-051b-4249-9056-d0cdcedea5d4" + }, + "m_Name": "Albedo", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Albedo", + "m_DefaultReferenceName": "_Albedo", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "5d8d0eb4052c4978a64b038cac64c33c", + "m_Guid": { + "m_GuidSerialized": "3da9545f-199d-412b-8a58-ad72c630104d" + }, + "m_Name": "SheenColor", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "SheenColor", + "m_DefaultReferenceName": "_SheenColor", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "803456c297b24a5f8d91fe5ef8a882c0", + "m_Guid": { + "m_GuidSerialized": "23090155-e987-48b5-b9b8-2fa3b790fbef" + }, + "m_Name": "Roughness", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Roughness", + "m_DefaultReferenceName": "_Roughness", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphOutputNode", + "m_ObjectId": "8797dfcad3a64a39a923c76ce82244ca", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Output", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3698.285400390625, + "y": -1947.9998779296875, + "width": 121.714599609375, + "height": 78.2855224609375 + } + }, + "m_Slots": [ + { + "m_Id": "40985f7599b041d5bca4748130f39ce7" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "IsFirstSlotValid": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "89f994775ab646729bf8767b895eeffd", + "m_Id": 2, + "m_DisplayName": "sheenColor", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "sheenColor", + "m_StageCapability": 3, + "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_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "943d5ecf18e44271a038a148f783128b", + "m_Id": 3, + "m_DisplayName": "albedo", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "albedo", + "m_StageCapability": 3, + "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_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "960bde6198b74ee8ade843c8f4bb201a", + "m_Id": 0, + "m_DisplayName": "Albedo", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "a7a05fb11df4413facac3b9d3a353f37", + "m_Id": 0, + "m_DisplayName": "finalColor", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "finalColor", + "m_StageCapability": 3, + "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_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.CustomFunctionNode", + "m_ObjectId": "b43030e957264b22a07a79a3561704a0", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Sheen (Custom Function)", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3290.28564453125, + "y": -2074.28564453125, + "width": 214.285400390625, + "height": 375.4285888671875 + } + }, + "m_Slots": [ + { + "m_Id": "fdd8fb358100447eba6f1b46bff9659e" + }, + { + "m_Id": "89f994775ab646729bf8767b895eeffd" + }, + { + "m_Id": "943d5ecf18e44271a038a148f783128b" + }, + { + "m_Id": "de42625e734642b8b015c7b7fe43b26b" + }, + { + "m_Id": "e5391be1663247b188cdee1731ec2cde" + }, + { + "m_Id": "a7a05fb11df4413facac3b9d3a353f37" + } + ], + "synonyms": [ + "code", + "HLSL" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SourceType": 0, + "m_FunctionName": "Sheen", + "m_FunctionSource": "885a3662fbaba7c47979790356264411", + "m_FunctionBody": "Enter function body here..." +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "bedafa26d88b4ef9b75ba261656bfaf5", + "m_Id": 0, + "m_DisplayName": "SheenColor", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "d409afa9533541f09fe2ade300c0f2f0", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3054.857177734375, + "y": -2168.0, + "width": 132.5712890625, + "height": 34.285888671875 + } + }, + "m_Slots": [ + { + "m_Id": "3b1a1471158146048f611e56c237b899" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "803456c297b24a5f8d91fe5ef8a882c0" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "d92ba81702514d83a99cbc3493497194", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3032.0, + "y": -2021.142822265625, + "width": 113.71435546875, + "height": 34.2857666015625 + } + }, + "m_Slots": [ + { + "m_Id": "960bde6198b74ee8ade843c8f4bb201a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "5ac2b99e3222424ebcf3f4f7921a5396" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "de42625e734642b8b015c7b7fe43b26b", + "m_Id": 4, + "m_DisplayName": "viewDir", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "viewDir", + "m_StageCapability": 3, + "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_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "e5054879423c44c69632f405487c3f0d", + "m_Id": 0, + "m_DisplayName": "WorldNormal", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "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_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "e5391be1663247b188cdee1731ec2cde", + "m_Id": 5, + "m_DisplayName": "normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "normal", + "m_StageCapability": 3, + "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_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "fdd8fb358100447eba6f1b46bff9659e", + "m_Id": 1, + "m_DisplayName": "roughness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "roughness", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + diff --git a/Runtime/Shaders/ShaderGraph/Sheen.shadersubgraph.meta b/Runtime/Shaders/ShaderGraph/Sheen.shadersubgraph.meta new file mode 100644 index 000000000..78fbb5cef --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/Sheen.shadersubgraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 85ba8322ac6cb6c4aab962530c987fc0 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 60072b568d64c40a485e0fc55012dc9f, type: 3} From d0d451f14f054e60bcd57310cf67a46722240dfb Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Tue, 3 Sep 2024 14:37:52 +0200 Subject: [PATCH 030/117] added sheen extension into codebase --- .../Extensions/KHR_materials_sheen.cs | 69 +++++++++++++++ .../Extensions/KHR_materials_sheen.cs.meta | 3 + .../GLTFSerialization/Schema/GLTFProperty.cs | 1 + .../MaterialPropertiesRemapper.cs | 21 +++++ .../Plugins/MaterialExtensionsExport.cs | 34 +++++++- .../Plugins/MaterialExtensionsImport.cs | 1 + .../SceneImporter/ImporterMaterials.cs | 83 +++++++++++++++++++ Runtime/Scripts/UniformMaps/PBRGraphMap.cs | 75 ++++++++++++++++- Runtime/Scripts/UniformMaps/UniformMap.cs | 28 +++++++ 9 files changed, 313 insertions(+), 2 deletions(-) create mode 100644 Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_sheen.cs create mode 100644 Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_sheen.cs.meta diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_sheen.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_sheen.cs new file mode 100644 index 000000000..4ccc0a473 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_sheen.cs @@ -0,0 +1,69 @@ +using System; +using GLTF.Extensions; +using Newtonsoft.Json.Linq; +using Color = GLTF.Math.Color; + +namespace GLTF.Schema +{ + // https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_sheen/README.md + [Serializable] + public class KHR_materials_sheen : IExtension + { + public Color sheenColorFactor = COLOR_DEFAULT; + public float sheenRoughnessFactor = 0f; + public TextureInfo sheenColorTexture; + public TextureInfo sheenRoughnessTexture; + + public static readonly Color COLOR_DEFAULT = Color.Black; + + public JProperty Serialize() + { + var jo = new JObject(); + JProperty jProperty = new JProperty(KHR_materials_sheen_Factory.EXTENSION_NAME, jo); + + if (sheenRoughnessFactor != 0) jo.Add(new JProperty(nameof(sheenRoughnessFactor), sheenRoughnessFactor)); + if (sheenColorFactor != COLOR_DEFAULT) jo.Add(new JProperty(nameof(sheenColorFactor), new JArray(sheenColorFactor.R, sheenColorFactor.G, sheenColorFactor.B))); + if (sheenColorTexture != null) + jo.WriteTexture(nameof(sheenColorTexture), sheenColorTexture); + + if (sheenRoughnessTexture != null) + jo.WriteTexture(nameof(sheenRoughnessTexture), sheenRoughnessTexture); + + return jProperty; + } + + public IExtension Clone(GLTFRoot root) + { + return new KHR_materials_sheen() + { + sheenRoughnessFactor = sheenRoughnessFactor, sheenColorTexture = sheenColorTexture, + sheenColorFactor = sheenColorFactor, sheenRoughnessTexture = sheenRoughnessTexture, + }; + } + } + + public class KHR_materials_sheen_Factory : ExtensionFactory + { + public const string EXTENSION_NAME = "KHR_materials_sheen"; + + public KHR_materials_sheen_Factory() + { + ExtensionName = EXTENSION_NAME; + } + + public override IExtension Deserialize(GLTFRoot root, JProperty extensionToken) + { + if (extensionToken != null) + { + var extension = new KHR_materials_sheen(); + extension.sheenRoughnessFactor = extensionToken.Value[nameof(KHR_materials_sheen.sheenRoughnessFactor)]?.Value() ?? 1; + extension.sheenColorFactor = extensionToken.Value[nameof(KHR_materials_sheen.sheenColorFactor)]?.DeserializeAsColor() ?? Color.White; + extension.sheenColorTexture = extensionToken.Value[nameof(KHR_materials_sheen.sheenColorTexture)]?.DeserializeAsTexture(root); + extension.sheenRoughnessTexture = extensionToken.Value[nameof(KHR_materials_sheen.sheenRoughnessTexture)]?.DeserializeAsTexture(root); + return extension; + } + + return null; + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_sheen.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_sheen.cs.meta new file mode 100644 index 000000000..4da3e84b6 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_sheen.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e5ccef236cd146e68b7652d8ce5c6cd0 +timeCreated: 1724930690 \ No newline at end of file diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs index 8421f28bb..30f38a806 100644 --- a/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs @@ -40,6 +40,7 @@ public static IReadOnlyList RegisteredExtensions { EXT_mesh_gpu_instancing_Factory.EXTENSION_NAME, new EXT_mesh_gpu_instancing_Factory() }, { KHR_animation_pointerExtensionFactory.EXTENSION_NAME, new KHR_animation_pointerExtensionFactory() }, { KHR_materials_dispersion_Factory.EXTENSION_NAME, new KHR_materials_dispersion_Factory() }, + { KHR_materials_sheen_Factory.EXTENSION_NAME, new KHR_materials_sheen_Factory()}, }; private static DefaultExtensionFactory _defaultExtensionFactory = new DefaultExtensionFactory(); diff --git a/Runtime/Scripts/Plugins/AnimationPointer/MaterialPropertiesRemapper.cs b/Runtime/Scripts/Plugins/AnimationPointer/MaterialPropertiesRemapper.cs index 37c75dcb1..0434036d1 100644 --- a/Runtime/Scripts/Plugins/AnimationPointer/MaterialPropertiesRemapper.cs +++ b/Runtime/Scripts/Plugins/AnimationPointer/MaterialPropertiesRemapper.cs @@ -498,6 +498,25 @@ public DefaultMaterialPropertiesRemapper() }; AddMap(clearcoatRoughnessFactor); + var sheenRoughnessFactor = + new MaterialPointerPropertyMap(MaterialPointerPropertyMap.PropertyTypeOption.Float) + { + PropertyNames = new[] { "sheenRoughness", "_sheenRoughness", "sheenRoughnessFactor", "_sheenRoughnessFactor" }, + GltfPropertyName = + $"extensions/{KHR_materials_sheen_Factory.EXTENSION_NAME}/{nameof(KHR_materials_sheen.sheenRoughnessFactor)}", + ExtensionName = KHR_materials_sheen_Factory.EXTENSION_NAME, + }; + AddMap(sheenRoughnessFactor); + var sheenColorFactor = + new MaterialPointerPropertyMap(MaterialPointerPropertyMap.PropertyTypeOption.Float) + { + PropertyNames = new[] { "sheenColor", "_sheenColor", "sheenColorFactor", "_sheenColorFactor" }, + GltfPropertyName = + $"extensions/{KHR_materials_sheen_Factory.EXTENSION_NAME}/{nameof(KHR_materials_sheen.sheenColorFactor)}", + ExtensionName = KHR_materials_sheen_Factory.EXTENSION_NAME, + }; + AddMap(sheenColorFactor); + AddTextureExtTransforms("pbrMetallicRoughness/baseColorTexture", new[] { "_MainTex", "_BaseMap", "_BaseColorTexture", "baseColorTexture" }); AddTextureExtTransforms("emissiveTexture", new[] { "_EmissionMap", "_EmissiveTexture", "emissiveTexture" } ); AddTextureExtTransforms("normalTexture", new[] { "_BumpMap", "_NormalTexture", "normalTexture" }); @@ -518,6 +537,8 @@ public DefaultMaterialPropertiesRemapper() AddTextureExtTransforms("extensions/"+nameof(KHR_materials_specular)+"/"+nameof(KHR_materials_specular.specularTexture), new[] { "specularTexture", "_specularTexture"}, nameof(KHR_materials_specular)); AddTextureExtTransforms("extensions/"+nameof(KHR_materials_specular)+"/"+nameof(KHR_materials_specular.specularColorTexture), new[] { "specularColorTexture", "_specularColorTexture"}, nameof(KHR_materials_specular)); + AddTextureExtTransforms("extensions/"+nameof(KHR_materials_sheen)+"/"+nameof(KHR_materials_sheen.sheenColorTexture), new[] {"sheenColorTexture", "_sheenColorTexture"}, nameof(KHR_materials_sheen)); + AddTextureExtTransforms("extensions/"+nameof(KHR_materials_sheen)+"/"+nameof(KHR_materials_sheen.sheenRoughnessTexture), new[] {"sheenRoughnessTexture", "_sheenRoughnessTexture"}, nameof(KHR_materials_sheen)); // TODO KHR_materials_sheen // case "_SheenColorFactor": diff --git a/Runtime/Scripts/Plugins/MaterialExtensionsExport.cs b/Runtime/Scripts/Plugins/MaterialExtensionsExport.cs index 0750a4cad..5899c3694 100644 --- a/Runtime/Scripts/Plugins/MaterialExtensionsExport.cs +++ b/Runtime/Scripts/Plugins/MaterialExtensionsExport.cs @@ -14,7 +14,8 @@ public class MaterialExtensionsExport: GLTFExportPlugin public bool KHR_materials_specular = true; public bool KHR_materials_clearcoat = true; public bool KHR_materials_emissive_strength = true; - + public bool KHR_materials_sheen = true; + public override GLTFExportPluginContext CreateInstance(ExportContext context) { return new MaterialExtensionsExportContext(this); @@ -30,6 +31,7 @@ public override GLTFExportPluginContext CreateInstance(ExportContext context) - KHR_materials_specular - KHR_materials_clearcoat - KHR_materials_emissive_strength +- KHR_materials_sheen "; } @@ -69,6 +71,10 @@ public MaterialExtensionsExportContext(MaterialExtensionsExport settings) private static readonly int clearcoatRoughnessTexture = Shader.PropertyToID("clearcoatRoughnessTexture"); private static readonly int clearcoatNormalTexture = Shader.PropertyToID("clearcoatNormalTexture"); + private static readonly int sheenColorFactor = Shader.PropertyToID("sheenColorFactor"); + private static readonly int sheenRoughnessFactor = Shader.PropertyToID("sheenRoughnessFactor"); + private static readonly int sheenColorTexture = Shader.PropertyToID("sheenColorTexture"); + private static readonly int sheenRoughnessTexture = Shader.PropertyToID("sheenRoughnessTexture"); public override void AfterMaterialExport(GLTFSceneExporter exporter, GLTFRoot gltfroot, Material material, GLTFMaterial materialnode) { @@ -81,6 +87,7 @@ public override void AfterMaterialExport(GLTFSceneExporter exporter, GLTFRoot gl var usesIridescence = material.IsKeywordEnabled("_IRIDESCENCE_ON"); var usesSpecular = material.IsKeywordEnabled("_SPECULAR_ON"); var usesClearcoat = material.IsKeywordEnabled("_CLEARCOAT_ON"); + var usesSheen = material.IsKeywordEnabled("_SHEEN_ON"); if (hasNonDefaultIor && settings.KHR_materials_ior) { @@ -240,6 +247,31 @@ public override void AfterMaterialExport(GLTFSceneExporter exporter, GLTFRoot gl if (material.HasProperty(clearcoatNormalTexture)) cc.clearcoatNormalTexture = exporter.ExportTextureInfoWithTextureTransform(material, material.GetTexture(clearcoatNormalTexture), nameof(clearcoatNormalTexture)); } + + if (usesSheen && settings.KHR_materials_sheen) + { + exporter.DeclareExtensionUsage(KHR_materials_sheen_Factory.EXTENSION_NAME, false); + + if (materialnode.Extensions == null) + materialnode.Extensions = new Dictionary(); + + var cc = new KHR_materials_sheen(); + + if (materialnode.Extensions.TryGetValue(KHR_materials_sheen_Factory.EXTENSION_NAME, out var vv0)) + cc = (KHR_materials_sheen) vv0; + else + materialnode.Extensions.Add(KHR_materials_sheen_Factory.EXTENSION_NAME, cc); + + if (material.HasProperty(sheenColorFactor)) + cc.sheenColorFactor = material.GetColor(sheenColorFactor).ToNumericsColorRaw(); + if (material.HasProperty(sheenColorTexture)) + cc.sheenColorTexture = exporter.ExportTextureInfoWithTextureTransform(material, material.GetTexture(sheenColorTexture), nameof(sheenColorTexture)); + + if (material.HasProperty(sheenRoughnessFactor)) + cc.sheenRoughnessFactor = material.GetFloat(sheenRoughnessFactor); + if (material.HasProperty(sheenRoughnessTexture)) + cc.sheenRoughnessTexture = exporter.ExportTextureInfoWithTextureTransform(material, material.GetTexture(sheenRoughnessTexture), nameof(sheenRoughnessTexture)); + } } } } diff --git a/Runtime/Scripts/Plugins/MaterialExtensionsImport.cs b/Runtime/Scripts/Plugins/MaterialExtensionsImport.cs index 28a46abdb..f5f9b0d5e 100644 --- a/Runtime/Scripts/Plugins/MaterialExtensionsImport.cs +++ b/Runtime/Scripts/Plugins/MaterialExtensionsImport.cs @@ -10,6 +10,7 @@ public class MaterialExtensionsImport: GLTFImportPlugin public bool KHR_materials_iridescence = true; public bool KHR_materials_specular = true; public bool KHR_materials_clearcoat = true; + public bool KHR_materials_sheen = true; [HideInInspector] // legacy public bool KHR_materials_pbrSpecularGlossiness = true; public bool KHR_materials_emissive_strength = true; diff --git a/Runtime/Scripts/SceneImporter/ImporterMaterials.cs b/Runtime/Scripts/SceneImporter/ImporterMaterials.cs index 829dea11b..f56d6aba7 100644 --- a/Runtime/Scripts/SceneImporter/ImporterMaterials.cs +++ b/Runtime/Scripts/SceneImporter/ImporterMaterials.cs @@ -192,6 +192,7 @@ void SetTransformKeyword() var KHR_materials_clearcoat = settings && settings.KHR_materials_clearcoat; var KHR_materials_pbrSpecularGlossiness = settings && settings.KHR_materials_pbrSpecularGlossiness; var KHR_materials_emissive_strength = settings && settings.KHR_materials_emissive_strength; + var KHR_materials_sheen = settings && settings.KHR_materials_sheen; // ReSharper restore InconsistentNaming var sgMapper = mapper as ISpecGlossUniformMap; @@ -298,6 +299,64 @@ void SetTransformKeyword() } } + var sheenMapper = mapper as ISheenMap; + if (sheenMapper != null && KHR_materials_sheen) + { + var sheen = GetSheen(def); + if (sheen != null) + { + sheenMapper.SheenColorFactor = sheen.sheenColorFactor.ToUnityColorRaw(); + sheenMapper.SheenRoughnessFactor = sheen.sheenRoughnessFactor; + MatHelper.SetKeyword(mapper.Material, "_SHEEN", true); + + if (sheen.sheenColorTexture != null) + { + var td = await FromTextureInfo(sheen.sheenColorTexture, false); + sheenMapper.SheenColorTexture = td.Texture; + sheenMapper.SheenColorTextureTexCoord = td.TexCoord; + var ext = GetTextureTransform(sheen.sheenColorTexture); + if (ext != null) + { + CalculateYOffsetAndScale(sheen.sheenColorTexture.Index, ext, out var scale, out var offset); + sheenMapper.SheenColorTextureOffset = offset; + sheenMapper.SheenColorTextureScale = scale; + sheenMapper.SheenColorTextureRotation = td.Rotation; + if (td.TexCoordExtra != null) sheenMapper.SheenColorTextureTexCoord = td.TexCoordExtra.Value; + SetTransformKeyword(); + } + else if (IsTextureFlipped(sheen.sheenColorTexture.Index.Value)) + { + sheenMapper.SheenColorTextureScale = new Vector2(1f,-1f); + sheenMapper.SheenColorTextureOffset = new Vector2(0f, 1f); + SetTransformKeyword(); + } + } + + if (sheen.sheenRoughnessTexture != null) + { + var td = await FromTextureInfo(sheen.sheenRoughnessTexture, false); + sheenMapper.SheenRoughnessTexture = td.Texture; + sheenMapper.SheenColorTextureTexCoord = td.TexCoord; + var ext = GetTextureTransform(sheen.sheenRoughnessTexture); + if (ext != null) + { + CalculateYOffsetAndScale(sheen.sheenRoughnessTexture.Index, ext, out var scale, out var offset); + sheenMapper.SheenRoughnessTextureOffset = offset; + sheenMapper.SheenRoughnessTextureScale = scale; + sheenMapper.SheenRoughnessTextureRotation = td.Rotation; + if (td.TexCoordExtra != null) sheenMapper.SheenRoughnessTextureTexCoord = td.TexCoordExtra.Value; + SetTransformKeyword(); + } + else if (IsTextureFlipped(sheen.sheenRoughnessTexture.Index.Value)) + { + sheenMapper.SheenRoughnessTextureScale = new Vector2(1f,-1f); + sheenMapper.SheenRoughnessTextureOffset = new Vector2(0f, 1f); + SetTransformKeyword(); + } + } + } + } + var transmissionMapper = mapper as ITransmissionMap; if (transmissionMapper != null && KHR_materials_transmission) { @@ -851,6 +910,20 @@ protected virtual Task ConstructMaterialImageBuffers(GLTFMaterial def) } } + if (def.Extensions != null && def.Extensions.ContainsKey(KHR_materials_sheen_Factory.EXTENSION_NAME)) + { + var sheenDef = (KHR_materials_sheen)def.Extensions[KHR_materials_sheen_Factory.EXTENSION_NAME]; + if (sheenDef.sheenColorTexture != null) + { + var textureId = sheenDef.sheenColorTexture.Index; + tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); + } + if (sheenDef.sheenRoughnessTexture != null) + { + var textureId = sheenDef.sheenRoughnessTexture.Index; + tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); + } + } if (def.Extensions != null && def.Extensions.ContainsKey(KHR_materials_clearcoat_Factory.EXTENSION_NAME)) { @@ -908,6 +981,16 @@ protected virtual KHR_materials_transmission GetTransmission(GLTFMaterial def) return null; } + protected virtual KHR_materials_sheen GetSheen(GLTFMaterial def) + { + if (_gltfRoot.ExtensionsUsed != null && _gltfRoot.ExtensionsUsed.Contains(KHR_materials_sheen_Factory.EXTENSION_NAME) && + def.Extensions != null && def.Extensions.TryGetValue(KHR_materials_sheen_Factory.EXTENSION_NAME, out var extension)) + { + return (KHR_materials_sheen) extension; + } + return null; + } + protected virtual KHR_materials_dispersion GetDispersion(GLTFMaterial def) { if (_gltfRoot.ExtensionsUsed != null && _gltfRoot.ExtensionsUsed.Contains(KHR_materials_dispersion_Factory.EXTENSION_NAME) && diff --git a/Runtime/Scripts/UniformMaps/PBRGraphMap.cs b/Runtime/Scripts/UniformMaps/PBRGraphMap.cs index b1076ac67..d1feece24 100644 --- a/Runtime/Scripts/UniformMaps/PBRGraphMap.cs +++ b/Runtime/Scripts/UniformMaps/PBRGraphMap.cs @@ -2,7 +2,7 @@ namespace UnityGLTF { - public class PBRGraphMap : BaseGraphMap, IMetalRoughUniformMap, IVolumeMap, ITransmissionMap, IIORMap, IIridescenceMap, ISpecularMap, IClearcoatMap, IDispersionMap + public class PBRGraphMap : BaseGraphMap, IMetalRoughUniformMap, IVolumeMap, ITransmissionMap, IIORMap, IIridescenceMap, ISpecularMap, IClearcoatMap, IDispersionMap, ISheenMap { private const string PBRGraphGuid = "478ce3626be7a5f4ea58d6b13f05a2e4"; @@ -526,6 +526,79 @@ public float Dispersion get => _material.GetFloat("dispersion"); set => _material.SetFloat("dispersion", value); } + + public float SheenRoughnessFactor + { + get => _material.GetFloat("sheenRoughnessFactor"); + set => _material.SetFloat("sheenRoughnessFactor", value); + } + + public Color SheenColorFactor + { + get => _material.GetColor("sheenColorFactor"); + set => _material.SetColor("sheenColorFactor", value); + } + + public Texture SheenColorTexture + { + get => _material.GetTexture("sheenColorTexture"); + set => _material.SetTexture("sheenColorTexture", value); + } + + public double SheenColorTextureRotation + { + get => _material.GetFloat("sheenColorTextureRotation"); + set => _material.SetFloat("sheenColorTextureRotation", (float) value); + } + + public Vector2 SheenColorTextureOffset + { + get => _material.GetTextureOffset("sheenColorTexture"); + set => _material.SetTextureOffset("sheenColorTexture", value); + } + + public Vector2 SheenColorTextureScale + { + get => _material.GetTextureScale("sheenColorTexture"); + set => _material.SetTextureScale("sheenColorTexture", value); + } + + public int SheenColorTextureTexCoord + { + get => (int)_material.GetFloat("sheenColorTextureTexCoord"); + set => _material.SetFloat("sheenColorTextureTexCoord", (float) value); + } + + public Texture SheenRoughnessTexture + { + get => _material.GetTexture("sheenRoughnessTexture"); + set => _material.SetTexture("sheenRoughnessTexture", value); + } + + public double SheenRoughnessTextureRotation + { + get => _material.GetFloat("sheenRoughnessTextureRotation"); + set => _material.SetFloat("sheenRoughnessTextureRotation", (float) value); + } + + public Vector2 SheenRoughnessTextureOffset + { + get => _material.GetTextureOffset("sheenRoughnessTexture"); + set => _material.SetTextureOffset("sheenRoughnessTexture", value); + } + + public Vector2 SheenRoughnessTextureScale + { + get => _material.GetTextureScale("sheenRoughnessTexture"); + set => _material.SetTextureScale("sheenRoughnessTexture", value); + } + + public int SheenRoughnessTextureTexCoord + { + get => (int)_material.GetFloat("sheenRoughnessTextureTexCoord"); + set => _material.SetFloat("sheenRoughnessTextureTexCoord", (float) value); + } + /* Clearcoat Normal Texture currently not supported public Texture ClearcoatNormalTexture diff --git a/Runtime/Scripts/UniformMaps/UniformMap.cs b/Runtime/Scripts/UniformMaps/UniformMap.cs index 1e68f2f79..de99a421a 100644 --- a/Runtime/Scripts/UniformMaps/UniformMap.cs +++ b/Runtime/Scripts/UniformMaps/UniformMap.cs @@ -84,6 +84,34 @@ public interface ITransmissionMap : IMetalRoughUniformMap Vector2 TransmissionTextureScale { get; set; } int TransmissionTextureTexCoord { get; set; } } + + public interface ISheenMap : IMetalRoughUniformMap + { + float SheenRoughnessFactor { get; set; } + + Color SheenColorFactor { get; set; } + + Texture SheenColorTexture { get; set; } + + double SheenColorTextureRotation { get; set; } + + Vector2 SheenColorTextureOffset { get; set; } + + Vector2 SheenColorTextureScale { get; set; } + + int SheenColorTextureTexCoord { get; set; } + + Texture SheenRoughnessTexture { get; set; } + + double SheenRoughnessTextureRotation { get; set; } + + Vector2 SheenRoughnessTextureOffset { get; set; } + + Vector2 SheenRoughnessTextureScale { get; set; } + + int SheenRoughnessTextureTexCoord { get; set; } + + } public interface IDispersionMap : ITransmissionMap { From 406cfb913036142225779223cdf7e2c57380321f Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Wed, 4 Sep 2024 11:55:26 +0200 Subject: [PATCH 031/117] added pbrGraph GUI property visibility for Sheen and Dispersion --- .../ShaderGraph/InternalShaderGraph/PBRGraphGUI.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Editor/Scripts/ShaderGraph/InternalShaderGraph/PBRGraphGUI.cs b/Editor/Scripts/ShaderGraph/InternalShaderGraph/PBRGraphGUI.cs index 11f81acb1..04c7c3cb5 100644 --- a/Editor/Scripts/ShaderGraph/InternalShaderGraph/PBRGraphGUI.cs +++ b/Editor/Scripts/ShaderGraph/InternalShaderGraph/PBRGraphGUI.cs @@ -489,10 +489,14 @@ private void DrawProperties(Material targetMaterial, MaterialProperty[] properti propertyList.RemoveAll(x => x.name.EndsWith("_ST", StringComparison.Ordinal)); } #endif - if (!targetMaterial.IsKeywordEnabled("_VOLUME_TRANSMISSION_ON")) + if (!targetMaterial.IsKeywordEnabled("_VOLUME_TRANSMISSION_ON") && !targetMaterial.IsKeywordEnabled("_VOLUME_TRANSMISSION_ANDDISPERSION")) { propertyList.RemoveAll(x => x.name.StartsWith("transmission", StringComparison.Ordinal)); } + if (!targetMaterial.IsKeywordEnabled("_VOLUME_TRANSMISSION_ANDDISPERSION")) + { + propertyList.RemoveAll(x => x.name.StartsWith("dispersion", StringComparison.Ordinal)); + } if (!targetMaterial.HasProperty("_VOLUME_ON") || !(targetMaterial.GetFloat("_VOLUME_ON") > 0.5f)) { propertyList.RemoveAll(x => x.name.StartsWith("thickness", StringComparison.Ordinal) || x.name.StartsWith("attenuation", StringComparison.Ordinal)); @@ -509,6 +513,11 @@ private void DrawProperties(Material targetMaterial, MaterialProperty[] properti { propertyList.RemoveAll(x => x.name.StartsWith("clearcoat", StringComparison.Ordinal)); } + if (!targetMaterial.IsKeywordEnabled("_SHEEN_ON")) + { + propertyList.RemoveAll(x => x.name.StartsWith("sheen", StringComparison.Ordinal)); + } + if (HasPropertyButNoTex(targetMaterial, "occlusionTexture")) { propertyList.RemoveAll(x => x.name == "occlusionStrength" || (x.name.StartsWith("occlusionTexture", StringComparison.Ordinal) && x.name != "occlusionTexture")); From 09391cddd3ebf2dce1d6205fa9bf943567ca9e10 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 5 Sep 2024 13:43:57 +0200 Subject: [PATCH 032/117] changed Sheen to node based to support MaterialX --- Runtime/Shaders/ShaderGraph/PBRHelpers.cginc | 2 +- .../Shaders/ShaderGraph/Sheen.shadersubgraph | 5679 +++++++++++++++-- 2 files changed, 5310 insertions(+), 371 deletions(-) diff --git a/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc b/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc index 93fc71815..67734a445 100644 --- a/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc +++ b/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc @@ -133,7 +133,7 @@ void Sheen_float(float roughness, float3 sheenColor, float3 albedo, float3 viewD { // Not physical auccurate! but looks good enough and a perfomance friendly approximation - #if UNITY_VERSION >= 202120 + #if UNITY_VERSION >= 202210 Light mainLight = GetMainLight(); float3 lightDirection = mainLight.direction; #else diff --git a/Runtime/Shaders/ShaderGraph/Sheen.shadersubgraph b/Runtime/Shaders/ShaderGraph/Sheen.shadersubgraph index 6efe26e21..c27d7dabe 100644 --- a/Runtime/Shaders/ShaderGraph/Sheen.shadersubgraph +++ b/Runtime/Shaders/ShaderGraph/Sheen.shadersubgraph @@ -16,7 +16,11 @@ "m_Id": "803456c297b24a5f8d91fe5ef8a882c0" } ], - "m_Keywords": [], + "m_Keywords": [ + { + "m_Id": "70f07928851f4f5892ca7656d80dbc0c" + } + ], "m_Dropdowns": [], "m_CategoryData": [ { @@ -44,11 +48,133 @@ }, { "m_Id": "32b09966a3204e57b92e4da913c05eab" + }, + { + "m_Id": "512c35ac9903473ebdb8f77d2d063e57" + }, + { + "m_Id": "d5df272250864ce0b9c6cd88116ef48a" + }, + { + "m_Id": "2ab2a2cbfec345e5b172b5bac12807fd" + }, + { + "m_Id": "ec9fc4e196ff4899a0c6803f41c031dd" + }, + { + "m_Id": "ca662bfab8f24545ab0652b61897ab3f" + }, + { + "m_Id": "cebc236c5cb84b0cb07da7c1dfb134eb" + }, + { + "m_Id": "b29e8bb0ed67407294cf512a177b4301" + }, + { + "m_Id": "858065a016a44d4ca014720711ed3f94" + }, + { + "m_Id": "d895e39dd4d44d9488df733ba08f0f94" + }, + { + "m_Id": "d7ab2d0a7e194f0f8afdc7d8ccfd02a5" + }, + { + "m_Id": "cd9958207e4b4d4e883a84dbb1f8078e" + }, + { + "m_Id": "0737edfe3d6c4e03afb4320c56765735" + }, + { + "m_Id": "2dfe28acf24a42b28e18f3b2fca48edf" + }, + { + "m_Id": "9101b8245532487b9765df677d8ceea0" + }, + { + "m_Id": "bfcca4b72f8b40789404c5746fe414be" + }, + { + "m_Id": "f0eb92a9ec414ee9b0801353d27857ac" + }, + { + "m_Id": "e1a682ccd1ef49c39ef75477792c5742" + }, + { + "m_Id": "d77896473ebb4e1083d071745800e60b" + }, + { + "m_Id": "6a0843a87b914a9580c5a82834615df9" + }, + { + "m_Id": "6598ab7f38134556af88b427d463b0b8" + }, + { + "m_Id": "63c960272c644ad3b0c3337bc5dfc4db" + }, + { + "m_Id": "f350e1e6be3443749580c495b76e737d" + }, + { + "m_Id": "eac9f31f74fe4a709fe75e92ab331384" + }, + { + "m_Id": "3ccc5ef414404b9597908a9c89bd2af0" + }, + { + "m_Id": "b00c3d4d287542248774390a5821d9ee" + }, + { + "m_Id": "15a85976955440debeb950877b5c48f6" + }, + { + "m_Id": "df86fbf9940c4c4ab7217b9df073bb42" + }, + { + "m_Id": "766f966a35854fa09a9c9c3c9b167661" + }, + { + "m_Id": "03ca583c92924950b99ed5ea5fc4e9ef" + }, + { + "m_Id": "a81c5ef28fe643aa8eb2fb0726995cc8" + }, + { + "m_Id": "d73cc6ded4a64249995a1a95b996b48a" + }, + { + "m_Id": "ba5c1d30677e4c9d9285e7e972948434" + }, + { + "m_Id": "d5e2b6f598864e13a690aa6f14e2574b" + }, + { + "m_Id": "6160e4c12dfb4f55a6f3625eff910f61" + }, + { + "m_Id": "c27f00b6cc7a4f8780e48fff5a26a920" + }, + { + "m_Id": "8b54bd1ee4f2451e85a0101657b8f3f0" } ], "m_GroupDatas": [], "m_StickyNoteDatas": [], "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "03ca583c92924950b99ed5ea5fc4e9ef" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a81c5ef28fe643aa8eb2fb0726995cc8" + }, + "m_SlotId": 0 + } + }, { "m_OutputSlot": { "m_Node": { @@ -63,6 +189,20 @@ "m_SlotId": 4 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0737edfe3d6c4e03afb4320c56765735" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "eac9f31f74fe4a709fe75e92ab331384" + }, + "m_SlotId": 0 + } + }, { "m_OutputSlot": { "m_Node": { @@ -80,27 +220,27 @@ { "m_OutputSlot": { "m_Node": { - "m_Id": "32b09966a3204e57b92e4da913c05eab" + "m_Id": "15a85976955440debeb950877b5c48f6" }, - "m_SlotId": 0 + "m_SlotId": 2 }, "m_InputSlot": { "m_Node": { - "m_Id": "b43030e957264b22a07a79a3561704a0" + "m_Id": "766f966a35854fa09a9c9c3c9b167661" }, - "m_SlotId": 2 + "m_SlotId": 0 } }, { "m_OutputSlot": { "m_Node": { - "m_Id": "b43030e957264b22a07a79a3561704a0" + "m_Id": "2ab2a2cbfec345e5b172b5bac12807fd" }, "m_SlotId": 0 }, "m_InputSlot": { "m_Node": { - "m_Id": "8797dfcad3a64a39a923c76ce82244ca" + "m_Id": "d5df272250864ce0b9c6cd88116ef48a" }, "m_SlotId": 1 } @@ -108,139 +248,4777 @@ { "m_OutputSlot": { "m_Node": { - "m_Id": "d409afa9533541f09fe2ade300c0f2f0" + "m_Id": "2ab2a2cbfec345e5b172b5bac12807fd" }, "m_SlotId": 0 }, "m_InputSlot": { "m_Node": { - "m_Id": "b43030e957264b22a07a79a3561704a0" + "m_Id": "d895e39dd4d44d9488df733ba08f0f94" }, - "m_SlotId": 1 + "m_SlotId": 0 } }, { "m_OutputSlot": { "m_Node": { - "m_Id": "d92ba81702514d83a99cbc3493497194" + "m_Id": "2ab2a2cbfec345e5b172b5bac12807fd" }, "m_SlotId": 0 }, "m_InputSlot": { "m_Node": { - "m_Id": "b43030e957264b22a07a79a3561704a0" + "m_Id": "ec9fc4e196ff4899a0c6803f41c031dd" }, - "m_SlotId": 3 + "m_SlotId": 0 } - } - ], - "m_VertexContext": { - "m_Position": { - "x": 0.0, - "y": 0.0 }, - "m_Blocks": [] - }, - "m_FragmentContext": { - "m_Position": { - "x": 0.0, - "y": 0.0 + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2dfe28acf24a42b28e18f3b2fca48edf" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9101b8245532487b9765df677d8ceea0" + }, + "m_SlotId": 0 + } }, - "m_Blocks": [] - }, - "m_PreviewData": { - "serializedMesh": { - "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", - "m_Guid": "" + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "32b09966a3204e57b92e4da913c05eab" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b43030e957264b22a07a79a3561704a0" + }, + "m_SlotId": 2 + } }, - "preventRotation": false - }, - "m_Path": "Sub Graphs", - "m_GraphPrecision": 1, - "m_PreviewMode": 2, - "m_OutputNode": { - "m_Id": "8797dfcad3a64a39a923c76ce82244ca" - }, - "m_ActiveTargets": [] -} - -{ - "m_SGVersion": 1, - "m_Type": "UnityEditor.ShaderGraph.ViewDirectionNode", - "m_ObjectId": "06e8b133cd904a56ad77e8675cd11c06", - "m_Group": { - "m_Id": "" - }, - "m_Name": "View Direction", - "m_DrawState": { - "m_Expanded": true, - "m_Position": { - "serializedVersion": "2", - "x": 3054.857177734375, - "y": -1908.5714111328125, - "width": 206.85693359375, - "height": 133.1429443359375 - } - }, - "m_Slots": [ { - "m_Id": "328b85a3e4d94c899d5f971a0c44a61a" - } - ], - "synonyms": [ - "eye direction" - ], - "m_Precision": 0, - "m_PreviewExpanded": false, - "m_PreviewMode": 2, - "m_CustomColors": { - "m_SerializableColors": [] - }, - "m_Space": 2 -} - -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.CategoryData", - "m_ObjectId": "086c8343c8d74e60ae617c1e691d63d1", - "m_Name": "", - "m_ChildObjectList": [ + "m_OutputSlot": { + "m_Node": { + "m_Id": "3ccc5ef414404b9597908a9c89bd2af0" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b00c3d4d287542248774390a5821d9ee" + }, + "m_SlotId": 1 + } + }, { - "m_Id": "5d8d0eb4052c4978a64b038cac64c33c" + "m_OutputSlot": { + "m_Node": { + "m_Id": "512c35ac9903473ebdb8f77d2d063e57" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cd9958207e4b4d4e883a84dbb1f8078e" + }, + "m_SlotId": 1 + } }, { - "m_Id": "45cb07d535ad4c64ba5fa24166f8df61" + "m_OutputSlot": { + "m_Node": { + "m_Id": "6160e4c12dfb4f55a6f3625eff910f61" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "8797dfcad3a64a39a923c76ce82244ca" + }, + "m_SlotId": 1 + } }, { - "m_Id": "5ac2b99e3222424ebcf3f4f7921a5396" + "m_OutputSlot": { + "m_Node": { + "m_Id": "63c960272c644ad3b0c3337bc5dfc4db" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6a0843a87b914a9580c5a82834615df9" + }, + "m_SlotId": 1 + } }, { - "m_Id": "803456c297b24a5f8d91fe5ef8a882c0" - } - ] + "m_OutputSlot": { + "m_Node": { + "m_Id": "6598ab7f38134556af88b427d463b0b8" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "63c960272c644ad3b0c3337bc5dfc4db" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "6a0843a87b914a9580c5a82834615df9" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e1a682ccd1ef49c39ef75477792c5742" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "766f966a35854fa09a9c9c3c9b167661" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a81c5ef28fe643aa8eb2fb0726995cc8" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "858065a016a44d4ca014720711ed3f94" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d7ab2d0a7e194f0f8afdc7d8ccfd02a5" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "8b54bd1ee4f2451e85a0101657b8f3f0" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6160e4c12dfb4f55a6f3625eff910f61" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9101b8245532487b9765df677d8ceea0" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "bfcca4b72f8b40789404c5746fe414be" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9101b8245532487b9765df677d8ceea0" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "bfcca4b72f8b40789404c5746fe414be" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9101b8245532487b9765df677d8ceea0" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f0eb92a9ec414ee9b0801353d27857ac" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a81c5ef28fe643aa8eb2fb0726995cc8" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d73cc6ded4a64249995a1a95b996b48a" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b00c3d4d287542248774390a5821d9ee" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "15a85976955440debeb950877b5c48f6" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b00c3d4d287542248774390a5821d9ee" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ba5c1d30677e4c9d9285e7e972948434" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b29e8bb0ed67407294cf512a177b4301" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "858065a016a44d4ca014720711ed3f94" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ba5c1d30677e4c9d9285e7e972948434" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d73cc6ded4a64249995a1a95b996b48a" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "bfcca4b72f8b40789404c5746fe414be" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f0eb92a9ec414ee9b0801353d27857ac" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c27f00b6cc7a4f8780e48fff5a26a920" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "8b54bd1ee4f2451e85a0101657b8f3f0" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ca662bfab8f24545ab0652b61897ab3f" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cebc236c5cb84b0cb07da7c1dfb134eb" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "cd9958207e4b4d4e883a84dbb1f8078e" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "0737edfe3d6c4e03afb4320c56765735" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "cebc236c5cb84b0cb07da7c1dfb134eb" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6598ab7f38134556af88b427d463b0b8" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "cebc236c5cb84b0cb07da7c1dfb134eb" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "eac9f31f74fe4a709fe75e92ab331384" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d409afa9533541f09fe2ade300c0f2f0" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b43030e957264b22a07a79a3561704a0" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d5df272250864ce0b9c6cd88116ef48a" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "512c35ac9903473ebdb8f77d2d063e57" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d5e2b6f598864e13a690aa6f14e2574b" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ba5c1d30677e4c9d9285e7e972948434" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d5e2b6f598864e13a690aa6f14e2574b" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "c27f00b6cc7a4f8780e48fff5a26a920" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d73cc6ded4a64249995a1a95b996b48a" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6160e4c12dfb4f55a6f3625eff910f61" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d77896473ebb4e1083d071745800e60b" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e1a682ccd1ef49c39ef75477792c5742" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d7ab2d0a7e194f0f8afdc7d8ccfd02a5" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d77896473ebb4e1083d071745800e60b" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d895e39dd4d44d9488df733ba08f0f94" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "858065a016a44d4ca014720711ed3f94" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d92ba81702514d83a99cbc3493497194" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b43030e957264b22a07a79a3561704a0" + }, + "m_SlotId": 3 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "df86fbf9940c4c4ab7217b9df073bb42" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "15a85976955440debeb950877b5c48f6" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "df86fbf9940c4c4ab7217b9df073bb42" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "8b54bd1ee4f2451e85a0101657b8f3f0" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e1a682ccd1ef49c39ef75477792c5742" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3ccc5ef414404b9597908a9c89bd2af0" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e1a682ccd1ef49c39ef75477792c5742" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b00c3d4d287542248774390a5821d9ee" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "eac9f31f74fe4a709fe75e92ab331384" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3ccc5ef414404b9597908a9c89bd2af0" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ec9fc4e196ff4899a0c6803f41c031dd" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "512c35ac9903473ebdb8f77d2d063e57" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ec9fc4e196ff4899a0c6803f41c031dd" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cd9958207e4b4d4e883a84dbb1f8078e" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f0eb92a9ec414ee9b0801353d27857ac" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "c27f00b6cc7a4f8780e48fff5a26a920" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f0eb92a9ec414ee9b0801353d27857ac" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f350e1e6be3443749580c495b76e737d" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f350e1e6be3443749580c495b76e737d" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "63c960272c644ad3b0c3337bc5dfc4db" + }, + "m_SlotId": 1 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Sub Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "8797dfcad3a64a39a923c76ce82244ca" + }, + "m_ActiveTargets": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "010805074eb046009113dce50144a7cc", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "01c43205d2b74f6b8f3c898bed977403", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "03ca583c92924950b99ed5ea5fc4e9ef", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 6863.4287109375, + "y": -1941.1429443359375, + "width": 114.28564453125, + "height": 34.2857666015625 + } + }, + "m_Slots": [ + { + "m_Id": "1ebf999daa60487f8ca57b5e072230bb" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "5ac2b99e3222424ebcf3f4f7921a5396" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "059a41f4b9f2472caf3f549bc12cf652", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ViewDirectionNode", + "m_ObjectId": "06e8b133cd904a56ad77e8675cd11c06", + "m_Group": { + "m_Id": "" + }, + "m_Name": "View Direction", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3054.857177734375, + "y": -1908.5714111328125, + "width": 206.85693359375, + "height": 133.1429443359375 + } + }, + "m_Slots": [ + { + "m_Id": "328b85a3e4d94c899d5f971a0c44a61a" + } + ], + "synonyms": [ + "eye direction" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Space": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalizeNode", + "m_ObjectId": "0737edfe3d6c4e03afb4320c56765735", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Normalize", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 4820.5712890625, + "y": -2772.5712890625, + "width": 133.14306640625, + "height": 95.428466796875 + } + }, + "m_Slots": [ + { + "m_Id": "0959c799241c4848aef5064ef7860896" + }, + { + "m_Id": "54cb537a500c49cc9ec256493f37af05" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "086c8343c8d74e60ae617c1e691d63d1", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "5d8d0eb4052c4978a64b038cac64c33c" + }, + { + "m_Id": "45cb07d535ad4c64ba5fa24166f8df61" + }, + { + "m_Id": "5ac2b99e3222424ebcf3f4f7921a5396" + }, + { + "m_Id": "803456c297b24a5f8d91fe5ef8a882c0" + }, + { + "m_Id": "70f07928851f4f5892ca7656d80dbc0c" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "0959c799241c4848aef5064ef7860896", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "0ee1b89813f5469cbf23243745b5268e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3032.0, + "y": -2111.428466796875, + "width": 144.5712890625, + "height": 34.28564453125 + } + }, + "m_Slots": [ + { + "m_Id": "e5054879423c44c69632f405487c3f0d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "45cb07d535ad4c64ba5fa24166f8df61" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "12ed4e285925403597d96dba4691d108", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "15a85976955440debeb950877b5c48f6", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 6456.25146484375, + "y": -1732.891357421875, + "width": 209.142578125, + "height": 303.4285888671875 + } + }, + "m_Slots": [ + { + "m_Id": "a25c4eb8b4ac4d67af620e6ac75e2b7c" + }, + { + "m_Id": "ae26bb5966a14582bc9fb7f75e6307bc" + }, + { + "m_Id": "6378f3ac988f4230813d4ab2abbd73e8" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "174c3ca1af314c069688aa9a55e82015", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "1ebf999daa60487f8ca57b5e072230bb", + "m_Id": 0, + "m_DisplayName": "Albedo", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "26d9059c6e4c454297de1fc3b89515cd", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 5.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ViewDirectionNode", + "m_ObjectId": "2ab2a2cbfec345e5b172b5bac12807fd", + "m_Group": { + "m_Id": "" + }, + "m_Name": "View Direction", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3574.857177734375, + "y": -2748.0, + "width": 206.857177734375, + "height": 133.142822265625 + } + }, + "m_Slots": [ + { + "m_Id": "e3cbe94d18c344d98ce11a4f0fb19433" + } + ], + "synonyms": [ + "eye direction" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Space": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "2bfa7bca25f94ddfaff8c73f5a731af1", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "2dfe28acf24a42b28e18f3b2fca48edf", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 4156.0, + "y": -1844.0001220703125, + "width": 138.28564453125, + "height": 34.28564453125 + } + }, + "m_Slots": [ + { + "m_Id": "ca83c893763e4fab9d90ec5d1a331598" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "5d8d0eb4052c4978a64b038cac64c33c" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "3260735c3f8942959e200dd3e51f8783", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "328b85a3e4d94c899d5f971a0c44a61a", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "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_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "32b09966a3204e57b92e4da913c05eab", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3002.285400390625, + "y": -2074.28564453125, + "width": 137.71435546875, + "height": 34.285888671875 + } + }, + "m_Slots": [ + { + "m_Id": "bedafa26d88b4ef9b75ba261656bfaf5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "5d8d0eb4052c4978a64b038cac64c33c" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "35219ebf37b24819a74425f3cdf2a1fc", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "37b1459594794851b6b53123cc2fd0c2", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "3a10a8ebc96f4c52a3f89f4a58ebb6be", + "m_Id": 1, + "m_DisplayName": "viewDir", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "viewDir", + "m_StageCapability": 3, + "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_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3b1a1471158146048f611e56c237b899", + "m_Id": 0, + "m_DisplayName": "Roughness", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3bcb98c971934cdabcbce251b73b74c9", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "3ccc5ef414404b9597908a9c89bd2af0", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 6114.28564453125, + "y": -2067.428466796875, + "width": 131.4287109375, + "height": 119.428466796875 + } + }, + "m_Slots": [ + { + "m_Id": "4cbce3067870437191d7c3d950be902a" + }, + { + "m_Id": "74177b05839b46e2b9aa4d6a86a33622" + }, + { + "m_Id": "f2fc6230a5af419ea8b51eb2738a9182" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "3eac4ac272e44670802c826e3b2d7eaa", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "3ed2abb40b8548fb9907c0392c3ca154", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "3f6676305e704bde81fcd76df0d34305", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "40985f7599b041d5bca4748130f39ce7", + "m_Id": 1, + "m_DisplayName": "Out_Vector4", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "OutVector4", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector3ShaderProperty", + "m_ObjectId": "45cb07d535ad4c64ba5fa24166f8df61", + "m_Guid": { + "m_GuidSerialized": "31ebe321-3bb2-4641-93c1-24d2151851fd" + }, + "m_Name": "WorldNormal", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "WorldNormal", + "m_DefaultReferenceName": "_WorldNormal", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "45d6f1d5d9cb4909b5d29db966119d41", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "4b92370846974b06b1d544c689307893", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "4cbce3067870437191d7c3d950be902a", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "4f6b7627f58546228242584ef8bdd1f5", + "m_Id": 0, + "m_DisplayName": "lightDirection", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "lightDirection", + "m_StageCapability": 3, + "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_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.KeywordNode", + "m_ObjectId": "512c35ac9903473ebdb8f77d2d063e57", + "m_Group": { + "m_Id": "" + }, + "m_Name": "MaterialX", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 4224.5712890625, + "y": -2614.857177734375, + "width": 140.0, + "height": 119.4287109375 + } + }, + "m_Slots": [ + { + "m_Id": "587024da5b4f4e97be8e55e0bde12012" + }, + { + "m_Id": "96022b8f490b4fb9a61d8685887de7fd" + }, + { + "m_Id": "7f39ffc95ae04094ae9f2fb142e086b2" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Keyword": { + "m_Id": "70f07928851f4f5892ca7656d80dbc0c" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "5393b55b21404b40bdb7782a661d2bfc", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "54cb537a500c49cc9ec256493f37af05", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "587024da5b4f4e97be8e55e0bde12012", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "5ac2b99e3222424ebcf3f4f7921a5396", + "m_Guid": { + "m_GuidSerialized": "b662fe4f-051b-4249-9056-d0cdcedea5d4" + }, + "m_Name": "Albedo", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Albedo", + "m_DefaultReferenceName": "_Albedo", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "5d8d0eb4052c4978a64b038cac64c33c", + "m_Guid": { + "m_GuidSerialized": "3da9545f-199d-412b-8a58-ad72c630104d" + }, + "m_Name": "SheenColor", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "SheenColor", + "m_DefaultReferenceName": "_SheenColor", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "612edb2b15ac4b489da88ce832d5605a", + "m_Id": 0, + "m_DisplayName": "Roughness", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "6160e4c12dfb4f55a6f3625eff910f61", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 7734.2861328125, + "y": -1906.857177734375, + "width": 131.4287109375, + "height": 119.4285888671875 + } + }, + "m_Slots": [ + { + "m_Id": "98e361b61b374bdb9a490b9a4cee3eb9" + }, + { + "m_Id": "91d435b8adbe4257b49483c83210a915" + }, + { + "m_Id": "45d6f1d5d9cb4909b5d29db966119d41" + } + ], + "synonyms": [ + "addition", + "sum", + "plus" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "6378f3ac988f4230813d4ab2abbd73e8", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "63c960272c644ad3b0c3337bc5dfc4db", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 5427.4287109375, + "y": -1817.7142333984375, + "width": 126.85693359375, + "height": 119.4285888671875 + } + }, + "m_Slots": [ + { + "m_Id": "9a75e3056b55470ca109e3f471b45825" + }, + { + "m_Id": "3f6676305e704bde81fcd76df0d34305" + }, + { + "m_Id": "b8344dd348d64bd789eff0fcf209db42" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "64c8cb5d2f8441b1886e4e02fbe2047b", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "64faa9fa37744ee8beb6fd06959dd641", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 0.15700000524520875, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "6598ab7f38134556af88b427d463b0b8", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 5267.42919921875, + "y": -1900.0001220703125, + "width": 126.8564453125, + "height": 119.428466796875 + } + }, + "m_Slots": [ + { + "m_Id": "b4c8e20665b74b1ea390382746ad9571" + }, + { + "m_Id": "93e24361fc4b48f395b362cd94ca7d46" + }, + { + "m_Id": "d8b781d659644773bdc0ef753ee3a926" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "660c00730e4e4353bc5a2bd4b5363d6e", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "69b63610c42643a89fd9b23951878b13", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "6a0843a87b914a9580c5a82834615df9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 5618.28564453125, + "y": -1869.7144775390625, + "width": 126.85791015625, + "height": 119.4287109375 + } + }, + "m_Slots": [ + { + "m_Id": "26d9059c6e4c454297de1fc3b89515cd" + }, + { + "m_Id": "3ed2abb40b8548fb9907c0392c3ca154" + }, + { + "m_Id": "a469a474bfd24a94ad66ce165fb604d7" + } + ], + "synonyms": [ + "addition", + "sum", + "plus" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "7074c4130a1342b7abf43f440583045a", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ShaderKeyword", + "m_ObjectId": "70f07928851f4f5892ca7656d80dbc0c", + "m_Guid": { + "m_GuidSerialized": "1d5b1a6a-75f0-450b-9a60-e35df192360a" + }, + "m_Name": "MaterialX", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "MaterialX", + "m_DefaultReferenceName": "MATERIALX", + "m_OverrideReferenceName": "MATERIAL_X", + "m_GeneratePropertyBlock": false, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_KeywordType": 0, + "m_KeywordDefinition": 2, + "m_KeywordScope": 1, + "m_KeywordStages": 63, + "m_Entries": [], + "m_Value": 0, + "m_IsEditable": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "70f7d7f075784566a4e71648aee3967a", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "71e2206c4df7465a862111bffb4092bf", + "m_Id": 0, + "m_DisplayName": "SheenColor", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "74177b05839b46e2b9aa4d6a86a33622", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "7661020cbe65497da12f394e6aa71c1c", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.OneMinusNode", + "m_ObjectId": "766f966a35854fa09a9c9c3c9b167661", + "m_Group": { + "m_Id": "" + }, + "m_Name": "One Minus", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 6758.857421875, + "y": -1798.2860107421875, + "width": 133.14306640625, + "height": 95.4287109375 + } + }, + "m_Slots": [ + { + "m_Id": "70f7d7f075784566a4e71648aee3967a" + }, + { + "m_Id": "e1852d1837774ab1ac230d9a056f7980" + } + ], + "synonyms": [ + "complement", + "invert", + "opposite" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7b20f1ab60c342aca9b7122edf38690f", + "m_Id": 2, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7f286b09ef9c451cadc7cfd608ac7800", + "m_Id": 4, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "7f38324f19fb4b08830d29fe930b1d65", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 2.0, + "y": 2.0, + "z": 2.0, + "w": 2.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "7f39486bcf8945139ca7f61d1d2ca0bf", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "7f39ffc95ae04094ae9f2fb142e086b2", + "m_Id": 2, + "m_DisplayName": "Off", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Off", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "803456c297b24a5f8d91fe5ef8a882c0", + "m_Guid": { + "m_GuidSerialized": "23090155-e987-48b5-b9b8-2fa3b790fbef" + }, + "m_Name": "Roughness", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Roughness", + "m_DefaultReferenceName": "_Roughness", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "82bccf8e0ff44d35a1a67ff30d2868ce", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "84d4af26875149f49e7734b0e9f4f498", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DotProductNode", + "m_ObjectId": "858065a016a44d4ca014720711ed3f94", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Dot Product", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 5122.85693359375, + "y": -2195.428466796875, + "width": 129.14306640625, + "height": 119.428466796875 + } + }, + "m_Slots": [ + { + "m_Id": "e614cd05fe1a4948adeb3c48d22b0962" + }, + { + "m_Id": "010805074eb046009113dce50144a7cc" + }, + { + "m_Id": "d0485d1e3a714b99b6af3c9d8b576904" + } + ], + "synonyms": [ + "scalar product" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphOutputNode", + "m_ObjectId": "8797dfcad3a64a39a923c76ce82244ca", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Output", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 8001.14306640625, + "y": -1925.142822265625, + "width": 121.7138671875, + "height": 78.2857666015625 + } + }, + "m_Slots": [ + { + "m_Id": "40985f7599b041d5bca4748130f39ce7" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "IsFirstSlotValid": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "87af01c6028c4162bd6744da45b2a434", + "m_Id": 1, + "m_DisplayName": "", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "89f994775ab646729bf8767b895eeffd", + "m_Id": 2, + "m_DisplayName": "sheenColor", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "sheenColor", + "m_StageCapability": 3, + "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_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "8aa5019da2f4459b8078d78166f2606c", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "8b54bd1ee4f2451e85a0101657b8f3f0", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 7550.53759765625, + "y": -2044.31982421875, + "width": 209.142578125, + "height": 303.428466796875 + } + }, + "m_Slots": [ + { + "m_Id": "8dcc12a0142d43e683f8e45f85740806" + }, + { + "m_Id": "12ed4e285925403597d96dba4691d108" + }, + { + "m_Id": "660c00730e4e4353bc5a2bd4b5363d6e" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "8d9db67fc9e44f46996b367ee59d33f8", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "8dcc12a0142d43e683f8e45f85740806", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "9101b8245532487b9765df677d8ceea0", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 4321.14306640625, + "y": -1874.857177734375, + "width": 120.5712890625, + "height": 150.28564453125 + } + }, + "m_Slots": [ + { + "m_Id": "8aa5019da2f4459b8078d78166f2606c" + }, + { + "m_Id": "aabf6ad82462478daf4b147628006f56" + }, + { + "m_Id": "7b20f1ab60c342aca9b7122edf38690f" + }, + { + "m_Id": "d7d251a325ed40be9337e14af1235111" + }, + { + "m_Id": "7f286b09ef9c451cadc7cfd608ac7800" + } + ], + "synonyms": [ + "separate" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "91741159fa314eef906ea0226588ad60", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "91d435b8adbe4257b49483c83210a915", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "93e24361fc4b48f395b362cd94ca7d46", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 4.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "943d5ecf18e44271a038a148f783128b", + "m_Id": 3, + "m_DisplayName": "albedo", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "albedo", + "m_StageCapability": 3, + "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_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "96022b8f490b4fb9a61d8685887de7fd", + "m_Id": 1, + "m_DisplayName": "On", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "On", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "960bde6198b74ee8ade843c8f4bb201a", + "m_Id": 0, + "m_DisplayName": "Albedo", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "96424779af544a08b4ed7e618ceab30a", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "97186548540041edbfe2559486d756ed", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "988d2ac7158f43ee884475f83e12521e", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "98e361b61b374bdb9a490b9a4cee3eb9", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "9a75e3056b55470ca109e3f471b45825", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "9d64d3ca031547498867d83983bd5f08", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "9f22aadb9def4c9484683051abae4221", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "9f2c74da12ad4818926d00e9d346a91f", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "a25c4eb8b4ac4d67af620e6ac75e2b7c", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "a469a474bfd24a94ad66ce165fb604d7", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "a53aa8e818b94e5a9eec06f37fa5bd18", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "a7a05fb11df4413facac3b9d3a353f37", + "m_Id": 0, + "m_DisplayName": "finalColor", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "finalColor", + "m_StageCapability": 3, + "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_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "a81abc3670884dabb1433b5146ec48d5", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 2.0, + "y": 2.0, + "z": 2.0, + "w": 2.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "a81c5ef28fe643aa8eb2fb0726995cc8", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 7004.01708984375, + "y": -1878.83984375, + "width": 209.142578125, + "height": 303.4285888671875 + } + }, + "m_Slots": [ + { + "m_Id": "3eac4ac272e44670802c826e3b2d7eaa" + }, + { + "m_Id": "b402a18613024632b18728a21ece6e55" + }, + { + "m_Id": "f5b734a705a74c6ead418474387d438b" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "a98a24e13a154ed3bdf342c7223b1b3b", + "m_Id": 0, + "m_DisplayName": "", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "aa2b7257df8b4e938faf3f7e5e23b8b9", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "aabf6ad82462478daf4b147628006f56", + "m_Id": 1, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "ae26bb5966a14582bc9fb7f75e6307bc", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b0058bd3ed2e4241aa7888d7e66f1ff2", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "b00c3d4d287542248774390a5821d9ee", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 6324.0, + "y": -2144.0, + "width": 209.14306640625, + "height": 303.4285888671875 + } + }, + "m_Slots": [ + { + "m_Id": "d9f486c4a0a2487990608468840d7370" + }, + { + "m_Id": "64c8cb5d2f8441b1886e4e02fbe2047b" + }, + { + "m_Id": "35219ebf37b24819a74425f3cdf2a1fc" + } + ], + "synonyms": [ + "addition", + "sum", + "plus" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "b29e8bb0ed67407294cf512a177b4301", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 4956.5712890625, + "y": -2178.28564453125, + "width": 145.14306640625, + "height": 34.28564453125 + } + }, + "m_Slots": [ + { + "m_Id": "e0040d346800421da591ed52deca53f0" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "45cb07d535ad4c64ba5fa24166f8df61" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "b402a18613024632b18728a21ece6e55", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.CustomFunctionNode", + "m_ObjectId": "b43030e957264b22a07a79a3561704a0", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Sheen (Custom Function)", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3290.28564453125, + "y": -2074.28564453125, + "width": 214.285400390625, + "height": 375.4285888671875 + } + }, + "m_Slots": [ + { + "m_Id": "fdd8fb358100447eba6f1b46bff9659e" + }, + { + "m_Id": "89f994775ab646729bf8767b895eeffd" + }, + { + "m_Id": "943d5ecf18e44271a038a148f783128b" + }, + { + "m_Id": "de42625e734642b8b015c7b7fe43b26b" + }, + { + "m_Id": "e5391be1663247b188cdee1731ec2cde" + }, + { + "m_Id": "a7a05fb11df4413facac3b9d3a353f37" + } + ], + "synonyms": [ + "code", + "HLSL" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SourceType": 0, + "m_FunctionName": "Sheen", + "m_FunctionSource": "885a3662fbaba7c47979790356264411", + "m_FunctionBody": "Enter function body here..." +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "b4c8e20665b74b1ea390382746ad9571", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "b8344dd348d64bd789eff0fcf209db42", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "ba5c1d30677e4c9d9285e7e972948434", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 7116.0, + "y": -2144.0, + "width": 131.4287109375, + "height": 119.4285888671875 + } + }, + "m_Slots": [ + { + "m_Id": "96424779af544a08b4ed7e618ceab30a" + }, + { + "m_Id": "37b1459594794851b6b53123cc2fd0c2" + }, + { + "m_Id": "aa2b7257df8b4e938faf3f7e5e23b8b9" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "be6de66d33844e30a9274d826a58927a", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "bedafa26d88b4ef9b75ba261656bfaf5", + "m_Id": 0, + "m_DisplayName": "SheenColor", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MaximumNode", + "m_ObjectId": "bfcca4b72f8b40789404c5746fe414be", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Maximum", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 4510.28564453125, + "y": -1886.8572998046875, + "width": 126.85791015625, + "height": 119.4285888671875 + } + }, + "m_Slots": [ + { + "m_Id": "b0058bd3ed2e4241aa7888d7e66f1ff2" + }, + { + "m_Id": "9f2c74da12ad4818926d00e9d346a91f" + }, + { + "m_Id": "d16d8a61293b4307a3324bf2c8d2ff7c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "c1fffa72775e4250af0352b9e5a14f35", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "c27f00b6cc7a4f8780e48fff5a26a920", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 7400.5712890625, + "y": -2126.857177734375, + "width": 131.4287109375, + "height": 119.4287109375 + } + }, + "m_Slots": [ + { + "m_Id": "4b92370846974b06b1d544c689307893" + }, + { + "m_Id": "174c3ca1af314c069688aa9a55e82015" + }, + { + "m_Id": "97186548540041edbfe2559486d756ed" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "ca662bfab8f24545ab0652b61897ab3f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 4869.71435546875, + "y": -2002.285888671875, + "width": 133.142578125, + "height": 34.2857666015625 + } + }, + "m_Slots": [ + { + "m_Id": "612edb2b15ac4b489da88ce832d5605a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "803456c297b24a5f8d91fe5ef8a882c0" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "ca83c893763e4fab9d90ec5d1a331598", + "m_Id": 0, + "m_DisplayName": "SheenColor", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "cd9958207e4b4d4e883a84dbb1f8078e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 4659.4375, + "y": -2772.5625, + "width": 209.142578125, + "height": 303.428466796875 + } + }, + "m_Slots": [ + { + "m_Id": "8d9db67fc9e44f46996b367ee59d33f8" + }, + { + "m_Id": "01c43205d2b74f6b8f3c898bed977403" + }, + { + "m_Id": "69b63610c42643a89fd9b23951878b13" + } + ], + "synonyms": [ + "addition", + "sum", + "plus" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.OneMinusNode", + "m_ObjectId": "cebc236c5cb84b0cb07da7c1dfb134eb", + "m_Group": { + "m_Id": "" + }, + "m_Name": "One Minus", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 5037.14306640625, + "y": -2043.4287109375, + "width": 129.142578125, + "height": 95.4285888671875 + } + }, + "m_Slots": [ + { + "m_Id": "5393b55b21404b40bdb7782a661d2bfc" + }, + { + "m_Id": "059a41f4b9f2472caf3f549bc12cf652" + } + ], + "synonyms": [ + "complement", + "invert", + "opposite" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d0485d1e3a714b99b6af3c9d8b576904", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d16d8a61293b4307a3324bf2c8d2ff7c", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "d409afa9533541f09fe2ade300c0f2f0", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3054.857177734375, + "y": -2168.0, + "width": 132.5712890625, + "height": 34.285888671875 + } + }, + "m_Slots": [ + { + "m_Id": "3b1a1471158146048f611e56c237b899" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "803456c297b24a5f8d91fe5ef8a882c0" + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.CustomFunctionNode", + "m_ObjectId": "d5df272250864ce0b9c6cd88116ef48a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "GetMainLightDirection (Custom Function)", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 3848.571533203125, + "y": -2590.857177734375, + "width": 283.999755859375, + "height": 95.4287109375 + } + }, + "m_Slots": [ + { + "m_Id": "3a10a8ebc96f4c52a3f89f4a58ebb6be" + }, + { + "m_Id": "4f6b7627f58546228242584ef8bdd1f5" + } + ], + "synonyms": [ + "code", + "HLSL" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SourceType": 1, + "m_FunctionName": "GetMainLightDirection", + "m_FunctionSource": "", + "m_FunctionBody": "#if UNITY_VERSION >= 202210\t\r\nLight mainLight = GetMainLight();\r\nlightDirection = mainLight.direction;\r\n#else\r\nlightDirection = viewDir;\r\n#endif" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "d5e2b6f598864e13a690aa6f14e2574b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 6977.71435546875, + "y": -2041.71435546875, + "width": 138.28564453125, + "height": 34.2857666015625 + } + }, + "m_Slots": [ + { + "m_Id": "71e2206c4df7465a862111bffb4092bf" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "5d8d0eb4052c4978a64b038cac64c33c" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d654247fea174a3d83e3401b07c26653", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "d73cc6ded4a64249995a1a95b996b48a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 7269.14306640625, + "y": -1878.857177734375, + "width": 131.42822265625, + "height": 119.4285888671875 + } + }, + "m_Slots": [ + { + "m_Id": "2bfa7bca25f94ddfaff8c73f5a731af1" + }, + { + "m_Id": "91741159fa314eef906ea0226588ad60" + }, + { + "m_Id": "9f22aadb9def4c9484683051abae4221" + } + ], + "synonyms": [ + "addition", + "sum", + "plus" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.OneMinusNode", + "m_ObjectId": "d77896473ebb4e1083d071745800e60b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "One Minus", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 5519.4287109375, + "y": -2252.0, + "width": 129.142578125, + "height": 95.4287109375 + } + }, + "m_Slots": [ + { + "m_Id": "84d4af26875149f49e7734b0e9f4f498" + }, + { + "m_Id": "988d2ac7158f43ee884475f83e12521e" + } + ], + "synonyms": [ + "complement", + "invert", + "opposite" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MaximumNode", + "m_ObjectId": "d7ab2d0a7e194f0f8afdc7d8ccfd02a5", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Maximum", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 5332.0, + "y": -2204.0, + "width": 126.85693359375, + "height": 119.4287109375 + } + }, + "m_Slots": [ + { + "m_Id": "d8ca0d5f06f74eab8ab2519fa056eaa6" + }, + { + "m_Id": "7661020cbe65497da12f394e6aa71c1c" + }, + { + "m_Id": "9d64d3ca031547498867d83983bd5f08" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d7d251a325ed40be9337e14af1235111", + "m_Id": 3, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] } { "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.PropertyNode", - "m_ObjectId": "0ee1b89813f5469cbf23243745b5268e", + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d87e2048603040f4b12b711b744ab3cd", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RedirectNodeData", + "m_ObjectId": "d895e39dd4d44d9488df733ba08f0f94", "m_Group": { "m_Id": "" }, - "m_Name": "Property", + "m_Name": "Redirect Node", "m_DrawState": { "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 3032.0, - "y": -2111.428466796875, - "width": 144.5712890625, - "height": 34.28564453125 + "x": 3820.571533203125, + "y": -2168.0, + "width": 56.0, + "height": 24.0 } }, "m_Slots": [ { - "m_Id": "e5054879423c44c69632f405487c3f0d" + "m_Id": "a98a24e13a154ed3bdf342c7223b1b3b" + }, + { + "m_Id": "e3df60391deb427e993e37b9fd8e53a9" } ], "synonyms": [], @@ -249,39 +5027,109 @@ "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] - }, - "m_Property": { - "m_Id": "45cb07d535ad4c64ba5fa24166f8df61" } } { "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", - "m_ObjectId": "328b85a3e4d94c899d5f971a0c44a61a", - "m_Id": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "d8b781d659644773bdc0ef753ee3a926", + "m_Id": 2, "m_DisplayName": "Out", "m_SlotType": 1, "m_Hidden": false, "m_ShaderOutputName": "Out", "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d8ca0d5f06f74eab8ab2519fa056eaa6", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, "m_Value": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "w": 0.0 }, "m_DefaultValue": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d8e9f0bd573443c3add8555bac07130f", + "m_Id": 0, + "m_DisplayName": "", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 }, - "m_Labels": [] + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } } { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.PropertyNode", - "m_ObjectId": "32b09966a3204e57b92e4da913c05eab", + "m_ObjectId": "d92ba81702514d83a99cbc3493497194", "m_Group": { "m_Id": "" }, @@ -290,15 +5138,15 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 3002.285400390625, - "y": -2074.28564453125, - "width": 137.71435546875, - "height": 34.285888671875 + "x": 3032.0, + "y": -2021.142822265625, + "width": 113.71435546875, + "height": 34.2857666015625 } }, "m_Slots": [ { - "m_Id": "bedafa26d88b4ef9b75ba261656bfaf5" + "m_Id": "960bde6198b74ee8ade843c8f4bb201a" } ], "synonyms": [], @@ -309,34 +5157,19 @@ "m_SerializableColors": [] }, "m_Property": { - "m_Id": "5d8d0eb4052c4978a64b038cac64c33c" + "m_Id": "5ac2b99e3222424ebcf3f4f7921a5396" } } { "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", - "m_ObjectId": "3b1a1471158146048f611e56c237b899", + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d9f486c4a0a2487990608468840d7370", "m_Id": 0, - "m_DisplayName": "Roughness", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "Out", - "m_StageCapability": 3, - "m_Value": 0.0, - "m_DefaultValue": 0.0, - "m_Labels": [] -} - -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", - "m_ObjectId": "40985f7599b041d5bca4748130f39ce7", - "m_Id": 1, - "m_DisplayName": "Out_Vector4", + "m_DisplayName": "A", "m_SlotType": 0, "m_Hidden": false, - "m_ShaderOutputName": "OutVector4", + "m_ShaderOutputName": "A", "m_StageCapability": 3, "m_Value": { "x": 0.0, @@ -349,164 +5182,168 @@ "y": 0.0, "z": 0.0, "w": 0.0 - }, - "m_Labels": [] + } } { - "m_SGVersion": 1, - "m_Type": "UnityEditor.ShaderGraph.Internal.Vector3ShaderProperty", - "m_ObjectId": "45cb07d535ad4c64ba5fa24166f8df61", - "m_Guid": { - "m_GuidSerialized": "31ebe321-3bb2-4641-93c1-24d2151851fd" - }, - "m_Name": "WorldNormal", - "m_DefaultRefNameVersion": 1, - "m_RefNameGeneratedByDisplayName": "WorldNormal", - "m_DefaultReferenceName": "_WorldNormal", - "m_OverrideReferenceName": "", - "m_GeneratePropertyBlock": true, - "m_UseCustomSlotLabel": false, - "m_CustomSlotLabel": "", - "m_Precision": 0, - "overrideHLSLDeclaration": false, - "hlslDeclarationOverride": 0, + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "de42625e734642b8b015c7b7fe43b26b", + "m_Id": 4, + "m_DisplayName": "viewDir", + "m_SlotType": 0, "m_Hidden": false, + "m_ShaderOutputName": "viewDir", + "m_StageCapability": 3, "m_Value": { "x": 0.0, "y": 0.0, - "z": 0.0, - "w": 0.0 - } + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] } { - "m_SGVersion": 3, - "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", - "m_ObjectId": "5ac2b99e3222424ebcf3f4f7921a5396", - "m_Guid": { - "m_GuidSerialized": "b662fe4f-051b-4249-9056-d0cdcedea5d4" + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1Node", + "m_ObjectId": "df86fbf9940c4c4ab7217b9df073bb42", + "m_Group": { + "m_Id": "" }, - "m_Name": "Albedo", - "m_DefaultRefNameVersion": 1, - "m_RefNameGeneratedByDisplayName": "Albedo", - "m_DefaultReferenceName": "_Albedo", - "m_OverrideReferenceName": "", - "m_GeneratePropertyBlock": true, - "m_UseCustomSlotLabel": false, - "m_CustomSlotLabel": "", + "m_Name": "Float", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 6246.02685546875, + "y": -1715.686767578125, + "width": 126.857421875, + "height": 78.28564453125 + } + }, + "m_Slots": [ + { + "m_Id": "64faa9fa37744ee8beb6fd06959dd641" + }, + { + "m_Id": "3bcb98c971934cdabcbce251b73b74c9" + } + ], + "synonyms": [ + "Vector 1", + "1", + "v1", + "vec1", + "scalar" + ], "m_Precision": 0, - "overrideHLSLDeclaration": false, - "hlslDeclarationOverride": 0, - "m_Hidden": false, - "m_Value": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.0 + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] }, - "isMainColor": false, - "m_ColorMode": 0 + "m_Value": 0.0 } { - "m_SGVersion": 3, - "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", - "m_ObjectId": "5d8d0eb4052c4978a64b038cac64c33c", - "m_Guid": { - "m_GuidSerialized": "3da9545f-199d-412b-8a58-ad72c630104d" - }, - "m_Name": "SheenColor", - "m_DefaultRefNameVersion": 1, - "m_RefNameGeneratedByDisplayName": "SheenColor", - "m_DefaultReferenceName": "_SheenColor", - "m_OverrideReferenceName": "", - "m_GeneratePropertyBlock": true, - "m_UseCustomSlotLabel": false, - "m_CustomSlotLabel": "", - "m_Precision": 0, - "overrideHLSLDeclaration": false, - "hlslDeclarationOverride": 0, + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "e0040d346800421da591ed52deca53f0", + "m_Id": 0, + "m_DisplayName": "WorldNormal", + "m_SlotType": 1, "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, "m_Value": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.0 + "x": 0.0, + "y": 0.0, + "z": 0.0 }, - "isMainColor": false, - "m_ColorMode": 0 + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] } { - "m_SGVersion": 1, - "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", - "m_ObjectId": "803456c297b24a5f8d91fe5ef8a882c0", - "m_Guid": { - "m_GuidSerialized": "23090155-e987-48b5-b9b8-2fa3b790fbef" - }, - "m_Name": "Roughness", - "m_DefaultRefNameVersion": 1, - "m_RefNameGeneratedByDisplayName": "Roughness", - "m_DefaultReferenceName": "_Roughness", - "m_OverrideReferenceName": "", - "m_GeneratePropertyBlock": true, - "m_UseCustomSlotLabel": false, - "m_CustomSlotLabel": "", - "m_Precision": 0, - "overrideHLSLDeclaration": false, - "hlslDeclarationOverride": 0, + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "e1852d1837774ab1ac230d9a056f7980", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, "m_Hidden": false, - "m_Value": 0.0, - "m_FloatType": 0, - "m_RangeValues": { + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { "x": 0.0, - "y": 1.0 + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 } } { "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.SubGraphOutputNode", - "m_ObjectId": "8797dfcad3a64a39a923c76ce82244ca", + "m_Type": "UnityEditor.ShaderGraph.PowerNode", + "m_ObjectId": "e1a682ccd1ef49c39ef75477792c5742", "m_Group": { "m_Id": "" }, - "m_Name": "Output", + "m_Name": "Power", "m_DrawState": { "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 3698.285400390625, - "y": -1947.9998779296875, - "width": 121.714599609375, - "height": 78.2855224609375 + "x": 5780.0, + "y": -2263.428466796875, + "width": 126.85693359375, + "height": 119.428466796875 } }, "m_Slots": [ { - "m_Id": "40985f7599b041d5bca4748130f39ce7" + "m_Id": "d654247fea174a3d83e3401b07c26653" + }, + { + "m_Id": "a81abc3670884dabb1433b5146ec48d5" + }, + { + "m_Id": "7f39486bcf8945139ca7f61d1d2ca0bf" } ], "synonyms": [], "m_Precision": 0, - "m_PreviewExpanded": true, + "m_PreviewExpanded": false, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] - }, - "IsFirstSlotValid": true + } } { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", - "m_ObjectId": "89f994775ab646729bf8767b895eeffd", - "m_Id": 2, - "m_DisplayName": "sheenColor", - "m_SlotType": 0, + "m_ObjectId": "e3cbe94d18c344d98ce11a4f0fb19433", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, "m_Hidden": false, - "m_ShaderOutputName": "sheenColor", + "m_ShaderOutputName": "Out", "m_StageCapability": 3, "m_Value": { "x": 0.0, @@ -523,33 +5360,34 @@ { "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", - "m_ObjectId": "943d5ecf18e44271a038a148f783128b", - "m_Id": 3, - "m_DisplayName": "albedo", - "m_SlotType": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "e3df60391deb427e993e37b9fd8e53a9", + "m_Id": 1, + "m_DisplayName": "", + "m_SlotType": 1, "m_Hidden": false, - "m_ShaderOutputName": "albedo", + "m_ShaderOutputName": "", "m_StageCapability": 3, "m_Value": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "w": 0.0 }, "m_DefaultValue": { "x": 0.0, "y": 0.0, - "z": 0.0 - }, - "m_Labels": [] + "z": 0.0, + "w": 0.0 + } } { "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", - "m_ObjectId": "960bde6198b74ee8ade843c8f4bb201a", + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "e5054879423c44c69632f405487c3f0d", "m_Id": 0, - "m_DisplayName": "Albedo", + "m_DisplayName": "WorldNormal", "m_SlotType": 1, "m_Hidden": false, "m_ShaderOutputName": "Out", @@ -557,14 +5395,12 @@ "m_Value": { "x": 0.0, "y": 0.0, - "z": 0.0, - "w": 0.0 + "z": 0.0 }, "m_DefaultValue": { "x": 0.0, "y": 0.0, - "z": 0.0, - "w": 0.0 + "z": 0.0 }, "m_Labels": [] } @@ -572,12 +5408,12 @@ { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", - "m_ObjectId": "a7a05fb11df4413facac3b9d3a353f37", - "m_Id": 0, - "m_DisplayName": "finalColor", - "m_SlotType": 1, + "m_ObjectId": "e5391be1663247b188cdee1731ec2cde", + "m_Id": 5, + "m_DisplayName": "normal", + "m_SlotType": 0, "m_Hidden": false, - "m_ShaderOutputName": "finalColor", + "m_ShaderOutputName": "normal", "m_StageCapability": 3, "m_Value": { "x": 0.0, @@ -593,105 +5429,143 @@ } { - "m_SGVersion": 1, - "m_Type": "UnityEditor.ShaderGraph.CustomFunctionNode", - "m_ObjectId": "b43030e957264b22a07a79a3561704a0", + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "e614cd05fe1a4948adeb3c48d22b0962", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "eac9f31f74fe4a709fe75e92ab331384", "m_Group": { "m_Id": "" }, - "m_Name": "Sheen (Custom Function)", + "m_Name": "Multiply", "m_DrawState": { "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 3290.28564453125, - "y": -2074.28564453125, - "width": 214.285400390625, - "height": 375.4285888671875 + "x": 5911.4482421875, + "y": -2042.837158203125, + "width": 209.14306640625, + "height": 303.4285888671875 } }, "m_Slots": [ { - "m_Id": "fdd8fb358100447eba6f1b46bff9659e" - }, - { - "m_Id": "89f994775ab646729bf8767b895eeffd" - }, - { - "m_Id": "943d5ecf18e44271a038a148f783128b" - }, - { - "m_Id": "de42625e734642b8b015c7b7fe43b26b" + "m_Id": "a53aa8e818b94e5a9eec06f37fa5bd18" }, { - "m_Id": "e5391be1663247b188cdee1731ec2cde" + "m_Id": "eb24fc9e41244a23964a486865941c03" }, { - "m_Id": "a7a05fb11df4413facac3b9d3a353f37" + "m_Id": "7074c4130a1342b7abf43f440583045a" } ], "synonyms": [ - "code", - "HLSL" + "multiplication", + "times", + "x" ], "m_Precision": 0, - "m_PreviewExpanded": true, + "m_PreviewExpanded": false, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] - }, - "m_SourceType": 0, - "m_FunctionName": "Sheen", - "m_FunctionSource": "885a3662fbaba7c47979790356264411", - "m_FunctionBody": "Enter function body here..." + } } { "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", - "m_ObjectId": "bedafa26d88b4ef9b75ba261656bfaf5", - "m_Id": 0, - "m_DisplayName": "SheenColor", - "m_SlotType": 1, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "eb24fc9e41244a23964a486865941c03", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, "m_Hidden": false, - "m_ShaderOutputName": "Out", + "m_ShaderOutputName": "B", "m_StageCapability": 3, "m_Value": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 }, "m_DefaultValue": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - }, - "m_Labels": [] + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } } { "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.PropertyNode", - "m_ObjectId": "d409afa9533541f09fe2ade300c0f2f0", + "m_Type": "UnityEditor.ShaderGraph.RedirectNodeData", + "m_ObjectId": "ec9fc4e196ff4899a0c6803f41c031dd", "m_Group": { "m_Id": "" }, - "m_Name": "Property", + "m_Name": "Redirect Node", "m_DrawState": { "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 3054.857177734375, - "y": -2168.0, - "width": 132.5712890625, - "height": 34.285888671875 + "x": 4076.571533203125, + "y": -2702.857177734375, + "width": 55.999755859375, + "height": 24.0 } }, "m_Slots": [ { - "m_Id": "3b1a1471158146048f611e56c237b899" + "m_Id": "d8e9f0bd573443c3add8555bac07130f" + }, + { + "m_Id": "87af01c6028c4162bd6744da45b2a434" } ], "synonyms": [], @@ -700,114 +5574,179 @@ "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] - }, - "m_Property": { - "m_Id": "803456c297b24a5f8d91fe5ef8a882c0" } } { "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.PropertyNode", - "m_ObjectId": "d92ba81702514d83a99cbc3493497194", + "m_Type": "UnityEditor.ShaderGraph.MaximumNode", + "m_ObjectId": "f0eb92a9ec414ee9b0801353d27857ac", "m_Group": { "m_Id": "" }, - "m_Name": "Property", + "m_Name": "Maximum", "m_DrawState": { "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 3032.0, - "y": -2021.142822265625, - "width": 113.71435546875, - "height": 34.2857666015625 + "x": 4669.71484375, + "y": -1817.7144775390625, + "width": 126.8564453125, + "height": 119.4285888671875 } }, "m_Slots": [ { - "m_Id": "960bde6198b74ee8ade843c8f4bb201a" + "m_Id": "d87e2048603040f4b12b711b744ab3cd" + }, + { + "m_Id": "c1fffa72775e4250af0352b9e5a14f35" + }, + { + "m_Id": "be6de66d33844e30a9274d826a58927a" } ], "synonyms": [], "m_Precision": 0, - "m_PreviewExpanded": true, + "m_PreviewExpanded": false, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] - }, - "m_Property": { - "m_Id": "5ac2b99e3222424ebcf3f4f7921a5396" } } { "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", - "m_ObjectId": "de42625e734642b8b015c7b7fe43b26b", - "m_Id": 4, - "m_DisplayName": "viewDir", - "m_SlotType": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "f2fc6230a5af419ea8b51eb2738a9182", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, "m_Hidden": false, - "m_ShaderOutputName": "viewDir", + "m_ShaderOutputName": "Out", "m_StageCapability": 3, "m_Value": { - "x": 0.0, - "y": 0.0, - "z": 0.0 + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 }, "m_DefaultValue": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "m_Labels": [] + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } } { "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", - "m_ObjectId": "e5054879423c44c69632f405487c3f0d", - "m_Id": 0, - "m_DisplayName": "WorldNormal", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "Out", - "m_StageCapability": 3, - "m_Value": { - "x": 0.0, - "y": 0.0, - "z": 0.0 + "m_Type": "UnityEditor.ShaderGraph.PowerNode", + "m_ObjectId": "f350e1e6be3443749580c495b76e737d", + "m_Group": { + "m_Id": "" }, - "m_DefaultValue": { - "x": 0.0, - "y": 0.0, - "z": 0.0 + "m_Name": "Power", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 4993.71484375, + "y": -1698.285888671875, + "width": 126.8564453125, + "height": 119.4287109375 + } }, - "m_Labels": [] + "m_Slots": [ + { + "m_Id": "82bccf8e0ff44d35a1a67ff30d2868ce" + }, + { + "m_Id": "7f38324f19fb4b08830d29fe930b1d65" + }, + { + "m_Id": "3260735c3f8942959e200dd3e51f8783" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } } { "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", - "m_ObjectId": "e5391be1663247b188cdee1731ec2cde", - "m_Id": 5, - "m_DisplayName": "normal", - "m_SlotType": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "f5b734a705a74c6ead418474387d438b", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, "m_Hidden": false, - "m_ShaderOutputName": "normal", + "m_ShaderOutputName": "Out", "m_StageCapability": 3, "m_Value": { - "x": 0.0, - "y": 0.0, - "z": 0.0 + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 }, "m_DefaultValue": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "m_Labels": [] + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } } { From f1f31eb89c5fc915ac3946ed8bb586994bcfd869 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Tue, 27 Aug 2024 15:26:46 +0200 Subject: [PATCH 033/117] added AnimationCacheData to RefCountedCacheData script --- Runtime/Scripts/Cache/RefCountedCacheData.cs | 20 ++++++++++++++++++-- Runtime/Scripts/GLTFSceneImporter.cs | 3 ++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Runtime/Scripts/Cache/RefCountedCacheData.cs b/Runtime/Scripts/Cache/RefCountedCacheData.cs index 674e29df7..59a9e4d87 100644 --- a/Runtime/Scripts/Cache/RefCountedCacheData.cs +++ b/Runtime/Scripts/Cache/RefCountedCacheData.cs @@ -36,18 +36,24 @@ public class RefCountedCacheData /// Textures used by this GLTF node. /// public TextureCacheData[] TextureCache { get; private set; } - + + /// + /// Animations used by this GLTF node. + /// + public AnimationCacheData[] AnimationCache { get; private set; } + /// /// Textures from the AssetCache that might need to be cleaned up /// public Texture2D[] ImageCache { get; private set; } - public RefCountedCacheData(MaterialCacheData[] materialCache, MeshCacheData[] meshCache, TextureCacheData[] textureCache, Texture2D[] imageCache) + public RefCountedCacheData(MaterialCacheData[] materialCache, MeshCacheData[] meshCache, TextureCacheData[] textureCache, Texture2D[] imageCache, AnimationCacheData[] animationCache) { MaterialCache = materialCache; MeshCache = meshCache; TextureCache = textureCache; ImageCache = imageCache; + AnimationCache = animationCache; } public void IncreaseRefCount() @@ -118,6 +124,16 @@ private void DestroyCachedData() ImageCache[i] = null; } } + + // Destroy the cached animations + for (int i = 0; i < AnimationCache.Length; i++) + { + if (AnimationCache[i] != null) + { + UnityEngine.Object.Destroy(AnimationCache[i].LoadedAnimationClip); + AnimationCache[i] = null; + } + } _isDisposed = true; } diff --git a/Runtime/Scripts/GLTFSceneImporter.cs b/Runtime/Scripts/GLTFSceneImporter.cs index bc2b36281..fa2c65117 100644 --- a/Runtime/Scripts/GLTFSceneImporter.cs +++ b/Runtime/Scripts/GLTFSceneImporter.cs @@ -654,7 +654,8 @@ private void InitializeGltfTopLevelObject() _assetCache.MaterialCache, _assetCache.MeshCache, _assetCache.TextureCache, - _assetCache.ImageCache + _assetCache.ImageCache, + _assetCache.AnimationCache ); } From 34463040e039afe97ea9fd86429920212f148ff7 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 12 Sep 2024 14:00:50 +0200 Subject: [PATCH 034/117] changed unity version compiler define for particle bakemesh --- Runtime/Scripts/Plugins/Experimental/BakeParticleSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Runtime/Scripts/Plugins/Experimental/BakeParticleSystem.cs b/Runtime/Scripts/Plugins/Experimental/BakeParticleSystem.cs index 1c5f8a842..0d7c0a8b2 100644 --- a/Runtime/Scripts/Plugins/Experimental/BakeParticleSystem.cs +++ b/Runtime/Scripts/Plugins/Experimental/BakeParticleSystem.cs @@ -35,7 +35,7 @@ public override void BeforeNodeExport(GLTFSceneExporter exporter, GLTFRoot gltfR var previousSortMode = p.sortMode; if (p.sortMode == ParticleSystemSortMode.None) p.sortMode = ParticleSystemSortMode.Distance; -#if UNITY_2023_1_OR_NEWER +#if UNITY_2022_3_OR_NEWER p.BakeMesh(m, Camera.main, ParticleSystemBakeMeshOptions.Default); #else p.BakeMesh(m, Camera.main, true); From dc6fa9d97be6c3f587dc2fd39ebf20efbf592e99 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Fri, 13 Sep 2024 10:06:26 +0200 Subject: [PATCH 035/117] Sheen: removed getmainlight (not working on all RPs) --- Runtime/Shaders/ShaderGraph/PBRHelpers.cginc | 28 - .../Shaders/ShaderGraph/Sheen.shadersubgraph | 867 +----------------- 2 files changed, 30 insertions(+), 865 deletions(-) diff --git a/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc b/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc index 67734a445..1435ee864 100644 --- a/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc +++ b/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc @@ -129,34 +129,6 @@ void WorkaroundTilingOffset_float(UnityTexture2D Tex, float4 LegacyST, out float OutTex = Tex; } -void Sheen_float(float roughness, float3 sheenColor, float3 albedo, float3 viewDir, float3 normal, out float3 resultColor) -{ - // Not physical auccurate! but looks good enough and a perfomance friendly approximation - - #if UNITY_VERSION >= 202210 - Light mainLight = GetMainLight(); - float3 lightDirection = mainLight.direction; - #else - float3 lightDirection = viewDir; - #endif - - float oneMinusRoughness = 1.0 - roughness; - float NdotV = max(dot(normal, viewDir), 0.0); - float halfDir = normalize(viewDir + lightDirection); - float sheenColorMax = max(max(sheenColor.x, sheenColor.y), sheenColor.z); - - float sheen = pow(1.0 - NdotV, 5.0 + oneMinusRoughness * 4 * pow(sheenColorMax,2)) ; - sheen = oneMinusRoughness * halfDir * sheen + sheen; - - float sheenEnergyComp = 1.0 - 0.157 * sheen; - resultColor = albedo * sheenEnergyComp + sheen * sheenColor + (sheenColor * sheenColorMax * 0.157 * roughness); -} - -void Sheen_half(half roughness, half3 sheenColor, half3 albedo, half3 viewDir, half3 normal, out half3 resultColor) -{ - Sheen_float(roughness, sheenColor, albedo, viewDir, normal, resultColor); -} - void WorkaroundTilingOffset_half(UnityTexture2D Tex, half4 LegacyST, out half4 TilingOffset, out UnityTexture2D OutTex) { #if UNITY_VERSION >= 202120 diff --git a/Runtime/Shaders/ShaderGraph/Sheen.shadersubgraph b/Runtime/Shaders/ShaderGraph/Sheen.shadersubgraph index c27d7dabe..d447cc37c 100644 --- a/Runtime/Shaders/ShaderGraph/Sheen.shadersubgraph +++ b/Runtime/Shaders/ShaderGraph/Sheen.shadersubgraph @@ -31,30 +31,6 @@ { "m_Id": "8797dfcad3a64a39a923c76ce82244ca" }, - { - "m_Id": "b43030e957264b22a07a79a3561704a0" - }, - { - "m_Id": "d409afa9533541f09fe2ade300c0f2f0" - }, - { - "m_Id": "d92ba81702514d83a99cbc3493497194" - }, - { - "m_Id": "0ee1b89813f5469cbf23243745b5268e" - }, - { - "m_Id": "06e8b133cd904a56ad77e8675cd11c06" - }, - { - "m_Id": "32b09966a3204e57b92e4da913c05eab" - }, - { - "m_Id": "512c35ac9903473ebdb8f77d2d063e57" - }, - { - "m_Id": "d5df272250864ce0b9c6cd88116ef48a" - }, { "m_Id": "2ab2a2cbfec345e5b172b5bac12807fd" }, @@ -175,20 +151,6 @@ "m_SlotId": 0 } }, - { - "m_OutputSlot": { - "m_Node": { - "m_Id": "06e8b133cd904a56ad77e8675cd11c06" - }, - "m_SlotId": 0 - }, - "m_InputSlot": { - "m_Node": { - "m_Id": "b43030e957264b22a07a79a3561704a0" - }, - "m_SlotId": 4 - } - }, { "m_OutputSlot": { "m_Node": { @@ -203,20 +165,6 @@ "m_SlotId": 0 } }, - { - "m_OutputSlot": { - "m_Node": { - "m_Id": "0ee1b89813f5469cbf23243745b5268e" - }, - "m_SlotId": 0 - }, - "m_InputSlot": { - "m_Node": { - "m_Id": "b43030e957264b22a07a79a3561704a0" - }, - "m_SlotId": 5 - } - }, { "m_OutputSlot": { "m_Node": { @@ -231,20 +179,6 @@ "m_SlotId": 0 } }, - { - "m_OutputSlot": { - "m_Node": { - "m_Id": "2ab2a2cbfec345e5b172b5bac12807fd" - }, - "m_SlotId": 0 - }, - "m_InputSlot": { - "m_Node": { - "m_Id": "d5df272250864ce0b9c6cd88116ef48a" - }, - "m_SlotId": 1 - } - }, { "m_OutputSlot": { "m_Node": { @@ -287,20 +221,6 @@ "m_SlotId": 0 } }, - { - "m_OutputSlot": { - "m_Node": { - "m_Id": "32b09966a3204e57b92e4da913c05eab" - }, - "m_SlotId": 0 - }, - "m_InputSlot": { - "m_Node": { - "m_Id": "b43030e957264b22a07a79a3561704a0" - }, - "m_SlotId": 2 - } - }, { "m_OutputSlot": { "m_Node": { @@ -315,20 +235,6 @@ "m_SlotId": 1 } }, - { - "m_OutputSlot": { - "m_Node": { - "m_Id": "512c35ac9903473ebdb8f77d2d063e57" - }, - "m_SlotId": 0 - }, - "m_InputSlot": { - "m_Node": { - "m_Id": "cd9958207e4b4d4e883a84dbb1f8078e" - }, - "m_SlotId": 1 - } - }, { "m_OutputSlot": { "m_Node": { @@ -623,34 +529,6 @@ "m_SlotId": 1 } }, - { - "m_OutputSlot": { - "m_Node": { - "m_Id": "d409afa9533541f09fe2ade300c0f2f0" - }, - "m_SlotId": 0 - }, - "m_InputSlot": { - "m_Node": { - "m_Id": "b43030e957264b22a07a79a3561704a0" - }, - "m_SlotId": 1 - } - }, - { - "m_OutputSlot": { - "m_Node": { - "m_Id": "d5df272250864ce0b9c6cd88116ef48a" - }, - "m_SlotId": 0 - }, - "m_InputSlot": { - "m_Node": { - "m_Id": "512c35ac9903473ebdb8f77d2d063e57" - }, - "m_SlotId": 2 - } - }, { "m_OutputSlot": { "m_Node": { @@ -735,20 +613,6 @@ "m_SlotId": 1 } }, - { - "m_OutputSlot": { - "m_Node": { - "m_Id": "d92ba81702514d83a99cbc3493497194" - }, - "m_SlotId": 0 - }, - "m_InputSlot": { - "m_Node": { - "m_Id": "b43030e957264b22a07a79a3561704a0" - }, - "m_SlotId": 3 - } - }, { "m_OutputSlot": { "m_Node": { @@ -828,9 +692,9 @@ }, "m_InputSlot": { "m_Node": { - "m_Id": "512c35ac9903473ebdb8f77d2d063e57" + "m_Id": "cd9958207e4b4d4e883a84dbb1f8078e" }, - "m_SlotId": 1 + "m_SlotId": 0 } }, { @@ -844,7 +708,7 @@ "m_Node": { "m_Id": "cd9958207e4b4d4e883a84dbb1f8078e" }, - "m_SlotId": 0 + "m_SlotId": 1 } }, { @@ -1027,41 +891,6 @@ } } -{ - "m_SGVersion": 1, - "m_Type": "UnityEditor.ShaderGraph.ViewDirectionNode", - "m_ObjectId": "06e8b133cd904a56ad77e8675cd11c06", - "m_Group": { - "m_Id": "" - }, - "m_Name": "View Direction", - "m_DrawState": { - "m_Expanded": true, - "m_Position": { - "serializedVersion": "2", - "x": 3054.857177734375, - "y": -1908.5714111328125, - "width": 206.85693359375, - "height": 133.1429443359375 - } - }, - "m_Slots": [ - { - "m_Id": "328b85a3e4d94c899d5f971a0c44a61a" - } - ], - "synonyms": [ - "eye direction" - ], - "m_Precision": 0, - "m_PreviewExpanded": false, - "m_PreviewMode": 2, - "m_CustomColors": { - "m_SerializableColors": [] - }, - "m_Space": 2 -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.NormalizeNode", @@ -1074,9 +903,9 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 4820.5712890625, - "y": -2772.5712890625, - "width": 133.14306640625, + "x": 5549.14306640625, + "y": -2702.28564453125, + "width": 133.142578125, "height": 95.428466796875 } }, @@ -1145,41 +974,6 @@ } } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.PropertyNode", - "m_ObjectId": "0ee1b89813f5469cbf23243745b5268e", - "m_Group": { - "m_Id": "" - }, - "m_Name": "Property", - "m_DrawState": { - "m_Expanded": true, - "m_Position": { - "serializedVersion": "2", - "x": 3032.0, - "y": -2111.428466796875, - "width": 144.5712890625, - "height": 34.28564453125 - } - }, - "m_Slots": [ - { - "m_Id": "e5054879423c44c69632f405487c3f0d" - } - ], - "synonyms": [], - "m_Precision": 0, - "m_PreviewExpanded": true, - "m_PreviewMode": 0, - "m_CustomColors": { - "m_SerializableColors": [] - }, - "m_Property": { - "m_Id": "45cb07d535ad4c64ba5fa24166f8df61" - } -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", @@ -1379,9 +1173,9 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 3574.857177734375, - "y": -2748.0, - "width": 206.857177734375, + "x": 4303.4287109375, + "y": -2677.71435546875, + "width": 207.42822265625, "height": 133.142822265625 } }, @@ -1485,64 +1279,6 @@ } } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", - "m_ObjectId": "328b85a3e4d94c899d5f971a0c44a61a", - "m_Id": 0, - "m_DisplayName": "Out", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "Out", - "m_StageCapability": 3, - "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_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.PropertyNode", - "m_ObjectId": "32b09966a3204e57b92e4da913c05eab", - "m_Group": { - "m_Id": "" - }, - "m_Name": "Property", - "m_DrawState": { - "m_Expanded": true, - "m_Position": { - "serializedVersion": "2", - "x": 3002.285400390625, - "y": -2074.28564453125, - "width": 137.71435546875, - "height": 34.285888671875 - } - }, - "m_Slots": [ - { - "m_Id": "bedafa26d88b4ef9b75ba261656bfaf5" - } - ], - "synonyms": [], - "m_Precision": 0, - "m_PreviewExpanded": true, - "m_PreviewMode": 0, - "m_CustomColors": { - "m_SerializableColors": [] - }, - "m_Property": { - "m_Id": "5d8d0eb4052c4978a64b038cac64c33c" - } -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", @@ -1615,44 +1351,6 @@ } } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", - "m_ObjectId": "3a10a8ebc96f4c52a3f89f4a58ebb6be", - "m_Id": 1, - "m_DisplayName": "viewDir", - "m_SlotType": 0, - "m_Hidden": false, - "m_ShaderOutputName": "viewDir", - "m_StageCapability": 3, - "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_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", - "m_ObjectId": "3b1a1471158146048f611e56c237b899", - "m_Id": 0, - "m_DisplayName": "Roughness", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "Out", - "m_StageCapability": 3, - "m_Value": 0.0, - "m_DefaultValue": 0.0, - "m_Labels": [] -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -2002,70 +1700,6 @@ } } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", - "m_ObjectId": "4f6b7627f58546228242584ef8bdd1f5", - "m_Id": 0, - "m_DisplayName": "lightDirection", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "lightDirection", - "m_StageCapability": 3, - "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_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.KeywordNode", - "m_ObjectId": "512c35ac9903473ebdb8f77d2d063e57", - "m_Group": { - "m_Id": "" - }, - "m_Name": "MaterialX", - "m_DrawState": { - "m_Expanded": true, - "m_Position": { - "serializedVersion": "2", - "x": 4224.5712890625, - "y": -2614.857177734375, - "width": 140.0, - "height": 119.4287109375 - } - }, - "m_Slots": [ - { - "m_Id": "587024da5b4f4e97be8e55e0bde12012" - }, - { - "m_Id": "96022b8f490b4fb9a61d8685887de7fd" - }, - { - "m_Id": "7f39ffc95ae04094ae9f2fb142e086b2" - } - ], - "synonyms": [], - "m_Precision": 0, - "m_PreviewExpanded": false, - "m_PreviewMode": 0, - "m_CustomColors": { - "m_SerializableColors": [] - }, - "m_Keyword": { - "m_Id": "70f07928851f4f5892ca7656d80dbc0c" - } -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", @@ -2114,30 +1748,6 @@ } } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", - "m_ObjectId": "587024da5b4f4e97be8e55e0bde12012", - "m_Id": 0, - "m_DisplayName": "Out", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "Out", - "m_StageCapability": 3, - "m_Value": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - }, - "m_DefaultValue": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - } -} - { "m_SGVersion": 3, "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", @@ -2848,30 +2458,6 @@ } } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", - "m_ObjectId": "7f39ffc95ae04094ae9f2fb142e086b2", - "m_Id": 2, - "m_DisplayName": "Off", - "m_SlotType": 0, - "m_Hidden": false, - "m_ShaderOutputName": "Off", - "m_StageCapability": 3, - "m_Value": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - }, - "m_DefaultValue": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - } -} - { "m_SGVersion": 1, "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", @@ -3044,29 +2630,6 @@ } } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", - "m_ObjectId": "89f994775ab646729bf8767b895eeffd", - "m_Id": 2, - "m_DisplayName": "sheenColor", - "m_SlotType": 0, - "m_Hidden": false, - "m_ShaderOutputName": "sheenColor", - "m_StageCapability": 3, - "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_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", @@ -3333,90 +2896,18 @@ "e02": 0.0, "e03": 0.0, "e10": 0.0, - "e11": 1.0, - "e12": 0.0, - "e13": 0.0, - "e20": 0.0, - "e21": 0.0, - "e22": 1.0, - "e23": 0.0, - "e30": 0.0, - "e31": 0.0, - "e32": 0.0, - "e33": 1.0 - } -} - -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", - "m_ObjectId": "943d5ecf18e44271a038a148f783128b", - "m_Id": 3, - "m_DisplayName": "albedo", - "m_SlotType": 0, - "m_Hidden": false, - "m_ShaderOutputName": "albedo", - "m_StageCapability": 3, - "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_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", - "m_ObjectId": "96022b8f490b4fb9a61d8685887de7fd", - "m_Id": 1, - "m_DisplayName": "On", - "m_SlotType": 0, - "m_Hidden": false, - "m_ShaderOutputName": "On", - "m_StageCapability": 3, - "m_Value": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - }, - "m_DefaultValue": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - } -} - -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", - "m_ObjectId": "960bde6198b74ee8ade843c8f4bb201a", - "m_Id": 0, - "m_DisplayName": "Albedo", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "Out", - "m_StageCapability": 3, - "m_Value": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - }, - "m_DefaultValue": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - }, - "m_Labels": [] + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } } { @@ -3803,29 +3294,6 @@ } } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", - "m_ObjectId": "a7a05fb11df4413facac3b9d3a353f37", - "m_Id": 0, - "m_DisplayName": "finalColor", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "finalColor", - "m_StageCapability": 3, - "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_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", @@ -4176,60 +3644,6 @@ } } -{ - "m_SGVersion": 1, - "m_Type": "UnityEditor.ShaderGraph.CustomFunctionNode", - "m_ObjectId": "b43030e957264b22a07a79a3561704a0", - "m_Group": { - "m_Id": "" - }, - "m_Name": "Sheen (Custom Function)", - "m_DrawState": { - "m_Expanded": true, - "m_Position": { - "serializedVersion": "2", - "x": 3290.28564453125, - "y": -2074.28564453125, - "width": 214.285400390625, - "height": 375.4285888671875 - } - }, - "m_Slots": [ - { - "m_Id": "fdd8fb358100447eba6f1b46bff9659e" - }, - { - "m_Id": "89f994775ab646729bf8767b895eeffd" - }, - { - "m_Id": "943d5ecf18e44271a038a148f783128b" - }, - { - "m_Id": "de42625e734642b8b015c7b7fe43b26b" - }, - { - "m_Id": "e5391be1663247b188cdee1731ec2cde" - }, - { - "m_Id": "a7a05fb11df4413facac3b9d3a353f37" - } - ], - "synonyms": [ - "code", - "HLSL" - ], - "m_Precision": 0, - "m_PreviewExpanded": true, - "m_PreviewMode": 0, - "m_CustomColors": { - "m_SerializableColors": [] - }, - "m_SourceType": 0, - "m_FunctionName": "Sheen", - "m_FunctionSource": "885a3662fbaba7c47979790356264411", - "m_FunctionBody": "Enter function body here..." -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", @@ -4392,31 +3806,6 @@ } } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", - "m_ObjectId": "bedafa26d88b4ef9b75ba261656bfaf5", - "m_Id": 0, - "m_DisplayName": "SheenColor", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "Out", - "m_StageCapability": 3, - "m_Value": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - }, - "m_DefaultValue": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - }, - "m_Labels": [] -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.MaximumNode", @@ -4593,10 +3982,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 4659.4375, - "y": -2772.5625, - "width": 209.142578125, - "height": 303.428466796875 + "x": 5388.0, + "y": -2702.28564453125, + "width": 131.4287109375, + "height": 119.428466796875 } }, "m_Slots": [ @@ -4701,83 +4090,6 @@ } } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.PropertyNode", - "m_ObjectId": "d409afa9533541f09fe2ade300c0f2f0", - "m_Group": { - "m_Id": "" - }, - "m_Name": "Property", - "m_DrawState": { - "m_Expanded": true, - "m_Position": { - "serializedVersion": "2", - "x": 3054.857177734375, - "y": -2168.0, - "width": 132.5712890625, - "height": 34.285888671875 - } - }, - "m_Slots": [ - { - "m_Id": "3b1a1471158146048f611e56c237b899" - } - ], - "synonyms": [], - "m_Precision": 0, - "m_PreviewExpanded": true, - "m_PreviewMode": 0, - "m_CustomColors": { - "m_SerializableColors": [] - }, - "m_Property": { - "m_Id": "803456c297b24a5f8d91fe5ef8a882c0" - } -} - -{ - "m_SGVersion": 1, - "m_Type": "UnityEditor.ShaderGraph.CustomFunctionNode", - "m_ObjectId": "d5df272250864ce0b9c6cd88116ef48a", - "m_Group": { - "m_Id": "" - }, - "m_Name": "GetMainLightDirection (Custom Function)", - "m_DrawState": { - "m_Expanded": true, - "m_Position": { - "serializedVersion": "2", - "x": 3848.571533203125, - "y": -2590.857177734375, - "width": 283.999755859375, - "height": 95.4287109375 - } - }, - "m_Slots": [ - { - "m_Id": "3a10a8ebc96f4c52a3f89f4a58ebb6be" - }, - { - "m_Id": "4f6b7627f58546228242584ef8bdd1f5" - } - ], - "synonyms": [ - "code", - "HLSL" - ], - "m_Precision": 0, - "m_PreviewExpanded": false, - "m_PreviewMode": 0, - "m_CustomColors": { - "m_SerializableColors": [] - }, - "m_SourceType": 1, - "m_FunctionName": "GetMainLightDirection", - "m_FunctionSource": "", - "m_FunctionBody": "#if UNITY_VERSION >= 202210\t\r\nLight mainLight = GetMainLight();\r\nlightDirection = mainLight.direction;\r\n#else\r\nlightDirection = viewDir;\r\n#endif" -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.PropertyNode", @@ -5007,8 +4319,8 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 3820.571533203125, - "y": -2168.0, + "x": 4549.14306640625, + "y": -2097.71435546875, "width": 56.0, "height": 24.0 } @@ -5126,41 +4438,6 @@ } } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.PropertyNode", - "m_ObjectId": "d92ba81702514d83a99cbc3493497194", - "m_Group": { - "m_Id": "" - }, - "m_Name": "Property", - "m_DrawState": { - "m_Expanded": true, - "m_Position": { - "serializedVersion": "2", - "x": 3032.0, - "y": -2021.142822265625, - "width": 113.71435546875, - "height": 34.2857666015625 - } - }, - "m_Slots": [ - { - "m_Id": "960bde6198b74ee8ade843c8f4bb201a" - } - ], - "synonyms": [], - "m_Precision": 0, - "m_PreviewExpanded": true, - "m_PreviewMode": 0, - "m_CustomColors": { - "m_SerializableColors": [] - }, - "m_Property": { - "m_Id": "5ac2b99e3222424ebcf3f4f7921a5396" - } -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", @@ -5185,29 +4462,6 @@ } } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", - "m_ObjectId": "de42625e734642b8b015c7b7fe43b26b", - "m_Id": 4, - "m_DisplayName": "viewDir", - "m_SlotType": 0, - "m_Hidden": false, - "m_ShaderOutputName": "viewDir", - "m_StageCapability": 3, - "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_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1Node", @@ -5382,52 +4636,6 @@ } } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", - "m_ObjectId": "e5054879423c44c69632f405487c3f0d", - "m_Id": 0, - "m_DisplayName": "WorldNormal", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "Out", - "m_StageCapability": 3, - "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_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", - "m_ObjectId": "e5391be1663247b188cdee1731ec2cde", - "m_Id": 5, - "m_DisplayName": "normal", - "m_SlotType": 0, - "m_Hidden": false, - "m_ShaderOutputName": "normal", - "m_StageCapability": 3, - "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_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", @@ -5554,9 +4762,9 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 4076.571533203125, - "y": -2702.857177734375, - "width": 55.999755859375, + "x": 5204.5712890625, + "y": -2668.0, + "width": 56.0, "height": 24.0 } }, @@ -5749,18 +4957,3 @@ } } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", - "m_ObjectId": "fdd8fb358100447eba6f1b46bff9659e", - "m_Id": 1, - "m_DisplayName": "roughness", - "m_SlotType": 0, - "m_Hidden": false, - "m_ShaderOutputName": "roughness", - "m_StageCapability": 3, - "m_Value": 0.0, - "m_DefaultValue": 0.0, - "m_Labels": [] -} - From 8325abc471983409c09637018e734aa61a7bb487 Mon Sep 17 00:00:00 2001 From: hybridherbst Date: Sat, 14 Sep 2024 00:45:22 +0200 Subject: [PATCH 036/117] adds warning when UV0 and UV1 have dimension >= 2 as glTF can't officially do that. also adds UV2 export with 4 channels (not spec-compliant) --- .../Scripts/SceneExporter/ExporterMeshes.cs | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/Runtime/Scripts/SceneExporter/ExporterMeshes.cs b/Runtime/Scripts/SceneExporter/ExporterMeshes.cs index 2c2f52590..c7b34b667 100644 --- a/Runtime/Scripts/SceneExporter/ExporterMeshes.cs +++ b/Runtime/Scripts/SceneExporter/ExporterMeshes.cs @@ -17,7 +17,7 @@ public partial class GLTFSceneExporter { private struct MeshAccessors { - public AccessorId aPosition, aNormal, aTangent, aTexcoord0, aTexcoord1, aColor0, aJoints0, aWeights0; + public AccessorId aPosition, aNormal, aTangent, aTexcoord0, aTexcoord1, aTexcoord2, aColor0, aJoints0, aWeights0; public Dictionary subMeshPrimitives; } @@ -255,7 +255,7 @@ private MeshPrimitive[] ExportPrimitive(UniquePrimitive primKey, GLTFMesh mesh) if (!_meshToPrims.ContainsKey(meshObj)) { - AccessorId aPosition = null, aNormal = null, aTangent = null, aTexcoord0 = null, aTexcoord1 = null, aColor0 = null; + AccessorId aPosition = null, aNormal = null, aTangent = null, aTexcoord0 = null, aTexcoord1 = null, aTexcoord2 = null, aColor0 = null; aPosition = ExportAccessor(SchemaExtensions.ConvertVector3CoordinateSpaceAndCopy(meshObj.vertices, SchemaExtensions.CoordinateSpaceConversionScale)); @@ -265,11 +265,38 @@ private MeshPrimitive[] ExportPrimitive(UniquePrimitive primKey, GLTFMesh mesh) if (meshObj.tangents.Length != 0) aTangent = ExportAccessor(SchemaExtensions.ConvertTangentCoordinateSpaceAndCopy(meshObj.tangents, SchemaExtensions.TangentSpaceConversionScale)); + var uvDim = meshObj.GetVertexAttributeDimension(VertexAttribute.TexCoord0); + if (uvDim != 2) Debug.LogWarning(null, "UV0 must be Vector2 in glTF, but it has " + uvDim + " channels. Only xy will be exported. Mesh: " + meshObj.name); if (meshObj.uv.Length != 0) aTexcoord0 = ExportAccessor(SchemaExtensions.FlipTexCoordArrayVAndCopy(meshObj.uv)); + var uvDim1 = meshObj.GetVertexAttributeDimension(VertexAttribute.TexCoord1); + if (uvDim1 != 2) Debug.LogWarning(null, "UV1 must be Vector2 in glTF, but it has " + uvDim1 + " channels. Only xy will be exported. Mesh: " + meshObj.name); if (meshObj.uv2.Length != 0) aTexcoord1 = ExportAccessor(SchemaExtensions.FlipTexCoordArrayVAndCopy(meshObj.uv2)); + + // From UV2, we're exporting as custom attribute + if (meshObj.HasVertexAttribute(VertexAttribute.TexCoord2)) { + var uvDim2 = meshObj.GetVertexAttributeDimension(VertexAttribute.TexCoord2); + if (uvDim2 == 2) + { + var uvs = new List(meshObj.vertexCount); + meshObj.GetUVs(2, uvs); + aTexcoord2 = ExportAccessor(uvs.ToArray()); + } + else if (uvDim2 == 3) + { + var uvs = new List(meshObj.vertexCount); + meshObj.GetUVs(2, uvs); + aTexcoord2 = ExportAccessor(uvs.ToArray()); + } + else if (uvDim2 == 4) + { + var uvs = new List(meshObj.vertexCount); + meshObj.GetUVs(2, uvs); + aTexcoord2 = ExportAccessor(uvs.ToArray()); + } + } if (settings.ExportVertexColors && meshObj.colors.Length != 0) aColor0 = ExportAccessor(QualitySettings.activeColorSpace == ColorSpace.Linear ? meshObj.colors : meshObj.colors.ToLinear(), true); @@ -279,6 +306,7 @@ private MeshPrimitive[] ExportPrimitive(UniquePrimitive primKey, GLTFMesh mesh) if (aTangent != null) aTangent.Value.BufferView.Value.Target = BufferViewTarget.ArrayBuffer; if (aTexcoord0 != null) aTexcoord0.Value.BufferView.Value.Target = BufferViewTarget.ArrayBuffer; if (aTexcoord1 != null) aTexcoord1.Value.BufferView.Value.Target = BufferViewTarget.ArrayBuffer; + if (aTexcoord2 != null) aTexcoord2.Value.BufferView.Value.Target = BufferViewTarget.ArrayBuffer; if (aColor0 != null) aColor0.Value.BufferView.Value.Target = BufferViewTarget.ArrayBuffer; _meshToPrims.Add(meshObj, new MeshAccessors() @@ -288,6 +316,7 @@ private MeshPrimitive[] ExportPrimitive(UniquePrimitive primKey, GLTFMesh mesh) aTangent = aTangent, aTexcoord0 = aTexcoord0, aTexcoord1 = aTexcoord1, + aTexcoord2 = aTexcoord2, aColor0 = aColor0, subMeshPrimitives = new Dictionary() }); @@ -327,6 +356,8 @@ private MeshPrimitive[] ExportPrimitive(UniquePrimitive primKey, GLTFMesh mesh) primitive.Attributes.Add(SemanticProperties.TEXCOORD_0, accessors.aTexcoord0); if (accessors.aTexcoord1 != null) primitive.Attributes.Add(SemanticProperties.TEXCOORD_1, accessors.aTexcoord1); + if (accessors.aTexcoord2 != null) + primitive.Attributes.Add(SemanticProperties.TEXCOORD_2, accessors.aTexcoord2); if (accessors.aColor0 != null) primitive.Attributes.Add(SemanticProperties.COLOR_0, accessors.aColor0); From 615ab67e757a3e7b2287dd88b159128ed1e160f9 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Mon, 16 Sep 2024 08:21:04 +0200 Subject: [PATCH 037/117] added new SceneImporter constructor variant without gltfroot parameter --- Runtime/Scripts/GLTFSceneImporter.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Runtime/Scripts/GLTFSceneImporter.cs b/Runtime/Scripts/GLTFSceneImporter.cs index bc2b36281..46962193e 100644 --- a/Runtime/Scripts/GLTFSceneImporter.cs +++ b/Runtime/Scripts/GLTFSceneImporter.cs @@ -328,6 +328,17 @@ public GLTFSceneImporter(GLTFRoot rootNode, Stream gltfStream, ImportOptions opt VerifyDataLoader(); } + public GLTFSceneImporter(Stream gltfStream, ImportOptions options) : this(options) + { + if (gltfStream != null) + { + _gltfStream = new GLBStream { Stream = gltfStream, StartPosition = gltfStream.Position }; + } + GLTFParser.ParseJson(_gltfStream.Stream, out _gltfRoot, _gltfStream.StartPosition); + + VerifyDataLoader(); + } + private GLTFSceneImporter(ImportOptions options) { if (options.ImportContext != null) From 4675d122f6d401ab16faa2ac34ffc96c182f9e13 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Mon, 16 Sep 2024 08:24:50 +0200 Subject: [PATCH 038/117] added warning when dataloader and gltf filename is missing on import --- Runtime/Scripts/GLTFSceneImporter.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Runtime/Scripts/GLTFSceneImporter.cs b/Runtime/Scripts/GLTFSceneImporter.cs index 46962193e..c0fa6ef47 100644 --- a/Runtime/Scripts/GLTFSceneImporter.cs +++ b/Runtime/Scripts/GLTFSceneImporter.cs @@ -403,6 +403,11 @@ private void VerifyDataLoader() { if (_options.ExternalDataLoader == null) { + if (string.IsNullOrEmpty(_gltfFileName)) + { + Debug.Log(LogType.Warning, "No filename specified for GLTFSceneImporter, external references will not be loaded"); + return; + } _options.DataLoader = new UnityWebRequestLoader(URIHelper.GetDirectoryName(_gltfFileName)); _gltfFileName = URIHelper.GetFileFromUri(new Uri(_gltfFileName)); } From dcf4dc4f2ad6424fc4eef5e4691242c66e235f35 Mon Sep 17 00:00:00 2001 From: Marcel Wiessler Date: Tue, 17 Sep 2024 00:51:08 +0200 Subject: [PATCH 039/117] Create bug.yml --- .github/ISSUE_TEMPLATE/bug.yml | 119 +++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug.yml diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml new file mode 100644 index 000000000..23eda5e3a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -0,0 +1,119 @@ +name: 🐞 Bug Report +description: File a bug report +labels: ["untriaged"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! 🙏 + + - type: textarea + id: bug-description + attributes: + label: Describe the bug 💬 + description: A clear and concise description of what the bug is. Thanks! + placeholder: I am doing... What I expect to happen is... What's actually happening is ... + + validations: + required: true + + - type: dropdown + id: OS + attributes: + label: Operating System 👩‍💻 + description: Which operating system are you using / on which operating system did you observe the issue? + multiple: true + options: + - Windows + - macOS + - Linux + - iOS + - Android + - Other (I provide details below) + validations: + required: true + + - type: dropdown + id: version + attributes: + label: Editor Version 🎲 + description: Which Unity Editor version are you using? + options: + - 2020.3 + - 2021.3 + - 2022.x + - 2023.x + - 2024.x + - 6000.x + validations: + required: true + + - type: input + id: renderpipeline + attributes: + label: Renderpipeline & Version + placeholder: URP 10.0.0 / HDRP 10.0.0 / Builtin + validations: + required: true + + - type: input + id: unitygltf + attributes: + label: UnityGLTF Version + placeholder: 2.0.0 + validations: + required: true + + - type: checkboxes + attributes: + label: When does this problem happen? + description: Does this issue happen in the Unity Editor (e.g. when importing assets to your project) or at runtime (e.g. when loading assets in your build) + options: + - label: Editor + - label: Runtime + validations: + required: true + + - type: textarea + id: project-info + attributes: + label: Project Info 📜 + description: | + Optional if provided reproduction. Please paste any information here that is relevant. Provide all relevant files. + + - type: textarea + id: reproduction-steps + attributes: + label: Steps to reproduce 🔢 + description: Please provide any reproduction steps that may need to be described. + placeholder: + value: | + 1. + 2. + 3. + ... + render: bash + validations: + required: true + + - type: textarea + id: reproduction + attributes: + label: Reproduction / Files to reproduce ♻ + description: Please provide necessary files, a link for download or a link to a repo that can reproduce the problem you ran into. A [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example) is favored ([Why?](https://antfu.me/posts/why-reproductions-are-required)). If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "need reproduction" label. + placeholder: Reproduction files or URL + validations: + required: false + + - type: checkboxes + id: checkboxes + attributes: + label: Validations 🩹 + description: Before submitting the issue, please make sure you do the following + options: + - label: I follow the [Code of Conduct](https://www.khronos.org/about/code-of-conduct) + required: true + - label: "I have [searched existing issues](https://github.com/KhronosGroup/UnityGLTF/issues): no issue already exist that reports the same bug" + required: true + - label: I provided a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) of the bug or all necessary files that can be used to reproduce this problem. + required: false From 0bb8b624a297ac7da22d3914dac232e16a7e641c Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Tue, 17 Sep 2024 11:53:29 +0200 Subject: [PATCH 040/117] added summary with example to GLTFSceneImporter constructor --- Runtime/Scripts/GLTFSceneImporter.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Runtime/Scripts/GLTFSceneImporter.cs b/Runtime/Scripts/GLTFSceneImporter.cs index c0fa6ef47..81e64f284 100644 --- a/Runtime/Scripts/GLTFSceneImporter.cs +++ b/Runtime/Scripts/GLTFSceneImporter.cs @@ -327,7 +327,19 @@ public GLTFSceneImporter(GLTFRoot rootNode, Stream gltfStream, ImportOptions opt VerifyDataLoader(); } - + + /// + /// Loads a glTF file from a stream. It's recommended to load only gltf data without any external references. + /// + /// + /// + /// var stream = new FileStream(filePath, FileMode.Open); + /// var importOptions = new ImportOptions(); + /// var importer = new GLTFSceneImporter(stream, importOptions); + /// await importer.LoadSceneAsync(); + /// stream.Dispose(); + /// + /// public GLTFSceneImporter(Stream gltfStream, ImportOptions options) : this(options) { if (gltfStream != null) From 604658ea6fe7145c6f4aed3ecde51061951fbb9c Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 19 Sep 2024 11:03:36 +0200 Subject: [PATCH 041/117] pbr shadergraph > changes to share sampler states to avoid max ps_4_0 sampler register error --- .../Shaders/ShaderGraph/PBRGraph.shadergraph | 748 ++++++++++++++++-- 1 file changed, 662 insertions(+), 86 deletions(-) diff --git a/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph b/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph index bdc9c4b31..f6918f0e0 100644 --- a/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph +++ b/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph @@ -982,9 +982,6 @@ { "m_Id": "80d32cf72bff472093313451a88d59f3" }, - { - "m_Id": "bd2bb5f1387341d28dbf190f4a0e97ef" - }, { "m_Id": "ad74a2b685714e43868498ca3d91e475" }, @@ -1044,6 +1041,30 @@ }, { "m_Id": "6fb6e7d6f90d4821a59d6a33569cdde0" + }, + { + "m_Id": "0d9250851d7344b996fee94fc192455c" + }, + { + "m_Id": "15ca7962911647b682736363a9c89940" + }, + { + "m_Id": "cc76dfadf6814f48b483eb9dc8741fd7" + }, + { + "m_Id": "3a6505dec7884d83aeb5d7e5d93c999c" + }, + { + "m_Id": "47fc01e74c76464fadc132f66a0551db" + }, + { + "m_Id": "1e360608717640ae8620d9b1be6531c2" + }, + { + "m_Id": "ee6105bac71f48e5b99b59dceae5609b" + }, + { + "m_Id": "4bc913b499a44afda3a530605c0efa7a" } ], "m_GroupDatas": [ @@ -1359,6 +1380,34 @@ "m_SlotId": 1309511136 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0d9250851d7344b996fee94fc192455c" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1e360608717640ae8620d9b1be6531c2" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0d9250851d7344b996fee94fc192455c" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ee6105bac71f48e5b99b59dceae5609b" + }, + "m_SlotId": 0 + } + }, { "m_OutputSlot": { "m_Node": { @@ -1471,6 +1520,34 @@ "m_SlotId": -1162300524 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "15ca7962911647b682736363a9c89940" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5b26a590f6aa45b99a84a717567a74b0" + }, + "m_SlotId": 3 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "15ca7962911647b682736363a9c89940" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f04debede3c04da5aed9738b7794df17" + }, + "m_SlotId": 3 + } + }, { "m_OutputSlot": { "m_Node": { @@ -1583,6 +1660,34 @@ "m_SlotId": 1 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1e360608717640ae8620d9b1be6531c2" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "15ca7962911647b682736363a9c89940" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1e360608717640ae8620d9b1be6531c2" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3a6505dec7884d83aeb5d7e5d93c999c" + }, + "m_SlotId": 0 + } + }, { "m_OutputSlot": { "m_Node": { @@ -2045,6 +2150,20 @@ "m_SlotId": -532409878 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "3a6505dec7884d83aeb5d7e5d93c999c" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "47fc01e74c76464fadc132f66a0551db" + }, + "m_SlotId": 0 + } + }, { "m_OutputSlot": { "m_Node": { @@ -2157,6 +2276,20 @@ "m_SlotId": 1 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "47fc01e74c76464fadc132f66a0551db" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cc76dfadf6814f48b483eb9dc8741fd7" + }, + "m_SlotId": 0 + } + }, { "m_OutputSlot": { "m_Node": { @@ -2227,6 +2360,20 @@ "m_SlotId": 0 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "4bc913b499a44afda3a530605c0efa7a" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "035426df75f84f88aca26e0e30c92b50" + }, + "m_SlotId": 3 + } + }, { "m_OutputSlot": { "m_Node": { @@ -4383,6 +4530,34 @@ "m_SlotId": 0 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "cc76dfadf6814f48b483eb9dc8741fd7" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "49b1bd5f6fa04b1fb25b22f346e420b5" + }, + "m_SlotId": 3 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "cc76dfadf6814f48b483eb9dc8741fd7" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6bc6081927414a54967aba433d1a4cc2" + }, + "m_SlotId": 3 + } + }, { "m_OutputSlot": { "m_Node": { @@ -4929,6 +5104,20 @@ "m_SlotId": 1309511136 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ee6105bac71f48e5b99b59dceae5609b" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "4bc913b499a44afda3a530605c0efa7a" + }, + "m_SlotId": 0 + } + }, { "m_OutputSlot": { "m_Node": { @@ -5947,6 +6136,19 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "06627f41917c456fb6b4550c3c97ec42", + "m_Id": 0, + "m_DisplayName": "", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_BareResource": false +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.LerpNode", @@ -6950,6 +7152,41 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateNode", + "m_ObjectId": "0d9250851d7344b996fee94fc192455c", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Sampler State", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -3591.4287109375, + "y": -2232.571533203125, + "width": 146.285888671875, + "height": 140.0 + } + }, + "m_Slots": [ + { + "m_Id": "1f68d24eb14041f78d398236de5cf6f1" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_filter": 0, + "m_wrap": 0, + "m_aniso": 0 +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -7410,6 +7647,32 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "12e3d414d807449f9bdf5dba45ceb8be", + "m_Id": 0, + "m_DisplayName": "", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "1308385b200743ec982bcef4496a561a", + "m_Id": 0, + "m_DisplayName": "", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_BareResource": false +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -7859,6 +8122,41 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RedirectNodeData", + "m_ObjectId": "15ca7962911647b682736363a9c89940", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Redirect Node", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -507.4284973144531, + "y": -1758.857177734375, + "width": 56.0, + "height": 24.0 + } + }, + "m_Slots": [ + { + "m_Id": "4340ab691331412c853f16be9463fa56" + }, + { + "m_Id": "58c47aba476749308994c8345156679c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", @@ -8819,6 +9117,41 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RedirectNodeData", + "m_ObjectId": "1e360608717640ae8620d9b1be6531c2", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Redirect Node", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1214.8570556640625, + "y": -2116.571533203125, + "width": 56.0, + "height": 24.0 + } + }, + "m_Slots": [ + { + "m_Id": "06627f41917c456fb6b4550c3c97ec42" + }, + { + "m_Id": "b830d9c6405445978bddc695b4adbcd1" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", @@ -9030,6 +9363,19 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "1f68d24eb14041f78d398236de5cf6f1", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", @@ -11899,6 +12245,41 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RedirectNodeData", + "m_ObjectId": "3a6505dec7884d83aeb5d7e5d93c999c", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Redirect Node", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1670.2857666015625, + "y": -1992.5714111328125, + "width": 56.0, + "height": 24.0 + } + }, + "m_Slots": [ + { + "m_Id": "1308385b200743ec982bcef4496a561a" + }, + { + "m_Id": "4a680c9007e54ccea942a4f4f81d6330" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", @@ -12920,6 +13301,19 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "427e6ba1e14e4203b562cb653e0b4210", + "m_Id": 0, + "m_DisplayName": "", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_BareResource": false +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.SplitNode", @@ -13008,6 +13402,19 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "4340ab691331412c853f16be9463fa56", + "m_Id": 0, + "m_DisplayName": "", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_BareResource": false +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", @@ -13385,6 +13792,41 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RedirectNodeData", + "m_ObjectId": "47fc01e74c76464fadc132f66a0551db", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Redirect Node", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2302.28564453125, + "y": -898.2855834960938, + "width": 56.0, + "height": 23.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "12e3d414d807449f9bdf5dba45ceb8be" + }, + { + "m_Id": "e1a586d2c894432d969b6637f597bdc8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", @@ -13913,6 +14355,19 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "4a680c9007e54ccea942a4f4f81d6330", + "m_Id": 1, + "m_DisplayName": "", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_BareResource": false +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", @@ -14009,6 +14464,41 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RedirectNodeData", + "m_ObjectId": "4bc913b499a44afda3a530605c0efa7a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Redirect Node", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2943.428466796875, + "y": 2038.28564453125, + "width": 55.999755859375, + "height": 24.0 + } + }, + "m_Slots": [ + { + "m_Id": "6cd90f52e544472bb5cac19644bb9f10" + }, + { + "m_Id": "839051bb2ba04885aee84b2be7fa2f50" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + { "m_SGVersion": 1, "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", @@ -15436,6 +15926,19 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "58c47aba476749308994c8345156679c", + "m_Id": 1, + "m_DisplayName": "", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_BareResource": false +} + { "m_SGVersion": 1, "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", @@ -17411,21 +17914,6 @@ } } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", - "m_ObjectId": "67abba0ff09f449886c02d5e04600447", - "m_Id": 0, - "m_DisplayName": "Width", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "Width", - "m_StageCapability": 3, - "m_Value": 0.0, - "m_DefaultValue": 0.0, - "m_Labels": [] -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -17549,6 +18037,19 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "6969da1acbf44a2e97d6fdb115906ae2", + "m_Id": 0, + "m_DisplayName": "", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_BareResource": false +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", @@ -17911,6 +18412,19 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "6cd90f52e544472bb5cac19644bb9f10", + "m_Id": 0, + "m_DisplayName": "", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_BareResource": false +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.PropertyNode", @@ -20412,20 +20926,15 @@ { "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", - "m_ObjectId": "839fd8941d044ff49e24ade5e1e9f64a", + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "839051bb2ba04885aee84b2be7fa2f50", "m_Id": 1, - "m_DisplayName": "Texture", - "m_SlotType": 0, + "m_DisplayName": "", + "m_SlotType": 1, "m_Hidden": false, - "m_ShaderOutputName": "Texture", + "m_ShaderOutputName": "", "m_StageCapability": 3, - "m_BareResource": false, - "m_Texture": { - "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", - "m_Guid": "" - }, - "m_DefaultType": 0 + "m_BareResource": false } { @@ -20652,8 +21161,8 @@ "m_ObjectId": "84e0b5a2ae6a46a785e5f8a97117454f", "m_Title": "Volume", "m_Position": { - "x": -2741.000244140625, - "y": -112.00007629394531 + "x": -2741.71435546875, + "y": -111.99996948242188 } } @@ -24112,6 +24621,19 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "a0a0329077b44193bd978ce03a7a9c0a", + "m_Id": 1, + "m_DisplayName": "", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_BareResource": false +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", @@ -26571,6 +27093,19 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "b830d9c6405445978bddc695b4adbcd1", + "m_Id": 1, + "m_DisplayName": "", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_BareResource": false +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", @@ -27497,46 +28032,6 @@ } } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Texture2DPropertiesNode", - "m_ObjectId": "bd2bb5f1387341d28dbf190f4a0e97ef", - "m_Group": { - "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" - }, - "m_Name": "Texel Size", - "m_DrawState": { - "m_Expanded": true, - "m_Position": { - "serializedVersion": "2", - "x": -2120.0, - "y": 545.0, - "width": 183.0, - "height": 101.0 - } - }, - "m_Slots": [ - { - "m_Id": "67abba0ff09f449886c02d5e04600447" - }, - { - "m_Id": "ff761b08eecb4f8aaff5317f4b58f157" - }, - { - "m_Id": "839fd8941d044ff49e24ade5e1e9f64a" - } - ], - "synonyms": [ - "texture size" - ], - "m_Precision": 0, - "m_PreviewExpanded": true, - "m_PreviewMode": 0, - "m_CustomColors": { - "m_SerializableColors": [] - } -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -29862,6 +30357,41 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RedirectNodeData", + "m_ObjectId": "cc76dfadf6814f48b483eb9dc8741fd7", + "m_Group": { + "m_Id": "c6190d7ef66644e4b76c6b232c6877fa" + }, + "m_Name": "Redirect Node", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2902.857177734375, + "y": -886.2857055664063, + "width": 56.0, + "height": 23.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "427e6ba1e14e4203b562cb653e0b4210" + }, + { + "m_Id": "f28f3ec09fc24d19867e44f7df434001" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", @@ -32518,6 +33048,19 @@ "m_SerializedDescriptor": "SurfaceDescription.Occlusion" } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "e1a586d2c894432d969b6637f597bdc8", + "m_Id": 1, + "m_DisplayName": "", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_BareResource": false +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", @@ -33915,6 +34458,41 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RedirectNodeData", + "m_ObjectId": "ee6105bac71f48e5b99b59dceae5609b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Redirect Node", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -3386.285888671875, + "y": -214.85707092285157, + "width": 56.0, + "height": 23.999969482421876 + } + }, + "m_Slots": [ + { + "m_Id": "6969da1acbf44a2e97d6fdb115906ae2" + }, + { + "m_Id": "a0a0329077b44193bd978ce03a7a9c0a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.PropertyNode", @@ -34540,6 +35118,19 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "f28f3ec09fc24d19867e44f7df434001", + "m_Id": 1, + "m_DisplayName": "", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_BareResource": false +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", @@ -35495,21 +36086,6 @@ } } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", - "m_ObjectId": "ff761b08eecb4f8aaff5317f4b58f157", - "m_Id": 2, - "m_DisplayName": "Height", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "Height", - "m_StageCapability": 3, - "m_Value": 0.0, - "m_DefaultValue": 0.0, - "m_Labels": [] -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", From e20fd5aedff6bc15cc12a083967c4a3288e6ae91 Mon Sep 17 00:00:00 2001 From: hybridherbst Date: Fri, 20 Sep 2024 14:10:38 +0200 Subject: [PATCH 042/117] adjust issue template --- .github/ISSUE_TEMPLATE/bug.yml | 118 ++++++++++++++++----------------- 1 file changed, 59 insertions(+), 59 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index 23eda5e3a..3cd51f4db 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -1,11 +1,11 @@ name: 🐞 Bug Report -description: File a bug report +description: File a technical issue, import or export problem, API issue labels: ["untriaged"] body: - type: markdown attributes: value: | - Thanks for taking the time to fill out this bug report! 🙏 + Thanks for taking the time to fill out this bug report. The more info you add, the higher the chance that we'll be able to help! 🙏 - type: textarea id: bug-description @@ -13,46 +13,50 @@ body: label: Describe the bug 💬 description: A clear and concise description of what the bug is. Thanks! placeholder: I am doing... What I expect to happen is... What's actually happening is ... - validations: required: true - - - type: dropdown - id: OS + + - type: textarea + id: reproduction-steps attributes: - label: Operating System 👩‍💻 - description: Which operating system are you using / on which operating system did you observe the issue? - multiple: true - options: - - Windows - - macOS - - Linux - - iOS - - Android - - Other (I provide details below) + label: Steps to reproduce 🔢 + description: Please provide step-by-step instructions for how to see the issue you're describing with the files you provide. + placeholder: | + 1. Download the attached reproduction file + 2. Drop it into Unity + 3. See in console validations: required: true - + + - type: textarea + id: reproduction + attributes: + label: Files to reproduce the issue ♻ + description: Please drop necessary files to reproduce the problem you ran into as `.zip` file or paste a link to a `.gltf/.glb`. A [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example) is best ([Why?](https://antfu.me/posts/why-reproductions-are-required)). + placeholder: Reproduction files or URL + validations: + required: false + - type: dropdown id: version attributes: label: Editor Version 🎲 - description: Which Unity Editor version are you using? + description: Which Unity version are you using? Please note that while we try to support the latest Unity versions, officially only LTS versions are supported. options: - - 2020.3 + - 2020.3 or older - 2021.3 - - 2022.x - - 2023.x - - 2024.x - - 6000.x + - 2022.3 + - 6000.0 + - Other (Provide details below) + default: 1 validations: required: true - type: input id: renderpipeline attributes: - label: Renderpipeline & Version - placeholder: URP 10.0.0 / HDRP 10.0.0 / Builtin + label: Render Pipeline and version + placeholder: URP 10.0.0 / HDRP 10.0.0 / Built-In Render Pipeline validations: required: true @@ -60,50 +64,46 @@ body: id: unitygltf attributes: label: UnityGLTF Version - placeholder: 2.0.0 + placeholder: 2.13.0 validations: required: true - + + - type: dropdown + id: OS + attributes: + label: Operating System 👩‍💻 + description: Which operating system are you using / on which operating system did you observe the issue? + multiple: true + options: + - Windows + - macOS + - Linux + - iOS + - Android + - WebGL + - VisionOS + - Other (Provide details below) + validations: + required: true + - type: checkboxes attributes: label: When does this problem happen? description: Does this issue happen in the Unity Editor (e.g. when importing assets to your project) or at runtime (e.g. when loading assets in your build) options: - - label: Editor - - label: Runtime + - label: Editor Import + - label: Runtime Import + - label: Editor Export + - label: Runtime Export validations: required: true - type: textarea id: project-info attributes: - label: Project Info 📜 + label: Additional Info 📜 description: | - Optional if provided reproduction. Please paste any information here that is relevant. Provide all relevant files. - - - type: textarea - id: reproduction-steps - attributes: - label: Steps to reproduce 🔢 - description: Please provide any reproduction steps that may need to be described. - placeholder: - value: | - 1. - 2. - 3. - ... - render: bash - validations: - required: true - - - type: textarea - id: reproduction - attributes: - label: Reproduction / Files to reproduce ♻ - description: Please provide necessary files, a link for download or a link to a repo that can reproduce the problem you ran into. A [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example) is favored ([Why?](https://antfu.me/posts/why-reproductions-are-required)). If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "need reproduction" label. - placeholder: Reproduction files or URL - validations: - required: false + Provide additional information that might be useful to understand your use case. - type: checkboxes id: checkboxes @@ -111,9 +111,9 @@ body: label: Validations 🩹 description: Before submitting the issue, please make sure you do the following options: - - label: I follow the [Code of Conduct](https://www.khronos.org/about/code-of-conduct) + - label: "I have [searched existing issues](https://github.com/KhronosGroup/UnityGLTF/issues): no issue already exist that reports the same problem." required: true - - label: "I have [searched existing issues](https://github.com/KhronosGroup/UnityGLTF/issues): no issue already exist that reports the same bug" + - label: I follow the [Code of Conduct](https://www.khronos.org/about/code-of-conduct) required: true - - label: I provided a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) of the bug or all necessary files that can be used to reproduce this problem. - required: false + - label: I provided a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example), including files when necessary. + required: false \ No newline at end of file From 68f432145fff7ac233cb41972642d380b61041b8 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Tue, 27 Aug 2024 14:52:45 +0200 Subject: [PATCH 043/117] output throwed execption to log instead of hiding it --- Runtime/Scripts/GLTFSceneImporter.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Runtime/Scripts/GLTFSceneImporter.cs b/Runtime/Scripts/GLTFSceneImporter.cs index ea95fb19c..bc2b36281 100644 --- a/Runtime/Scripts/GLTFSceneImporter.cs +++ b/Runtime/Scripts/GLTFSceneImporter.cs @@ -496,7 +496,9 @@ public void Dispose() DisposeNativeBuffers(); onLoadComplete?.Invoke(null, ExceptionDispatchInfo.Capture(ex)); - Debug.Log(LogType.Error, $"Error loading file: {_gltfFileName}"); + Debug.Log(LogType.Error, $"Error loading file: {_gltfFileName}" + + System.Environment.NewLine + "Message: " + ex.Message + + System.Environment.NewLine + "StackTrace: " + ex.StackTrace); throw; } finally From dd8a317a73d42cd4e42f7d24661fcbcd81e3f925 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Wed, 4 Sep 2024 12:20:37 +0200 Subject: [PATCH 044/117] fixed wrong callback subscription EditorApplication.update > delayCall --- Editor/Scripts/ShaderGraph/MaterialEditorBridge.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Editor/Scripts/ShaderGraph/MaterialEditorBridge.cs b/Editor/Scripts/ShaderGraph/MaterialEditorBridge.cs index fc1d6993b..a783b07e7 100644 --- a/Editor/Scripts/ShaderGraph/MaterialEditorBridge.cs +++ b/Editor/Scripts/ShaderGraph/MaterialEditorBridge.cs @@ -81,7 +81,7 @@ private static void OnImmutableMaterialChanged(Material material) // after importing a changed material, which can be confusing. Could be caching inside PBRGraphGUI AssetDatabase.Refresh(); - EditorApplication.update += () => + EditorApplication.delayCall += () => { // Repaint Inspector, newly imported values can be different if we're not perfectly round tripping foreach (var editor in ActiveEditorTracker.sharedTracker.activeEditors) From 2c7c5dfdaeface5950a1e768844b6c0fa9a73102 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Wed, 4 Sep 2024 15:21:48 +0200 Subject: [PATCH 045/117] readme update: blend shape known issue rephrased for more clarity --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7cbadb230..2485a6325 100644 --- a/README.md +++ b/README.md @@ -359,7 +359,7 @@ If your plugin reads/writes custom extension data, you need to also implement `G ## Known Issues -- Blend shapes with in-betweens are currently not supported. +- Blend shape in-betweens will not be exported as glTF does not have that functionality. - Support for glTF files with multiple scenes is limited. - Some material options (e.g. MAOS maps) are currently not exported correctly. From c28499cf9fe53befbc10e9a19ac8299d4331f53a Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 5 Sep 2024 08:26:09 +0200 Subject: [PATCH 046/117] readme update: added animation pointer import support --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2485a6325..4e99b603b 100644 --- a/README.md +++ b/README.md @@ -295,13 +295,13 @@ Animation components and their legacy clips can also be exported. ### KHR_animation_pointer support -UnityGLTF supports exporting animations with the KHR_animation_pointer extension. +UnityGLTF supports importing and exporting animations with the KHR_animation_pointer extension. The core glTF spec only allows animation node transforms and blend shape weights, while this extension allows animating arbitrary properties in the glTF file – including material and object properties, even in custom extensions and script components. Exporting with KHR_animation_pointer can be turned on in `Project Settings > UnityGLTF` by enabling the KHR_animation_pointer plugin. -> **Note:** The exported files can be viewed with Gestaltor, Babylon Sandbox, and Needle Engine, but currently not with three.js / model-viewer. See https://github.com/mrdoob/three.js/pull/24108. They can also not be reimported into UnityGLTF at this point. +> **Note:** The exported files can be viewed with Gestaltor, Babylon Sandbox, and Needle Engine, but currently not with three.js / model-viewer. See https://github.com/mrdoob/three.js/pull/24108. ## Blend Shape Export From 5b1b7ad1555f23be33cd04496a9dcad7729423b8 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Wed, 4 Sep 2024 15:20:29 +0200 Subject: [PATCH 047/117] readme update: removed known issue with MAOS maps, is fixed --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 4e99b603b..e293a8f5a 100644 --- a/README.md +++ b/README.md @@ -361,7 +361,6 @@ If your plugin reads/writes custom extension data, you need to also implement `G - Blend shape in-betweens will not be exported as glTF does not have that functionality. - Support for glTF files with multiple scenes is limited. -- Some material options (e.g. MAOS maps) are currently not exported correctly. ## Contributing From 861ae3ef97eaa7cca01a30720a6059703dde0e13 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 12 Sep 2024 14:00:50 +0200 Subject: [PATCH 048/117] changed unity version compiler define for particle bakemesh --- Runtime/Scripts/Plugins/Experimental/BakeParticleSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Runtime/Scripts/Plugins/Experimental/BakeParticleSystem.cs b/Runtime/Scripts/Plugins/Experimental/BakeParticleSystem.cs index 1c5f8a842..0d7c0a8b2 100644 --- a/Runtime/Scripts/Plugins/Experimental/BakeParticleSystem.cs +++ b/Runtime/Scripts/Plugins/Experimental/BakeParticleSystem.cs @@ -35,7 +35,7 @@ public override void BeforeNodeExport(GLTFSceneExporter exporter, GLTFRoot gltfR var previousSortMode = p.sortMode; if (p.sortMode == ParticleSystemSortMode.None) p.sortMode = ParticleSystemSortMode.Distance; -#if UNITY_2023_1_OR_NEWER +#if UNITY_2022_3_OR_NEWER p.BakeMesh(m, Camera.main, ParticleSystemBakeMeshOptions.Default); #else p.BakeMesh(m, Camera.main, true); From c05338e1c02c0cd71f08304007e96260bb8e4399 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Fri, 20 Sep 2024 14:33:39 +0200 Subject: [PATCH 049/117] fixes 782 - method not found in webgl build --- Runtime/Scripts/Plugins/Experimental/CanvasExport.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Runtime/Scripts/Plugins/Experimental/CanvasExport.cs b/Runtime/Scripts/Plugins/Experimental/CanvasExport.cs index 0dc9b4abd..7a031a11e 100644 --- a/Runtime/Scripts/Plugins/Experimental/CanvasExport.cs +++ b/Runtime/Scripts/Plugins/Experimental/CanvasExport.cs @@ -37,7 +37,12 @@ public override void AfterNodeExport(GLTFSceneExporter exporter, GLTFRoot root, // force refresh var r = transform.GetComponent(); - if (r) r.GetType().GetMethod("RequestRefresh", (BindingFlags)(-1)).Invoke(r, null); + if (r) + { + var rMethod = r.GetType().GetMethod("RequestRefresh", (BindingFlags)(-1)); + if (rMethod != null) + rMethod.Invoke(r, null); + } var canvas = g.GetComponent() ? g.GetComponent().canvas : null; var canvasRect = canvas ? canvas.GetComponent().rect : new Rect(0,0,1000,1000); From 472bcd12fe8612ad5f3538153c71ea341613498c Mon Sep 17 00:00:00 2001 From: hybridherbst Date: Fri, 20 Sep 2024 15:23:44 +0200 Subject: [PATCH 050/117] fix a number of potential NullReferenceExceptions --- .../GLTFSerialization/Schema/GLTFRoot.cs | 19 ++++++++++++++++++- .../Scripts/SceneImporter/ImporterMeshes.cs | 11 +++++++++-- .../Scripts/SceneImporter/ImporterTextures.cs | 4 +++- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFRoot.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTFRoot.cs index 5b3887c12..a09914e4e 100644 --- a/Runtime/Plugins/GLTFSerialization/Schema/GLTFRoot.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFRoot.cs @@ -4,6 +4,7 @@ using System.Linq; using GLTF.Extensions; using GLTF.Schema.KHR_lights_punctual; +using JetBrains.Annotations; using Newtonsoft.Json; namespace GLTF.Schema @@ -16,21 +17,25 @@ public class GLTFRoot : GLTFProperty /// /// Names of glTF extensions used somewhere in this asset. /// + [CanBeNull] public List ExtensionsUsed; /// /// Names of glTF extensions required to properly load this asset. /// + [CanBeNull] public List ExtensionsRequired; /// /// An array of accessors. An accessor is a typed view into a bufferView. /// + [CanBeNull] public List Accessors; /// /// An array of keyframe animations. /// + [CanBeNull] public List Animations; /// @@ -41,42 +46,50 @@ public class GLTFRoot : GLTFProperty /// /// An array of buffers. A buffer points to binary geometry, animation, or skins. /// + [CanBeNull] public List Buffers; /// /// An array of bufferViews. /// A bufferView is a view into a buffer generally representing a subset of the buffer. /// + [CanBeNull] public List BufferViews; /// /// An array of cameras. A camera defines a projection matrix. /// + [CanBeNull] public List Cameras; /// /// An array of images. An image defines data used to create a texture. /// + [CanBeNull] public List Images; /// /// An array of materials. A material defines the appearance of a primitive. /// + [CanBeNull] public List Materials; /// /// An array of meshes. A mesh is a set of primitives to be rendered. /// + [CanBeNull] public List Meshes; /// /// An array of nodes. /// + [CanBeNull] public List Nodes; /// /// An array of samplers. A sampler contains properties for texture filtering and wrapping modes. /// + [CanBeNull] public List Samplers; /// @@ -87,18 +100,22 @@ public class GLTFRoot : GLTFProperty /// /// An array of scenes. /// + [CanBeNull] public List Scenes; /// /// An array of skins. A skin is defined by joints and matrices. /// + [CanBeNull] public List Skins; /// /// An array of textures. /// + [CanBeNull] public List Textures; + [CanBeNull] public List Lights; public GLTFRoot() @@ -291,7 +308,7 @@ public static GLTFRoot Deserialize(TextReader textReader) while (jsonReader.Read() && jsonReader.TokenType == JsonToken.PropertyName) { - var curProp = jsonReader.Value.ToString(); + var curProp = jsonReader.Value?.ToString(); switch (curProp) { diff --git a/Runtime/Scripts/SceneImporter/ImporterMeshes.cs b/Runtime/Scripts/SceneImporter/ImporterMeshes.cs index 8a3b01cf0..c2bd92dae 100644 --- a/Runtime/Scripts/SceneImporter/ImporterMeshes.cs +++ b/Runtime/Scripts/SceneImporter/ImporterMeshes.cs @@ -698,7 +698,7 @@ protected async Task ConstructUnityMesh(UnityMeshData unityMeshData, int meshInd private void AddBlendShapesToMesh(UnityMeshData unityMeshData, int meshIndex, Mesh mesh) { - if (unityMeshData.MorphTargetVertices != null) + if (unityMeshData.MorphTargetVertices != null && _gltfRoot.Meshes != null) { var gltfMesh = _gltfRoot.Meshes[meshIndex]; var firstPrim = gltfMesh.Primitives[0]; @@ -1328,6 +1328,10 @@ private void TransformTargets(ref Dictionary attribut private static void AddNewBufferAndViewToAccessor(byte[] data, Accessor accessor, GLTFRoot _gltfRoot) { + if (_gltfRoot.Buffers == null) + _gltfRoot.Buffers = new List(); + if (_gltfRoot.BufferViews == null) + _gltfRoot.BufferViews = new List(); _gltfRoot.Buffers.Add(new GLTFBuffer() { ByteLength = (uint) data.Length }); _gltfRoot.BufferViews.Add(new BufferView() { ByteLength = (uint) data.Length, ByteOffset = 0, Buffer = new BufferId() { Id = _gltfRoot.Buffers.Count, Root = _gltfRoot } }); accessor.BufferView = new BufferViewId() { Id = _gltfRoot.BufferViews.Count - 1, Root = _gltfRoot }; @@ -1364,6 +1368,9 @@ private static T[][] Allocate2dArray(uint x, uint y) private void CheckForMeshDuplicates() { + if (_gltfRoot.Meshes == null) + return; + Dictionary meshDuplicates = new Dictionary(); for (int meshIndex = 0; meshIndex < _gltfRoot.Meshes.Count; meshIndex++) @@ -1393,6 +1400,7 @@ private void CheckForMeshDuplicates() foreach (var dm in meshDuplicates) { + if (_gltfRoot.Nodes == null) continue; for (int i = 0; i < _gltfRoot.Nodes.Count; i++) { if (_gltfRoot.Nodes[i].Mesh != null && _gltfRoot.Nodes[i].Mesh.Id == dm.Key) @@ -1404,7 +1412,6 @@ private void CheckForMeshDuplicates() } } } - } } } diff --git a/Runtime/Scripts/SceneImporter/ImporterTextures.cs b/Runtime/Scripts/SceneImporter/ImporterTextures.cs index 14cad852f..f502dba72 100644 --- a/Runtime/Scripts/SceneImporter/ImporterTextures.cs +++ b/Runtime/Scripts/SceneImporter/ImporterTextures.cs @@ -36,8 +36,9 @@ private class TextureData private async Task CreateNotReferencedTexture(int index) { + if (Root.Textures == null) return; if (Root.Textures[index].Source != null - && Root.Images.Count > 0 + && Root.Images?.Count > 0 && Root.Images.Count > Root.Textures[index].Source.Id && string.IsNullOrEmpty(Root.Textures[index].Source.Value.Uri)) { @@ -89,6 +90,7 @@ private static int ComputeHash(byte[] data) private Dictionary CollectImageHashes() { + if (_gltfRoot.Images == null) return new Dictionary(); Dictionary hashes = new Dictionary(); int index = -1; From b53e86e08f3aae345831740e13738d83571c54d1 Mon Sep 17 00:00:00 2001 From: hybridherbst Date: Fri, 20 Sep 2024 15:41:51 +0200 Subject: [PATCH 051/117] clean up extensions inspector a bit --- Editor/Scripts/GLTFImporterInspector.cs | 33 ++++++++++++++++--------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/Editor/Scripts/GLTFImporterInspector.cs b/Editor/Scripts/GLTFImporterInspector.cs index c25ef0bc3..32363870a 100644 --- a/Editor/Scripts/GLTFImporterInspector.cs +++ b/Editor/Scripts/GLTFImporterInspector.cs @@ -39,7 +39,7 @@ public override void OnEnable() if (m_HasMaterialData.boolValue || m_HasTextureData.boolValue) AddTab(new GLTFAssetImporterTab(this, "Materials", MaterialInspectorGUI)); - AddTab(new GLTFAssetImporterTab(this, "Used Extensions", ExtensionInspectorGUI)); + AddTab(new GLTFAssetImporterTab(this, "Extensions", ExtensionInspectorGUI)); AddTab(new GLTFAssetImporterTab(this, "Info", AssetInfoInspectorGUI)); base.OnEnable(); @@ -371,6 +371,7 @@ void ExtractAsset(T subAsset, bool importImmediately) EditorGUILayout.EndFoldoutHeaderGroup(); } + private static GUIStyle _richTextWordWrap; private void AssetInfoInspectorGUI() { var t = target as GLTFImporter; @@ -379,18 +380,28 @@ private void AssetInfoInspectorGUI() if (assetProp == null) return; + if (_richTextWordWrap == null) + { + GUIStyle style = new GUIStyle(GUI.skin.label); + style.richText = true; + style.wordWrap = true; + _richTextWordWrap = style; + } + if (string.IsNullOrEmpty(t._gltfAsset)) { - EditorGUILayout.LabelField("[ No informations included ]"); + EditorGUILayout.LabelField("No asset information included in file", _richTextWordWrap); return; } - GUIStyle style = new GUIStyle(GUI.skin.label); - style.richText = true; - style.wordWrap = true; + EditorGUILayout.Space(); + var rect = GUILayoutUtility.GetRect(new GUIContent(t._gltfAsset), _richTextWordWrap); + EditorGUI.SelectableLabel(rect, t._gltfAsset, _richTextWordWrap); - var rect = GUILayoutUtility.GetRect(new GUIContent(t._gltfAsset), style); - EditorGUI.SelectableLabel(rect, t._gltfAsset, style); + EditorGUILayout.Space(); + EditorGUI.BeginDisabledGroup(true); + var mainAssetIdentifierProp = serializedObject.FindProperty(nameof(GLTFImporter._mainAssetIdentifier)); + EditorGUILayout.PropertyField(mainAssetIdentifierProp); } private void ExtensionInspectorGUI() @@ -398,11 +409,7 @@ private void ExtensionInspectorGUI() var t = target as GLTFImporter; if (!t) return; - EditorGUI.BeginDisabledGroup(true); - var mainAssetIdentifierProp = serializedObject.FindProperty(nameof(GLTFImporter._mainAssetIdentifier)); - EditorGUILayout.PropertyField(mainAssetIdentifierProp); - - EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._extensions)), new GUIContent("Extensions")); + EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._extensions)), new GUIContent("Extensions in file")); EditorGUI.EndDisabledGroup(); // TODO add list of supported extensions and links to docs @@ -410,6 +417,8 @@ private void ExtensionInspectorGUI() var registeredPlugins = GLTFSettings.GetDefaultSettings().ImportPlugins; var overridePlugins = t._importPlugins; + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Available Import Plugins", EditorStyles.boldLabel); EditorGUILayout.LabelField("OVERRIDE", EditorStyles.miniLabel, GUILayout.Width(60)); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("", GUILayout.Width(16)); From 99092088c87370c2066e05261c1a22f4d19925ab Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Fri, 20 Sep 2024 12:51:16 +0200 Subject: [PATCH 052/117] added prebuilded gltf pbrgraph and unlitgraph variant collection --- .../builtInRP_gltfVariantCollection.asset | 5773 +++++++++++++++++ ...builtInRP_gltfVariantCollection.asset.meta | 8 + .../ShaderGraph/gltfVariantCollection.asset | 5540 ++++++++++++++++ .../gltfVariantCollection.asset.meta | 8 + 4 files changed, 11329 insertions(+) create mode 100644 Runtime/Shaders/ShaderGraph/builtInRP_gltfVariantCollection.asset create mode 100644 Runtime/Shaders/ShaderGraph/builtInRP_gltfVariantCollection.asset.meta create mode 100644 Runtime/Shaders/ShaderGraph/gltfVariantCollection.asset create mode 100644 Runtime/Shaders/ShaderGraph/gltfVariantCollection.asset.meta diff --git a/Runtime/Shaders/ShaderGraph/builtInRP_gltfVariantCollection.asset b/Runtime/Shaders/ShaderGraph/builtInRP_gltfVariantCollection.asset new file mode 100644 index 000000000..6c24b8565 --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/builtInRP_gltfVariantCollection.asset @@ -0,0 +1,5773 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!200 &20000000 +ShaderVariantCollection: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: builtInRP_gltfVariantCollection + m_Shaders: + - first: {fileID: -6465566751694194690, guid: 478ce3626be7a5f4ea58d6b13f05a2e4, + type: 3} + second: + variants: + - keywords: INSTANCING_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _SHEEN_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _SPECULAR_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _BUILTIN_AlphaClip _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SHEEN_ON + passType: 0 + - keywords: _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SPECULAR_ON + passType: 0 + - keywords: _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _VOLUME_TRANSMISSION_ON + passType: 0 + - first: {fileID: -6465566751694194690, guid: 59541e6caf586ca4f96ccf48a4813a51, + type: 3} + second: + variants: + - keywords: INSTANCING_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_ALPHATEST_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip + passType: 0 + - keywords: INSTANCING_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_ALPHATEST_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_ALPHATEST_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _BUILTIN_AlphaClip + passType: 0 + - keywords: _BUILTIN_AlphaClip _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _TEXTURE_TRANSFORM_ON + passType: 0 diff --git a/Runtime/Shaders/ShaderGraph/builtInRP_gltfVariantCollection.asset.meta b/Runtime/Shaders/ShaderGraph/builtInRP_gltfVariantCollection.asset.meta new file mode 100644 index 000000000..4bbafb2e1 --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/builtInRP_gltfVariantCollection.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 504f02ace8ebc0d4cad8cdd76795eb04 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 20000000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Shaders/ShaderGraph/gltfVariantCollection.asset b/Runtime/Shaders/ShaderGraph/gltfVariantCollection.asset new file mode 100644 index 000000000..811e5d8ef --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/gltfVariantCollection.asset @@ -0,0 +1,5540 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!200 &20000000 +ShaderVariantCollection: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: gltfVariantCollection + m_Shaders: + - first: {fileID: -6465566751694194690, guid: 478ce3626be7a5f4ea58d6b13f05a2e4, + type: 3} + second: + variants: + - keywords: INSTANCING_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SPECULAR_ON + passType: 0 + - keywords: INSTANCING_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: INSTANCING_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: INSTANCING_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON + _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAMODULATE_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _SHEEN_ON + passType: 0 + - keywords: _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _SPECULAR_ON + passType: 0 + - keywords: _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHATEST_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _ALPHATEST_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _ALPHATEST_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SPECULAR_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _CLEARCOAT_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _CLEARCOAT_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SPECULAR_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _IRIDESCENCE_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SHEEN_ON + passType: 0 + - keywords: _SHEEN_ON _SPECULAR_ON + passType: 0 + - keywords: _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SHEEN_ON _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SHEEN_ON _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SHEEN_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SHEEN_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _SHEEN_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SHEEN_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SPECULAR_ON + passType: 0 + - keywords: _SPECULAR_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SPECULAR_ON _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _SPECULAR_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _SPECULAR_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _TEXTURE_TRANSFORM_ON _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _VOLUME_TRANSMISSION_ANDDISPERSION + passType: 0 + - keywords: _VOLUME_TRANSMISSION_ANDDISPERSION _VOLUME_TRANSMISSION_ON + passType: 0 + - keywords: _VOLUME_TRANSMISSION_ON + passType: 0 + - first: {fileID: -6465566751694194690, guid: 59541e6caf586ca4f96ccf48a4813a51, + type: 3} + second: + variants: + - keywords: INSTANCING_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAMODULATE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON + passType: 0 + - keywords: INSTANCING_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: INSTANCING_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAMODULATE_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHAPREMULTIPLY_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _ALPHATEST_ON + passType: 0 + - keywords: _ALPHATEST_ON _TEXTURE_TRANSFORM_ON + passType: 0 + - keywords: _TEXTURE_TRANSFORM_ON + passType: 0 diff --git a/Runtime/Shaders/ShaderGraph/gltfVariantCollection.asset.meta b/Runtime/Shaders/ShaderGraph/gltfVariantCollection.asset.meta new file mode 100644 index 000000000..36c98ad6e --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/gltfVariantCollection.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 720923435480c9147a45917af5150f7a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 20000000 + userData: + assetBundleName: + assetBundleVariant: From 86c6ee86380162d62b819a025071d872a150b4dd Mon Sep 17 00:00:00 2001 From: hybridherbst Date: Fri, 20 Sep 2024 15:47:08 +0200 Subject: [PATCH 053/117] clean up variant collection folders --- Runtime/Shaders/VariantCollections.meta | 8 ++++++++ .../UnityGLTFShaderVariantCollection-BiRP.asset} | 8 +++----- .../UnityGLTFShaderVariantCollection-BiRP.asset.meta} | 0 .../UnityGLTFShaderVariantCollection.asset} | 8 +++----- .../UnityGLTFShaderVariantCollection.asset.meta} | 0 5 files changed, 14 insertions(+), 10 deletions(-) create mode 100644 Runtime/Shaders/VariantCollections.meta rename Runtime/Shaders/{ShaderGraph/builtInRP_gltfVariantCollection.asset => VariantCollections/UnityGLTFShaderVariantCollection-BiRP.asset} (99%) rename Runtime/Shaders/{ShaderGraph/builtInRP_gltfVariantCollection.asset.meta => VariantCollections/UnityGLTFShaderVariantCollection-BiRP.asset.meta} (100%) rename Runtime/Shaders/{ShaderGraph/gltfVariantCollection.asset => VariantCollections/UnityGLTFShaderVariantCollection.asset} (99%) rename Runtime/Shaders/{ShaderGraph/gltfVariantCollection.asset.meta => VariantCollections/UnityGLTFShaderVariantCollection.asset.meta} (100%) diff --git a/Runtime/Shaders/VariantCollections.meta b/Runtime/Shaders/VariantCollections.meta new file mode 100644 index 000000000..84ea36405 --- /dev/null +++ b/Runtime/Shaders/VariantCollections.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 89874c2de1f18446f9d96a3b6ce5acf0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Shaders/ShaderGraph/builtInRP_gltfVariantCollection.asset b/Runtime/Shaders/VariantCollections/UnityGLTFShaderVariantCollection-BiRP.asset similarity index 99% rename from Runtime/Shaders/ShaderGraph/builtInRP_gltfVariantCollection.asset rename to Runtime/Shaders/VariantCollections/UnityGLTFShaderVariantCollection-BiRP.asset index 6c24b8565..b4657f838 100644 --- a/Runtime/Shaders/ShaderGraph/builtInRP_gltfVariantCollection.asset +++ b/Runtime/Shaders/VariantCollections/UnityGLTFShaderVariantCollection-BiRP.asset @@ -6,10 +6,9 @@ ShaderVariantCollection: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: builtInRP_gltfVariantCollection + m_Name: UnityGLTFShaderVariantCollection-BiRP m_Shaders: - - first: {fileID: -6465566751694194690, guid: 478ce3626be7a5f4ea58d6b13f05a2e4, - type: 3} + - first: {fileID: -6465566751694194690, guid: 478ce3626be7a5f4ea58d6b13f05a2e4, type: 3} second: variants: - keywords: INSTANCING_ON @@ -5701,8 +5700,7 @@ ShaderVariantCollection: passType: 0 - keywords: _VOLUME_TRANSMISSION_ON passType: 0 - - first: {fileID: -6465566751694194690, guid: 59541e6caf586ca4f96ccf48a4813a51, - type: 3} + - first: {fileID: -6465566751694194690, guid: 59541e6caf586ca4f96ccf48a4813a51, type: 3} second: variants: - keywords: INSTANCING_ON diff --git a/Runtime/Shaders/ShaderGraph/builtInRP_gltfVariantCollection.asset.meta b/Runtime/Shaders/VariantCollections/UnityGLTFShaderVariantCollection-BiRP.asset.meta similarity index 100% rename from Runtime/Shaders/ShaderGraph/builtInRP_gltfVariantCollection.asset.meta rename to Runtime/Shaders/VariantCollections/UnityGLTFShaderVariantCollection-BiRP.asset.meta diff --git a/Runtime/Shaders/ShaderGraph/gltfVariantCollection.asset b/Runtime/Shaders/VariantCollections/UnityGLTFShaderVariantCollection.asset similarity index 99% rename from Runtime/Shaders/ShaderGraph/gltfVariantCollection.asset rename to Runtime/Shaders/VariantCollections/UnityGLTFShaderVariantCollection.asset index 811e5d8ef..4f7d37b3f 100644 --- a/Runtime/Shaders/ShaderGraph/gltfVariantCollection.asset +++ b/Runtime/Shaders/VariantCollections/UnityGLTFShaderVariantCollection.asset @@ -6,10 +6,9 @@ ShaderVariantCollection: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: gltfVariantCollection + m_Name: UnityGLTFShaderVariantCollection m_Shaders: - - first: {fileID: -6465566751694194690, guid: 478ce3626be7a5f4ea58d6b13f05a2e4, - type: 3} + - first: {fileID: -6465566751694194690, guid: 478ce3626be7a5f4ea58d6b13f05a2e4, type: 3} second: variants: - keywords: INSTANCING_ON @@ -5471,8 +5470,7 @@ ShaderVariantCollection: passType: 0 - keywords: _VOLUME_TRANSMISSION_ON passType: 0 - - first: {fileID: -6465566751694194690, guid: 59541e6caf586ca4f96ccf48a4813a51, - type: 3} + - first: {fileID: -6465566751694194690, guid: 59541e6caf586ca4f96ccf48a4813a51, type: 3} second: variants: - keywords: INSTANCING_ON diff --git a/Runtime/Shaders/ShaderGraph/gltfVariantCollection.asset.meta b/Runtime/Shaders/VariantCollections/UnityGLTFShaderVariantCollection.asset.meta similarity index 100% rename from Runtime/Shaders/ShaderGraph/gltfVariantCollection.asset.meta rename to Runtime/Shaders/VariantCollections/UnityGLTFShaderVariantCollection.asset.meta From f8d9248b3fb5532ef382ab0392d27351a24e71da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Va=C5=A1ek?= Date: Thu, 27 Jun 2024 16:37:41 +0200 Subject: [PATCH 054/117] fix(Exporter): Fixed invalid texture hash --- Runtime/Scripts/GLTFSceneExporter.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Runtime/Scripts/GLTFSceneExporter.cs b/Runtime/Scripts/GLTFSceneExporter.cs index d969a4ed0..160ae7833 100644 --- a/Runtime/Scripts/GLTFSceneExporter.cs +++ b/Runtime/Scripts/GLTFSceneExporter.cs @@ -429,7 +429,9 @@ public override int GetHashCode() { // We dont want to use GetHashCode() for the texture here since it will change the hash after restarting the editor #if UNITY_EDITOR - var hashCode = Texture ? Texture.imageContentsHash.GetHashCode() : 0; + var hashCode = 0; + if (Texture != null) + hashCode = Texture.imageContentsHash.isValid ? Texture.imageContentsHash.GetHashCode() : Texture.GetHashCode(); #else var hashCode = Texture ? Texture.GetHashCode() : 0; #endif From ee956aca3d9853bd9eec0abf6f645e0dea53f311 Mon Sep 17 00:00:00 2001 From: hybridherbst Date: Fri, 20 Sep 2024 15:56:01 +0200 Subject: [PATCH 055/117] improve null check and readability --- Runtime/Scripts/GLTFSceneExporter.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Runtime/Scripts/GLTFSceneExporter.cs b/Runtime/Scripts/GLTFSceneExporter.cs index 160ae7833..34a86cf0d 100644 --- a/Runtime/Scripts/GLTFSceneExporter.cs +++ b/Runtime/Scripts/GLTFSceneExporter.cs @@ -430,8 +430,10 @@ public override int GetHashCode() // We dont want to use GetHashCode() for the texture here since it will change the hash after restarting the editor #if UNITY_EDITOR var hashCode = 0; - if (Texture != null) - hashCode = Texture.imageContentsHash.isValid ? Texture.imageContentsHash.GetHashCode() : Texture.GetHashCode(); + if (Texture && Texture.imageContentsHash.isValid) + hashCode = Texture.imageContentsHash.GetHashCode(); + else if (Texture) + hashCode = Texture.GetHashCode(); #else var hashCode = Texture ? Texture.GetHashCode() : 0; #endif From 72cd2f75b1d793698a976f2d69014495d2a595a1 Mon Sep 17 00:00:00 2001 From: hybridherbst Date: Fri, 20 Sep 2024 16:03:11 +0200 Subject: [PATCH 056/117] check for missing primitives on mesh import --- Runtime/Scripts/GLTFSceneImporter.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Runtime/Scripts/GLTFSceneImporter.cs b/Runtime/Scripts/GLTFSceneImporter.cs index e8d80ae00..c64c0151f 100644 --- a/Runtime/Scripts/GLTFSceneImporter.cs +++ b/Runtime/Scripts/GLTFSceneImporter.cs @@ -991,7 +991,7 @@ async Task CreateNodeComponentsAndChilds(bool ignoreMesh = false, bool onlyMesh } } - if (!ignoreMesh && node.Mesh != null) + if (!ignoreMesh && node.Mesh != null && node.Mesh.Value?.Primitives != null) { var mesh = node.Mesh.Value; await ConstructMesh(mesh, node.Mesh.Id, cancellationToken); From 550bc9e31fcdffa2da17d7740ebc60ab30020db4 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Tue, 24 Sep 2024 09:28:07 +0200 Subject: [PATCH 057/117] fixed gltfplugin serialization of enabled bool --- Editor/Scripts/GLTFSettingsInspector.cs | 3 +++ Runtime/Scripts/Plugins/Core/GltfPlugin.cs | 14 +++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Editor/Scripts/GLTFSettingsInspector.cs b/Editor/Scripts/GLTFSettingsInspector.cs index 9d09e5106..462196173 100644 --- a/Editor/Scripts/GLTFSettingsInspector.cs +++ b/Editor/Scripts/GLTFSettingsInspector.cs @@ -179,6 +179,7 @@ internal static void OnPluginsGUI(IEnumerable plugins, bool allowDis var expanded = SessionState.GetBool(key, false); using (new GUILayout.HorizontalScope()) { + bool wasEnabled = plugin.Enabled; if (plugin.AlwaysEnabled || !allowDisabling) { plugin.Enabled = true; @@ -192,6 +193,8 @@ internal static void OnPluginsGUI(IEnumerable plugins, bool allowDis { plugin.Enabled = GUILayout.Toggle(plugin.Enabled, "", GUILayout.Width(12)); } + if (plugin.Enabled != wasEnabled) + EditorUtility.SetDirty(plugin); var label = new GUIContent(displayName, plugin.Description); EditorGUI.BeginDisabledGroup(!plugin.Enabled); diff --git a/Runtime/Scripts/Plugins/Core/GltfPlugin.cs b/Runtime/Scripts/Plugins/Core/GltfPlugin.cs index 5a5f38b9f..0641826a8 100644 --- a/Runtime/Scripts/Plugins/Core/GltfPlugin.cs +++ b/Runtime/Scripts/Plugins/Core/GltfPlugin.cs @@ -36,7 +36,19 @@ public abstract class GLTFPlugin: ScriptableObject public abstract string DisplayName { get; } public virtual string Description => null; public virtual string HelpUrl => null; - public bool Enabled { get; set; } = true; + + [SerializeField] private bool enabled = true; + public virtual bool Enabled + { + get + { + return enabled || AlwaysEnabled; + } + set + { + enabled = value; + } + } public virtual bool EnabledByDefault => true; public virtual bool AlwaysEnabled => false; public virtual string Warning => null; From 093ecba0b7b202fdf0b0116f63e1347c9dcde60a Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Tue, 24 Sep 2024 09:38:53 +0200 Subject: [PATCH 058/117] added missing shader error output for TMP export --- .../Plugins/Experimental/TextMeshGameObjectExport.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Runtime/Scripts/Plugins/Experimental/TextMeshGameObjectExport.cs b/Runtime/Scripts/Plugins/Experimental/TextMeshGameObjectExport.cs index 817a69b47..701d205f7 100644 --- a/Runtime/Scripts/Plugins/Experimental/TextMeshGameObjectExport.cs +++ b/Runtime/Scripts/Plugins/Experimental/TextMeshGameObjectExport.cs @@ -50,6 +50,12 @@ public override bool BeforeMaterialExport(GLTFSceneExporter exporter, GLTFRoot g newS = UnityEditor.AssetDatabase.LoadAssetAtPath(UnityEditor.AssetDatabase.GUIDToAssetPath("fe393ace9b354375a9cb14cdbbc28be4")); // same as above } #endif + if (!newS) + { + Debug.LogError("TextMeshPro/Mobile/Distance Field shader not found. For exporting TextMeshPro GameObjects, please ensure this shader exist in build."); + return false; + } + material.shader = newS; if (!tempMat) tempMat = new Material(Shader.Find("Unlit/Transparent Cutout")); From a758a327e871ba566b37537a94368143ef383e43 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Tue, 24 Sep 2024 14:54:49 +0200 Subject: [PATCH 059/117] TMPExport: refactored and removed tempMat to be independent from existing of Transparent Cutout Shader --- .../Experimental/TextMeshGameObjectExport.cs | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/Runtime/Scripts/Plugins/Experimental/TextMeshGameObjectExport.cs b/Runtime/Scripts/Plugins/Experimental/TextMeshGameObjectExport.cs index 701d205f7..685f68eee 100644 --- a/Runtime/Scripts/Plugins/Experimental/TextMeshGameObjectExport.cs +++ b/Runtime/Scripts/Plugins/Experimental/TextMeshGameObjectExport.cs @@ -33,8 +33,7 @@ public override void AfterSceneExport(GLTFSceneExporter _, GLTFRoot __) kvp.Value.Release(); rtCache.Clear(); } - - private Material tempMat; + private Dictionary rtCache; public override bool BeforeMaterialExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Material material, GLTFMaterial materialNode) @@ -52,32 +51,41 @@ public override bool BeforeMaterialExport(GLTFSceneExporter exporter, GLTFRoot g #endif if (!newS) { - Debug.LogError("TextMeshPro/Mobile/Distance Field shader not found. For exporting TextMeshPro GameObjects, please ensure this shader exist in build."); + Debug.LogError("TrextMeshPro/Mobile/Distance Field shader not found. For exporting TextMeshPro GameObjects, please ensure this shader exist in build."); return false; } - - material.shader = newS; - - if (!tempMat) tempMat = new Material(Shader.Find("Unlit/Transparent Cutout")); + material.shader = newS; + var existingTex = material.mainTexture; if (rtCache == null) rtCache = new Dictionary(); if (!rtCache.ContainsKey(existingTex)) { - var rt = new RenderTexture(existingTex.width, existingTex.height, 0, RenderTextureFormat.ARGB32); + var rt = new RenderTexture(existingTex.width * 2, existingTex.height * 2, 0, RenderTextureFormat.ARGB32); + + float outlineSoftness = 0; if (material.HasProperty("_OutlineSoftness")) + { + outlineSoftness = material.GetFloat("_OutlineSoftness"); material.SetFloat("_OutlineSoftness", 0); + } // TODO figure out how to get this more smooth Graphics.Blit(existingTex, rt, material); rtCache[existingTex] = rt; rt.anisoLevel = 9; rt.filterMode = FilterMode.Bilinear; - } - - tempMat.mainTexture = rtCache[existingTex]; - + + if (material.HasProperty("_OutlineSoftness")) + { + material.SetFloat("_OutlineSoftness", outlineSoftness); + } - exporter.ExportUnlit(materialNode, tempMat); + } + + const string extname = KHR_MaterialsUnlitExtensionFactory.EXTENSION_NAME; + exporter.DeclareExtensionUsage( extname, true ); + materialNode.AddExtension( extname, new KHR_MaterialsUnlitExtension()); + materialNode.PbrMetallicRoughness = new PbrMetallicRoughness(); // export material // alternative: double sided, alpha clipping, white RGB + TMPro mainTex R channel as alpha @@ -85,6 +93,8 @@ public override bool BeforeMaterialExport(GLTFSceneExporter exporter, GLTFRoot g materialNode.PbrMetallicRoughness.BaseColorFactor = Color.white.ToNumericsColorLinear(); materialNode.AlphaMode = AlphaMode.BLEND; + materialNode.PbrMetallicRoughness.BaseColorTexture = exporter.ExportTextureInfo(rtCache[existingTex], GLTFSceneExporter.TextureMapType.BaseColor); + material.shader = s; #if UNITY_EDITOR && UNITY_2019_3_OR_NEWER UnityEditor.EditorUtility.ClearDirty(material); From 05700ae269cf5c2414547f829eb2eb62ff229079 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Tue, 24 Sep 2024 15:13:34 +0200 Subject: [PATCH 060/117] added hideininspector to enabled in gltfplugin --- Runtime/Scripts/Plugins/Core/GltfPlugin.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Runtime/Scripts/Plugins/Core/GltfPlugin.cs b/Runtime/Scripts/Plugins/Core/GltfPlugin.cs index 0641826a8..2815e305e 100644 --- a/Runtime/Scripts/Plugins/Core/GltfPlugin.cs +++ b/Runtime/Scripts/Plugins/Core/GltfPlugin.cs @@ -37,7 +37,7 @@ public abstract class GLTFPlugin: ScriptableObject public virtual string Description => null; public virtual string HelpUrl => null; - [SerializeField] private bool enabled = true; + [SerializeField] [HideInInspector] private bool enabled = true; public virtual bool Enabled { get From a8d8036477c9661980532821012073dd361c3d81 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Tue, 24 Sep 2024 15:16:25 +0200 Subject: [PATCH 061/117] CanvasExport: replaced legacy UnlitGraph-Transparent shader to UnlitGraph with transparent override --- Runtime/Scripts/Plugins/Experimental/CanvasExport.cs | 9 +++++++-- .../Experimental/CanvasExportCaptureMeshHelper.cs | 6 +++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Runtime/Scripts/Plugins/Experimental/CanvasExport.cs b/Runtime/Scripts/Plugins/Experimental/CanvasExport.cs index 7a031a11e..ef5234bec 100644 --- a/Runtime/Scripts/Plugins/Experimental/CanvasExport.cs +++ b/Runtime/Scripts/Plugins/Experimental/CanvasExport.cs @@ -27,10 +27,15 @@ public override void AfterNodeExport(GLTFSceneExporter exporter, GLTFRoot root, // emit mesh and material if this is a Graphic element in a Canvas that's not disabled if (!shader) { - shader = Shader.Find("Hidden/UnityGLTF/UnlitGraph-Transparent"); + shader = Shader.Find("UnityGLTF/UnlitGraph"); #if UNITY_EDITOR - if (!shader) shader = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath("83f2caca07949794fb997734c4b0520f")); + if (!shader) shader = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath("59541e6caf586ca4f96ccf48a4813a51")); #endif + if (!shader) + { + Debug.LogError("CanvasExport: Shader not found. Please make sure the UnityGLTF/UnlitGraph shader is included in build or add the UnityGLTFShaderVariantCollection in Project Settings/Graphics."); + return; + } } var g = transform; diff --git a/Runtime/Scripts/Plugins/Experimental/CanvasExportCaptureMeshHelper.cs b/Runtime/Scripts/Plugins/Experimental/CanvasExportCaptureMeshHelper.cs index 2157f8037..e470313f3 100644 --- a/Runtime/Scripts/Plugins/Experimental/CanvasExportCaptureMeshHelper.cs +++ b/Runtime/Scripts/Plugins/Experimental/CanvasExportCaptureMeshHelper.cs @@ -53,7 +53,11 @@ public bool GetMeshAndMaterial(out Mesh mesh, out Material material, Shader shad material = tmPro.fontSharedMaterial; } #endif - if (!material) material = new Material(shader); + if (!material) + { + material = new Material(shader); + material.SetOverrideTag("RenderType", "Transparent"); + } if (!hasTMPro) { From 5fa5d9531d1bd389fc84c77a1f8cf2c948472c64 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Wed, 25 Sep 2024 09:03:37 +0200 Subject: [PATCH 062/117] fixed typo --- .../Scripts/Plugins/Experimental/TextMeshGameObjectExport.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Runtime/Scripts/Plugins/Experimental/TextMeshGameObjectExport.cs b/Runtime/Scripts/Plugins/Experimental/TextMeshGameObjectExport.cs index 685f68eee..cb285390b 100644 --- a/Runtime/Scripts/Plugins/Experimental/TextMeshGameObjectExport.cs +++ b/Runtime/Scripts/Plugins/Experimental/TextMeshGameObjectExport.cs @@ -51,7 +51,7 @@ public override bool BeforeMaterialExport(GLTFSceneExporter exporter, GLTFRoot g #endif if (!newS) { - Debug.LogError("TrextMeshPro/Mobile/Distance Field shader not found. For exporting TextMeshPro GameObjects, please ensure this shader exist in build."); + Debug.LogError("TextMeshPro/Mobile/Distance Field shader not found. For exporting TextMeshPro GameObjects, please ensure this shader exist in build."); return false; } From 1d3dec5f89eba4fae8435ea88944eeeb3e947bf0 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Fri, 20 Sep 2024 12:01:00 +0200 Subject: [PATCH 063/117] added shaderpassstripping --- Editor/Scripts/GLTFSettingsInspector.cs | 14 ++++- .../ShaderGraph/ShaderPassStripping.cs | 63 +++++++++++++++++++ .../ShaderGraph/ShaderPassStripping.cs.meta | 3 + Runtime/Scripts/GLTFSettings.cs | 21 +++++++ 4 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 Editor/Scripts/ShaderGraph/ShaderPassStripping.cs create mode 100644 Editor/Scripts/ShaderGraph/ShaderPassStripping.cs.meta diff --git a/Editor/Scripts/GLTFSettingsInspector.cs b/Editor/Scripts/GLTFSettingsInspector.cs index 9d09e5106..1970e4add 100644 --- a/Editor/Scripts/GLTFSettingsInspector.cs +++ b/Editor/Scripts/GLTFSettingsInspector.cs @@ -58,11 +58,12 @@ private static void CalculateCacheStats() private static SerializedObject m_SerializedObject; private static int m_ActiveEditorIndex = 0; - private static readonly string[] m_TabNames = new string[2] { "Export", "Import" }; + private static readonly string[] m_TabNames = new string[3] { "Export", "Import", "Build" }; private static readonly string key = typeof(GLTFSettings) + "ActiveEditorIndex"; internal static void DrawGLTFSettingsGUI(GLTFSettings settings, SerializedObject m_SerializedObject) { + var shaderStripping = m_SerializedObject.FindProperty(nameof(GLTFSettings.shaderStrippingSettings)); EditorGUIUtility.labelWidth = 220; m_SerializedObject.Update(); @@ -81,6 +82,15 @@ internal static void DrawGLTFSettingsGUI(GLTFSettings settings, SerializedObject GUILayout.FlexibleSpace(); } + if (m_ActiveEditorIndex == 2) + { + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(shaderStripping); + if (EditorGUI.EndChangeCheck()) + m_SerializedObject.ApplyModifiedProperties(); + + } + else if (m_ActiveEditorIndex == 1) { var tooltip = "These plugins are enabled by default when importing a glTF file at runtime.\nFor assets imported in the editor, adjust plugin settings on the respective importer."; @@ -105,6 +115,8 @@ internal static void DrawGLTFSettingsGUI(GLTFSettings settings, SerializedObject { do { + if (prop.name == shaderStripping.name) + continue; EditorGUILayout.PropertyField(prop, true); switch (prop.name) { diff --git a/Editor/Scripts/ShaderGraph/ShaderPassStripping.cs b/Editor/Scripts/ShaderGraph/ShaderPassStripping.cs new file mode 100644 index 000000000..2926a7181 --- /dev/null +++ b/Editor/Scripts/ShaderGraph/ShaderPassStripping.cs @@ -0,0 +1,63 @@ +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEditor.Build; +using UnityEditor.Rendering; +using UnityGLTF; + +class ShaderPassStripping : IPreprocessShaders +{ + + private static readonly string[] buildInPasses = new[] + { + "BuiltIn Forward", + "BuiltIn ForwardAdd", + "BuiltIn Deferred", + }; + + private static readonly string[] urpDeferredPasses = new[] + { + "GBuffer", + }; + + private static readonly string[] urpForwardPasses = new[] + { + "Universal ForwardAdd", + // Ignore ForwardOnly pass, because it can also be used for Deferred rendering! + }; + + + // Use callbackOrder to set when Unity calls this shader preprocessor. Unity starts with the preprocessor that has the lowest callbackOrder value. + public int callbackOrder { get { return 0; } } + public GLTFSettings.ShaderStrippingSettings settings; + + public ShaderPassStripping() + { + if (GLTFSettings.TryGetSettings(out var s)) + settings = s.shaderStrippingSettings; + } + + private bool ShouldStripPass(ShaderSnippetData snippet) + { + if (settings.stripPasses.HasFlag(GLTFSettings.ShaderStrippingSettings.ShaderPassStrippingMode.URPDeferredPasses) && urpDeferredPasses.Contains(snippet.passName)) + return true; + if (settings.stripPasses.HasFlag(GLTFSettings.ShaderStrippingSettings.ShaderPassStrippingMode.URPForwardPasses) && urpForwardPasses.Contains(snippet.passName)) + return true; + if (settings.stripPasses.HasFlag(GLTFSettings.ShaderStrippingSettings.ShaderPassStrippingMode.BuildInPasses) && buildInPasses.Contains(snippet.passName)) + return true; + return false; + } + + public void OnProcessShader( + Shader shader, ShaderSnippetData snippet, IList data) + { + if (!settings.stripPassesFromAllShaders && !shader.name.Contains("UnityGLTF/PBRGraph")) + return; + + if (ShouldStripPass(snippet)) + { + Debug.LogFormat(LogType.Log, LogOption.NoStacktrace, null, "Stripping shader: {0} with pass: {1}", shader.name, snippet.passName); + data.Clear(); + } + } +} \ No newline at end of file diff --git a/Editor/Scripts/ShaderGraph/ShaderPassStripping.cs.meta b/Editor/Scripts/ShaderGraph/ShaderPassStripping.cs.meta new file mode 100644 index 000000000..5dca88d5a --- /dev/null +++ b/Editor/Scripts/ShaderGraph/ShaderPassStripping.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7d3ea702ff5a4e9d8f7dea1a97d69ee1 +timeCreated: 1726734748 \ No newline at end of file diff --git a/Runtime/Scripts/GLTFSettings.cs b/Runtime/Scripts/GLTFSettings.cs index e1f951bfc..7cc2e23ed 100644 --- a/Runtime/Scripts/GLTFSettings.cs +++ b/Runtime/Scripts/GLTFSettings.cs @@ -28,6 +28,27 @@ public enum BlendShapeExportPropertyFlags Tangent = 4, All = ~0 } + +#if UNITY_EDITOR + [Serializable] + public class ShaderStrippingSettings + { + [Flags] + public enum ShaderPassStrippingMode + { + None = 0, + BuildInPasses = 1, + URPForwardPasses = 2, + URPDeferredPasses = 4, + } + + public bool stripPassesFromAllShaders = false; + public ShaderPassStrippingMode stripPasses = ShaderPassStrippingMode.None; + } + + [Tooltip("Strip unnecessary shader passes from built-in and URP shader passes. This can drastically reduce shader compile time and size.")] + public ShaderStrippingSettings shaderStrippingSettings = new ShaderStrippingSettings(); +#endif // Plugins [SerializeField, HideInInspector] From 0f8954a2a2652c21468b5501e54728ae9e35e638 Mon Sep 17 00:00:00 2001 From: Felix Herbst Date: Thu, 26 Sep 2024 11:32:56 +0200 Subject: [PATCH 064/117] fix: ensure materials created with Create > UnityGLTF > Material use UnityGLTF as importer instead of glTFast --- Editor/Scripts/GLTFExportMenu.cs | 52 ++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/Editor/Scripts/GLTFExportMenu.cs b/Editor/Scripts/GLTFExportMenu.cs index b3f189f90..29b151e10 100644 --- a/Editor/Scripts/GLTFExportMenu.cs +++ b/Editor/Scripts/GLTFExportMenu.cs @@ -1,9 +1,12 @@ using System; using System.IO; using System.Linq; +using System.Text.RegularExpressions; using UnityEditor; +using UnityEditor.ProjectWindowCallback; using UnityEngine; using UnityEngine.SceneManagement; +using UnityEngine.Serialization; namespace UnityGLTF { @@ -145,7 +148,8 @@ internal static class GLTFCreateMenu [MenuItem("Assets/Create/UnityGLTF/Material", false)] private static void CreateNewAsset() { - ProjectWindowUtil.CreateAssetWithContent("New glTF Material.gltf", @"{ + var filename = "New glTF Material.gltf"; + var content = @"{ ""asset"": { ""generator"": ""UnityGLTF"", ""version"": ""2.0"" @@ -158,7 +162,51 @@ private static void CreateNewAsset() } } ] -}"); +}"; + + var importAction = ScriptableObject.CreateInstance(); + importAction.fileContent = content; + ProjectWindowUtil.StartNameEditingIfProjectWindowExists(0, importAction, filename, null, (string) null); + } + + // Based on DoCreateAssetWithContent.cs + private class AdjustImporterAction : EndNameEditAction + { + public string fileContent; + public override void Action(int instanceId, string pathName, string resourceFile) + { + var templateContent = SetLineEndings(fileContent, EditorSettings.lineEndingsForNewScripts); + File.WriteAllText(Path.GetFullPath(pathName), templateContent); + AssetDatabase.ImportAsset(pathName); + // This is why we're not using ProjectWindowUtil.CreateAssetWithContent directly: + // We want glTF materials created with UnityGLTF to also use UnityGLTF for importing. + AssetDatabase.SetImporterOverride(pathName); + var asset = AssetDatabase.LoadAssetAtPath(pathName, typeof (UnityEngine.Object)); + ProjectWindowUtil.ShowCreatedAsset(asset); + } + } + + // Unmodified from ProjectWindowUtil.cs:SetLineEndings (internal) + private static string SetLineEndings(string content, LineEndingsMode lineEndingsMode) + { + string replacement; + switch (lineEndingsMode) + { + case LineEndingsMode.OSNative: + replacement = Application.platform != RuntimePlatform.WindowsEditor ? "\n" : "\r\n"; + break; + case LineEndingsMode.Unix: + replacement = "\n"; + break; + case LineEndingsMode.Windows: + replacement = "\r\n"; + break; + default: + replacement = "\n"; + break; + } + content = Regex.Replace(content, "\\r\\n?|\\n", replacement); + return content; } } } From ba058cc918f6885d6032c58ee9a14a7e3829953c Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 26 Sep 2024 12:18:08 +0200 Subject: [PATCH 065/117] CanvasExport: fixed not rebuilded graphic mesh --- .../Plugins/Experimental/CanvasExportCaptureMeshHelper.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Runtime/Scripts/Plugins/Experimental/CanvasExportCaptureMeshHelper.cs b/Runtime/Scripts/Plugins/Experimental/CanvasExportCaptureMeshHelper.cs index e470313f3..8aaebd597 100644 --- a/Runtime/Scripts/Plugins/Experimental/CanvasExportCaptureMeshHelper.cs +++ b/Runtime/Scripts/Plugins/Experimental/CanvasExportCaptureMeshHelper.cs @@ -37,6 +37,7 @@ public bool GetMeshAndMaterial(out Mesh mesh, out Material material, Shader shad return false; } + g.SetVerticesDirty(); g.Rebuild(CanvasUpdate.PreRender); mesh = this.mesh; From 3908ccb4da5811b649e8960af884a565d92bfbcc Mon Sep 17 00:00:00 2001 From: Felix Herbst Date: Thu, 26 Sep 2024 14:44:28 +0200 Subject: [PATCH 066/117] wip material libraries renaming is problematic since imported name changes, inspector doesn't look great, preview doesn't always update on changes simplify Material Library inspector for now (editing the array only via glTF text file now) --- Editor/Scripts/GLTFExportMenu.cs | 2 +- Editor/Scripts/GLTFImporter.cs | 6 + Editor/Scripts/GLTFImporterInspector.cs | 30 ++- .../InternalShaderGraph/PBRGraphGUI.cs | 3 +- .../ShaderGraph/MaterialEditorBridge.cs | 30 ++- .../ShaderGraph/MaterialLibraryEditor.cs | 213 ++++++++++++++++++ .../ShaderGraph/MaterialLibraryEditor.cs.meta | 3 + .../Scripts/SceneImporter/MaterialLibrary.cs | 6 + .../SceneImporter/MaterialLibrary.cs.meta | 3 + 9 files changed, 281 insertions(+), 15 deletions(-) create mode 100644 Editor/Scripts/ShaderGraph/MaterialLibraryEditor.cs create mode 100644 Editor/Scripts/ShaderGraph/MaterialLibraryEditor.cs.meta create mode 100644 Runtime/Scripts/SceneImporter/MaterialLibrary.cs create mode 100644 Runtime/Scripts/SceneImporter/MaterialLibrary.cs.meta diff --git a/Editor/Scripts/GLTFExportMenu.cs b/Editor/Scripts/GLTFExportMenu.cs index 29b151e10..477ca6352 100644 --- a/Editor/Scripts/GLTFExportMenu.cs +++ b/Editor/Scripts/GLTFExportMenu.cs @@ -148,7 +148,7 @@ internal static class GLTFCreateMenu [MenuItem("Assets/Create/UnityGLTF/Material", false)] private static void CreateNewAsset() { - var filename = "New glTF Material.gltf"; + var filename = "glTF Material Library.gltf"; var content = @"{ ""asset"": { ""generator"": ""UnityGLTF"", diff --git a/Editor/Scripts/GLTFImporter.cs b/Editor/Scripts/GLTFImporter.cs index ec5a98758..2bb1e85ab 100644 --- a/Editor/Scripts/GLTFImporter.cs +++ b/Editor/Scripts/GLTFImporter.cs @@ -834,10 +834,16 @@ string GetUniqueName(string desiredName) } else if (m_Materials.Length > 0) { + // Create a "MaterialLibrary" asset that will hold one or more materials imported from glTF + var library = ScriptableObject.CreateInstance(); + ctx.AddObjectToAsset("material library", library); + ctx.SetMainObject(library); + /* if (m_Materials.Length == 1) { ctx.SetMainObject(m_Materials[0]); } + */ } #else // Set main asset diff --git a/Editor/Scripts/GLTFImporterInspector.cs b/Editor/Scripts/GLTFImporterInspector.cs index 32363870a..2fb02ca26 100644 --- a/Editor/Scripts/GLTFImporterInspector.cs +++ b/Editor/Scripts/GLTFImporterInspector.cs @@ -23,7 +23,7 @@ namespace UnityGLTF internal class GLTFImporterInspector : UnityGLTFTabbedEditor { private string[] _importNormalsNames; - + public override void OnEnable() { if (!this) return; @@ -507,6 +507,34 @@ private static string SanitizePath(string subAssetName) } return sb.ToString(); } + + private static Editor cachedMateriaLibraryEditor; + public override void DrawPreview(Rect previewArea) + { + // Is the root object a MaterialLibrary? Then draw the preview of that. + // Otherwise, use base implementation. + // get the assetimporter target object: + if (assetTarget is MaterialLibrary materialLibrary) + { + var subassets = AssetDatabase.LoadAllAssetsAtPath(AssetDatabase.GetAssetPath(materialLibrary)).Where(x => x is Material).ToArray(); + CreateCachedEditor(subassets, typeof(MaterialEditor), ref cachedMateriaLibraryEditor); + cachedMateriaLibraryEditor.DrawPreview(previewArea); + } + else + { + base.DrawPreview(previewArea); + } + } + + protected override bool useAssetDrawPreview + { + get + { + if (assetTarget is MaterialLibrary) + return false; + return true; + } + } } public static class GLTFImporterHelper diff --git a/Editor/Scripts/ShaderGraph/InternalShaderGraph/PBRGraphGUI.cs b/Editor/Scripts/ShaderGraph/InternalShaderGraph/PBRGraphGUI.cs index 04c7c3cb5..61d1531c1 100644 --- a/Editor/Scripts/ShaderGraph/InternalShaderGraph/PBRGraphGUI.cs +++ b/Editor/Scripts/ShaderGraph/InternalShaderGraph/PBRGraphGUI.cs @@ -72,7 +72,8 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro // looks like GetInstanceID() changes per import; so we use the path instead var path = AssetDatabase.GetAssetPath(targetMat) + "_" + targetMat.name; var materialEditingKey = nameof(PBRGraphGUI) + ".AllowGltfMaterialEditing." + path; - var isAllowed = SessionState.GetBool(materialEditingKey, false); + var parentAssetIsMaterialLibrary = !(AssetDatabase.LoadMainAssetAtPath(path) is GameObject); + var isAllowed = SessionState.GetBool(materialEditingKey, parentAssetIsMaterialLibrary); var allowMaterialEditing = EditorGUILayout.Toggle("Allow Editing", isAllowed); if (allowMaterialEditing != isAllowed) SessionState.SetBool(materialEditingKey, allowMaterialEditing); diff --git a/Editor/Scripts/ShaderGraph/MaterialEditorBridge.cs b/Editor/Scripts/ShaderGraph/MaterialEditorBridge.cs index a783b07e7..d5aa67d01 100644 --- a/Editor/Scripts/ShaderGraph/MaterialEditorBridge.cs +++ b/Editor/Scripts/ShaderGraph/MaterialEditorBridge.cs @@ -1,4 +1,6 @@ +using System.Collections.Generic; using System.IO; +using System.Linq; using UnityEditor; using UnityEngine; @@ -11,8 +13,8 @@ private static void ConnectGltfExporterToPbrGraphGUI() { PBRGraphGUI.ImmutableMaterialChanged += OnImmutableMaterialChanged; } - - private static void OnImmutableMaterialChanged(Material material) + + internal static void OnImmutableMaterialChanged(Material material) { if (!material) return; if (!AssetDatabase.Contains(material)) return; @@ -23,20 +25,23 @@ private static void OnImmutableMaterialChanged(Material material) // var mainAsset = AssetDatabase.LoadMainAssetAtPath(assetPath); // Transform[] rootTransforms = null; - var exporter = new GLTFSceneExporter((Transform[]) null, new ExportContext()); - // load all materials from mainAsset var importer = AssetImporter.GetAtPath(assetPath) as GLTFImporter; if (!importer) return; + var materialsToExport = importer.m_Materials.Where(x => x is Material).Cast().ToList(); + + SaveAssetWithMaterials(assetPath, materialsToExport); + } + + internal static void SaveAssetWithMaterials(string assetPath, List materials) + { + var importer = AssetImporter.GetAtPath(assetPath) as GLTFImporter; + var exporter = new GLTFSceneExporter((Transform[]) null, new ExportContext()); + // load all materials from mainAsset // var allObjects = AssetDatabase.LoadAllAssetsAtPath(assetPath); - foreach (var obj in importer.m_Materials) + foreach (var mat in materials) { - if (!(obj is Material mat)) - { - // TODO warn that there are extra objects we can't store right now - continue; - } - + if (!mat) continue; exporter.ExportMaterial(mat); } @@ -54,7 +59,7 @@ private static void OnImmutableMaterialChanged(Material material) var importedTextures = importer.m_Textures; // If these don't match, we could only try by name... not ideal. // They may not match due to different sampler settings etc. - if (exportedTextures.Count == importedTextures.Length) + if (exportedTextures?.Count == importedTextures.Length) { for (int i = 0; i < exportedTextures.Count; i++) { @@ -90,5 +95,6 @@ private static void OnImmutableMaterialChanged(Material material) } }; } + } } diff --git a/Editor/Scripts/ShaderGraph/MaterialLibraryEditor.cs b/Editor/Scripts/ShaderGraph/MaterialLibraryEditor.cs new file mode 100644 index 000000000..629e4ec50 --- /dev/null +++ b/Editor/Scripts/ShaderGraph/MaterialLibraryEditor.cs @@ -0,0 +1,213 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor; +using UnityEngine; +using UnityEngine.UIElements; +using Object = UnityEngine.Object; + +namespace UnityGLTF +{ + [CustomEditor(typeof(MaterialLibrary))] + public class MaterialLibraryEditor: Editor + { + public override VisualElement CreateInspectorGUI() + { + var v = new VisualElement(); + + var materialLibrary = (MaterialLibrary) target; + var assetPath = AssetDatabase.GetAssetPath(materialLibrary); + + void AddMaterial() + { + // parse the glTF file, append an entry to the materials list + var subAssets = AssetDatabase.LoadAllAssetsAtPath(assetPath).Where(x => x is Material).Cast().ToList(); + var count = subAssets.Count; + var newMaterial = new Material(Shader.Find("UnityGLTF/PBRGraph")); + newMaterial.name = $"Material {count}"; + subAssets.Add(newMaterial); + + // write the file out again + MaterialEditorBridge.SaveAssetWithMaterials(assetPath, subAssets); + OnEnable(); + Repaint(); + }; + + var btn = new Button(AddMaterial) + { + text = "Add Material" + }; + var editBtn = new Button(() => + { + var path = AssetDatabase.GetAssetPath(target); + if (string.IsNullOrEmpty(path)) return; + EditorUtility.OpenWithDefaultApp(path); + }) + { + text = "Edit File" + }; + v.Add(btn); + v.Add(editBtn); + + var itemSize = 48; + var list = new ListView(); + list.headerTitle = "Materials"; + list.showFoldoutHeader = true; + list.showAddRemoveFooter = true; + list.fixedItemHeight = itemSize; + list.makeItem = () => new MaterialElement(null, material => + { + MaterialEditorBridge.SaveAssetWithMaterials(assetPath, AssetDatabase.LoadAllAssetsAtPath(assetPath).Where(x => x is Material).Cast().ToList()); + }); + list.bindItem = (e, i) => + { + if (i >= materials.Length) return; + if (materials == null) return; + var mat = materials[i]; + if (!mat) return; + var elem = e as MaterialElement; + elem.SetMaterial(mat); + }; + list.itemsSource = materials; + list.itemsRemoved += (removedItems) => + { + var removedMaterials = new List(); + foreach (var item in removedItems) + { + var mat = materials[item]; + if (mat) removedMaterials.Add(mat); + } + MaterialEditorBridge.SaveAssetWithMaterials(AssetDatabase.GetAssetPath(target), materials.Except(removedMaterials).ToList()); + OnEnable(); + Repaint(); + }; + list.itemsAdded += (addedItems) => + { + var addedMaterials = new List(); + foreach (var item in addedItems) + { + var mat = new Material(Shader.Find("UnityGLTF/PBRGraph")); + addedMaterials.Add(mat); + } + MaterialEditorBridge.SaveAssetWithMaterials(AssetDatabase.GetAssetPath(target), materials.Concat(addedMaterials).ToList()); + OnEnable(); + Repaint(); + }; + + // v.Add(list); + + return v; + } + + class MaterialElement: VisualElement + { + private Material material; + public MaterialElement(Material mat, Action changeCallback) + { + var itemSize = 48; + style.flexDirection = FlexDirection.Row; + style.flexGrow = 0; + style.marginRight = 8; + + var img = new Image + { + style = + { + width = itemSize + } + }; + Add(img); + var lbl = new TextField() + { + isDelayed = true, + style = + { + unityTextAlign = TextAnchor.MiddleLeft, + height = itemSize + } + }; + lbl.bindingPath = "m_Name"; + Add(lbl); + + // allow starting to drag on the image + img.RegisterCallback(e => + { + DragAndDrop.PrepareStartDrag(); + DragAndDrop.objectReferences = new Object[] { material }; + DragAndDrop.StartDrag("Dragging Materials"); + e.StopPropagation(); + }); + + // on double click on the text, make the text editable + lbl.RegisterCallback(e => + { + if (e.clickCount != 2) return; + }); + + lbl.RegisterCallback>(e => + { + material.name = e.newValue; + changeCallback?.Invoke(material); + }); + } + + public void SetMaterial(Material mat) + { + material = mat; + var label = this.Q(); + label.SetValueWithoutNotify(mat ? mat.name : ""); + var img = this.Q(); + if (!mat) + { + img.image = null; + return; + } + var preview = AssetPreview.GetAssetPreview(mat); + img.image = preview; + if (!preview) + { + var instanceId = mat.GetInstanceID(); + void WaitForPreview() + { + if (AssetPreview.IsLoadingAssetPreview(instanceId)) return; + EditorApplication.update -= WaitForPreview; + img.image = AssetPreview.GetAssetPreview(mat); + } + EditorApplication.update += WaitForPreview; + } + } + } + + private Editor materialEditor; + private Material[] materials; + private void OnEnable() + { + if (!target) return; + if (!(target is MaterialLibrary)) return; + + materials = AssetDatabase + .LoadAllAssetsAtPath(AssetDatabase.GetAssetPath(target)) + .Where(x => x is Material) + .Cast() + .ToArray(); + + materialEditor = null; + } + + public override void DrawPreview(Rect previewArea) + { + CreateCachedEditor(materials, typeof(MaterialEditor), ref materialEditor); + if (!materialEditor) return; + if (!materialEditor.target) return; + foreach (var t in materialEditor.targets) + { + if (t) continue; + OnEnable(); + return; + } + materialEditor.DrawPreview(previewArea); + } + + public override bool HasPreviewGUI() => true; + } +} \ No newline at end of file diff --git a/Editor/Scripts/ShaderGraph/MaterialLibraryEditor.cs.meta b/Editor/Scripts/ShaderGraph/MaterialLibraryEditor.cs.meta new file mode 100644 index 000000000..ac5bb0adb --- /dev/null +++ b/Editor/Scripts/ShaderGraph/MaterialLibraryEditor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 39fe50f46da644868c83c8d18e1df7cb +timeCreated: 1727343866 \ No newline at end of file diff --git a/Runtime/Scripts/SceneImporter/MaterialLibrary.cs b/Runtime/Scripts/SceneImporter/MaterialLibrary.cs new file mode 100644 index 000000000..6560d4038 --- /dev/null +++ b/Runtime/Scripts/SceneImporter/MaterialLibrary.cs @@ -0,0 +1,6 @@ +using UnityEngine; + +namespace UnityGLTF +{ + public class MaterialLibrary: ScriptableObject { } +} \ No newline at end of file diff --git a/Runtime/Scripts/SceneImporter/MaterialLibrary.cs.meta b/Runtime/Scripts/SceneImporter/MaterialLibrary.cs.meta new file mode 100644 index 000000000..f4ded5720 --- /dev/null +++ b/Runtime/Scripts/SceneImporter/MaterialLibrary.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: dae4451576d948249604afd3847354bb +timeCreated: 1727343650 \ No newline at end of file From d6099cb6608a35955f15e9a517a5f3de07c0a180 Mon Sep 17 00:00:00 2001 From: Felix Herbst Date: Thu, 26 Sep 2024 16:45:06 +0200 Subject: [PATCH 067/117] naming and formatting cleanup --- .../ShaderGraph/ShaderPassStripping.cs | 95 ++++++++++--------- Runtime/Scripts/GLTFSettings.cs | 2 +- 2 files changed, 49 insertions(+), 48 deletions(-) diff --git a/Editor/Scripts/ShaderGraph/ShaderPassStripping.cs b/Editor/Scripts/ShaderGraph/ShaderPassStripping.cs index 2926a7181..cd5efaac5 100644 --- a/Editor/Scripts/ShaderGraph/ShaderPassStripping.cs +++ b/Editor/Scripts/ShaderGraph/ShaderPassStripping.cs @@ -3,61 +3,62 @@ using UnityEngine; using UnityEditor.Build; using UnityEditor.Rendering; -using UnityGLTF; -class ShaderPassStripping : IPreprocessShaders +namespace UnityGLTF { - - private static readonly string[] buildInPasses = new[] + internal class ShaderPassStripping : IPreprocessShaders { - "BuiltIn Forward", - "BuiltIn ForwardAdd", - "BuiltIn Deferred", - }; - - private static readonly string[] urpDeferredPasses = new[] - { - "GBuffer", - }; + private static readonly string[] builtInPasses = new[] + { + "BuiltIn Forward", + "BuiltIn ForwardAdd", + "BuiltIn Deferred", + }; + + private static readonly string[] urpDeferredPasses = new[] + { + "GBuffer", + }; - private static readonly string[] urpForwardPasses = new[] - { - "Universal ForwardAdd", - // Ignore ForwardOnly pass, because it can also be used for Deferred rendering! - }; + private static readonly string[] urpForwardPasses = new[] + { + "Universal ForwardAdd", + // Ignore ForwardOnly pass, because it can also be used for Deferred rendering! + }; - - // Use callbackOrder to set when Unity calls this shader preprocessor. Unity starts with the preprocessor that has the lowest callbackOrder value. - public int callbackOrder { get { return 0; } } - public GLTFSettings.ShaderStrippingSettings settings; - - public ShaderPassStripping() - { - if (GLTFSettings.TryGetSettings(out var s)) - settings = s.shaderStrippingSettings; - } + + // Use callbackOrder to set when Unity calls this shader preprocessor. Unity starts with the preprocessor that has the lowest callbackOrder value. + public int callbackOrder => 0; + public GLTFSettings.ShaderStrippingSettings settings; + + public ShaderPassStripping() + { + if (GLTFSettings.TryGetSettings(out var s)) + settings = s.shaderStrippingSettings; + } - private bool ShouldStripPass(ShaderSnippetData snippet) - { - if (settings.stripPasses.HasFlag(GLTFSettings.ShaderStrippingSettings.ShaderPassStrippingMode.URPDeferredPasses) && urpDeferredPasses.Contains(snippet.passName)) - return true; - if (settings.stripPasses.HasFlag(GLTFSettings.ShaderStrippingSettings.ShaderPassStrippingMode.URPForwardPasses) && urpForwardPasses.Contains(snippet.passName)) - return true; - if (settings.stripPasses.HasFlag(GLTFSettings.ShaderStrippingSettings.ShaderPassStrippingMode.BuildInPasses) && buildInPasses.Contains(snippet.passName)) - return true; - return false; - } - - public void OnProcessShader( - Shader shader, ShaderSnippetData snippet, IList data) - { - if (!settings.stripPassesFromAllShaders && !shader.name.Contains("UnityGLTF/PBRGraph")) - return; + private bool ShouldStripPass(ShaderSnippetData snippet) + { + if (settings.stripPasses.HasFlag(GLTFSettings.ShaderStrippingSettings.ShaderPassStrippingMode.URPDeferredPasses) && urpDeferredPasses.Contains(snippet.passName)) + return true; + if (settings.stripPasses.HasFlag(GLTFSettings.ShaderStrippingSettings.ShaderPassStrippingMode.URPForwardPasses) && urpForwardPasses.Contains(snippet.passName)) + return true; + if (settings.stripPasses.HasFlag(GLTFSettings.ShaderStrippingSettings.ShaderPassStrippingMode.BuiltInPasses) && builtInPasses.Contains(snippet.passName)) + return true; + return false; + } - if (ShouldStripPass(snippet)) + public void OnProcessShader( + Shader shader, ShaderSnippetData snippet, IList data) { - Debug.LogFormat(LogType.Log, LogOption.NoStacktrace, null, "Stripping shader: {0} with pass: {1}", shader.name, snippet.passName); - data.Clear(); + if (!settings.stripPassesFromAllShaders && !shader.name.Contains("UnityGLTF/PBRGraph")) + return; + + if (ShouldStripPass(snippet)) + { + Debug.LogFormat(LogType.Log, LogOption.NoStacktrace, null, "Stripping UnityGLTF shader: {0} with pass: {1}", shader.name, snippet.passName); + data.Clear(); + } } } } \ No newline at end of file diff --git a/Runtime/Scripts/GLTFSettings.cs b/Runtime/Scripts/GLTFSettings.cs index 7cc2e23ed..2309c7b76 100644 --- a/Runtime/Scripts/GLTFSettings.cs +++ b/Runtime/Scripts/GLTFSettings.cs @@ -37,7 +37,7 @@ public class ShaderStrippingSettings public enum ShaderPassStrippingMode { None = 0, - BuildInPasses = 1, + BuiltInPasses = 1, URPForwardPasses = 2, URPDeferredPasses = 4, } From 5ea6e306eb9a28c0125e503dfcae1a1f3190aef3 Mon Sep 17 00:00:00 2001 From: Felix Herbst Date: Thu, 26 Sep 2024 17:17:37 +0200 Subject: [PATCH 068/117] fix: null checks when constructing texture from stream --- Runtime/Scripts/SceneImporter/ImporterTextures.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Runtime/Scripts/SceneImporter/ImporterTextures.cs b/Runtime/Scripts/SceneImporter/ImporterTextures.cs index f502dba72..6489b35c0 100644 --- a/Runtime/Scripts/SceneImporter/ImporterTextures.cs +++ b/Runtime/Scripts/SceneImporter/ImporterTextures.cs @@ -336,8 +336,7 @@ protected virtual async Task ConstructUnityTexture(Stream stream, bool markGpuOn texture = null; Debug.Log(LogType.Error, "Buffer file " + invalidStream.RelativeFilePath + " not found in path: " + invalidStream.AbsoluteFilePath+ $" (File: {_gltfFileName})"); } - else - if (_nativeBuffers.TryGetValue(stream, out var nativeData)) + else if (stream != null && _nativeBuffers.TryGetValue(stream, out var nativeData)) { var bufferView = await GetBufferData(image.BufferView.Value.Buffer); await YieldOnTimeoutAndThrowOnLowMemory(); @@ -355,7 +354,7 @@ protected virtual async Task ConstructUnityTexture(Stream stream, bool markGpuOn } } } - else + else if (stream != null) { byte[] buffer = new byte[stream.Length]; From 159c8ad3fe64e7723f3278c9d878d026d8718950 Mon Sep 17 00:00:00 2001 From: Felix Herbst Date: Thu, 26 Sep 2024 18:07:26 +0200 Subject: [PATCH 069/117] fix regression in glTF + bin + images import --- Runtime/Scripts/SceneImporter/ImporterTextures.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Runtime/Scripts/SceneImporter/ImporterTextures.cs b/Runtime/Scripts/SceneImporter/ImporterTextures.cs index 6489b35c0..d586b74f2 100644 --- a/Runtime/Scripts/SceneImporter/ImporterTextures.cs +++ b/Runtime/Scripts/SceneImporter/ImporterTextures.cs @@ -102,7 +102,7 @@ private Dictionary CollectImageHashes() if (image.BufferView == null) continue; - var stream = GetImageStream(image); + var stream = GetImageStream(image, -1); if (stream == null || stream.Length == 0) continue; @@ -135,7 +135,7 @@ private void CheckForDuplicateImages() _imageDeduplicationLinks[h.Key] = reverseHashes[h.Value]; } - private Stream GetImageStream(GLTFImage image) + private Stream GetImageStream(GLTFImage image, int imageCacheIndex) { Stream stream = null; if (image.Uri == null) @@ -161,6 +161,10 @@ private Stream GetImageStream(GLTFImage image) { stream = new MemoryStream(bufferData, 0, bufferData.Length, false, true); } + else + { + stream = _assetCache.ImageStreamCache[imageCacheIndex]; + } } return stream; @@ -173,7 +177,7 @@ protected async Task ConstructImage(GLTFImage image, int imageCacheIndex, bool m if (_assetCache.ImageCache[imageCacheIndex] == null) { - Stream stream = GetImageStream(image); + Stream stream = GetImageStream(image, imageCacheIndex); await YieldOnTimeoutAndThrowOnLowMemory(); await ConstructUnityTexture(stream, markGpuOnly, isLinear, isNormal, image, imageCacheIndex); } From 5877c70d8e48648cc7c6283e958ad20559b55576 Mon Sep 17 00:00:00 2001 From: Felix Herbst Date: Thu, 26 Sep 2024 18:07:45 +0200 Subject: [PATCH 070/117] feat: ability to export selected resources as glTF without scene --- Editor/Scripts/GLTFExportMenu.cs | 52 +++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 11 deletions(-) diff --git a/Editor/Scripts/GLTFExportMenu.cs b/Editor/Scripts/GLTFExportMenu.cs index 477ca6352..275fc0727 100644 --- a/Editor/Scripts/GLTFExportMenu.cs +++ b/Editor/Scripts/GLTFExportMenu.cs @@ -7,6 +7,7 @@ using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.Serialization; +using Object = UnityEngine.Object; namespace UnityGLTF { @@ -31,29 +32,41 @@ public static string RetrieveTexturePath(UnityEngine.Texture texture) return path; } - private static bool TryGetExportNameAndRootTransformsFromSelection(out string sceneName, out Transform[] rootTransforms) + private static bool TryGetExportNameAndRootTransformsFromSelection(out string sceneName, out Transform[] rootTransforms, out Object[] rootResources) { if (Selection.transforms.Length > 1) { sceneName = SceneManager.GetActiveScene().name; rootTransforms = Selection.transforms; + rootResources = null; return true; } if (Selection.transforms.Length == 1) { sceneName = Selection.activeGameObject.name; rootTransforms = Selection.transforms; + rootResources = null; return true; } if (Selection.objects.Any() && Selection.objects.All(x => x is GameObject)) { sceneName = Selection.objects.First().name; rootTransforms = Selection.objects.Select(x => (x as GameObject).transform).ToArray(); + rootResources = null; + return true; + } + + if (Selection.objects.Any() && Selection.objects.All(x => x is Material)) + { + sceneName = "Material Library"; + rootTransforms = null; + rootResources = Selection.objects; return true; } sceneName = null; rootTransforms = null; + rootResources = null; return false; } @@ -61,39 +74,39 @@ private static bool TryGetExportNameAndRootTransformsFromSelection(out string sc [MenuItem(MenuPrefixGameObject + ExportGltf, true)] private static bool ExportSelectedValidate() { - return TryGetExportNameAndRootTransformsFromSelection(out _, out _); + return TryGetExportNameAndRootTransformsFromSelection(out _, out _, out _); } [MenuItem(MenuPrefix + ExportGltf)] [MenuItem(MenuPrefixGameObject + ExportGltf, false, 33)] private static void ExportSelected() { - if (!TryGetExportNameAndRootTransformsFromSelection(out var sceneName, out var rootTransforms)) + if (!TryGetExportNameAndRootTransformsFromSelection(out var sceneName, out var rootTransforms, out var rootResources)) { Debug.LogError("Can't export: selection is empty"); return; } - Export(rootTransforms, false, sceneName); + Export(rootTransforms, rootResources, false, sceneName); } [MenuItem(MenuPrefix + ExportGlb, true)] [MenuItem(MenuPrefixGameObject + ExportGlb, true)] private static bool ExportGLBSelectedValidate() { - return TryGetExportNameAndRootTransformsFromSelection(out _, out _); + return TryGetExportNameAndRootTransformsFromSelection(out _, out _, out _); } [MenuItem(MenuPrefix + ExportGlb)] [MenuItem(MenuPrefixGameObject + ExportGlb, false, 34)] private static void ExportGLBSelected() { - if (!TryGetExportNameAndRootTransformsFromSelection(out var sceneName, out var rootTransforms)) + if (!TryGetExportNameAndRootTransformsFromSelection(out var sceneName, out var rootTransforms, out var rootResources)) { Debug.LogError("Can't export: selection is empty"); return; } - Export(rootTransforms, true, sceneName); + Export(rootTransforms, rootResources, true, sceneName); } [MenuItem(MenuPrefix + "Export active scene as glTF")] @@ -103,7 +116,7 @@ private static void ExportScene() var gameObjects = scene.GetRootGameObjects(); var transforms = Array.ConvertAll(gameObjects, gameObject => gameObject.transform); - Export(transforms, false, scene.name); + Export(transforms, null, false, scene.name); } [MenuItem(MenuPrefix + "Export active scene as GLB")] @@ -113,15 +126,31 @@ private static void ExportSceneGLB() var gameObjects = scene.GetRootGameObjects(); var transforms = Array.ConvertAll(gameObjects, gameObject => gameObject.transform); - Export(transforms, true, scene.name); + Export(transforms, null, true, scene.name); } - private static void Export(Transform[] transforms, bool binary, string sceneName) + private static void Export(Transform[] transforms, Object[] resources, bool binary, string sceneName) { var settings = GLTFSettings.GetOrCreateSettings(); var exportOptions = new ExportContext(settings) { TexturePathRetriever = RetrieveTexturePath }; var exporter = new GLTFSceneExporter(transforms, exportOptions); + if (resources != null) + { + exportOptions.AfterSceneExport += (sceneExporter, _) => + { + foreach (var resource in resources) + { + if (resource is Material material) + sceneExporter.ExportMaterial(material); + if (resource is Texture2D texture) + sceneExporter.ExportTexture(texture, "unknown"); + if (resource is Mesh mesh) + sceneExporter.ExportMesh(mesh); + } + }; + } + var invokedByShortcut = Event.current?.type == EventType.KeyDown; var path = settings.SaveFolderPath; if (!invokedByShortcut || !Directory.Exists(path)) @@ -132,7 +161,8 @@ private static void Export(Transform[] transforms, bool binary, string sceneName var ext = binary ? ".glb" : ".gltf"; var resultFile = GLTFSceneExporter.GetFileName(path, sceneName, ext); settings.SaveFolderPath = path; - if(binary) + + if (binary) exporter.SaveGLB(path, sceneName); else exporter.SaveGLTFandBin(path, sceneName); From 8f6293db96997e5333b78eab382c52ec934f81f1 Mon Sep 17 00:00:00 2001 From: pfcDorn Date: Fri, 27 Sep 2024 15:25:11 +0200 Subject: [PATCH 071/117] PbrGraphGUI: commented out VERTEX_COLOR keyword check > currently not used in PbrGraph --- .../Scripts/ShaderGraph/InternalShaderGraph/PBRGraphGUI.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Editor/Scripts/ShaderGraph/InternalShaderGraph/PBRGraphGUI.cs b/Editor/Scripts/ShaderGraph/InternalShaderGraph/PBRGraphGUI.cs index 61d1531c1..e367bf100 100644 --- a/Editor/Scripts/ShaderGraph/InternalShaderGraph/PBRGraphGUI.cs +++ b/Editor/Scripts/ShaderGraph/InternalShaderGraph/PBRGraphGUI.cs @@ -285,7 +285,10 @@ private void DrawGameObjectInfo(Material targetMaterial) EditorGUILayout.Toggle("Has Vertex Colors", currentMaterialInfo.hasColor); EditorGUI.EndDisabledGroup(); - if (currentMaterialInfo.hasColor != targetMaterial.IsKeywordEnabled("_VERTEX_COLORS_ON")) + /* + > _VERTEX_COLORS_ON is currently not used in the shader, so we can't really check for it + + if (currentMaterialInfo.hasColor != targetMaterial.IsKeywordEnabled("_VERTEX_COLORS_ON")) { EditorGUI.indentLevel++; var msg = ""; @@ -318,7 +321,7 @@ private void DrawGameObjectInfo(Material targetMaterial) }); } EditorGUI.indentLevel--; - } + }*/ EditorGUI.BeginDisabledGroup(true); EditorGUILayout.Toggle("Has UV0", currentMaterialInfo.hasUV0); From 5f94f2b10f6da79338a91c447532c7c8b54840ea Mon Sep 17 00:00:00 2001 From: hybridherbst Date: Sun, 6 Oct 2024 19:41:01 +0200 Subject: [PATCH 072/117] changelog/version --- CHANGELOG.md | 34 +++++++++++++++++++++++++++++++++- package.json | 2 +- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a5dd89711..0d483bd12 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,38 @@ 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). +## [2.14.0] - 2024-10-06 + +- fix: potential NullReferenceExceptions when importing material-only, mesh-only or texture-only glTF files +- fix: check for missing primitives on mesh import instead of throwing +- fix: GLTFSceneImporter reference counting properly tracks Animation data now +- fix: incorrect callback subscription in glTF Material editing +- fix: CanvasExport plugin was not working correctly in WebGL builds +- fix: rare case of incorrect texture export with invalid texture content hash (thanks @Vaso64) +- fix: ensure materials created with Create > UnityGLTF > Material use UnityGLTF as importer instead of glTFast +- fix: Canvas export plugin was not correctly updating the canvas mesh in builds +- fix: Particle Bake export plugin was not working correctly in 2022.3 +- fix: Import/Export plugin enabled/disabled state was not correctly serialized in some cases +- fix: TMPro export plugin uses UnityGLTF shaders for export now instead of adding another dependency +- fix: GLTFSceneImporter can be called without external data loader, but will warn that external data will not be loaded. Previously, a data loader had to be added even when it was not needed. +- change: log warning when exporting UV0 and UV1 with more than 2 components, as glTF only supports 2-component UVs +- change: simplify sampler usage in PBRGraph where possible to prevent warnings in later Unity versions +- change: simplify PBRGraph variants to reduce shader variant count. This removes a separate option to use vertex color. +- change: material-only files are now imported as MaterialLibrary assets with Material sub-assets, even when only a single material is present +- add: log more meaningful exception messages on import +- add: sheen support for PBRGraph +- add: PBRGraph UI properly shows sheen and dispersion properties +- add: allow flipping humanoid root bone on import to support more avatar types (like Meta Avatars) +- add: new "Info" tab in GLTFImporter for asset information (generator, copyright, etc.) about the imported file +- add: ShaderOverride is now public on GLTFComponent +- add: new GLTFSceneImporter constructor overload for easier loading of files from streams +- add: meshes and textures can now be deduplicated on import, since many exporters don't properly instance them +- add: UV2 is exported as 2-, 3-, or 4-component texture coordinate. 3- and 4-component texture coordinates are not in the core glTF spec, but widely supported by implementations. +- add: complete PBRGraph and UnlitGraph Shader Variant Collections for easier runtime import and export of glTF files +- add: options for shader pass stripping in builds to reduce variant count and compilation times +- add: ability to export a set of materials as material-only glTF or glb file +- add: option to add new materials to glTF Material Libraries (material-only files) + ## [2.13.0] - 2024-07-23 - fix: empty or invalid root transforms should not be exported @@ -15,7 +47,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - fix: added missing generate mitmaps to ktx texture load (#752) - fix: bone name mapping for exact names was not applied on humanoid import (#751) - fix: added missing using system for uwp target (#757) -- feat: allow importing non-standard VEC3 and VEC4 TEXCOORD_n data and convert it to VEC2 +- add: allow importing non-standard VEC3 and VEC4 TEXCOORD_n data and convert it to VEC2 - add: exposed texture readwrite enabled and generate mipmaps option to importer - change: removed log for loaded node count mismatch, extensions can modify node counts so the log was misleading - change: removed loaded texture count error log: when multiple samplers are used for one texture, the textures will be duplicated diff --git a/package.json b/package.json index 4b0d07e17..d65dc92be 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "org.khronos.unitygltf", "displayName": "UnityGLTF", - "version": "2.13.0", + "version": "2.14.0", "unity": "2020.3", "description": "Import and export glTF 2.0 assets, both in the editor and at runtime. Excellent support for animations, materials, extensions. Can be extended with plugins for both import and export use cases.", "repository": { From 39fef1b1ea20cb8518c245af5ca5967c5746a4bd Mon Sep 17 00:00:00 2001 From: hybridherbst Date: Sun, 6 Oct 2024 20:19:13 +0200 Subject: [PATCH 073/117] fix nullref with asset info when there's actually no asset info --- Editor/Scripts/GLTFImporter.cs | 2 +- Runtime/Scripts/GLTFSceneImporter.cs | 9 ++++++++- Runtime/Scripts/SceneImporter/ImporterAnimation.cs | 8 ++++---- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Editor/Scripts/GLTFImporter.cs b/Editor/Scripts/GLTFImporter.cs index 2bb1e85ab..ac723dbc4 100644 --- a/Editor/Scripts/GLTFImporter.cs +++ b/Editor/Scripts/GLTFImporter.cs @@ -969,7 +969,7 @@ private void CreateGLTFScene(GLTFImportContext context, out GameObject scene, scene = loader.LastLoadedScene; animationClips = loader.CreatedAnimationClips; - _gltfAsset = loader.Root.Asset.ToString(true); + _gltfAsset = loader.Root.Asset?.ToString(true); importer = loader; } } diff --git a/Runtime/Scripts/GLTFSceneImporter.cs b/Runtime/Scripts/GLTFSceneImporter.cs index c64c0151f..2acc94c9e 100644 --- a/Runtime/Scripts/GLTFSceneImporter.cs +++ b/Runtime/Scripts/GLTFSceneImporter.cs @@ -203,6 +203,8 @@ public GameObject LastLoadedScene get { return _lastLoadedScene; } } + private bool AnyAnimationTimeNotIncreasing; + public TextureCacheData[] TextureCache => _assetCache.TextureCache; public Texture2D[] InvalidImageCache => _assetCache.InvalidImageCache; public MaterialCacheData[] MaterialCache => _assetCache.MaterialCache; @@ -223,7 +225,7 @@ public GameObject LastLoadedScene /// Whether to keep a CPU-side copy of the texture after upload to GPU /// /// - /// This is is necessary when a texture is used with different sampler states, as Unity doesn't allow setting + /// This is necessary when a texture is used with different sampler states, as Unity doesn't allow setting /// of filter and wrap modes separately form the texture object. Setting this to false will omit making a copy /// of a texture in that case and use the original texture's sampler state wherever it's referenced; this is /// appropriate in cases such as the filter and wrap modes being specified in the shader instead @@ -1350,6 +1352,11 @@ protected virtual async Task ConstructScene(GLTFScene scene, bool showSceneObj, #else Debug.Log(LogType.Warning, "glTF scene contains animations but com.unity.modules.animation isn't installed. Install that module to import animations."); #endif + if (AnyAnimationTimeNotIncreasing) + { + Debug.Log(LogType.Warning, $"Time of some subsequent animation keyframes is not increasing in {_gltfFileName} (glTF-Validator error ACCESSOR_ANIMATION_INPUT_NON_INCREASING)"); + } + CreatedAnimationClips = constructedClips.ToArray(); } } diff --git a/Runtime/Scripts/SceneImporter/ImporterAnimation.cs b/Runtime/Scripts/SceneImporter/ImporterAnimation.cs index 79029c28e..f1f5ec62b 100644 --- a/Runtime/Scripts/SceneImporter/ImporterAnimation.cs +++ b/Runtime/Scripts/SceneImporter/ImporterAnimation.cs @@ -205,8 +205,8 @@ private void SetTangentMode(Keyframe[] keyframes, int keyframeIndex, Interpolati key.outTangent = 0; break; case InterpolationType.LINEAR: - key.inTangent = GetCurveKeyframeLeftLinearSlope(keyframes, keyframeIndex); - key.outTangent = GetCurveKeyframeLeftLinearSlope(keyframes, keyframeIndex + 1); + key.inTangent = GetCurveKeyframeLeftLinearSlope(keyframes, keyframeIndex, ref AnyAnimationTimeNotIncreasing); + key.outTangent = GetCurveKeyframeLeftLinearSlope(keyframes, keyframeIndex + 1, ref AnyAnimationTimeNotIncreasing); break; case InterpolationType.STEP: key.inTangent = float.PositiveInfinity; @@ -218,7 +218,7 @@ private void SetTangentMode(Keyframe[] keyframes, int keyframeIndex, Interpolati keyframes[keyframeIndex] = key; } - private static float GetCurveKeyframeLeftLinearSlope(Keyframe[] keyframes, int keyframeIndex) + private static float GetCurveKeyframeLeftLinearSlope(Keyframe[] keyframes, int keyframeIndex, ref bool anyNonCreasing) { if (keyframeIndex <= 0 || keyframeIndex >= keyframes.Length) { @@ -233,7 +233,7 @@ private static float GetCurveKeyframeLeftLinearSlope(Keyframe[] keyframes, int k var k = keyframes[keyframeIndex]; k.time = keyframes[keyframeIndex - 1].time + Mathf.Epsilon + 1 / 100f; keyframes[keyframeIndex] = k; - Debug.Log(LogType.Warning, "Time of subsequent animation keyframes is not increasing (glTF-Validator error ACCESSOR_ANIMATION_INPUT_NON_INCREASING)"); + anyNonCreasing = true; return float.PositiveInfinity; } return valueDelta / timeDelta; From 5c7f616d509eac1ce3d783d0292b5739b20073c3 Mon Sep 17 00:00:00 2001 From: hybridherbst Date: Mon, 14 Oct 2024 14:29:38 +0200 Subject: [PATCH 074/117] fix: ParticleSystemBakeMeshOptions was only introduced in 2022.3.11f1 fixes https://github.com/KhronosGroup/UnityGLTF/issues/789 --- Runtime/Scripts/Plugins/Experimental/BakeParticleSystem.cs | 2 +- .../Experimental/UnityGLTF.Plugins.Experimental.asmdef | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Runtime/Scripts/Plugins/Experimental/BakeParticleSystem.cs b/Runtime/Scripts/Plugins/Experimental/BakeParticleSystem.cs index 0d7c0a8b2..a2dd01a6c 100644 --- a/Runtime/Scripts/Plugins/Experimental/BakeParticleSystem.cs +++ b/Runtime/Scripts/Plugins/Experimental/BakeParticleSystem.cs @@ -35,7 +35,7 @@ public override void BeforeNodeExport(GLTFSceneExporter exporter, GLTFRoot gltfR var previousSortMode = p.sortMode; if (p.sortMode == ParticleSystemSortMode.None) p.sortMode = ParticleSystemSortMode.Distance; -#if UNITY_2022_3_OR_NEWER +#if UNITY_2022_3_11_OR_NEWER p.BakeMesh(m, Camera.main, ParticleSystemBakeMeshOptions.Default); #else p.BakeMesh(m, Camera.main, true); diff --git a/Runtime/Scripts/Plugins/Experimental/UnityGLTF.Plugins.Experimental.asmdef b/Runtime/Scripts/Plugins/Experimental/UnityGLTF.Plugins.Experimental.asmdef index 8efde89f1..3718d4eb4 100644 --- a/Runtime/Scripts/Plugins/Experimental/UnityGLTF.Plugins.Experimental.asmdef +++ b/Runtime/Scripts/Plugins/Experimental/UnityGLTF.Plugins.Experimental.asmdef @@ -25,6 +25,11 @@ "name": "com.unity.ugui", "expression": "2.0.0", "define": "HAVE_TMPRO" + }, + { + "name": "Unity", + "expression": "2022.3.11", + "define": "UNITY_2022_3_11_OR_NEWER" } ], "noEngineReferences": false From b81d3dd9e233f99b2abff4d8046e71ac365bcfa1 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 5 Sep 2024 13:44:32 +0200 Subject: [PATCH 075/117] VisionOS: set volume and transmission materials to AlphaMode.Blend --- Editor/Scripts/Internal/GLTFMaterialHelper.cs | 6 +- .../SceneImporter/ImporterMaterials.cs | 6 + .../ShaderGraph/MaterialXColor.shadersubgraph | 504 ++++++++++++++++++ .../MaterialXColor.shadersubgraph.meta | 10 + .../ShaderGraph/MaterialXFloat.shadersubgraph | 470 ++++++++++++++++ .../MaterialXFloat.shadersubgraph.meta | 10 + 6 files changed, 1005 insertions(+), 1 deletion(-) create mode 100644 Runtime/Shaders/ShaderGraph/MaterialXColor.shadersubgraph create mode 100644 Runtime/Shaders/ShaderGraph/MaterialXColor.shadersubgraph.meta create mode 100644 Runtime/Shaders/ShaderGraph/MaterialXFloat.shadersubgraph create mode 100644 Runtime/Shaders/ShaderGraph/MaterialXFloat.shadersubgraph.meta diff --git a/Editor/Scripts/Internal/GLTFMaterialHelper.cs b/Editor/Scripts/Internal/GLTFMaterialHelper.cs index 213c562bd..4b89d42e1 100644 --- a/Editor/Scripts/Internal/GLTFMaterialHelper.cs +++ b/Editor/Scripts/Internal/GLTFMaterialHelper.cs @@ -92,7 +92,11 @@ public static void ValidateMaterialKeywords(Material material) var blendMode = material.GetInt(blendModeProp); isImplicitBlendMode = blendMode == 0; } - +#if UNITY_VISIONOS + // VisionOS doesn't support our roughness opaque rendererfeature, + // so on material import we set Volume/Transmission Materials to Transparent + isImplicitBlendMode = false; +#endif if (isImplicitBlendMode) { if (material.IsKeywordEnabled("_VOLUME_TRANSMISSION_ON")) diff --git a/Runtime/Scripts/SceneImporter/ImporterMaterials.cs b/Runtime/Scripts/SceneImporter/ImporterMaterials.cs index f56d6aba7..fd9842a7b 100644 --- a/Runtime/Scripts/SceneImporter/ImporterMaterials.cs +++ b/Runtime/Scripts/SceneImporter/ImporterMaterials.cs @@ -389,6 +389,9 @@ void SetTransformKeyword() } mapper.Material.renderQueue = 3000; +#if UNITY_VISIONOS + mapper.AlphaMode = AlphaMode.BLEND; +#endif bool hasDispersion = false; if (transmissionMapper is IDispersionMap dispersionMapper) { @@ -420,6 +423,9 @@ void SetTransformKeyword() var volume = GetVolume(def); if (volume != null) { +#if UNITY_VISIONOS + mapper.AlphaMode = AlphaMode.BLEND; +#endif volumeMapper.AttenuationColor = QualitySettings.activeColorSpace == ColorSpace.Linear ? volume.attenuationColor.ToUnityColorLinear() : volume.attenuationColor.ToUnityColorRaw(); volumeMapper.AttenuationDistance = volume.attenuationDistance; volumeMapper.ThicknessFactor = volume.thicknessFactor; diff --git a/Runtime/Shaders/ShaderGraph/MaterialXColor.shadersubgraph b/Runtime/Shaders/ShaderGraph/MaterialXColor.shadersubgraph new file mode 100644 index 000000000..bed15f1ea --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/MaterialXColor.shadersubgraph @@ -0,0 +1,504 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "ac5263c74457497482f2da920e8fb514", + "m_Properties": [ + { + "m_Id": "7ee743d523e54c4b8ca04d0c47ed1ca0" + }, + { + "m_Id": "c02e5fa4cb8145c89a15c4d8ec10bbb7" + } + ], + "m_Keywords": [ + { + "m_Id": "20697f59ec314a63b44bf31c52e20ada" + } + ], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "6e5f10acb14341a9b044d4563289542f" + } + ], + "m_Nodes": [ + { + "m_Id": "a6dbdc84b6ba4406bad382beb0d8fcdb" + }, + { + "m_Id": "3120af26e3b54fde97c64310eab10123" + }, + { + "m_Id": "d03aec4a794747ab8839610d81affe0e" + }, + { + "m_Id": "46633d27bc9743928c7af2581549bda5" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "3120af26e3b54fde97c64310eab10123" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a6dbdc84b6ba4406bad382beb0d8fcdb" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "46633d27bc9743928c7af2581549bda5" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3120af26e3b54fde97c64310eab10123" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d03aec4a794747ab8839610d81affe0e" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3120af26e3b54fde97c64310eab10123" + }, + "m_SlotId": 2 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Sub Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "a6dbdc84b6ba4406bad382beb0d8fcdb" + }, + "m_ActiveTargets": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "0bd33350cd2b4876ad4663d23554f2cf", + "m_Id": 1, + "m_DisplayName": "Out_Vector4", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "OutVector4", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ShaderKeyword", + "m_ObjectId": "20697f59ec314a63b44bf31c52e20ada", + "m_Guid": { + "m_GuidSerialized": "1d5b1a6a-75f0-450b-9a60-e35df192360a" + }, + "m_Name": "MaterialX", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "MaterialX", + "m_DefaultReferenceName": "MATERIALX", + "m_OverrideReferenceName": "MATERIAL_X", + "m_GeneratePropertyBlock": false, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_KeywordType": 0, + "m_KeywordDefinition": 2, + "m_KeywordScope": 1, + "m_KeywordStages": 63, + "m_Entries": [], + "m_Value": 0, + "m_IsEditable": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "25d663ae75924bf5b5c4b6eadf515680", + "m_Id": 1, + "m_DisplayName": "On", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "On", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "2a5a515ab48f4c56ab5acd7404b113f2", + "m_Id": 2, + "m_DisplayName": "Off", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Off", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.KeywordNode", + "m_ObjectId": "3120af26e3b54fde97c64310eab10123", + "m_Group": { + "m_Id": "" + }, + "m_Name": "MaterialX", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -256.5714416503906, + "y": -161.142822265625, + "width": 136.00001525878907, + "height": 119.42855072021485 + } + }, + "m_Slots": [ + { + "m_Id": "4f54bfc6ee584ff4baa450691ae87688" + }, + { + "m_Id": "25d663ae75924bf5b5c4b6eadf515680" + }, + { + "m_Id": "2a5a515ab48f4c56ab5acd7404b113f2" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Keyword": { + "m_Id": "20697f59ec314a63b44bf31c52e20ada" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "46633d27bc9743928c7af2581549bda5", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -390.8571472167969, + "y": -178.28570556640626, + "width": 90.85714721679688, + "height": 34.28570556640625 + } + }, + "m_Slots": [ + { + "m_Id": "a43d630e6a3448e48db89fc2d4cdb22b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "7ee743d523e54c4b8ca04d0c47ed1ca0" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "4f54bfc6ee584ff4baa450691ae87688", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "6e5f10acb14341a9b044d4563289542f", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "7ee743d523e54c4b8ca04d0c47ed1ca0" + }, + { + "m_Id": "c02e5fa4cb8145c89a15c4d8ec10bbb7" + }, + { + "m_Id": "20697f59ec314a63b44bf31c52e20ada" + } + ] +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "7ee743d523e54c4b8ca04d0c47ed1ca0", + "m_Guid": { + "m_GuidSerialized": "3cb0cd83-a7a9-4b64-958e-cd52500a3ead" + }, + "m_Name": "on", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "on", + "m_DefaultReferenceName": "_on", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "a43d630e6a3448e48db89fc2d4cdb22b", + "m_Id": 0, + "m_DisplayName": "on", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphOutputNode", + "m_ObjectId": "a6dbdc84b6ba4406bad382beb0d8fcdb", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Output", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -20.0, + "y": -200.0, + "width": 121.71429443359375, + "height": 78.28570556640625 + } + }, + "m_Slots": [ + { + "m_Id": "0bd33350cd2b4876ad4663d23554f2cf" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "IsFirstSlotValid": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "b61a2b0c16de4f9e850a4878cb1974d5", + "m_Id": 0, + "m_DisplayName": "off", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "c02e5fa4cb8145c89a15c4d8ec10bbb7", + "m_Guid": { + "m_GuidSerialized": "593c34ad-595d-4873-9906-a721e2b263af" + }, + "m_Name": "off", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "off", + "m_DefaultReferenceName": "_off", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "d03aec4a794747ab8839610d81affe0e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -390.85711669921877, + "y": -73.71426391601563, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "b61a2b0c16de4f9e850a4878cb1974d5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "c02e5fa4cb8145c89a15c4d8ec10bbb7" + } +} + diff --git a/Runtime/Shaders/ShaderGraph/MaterialXColor.shadersubgraph.meta b/Runtime/Shaders/ShaderGraph/MaterialXColor.shadersubgraph.meta new file mode 100644 index 000000000..77b9b0b17 --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/MaterialXColor.shadersubgraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: ecd8fe7a9dd0c844987e0e6f5dbca66b +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 60072b568d64c40a485e0fc55012dc9f, type: 3} diff --git a/Runtime/Shaders/ShaderGraph/MaterialXFloat.shadersubgraph b/Runtime/Shaders/ShaderGraph/MaterialXFloat.shadersubgraph new file mode 100644 index 000000000..03f4d3758 --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/MaterialXFloat.shadersubgraph @@ -0,0 +1,470 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "1a98fffdf09b42ca90d4b96033fc9706", + "m_Properties": [ + { + "m_Id": "c3e74a32d60f4ef5a5a10f674fa9b14b" + }, + { + "m_Id": "f8a9cea70de84d859e899b08a805908e" + } + ], + "m_Keywords": [ + { + "m_Id": "1eec88dd76764e758b763b70ec29197c" + } + ], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "a58f774cb1c348d48bd5c32277ca08e1" + } + ], + "m_Nodes": [ + { + "m_Id": "d7e2bd379f0048cfa5e24e1862683687" + }, + { + "m_Id": "124dc2d455d64111a7e426821b98b39a" + }, + { + "m_Id": "5d6b76e4b4e4465ba05df1369c172236" + }, + { + "m_Id": "91df0436bd38468ca134052a19f1e7c8" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "124dc2d455d64111a7e426821b98b39a" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d7e2bd379f0048cfa5e24e1862683687" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5d6b76e4b4e4465ba05df1369c172236" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "124dc2d455d64111a7e426821b98b39a" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "91df0436bd38468ca134052a19f1e7c8" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "124dc2d455d64111a7e426821b98b39a" + }, + "m_SlotId": 2 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Sub Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "d7e2bd379f0048cfa5e24e1862683687" + }, + "m_ActiveTargets": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.KeywordNode", + "m_ObjectId": "124dc2d455d64111a7e426821b98b39a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "MaterialX", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -161.71432495117188, + "y": -46.28571701049805, + "width": 136.00003051757813, + "height": 119.42855834960938 + } + }, + "m_Slots": [ + { + "m_Id": "b03480a90118473f8a9bfdef2e9211f5" + }, + { + "m_Id": "f700dc5f61814f4981c77e07a781332c" + }, + { + "m_Id": "42bded8050e54842b9eea4889a0facca" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Keyword": { + "m_Id": "1eec88dd76764e758b763b70ec29197c" + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ShaderKeyword", + "m_ObjectId": "1eec88dd76764e758b763b70ec29197c", + "m_Guid": { + "m_GuidSerialized": "1d5b1a6a-75f0-450b-9a60-e35df192360a" + }, + "m_Name": "MaterialX", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "MaterialX", + "m_DefaultReferenceName": "MATERIALX", + "m_OverrideReferenceName": "MATERIAL_X", + "m_GeneratePropertyBlock": false, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_KeywordType": 0, + "m_KeywordDefinition": 2, + "m_KeywordScope": 1, + "m_KeywordStages": 63, + "m_Entries": [], + "m_Value": 0, + "m_IsEditable": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2747d0262ffb405490ce92216ff6bf1f", + "m_Id": 0, + "m_DisplayName": "on", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "42bded8050e54842b9eea4889a0facca", + "m_Id": 2, + "m_DisplayName": "Off", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Off", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "5d6b76e4b4e4465ba05df1369c172236", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -390.3429260253906, + "y": -130.11428833007813, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "2747d0262ffb405490ce92216ff6bf1f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "c3e74a32d60f4ef5a5a10f674fa9b14b" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "91df0436bd38468ca134052a19f1e7c8", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -360.1143798828125, + "y": -46.65712356567383, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "b5c835fb807646c497a2ebc4f5ad4449" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "f8a9cea70de84d859e899b08a805908e" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "a58f774cb1c348d48bd5c32277ca08e1", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "1eec88dd76764e758b763b70ec29197c" + }, + { + "m_Id": "c3e74a32d60f4ef5a5a10f674fa9b14b" + }, + { + "m_Id": "f8a9cea70de84d859e899b08a805908e" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b03480a90118473f8a9bfdef2e9211f5", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b5c835fb807646c497a2ebc4f5ad4449", + "m_Id": 0, + "m_DisplayName": "off", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "c3e74a32d60f4ef5a5a10f674fa9b14b", + "m_Guid": { + "m_GuidSerialized": "1db17dee-af74-4ea9-9434-abd16afecddf" + }, + "m_Name": "on", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "on", + "m_DefaultReferenceName": "_on", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphOutputNode", + "m_ObjectId": "d7e2bd379f0048cfa5e24e1862683687", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Output", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 16.000017166137697, + "y": -124.57141876220703, + "width": 121.71424865722656, + "height": 78.28570556640625 + } + }, + "m_Slots": [ + { + "m_Id": "fc5cae9d1cf44ba694eb93817bdaf605" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "IsFirstSlotValid": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "f700dc5f61814f4981c77e07a781332c", + "m_Id": 1, + "m_DisplayName": "On", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "On", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "f8a9cea70de84d859e899b08a805908e", + "m_Guid": { + "m_GuidSerialized": "87733e81-8ef3-4fbd-945f-ded9e5740f22" + }, + "m_Name": "off", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "off", + "m_DefaultReferenceName": "_off", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "fc5cae9d1cf44ba694eb93817bdaf605", + "m_Id": 1, + "m_DisplayName": "result", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "result", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + diff --git a/Runtime/Shaders/ShaderGraph/MaterialXFloat.shadersubgraph.meta b/Runtime/Shaders/ShaderGraph/MaterialXFloat.shadersubgraph.meta new file mode 100644 index 000000000..49c900963 --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/MaterialXFloat.shadersubgraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 23cb9569ab894e84991a92e0d19a08f1 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 60072b568d64c40a485e0fc55012dc9f, type: 3} From aebb4f0bb799346b6b1282b6bd6f4c9188137c19 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 17 Oct 2024 10:02:46 +0200 Subject: [PATCH 076/117] added materialX branches to pbrgraph shader --- .../Shaders/ShaderGraph/PBRGraph.shadergraph | 605 +++++++++++++++++- 1 file changed, 601 insertions(+), 4 deletions(-) diff --git a/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph b/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph index f6918f0e0..3c8c33b0c 100644 --- a/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph +++ b/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph @@ -1065,6 +1065,18 @@ }, { "m_Id": "4bc913b499a44afda3a530605c0efa7a" + }, + { + "m_Id": "a9ff3e0cc2b54563b0a06d2a3504f3c7" + }, + { + "m_Id": "2fa5a1df3f734360ab26c4e53083a858" + }, + { + "m_Id": "61ca6ba5b39e428f8bb6d0dcdb61f005" + }, + { + "m_Id": "32097d5b1434427898a16ac03de4df35" } ], "m_GroupDatas": [ @@ -2066,6 +2078,34 @@ "m_SlotId": -532409878 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2fa5a1df3f734360ab26c4e53083a858" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7bb3ca3024ad410f8014cc5f609eb114" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "32097d5b1434427898a16ac03de4df35" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "61ca6ba5b39e428f8bb6d0dcdb61f005" + }, + "m_SlotId": 1568544868 + } + }, { "m_OutputSlot": { "m_Node": { @@ -2313,11 +2353,25 @@ }, "m_InputSlot": { "m_Node": { - "m_Id": "7bb3ca3024ad410f8014cc5f609eb114" + "m_Id": "32097d5b1434427898a16ac03de4df35" }, "m_SlotId": 0 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "48e1f0f7e59646d1a499fe64fa9ee1f5" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "61ca6ba5b39e428f8bb6d0dcdb61f005" + }, + "m_SlotId": 857709315 + } + }, { "m_OutputSlot": { "m_Node": { @@ -2710,6 +2764,20 @@ "m_SlotId": 0 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "61ca6ba5b39e428f8bb6d0dcdb61f005" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2fa5a1df3f734360ab26c4e53083a858" + }, + "m_SlotId": 0 + } + }, { "m_OutputSlot": { "m_Node": { @@ -3718,6 +3786,20 @@ "m_SlotId": 1 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9ecb55f770a6449c8eaa8094328a5b01" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a9ff3e0cc2b54563b0a06d2a3504f3c7" + }, + "m_SlotId": -2010648849 + } + }, { "m_OutputSlot": { "m_Node": { @@ -3914,6 +3996,20 @@ "m_SlotId": 2 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a9ff3e0cc2b54563b0a06d2a3504f3c7" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9b2840bea8984c22acc50b45cb5c235e" + }, + "m_SlotId": 1 + } + }, { "m_OutputSlot": { "m_Node": { @@ -4236,6 +4332,20 @@ "m_SlotId": 2 } }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ba9a2ca04ce041e38e549ca34918e30c" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "32097d5b1434427898a16ac03de4df35" + }, + "m_SlotId": 1 + } + }, { "m_OutputSlot": { "m_Node": { @@ -4931,9 +5041,9 @@ }, "m_InputSlot": { "m_Node": { - "m_Id": "9b2840bea8984c22acc50b45cb5c235e" + "m_Id": "a9ff3e0cc2b54563b0a06d2a3504f3c7" }, - "m_SlotId": 1 + "m_SlotId": -1618224757 } }, { @@ -7845,6 +7955,31 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "13d926debe19476b9ebfd708c3f26aee", + "m_Id": 1, + "m_DisplayName": "Out_Vector4", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "OutVector4", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", @@ -8974,6 +9109,30 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "1c84f49930364df39af1439b108606d8", + "m_Id": 1, + "m_DisplayName": "", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -9826,6 +9985,21 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "234e484c898b41f39f9905b26926ae1b", + "m_Id": 857709315, + "m_DisplayName": "off", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_off", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -10512,6 +10686,54 @@ "m_DropdownSelectedEntries": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "2a4a83f8ee174959b0a66b0f1765c63c", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", @@ -11351,6 +11573,41 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RedirectNodeData", + "m_ObjectId": "2fa5a1df3f734360ab26c4e53083a858", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Redirect Node", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2867.4287109375, + "y": 137.14285278320313, + "width": 55.999755859375, + "height": 23.999969482421876 + } + }, + "m_Slots": [ + { + "m_Id": "748addc8c7a84255bfff4d2b1bedcb6b" + }, + { + "m_Id": "1c84f49930364df39af1439b108606d8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", @@ -11515,6 +11772,48 @@ "m_ColorMode": 0 } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "32097d5b1434427898a16ac03de4df35", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2524.0, + "y": -10.857157707214356, + "width": 126.857421875, + "height": 119.4285888671875 + } + }, + "m_Slots": [ + { + "m_Id": "978637b1ea44411c82f4e3368693ebcc" + }, + { + "m_Id": "420b7372a91f4db28fb96f1269c37a72" + }, + { + "m_Id": "2a4a83f8ee174959b0a66b0f1765c63c" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.LerpNode", @@ -13286,6 +13585,21 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "41f6dbc9558a43c19d46d416ae25d88a", + "m_Id": 1, + "m_DisplayName": "result", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "result", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -13301,6 +13615,54 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "420b7372a91f4db28fb96f1269c37a72", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", @@ -17329,6 +17691,55 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "61ca6ba5b39e428f8bb6d0dcdb61f005", + "m_Group": { + "m_Id": "" + }, + "m_Name": "MaterialXFloat", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2673.71435546875, + "y": 90.28572082519531, + "width": 145.142822265625, + "height": 120.57145690917969 + } + }, + "m_Slots": [ + { + "m_Id": "a20877b83d744cbd9a02d56294de22e3" + }, + { + "m_Id": "234e484c898b41f39f9905b26926ae1b" + }, + { + "m_Id": "41f6dbc9558a43c19d46d416ae25d88a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"23cb9569ab894e84991a92e0d19a08f1\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "1db17dee-af74-4ea9-9434-abd16afecddf", + "87733e81-8ef3-4fbd-945f-ded9e5740f22" + ], + "m_PropertyIds": [ + 1568544868, + 857709315 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.LerpNode", @@ -19353,6 +19764,30 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "748addc8c7a84255bfff4d2b1bedcb6b", + "m_Id": 0, + "m_DisplayName": "", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", @@ -21162,7 +21597,7 @@ "m_Title": "Volume", "m_Position": { "x": -2741.71435546875, - "y": -111.99996948242188 + "y": -112.0 } } @@ -22759,6 +23194,31 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "9284f29f482d407ba2987ccf6b968a2f", + "m_Id": -1618224757, + "m_DisplayName": "off", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_off", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.BranchNode", @@ -23136,6 +23596,54 @@ "m_Channel": 0 } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "978637b1ea44411c82f4e3368693ebcc", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", @@ -24779,6 +25287,21 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a20877b83d744cbd9a02d56294de22e3", + "m_Id": 1568544868, + "m_DisplayName": "on", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_on", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.PropertyNode", @@ -25779,6 +26302,55 @@ "m_Labels": [] } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "a9ff3e0cc2b54563b0a06d2a3504f3c7", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "MaterialXColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 64.00001525878906, + "y": 381.7143249511719, + "width": 209.14283752441407, + "height": 304.5714416503906 + } + }, + "m_Slots": [ + { + "m_Id": "e43b66d37ca441708e2225655a09ec2c" + }, + { + "m_Id": "9284f29f482d407ba2987ccf6b968a2f" + }, + { + "m_Id": "13d926debe19476b9ebfd708c3f26aee" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"ecd8fe7a9dd0c844987e0e6f5dbca66b\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "3cb0cd83-a7a9-4b64-958e-cd52500a3ead", + "593c34ad-595d-4873-9906-a721e2b263af" + ], + "m_PropertyIds": [ + -2010648849, + -1618224757 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", @@ -33336,6 +33908,31 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "e43b66d37ca441708e2225655a09ec2c", + "m_Id": -2010648849, + "m_DisplayName": "on", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_on", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", From 8a2314097864bee28a5d52032d43efca6b942234 Mon Sep 17 00:00:00 2001 From: hybridherbst Date: Mon, 28 Oct 2024 15:49:47 +0100 Subject: [PATCH 077/117] fix: prevent incorrect warning when meshes don't have UV1/UV2 attributes --- .../Scripts/SceneExporter/ExporterMeshes.cs | 34 ++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/Runtime/Scripts/SceneExporter/ExporterMeshes.cs b/Runtime/Scripts/SceneExporter/ExporterMeshes.cs index c7b34b667..d0278b00f 100644 --- a/Runtime/Scripts/SceneExporter/ExporterMeshes.cs +++ b/Runtime/Scripts/SceneExporter/ExporterMeshes.cs @@ -259,24 +259,34 @@ private MeshPrimitive[] ExportPrimitive(UniquePrimitive primKey, GLTFMesh mesh) aPosition = ExportAccessor(SchemaExtensions.ConvertVector3CoordinateSpaceAndCopy(meshObj.vertices, SchemaExtensions.CoordinateSpaceConversionScale)); - if (meshObj.normals.Length != 0) + if (meshObj.HasVertexAttribute(VertexAttribute.Normal)) aNormal = ExportAccessor(SchemaExtensions.ConvertVector3CoordinateSpaceAndCopy(meshObj.normals, SchemaExtensions.CoordinateSpaceConversionScale)); - if (meshObj.tangents.Length != 0) + if (meshObj.HasVertexAttribute(VertexAttribute.Tangent)) aTangent = ExportAccessor(SchemaExtensions.ConvertTangentCoordinateSpaceAndCopy(meshObj.tangents, SchemaExtensions.TangentSpaceConversionScale)); - var uvDim = meshObj.GetVertexAttributeDimension(VertexAttribute.TexCoord0); - if (uvDim != 2) Debug.LogWarning(null, "UV0 must be Vector2 in glTF, but it has " + uvDim + " channels. Only xy will be exported. Mesh: " + meshObj.name); - if (meshObj.uv.Length != 0) - aTexcoord0 = ExportAccessor(SchemaExtensions.FlipTexCoordArrayVAndCopy(meshObj.uv)); - - var uvDim1 = meshObj.GetVertexAttributeDimension(VertexAttribute.TexCoord1); - if (uvDim1 != 2) Debug.LogWarning(null, "UV1 must be Vector2 in glTF, but it has " + uvDim1 + " channels. Only xy will be exported. Mesh: " + meshObj.name); - if (meshObj.uv2.Length != 0) - aTexcoord1 = ExportAccessor(SchemaExtensions.FlipTexCoordArrayVAndCopy(meshObj.uv2)); + if (meshObj.HasVertexAttribute(VertexAttribute.TexCoord0)) + { + var uvDim = meshObj.GetVertexAttributeDimension(VertexAttribute.TexCoord0); + if (uvDim != 2) Debug.LogWarning(null, "UV0 must be Vector2 in glTF, but it has " + uvDim + " channels. Only xy will be exported. Mesh: " + meshObj.name); + var uv= meshObj.uv; + if (uv.Length != 0) + aTexcoord0 = ExportAccessor(SchemaExtensions.FlipTexCoordArrayVAndCopy(uv)); + } + if (meshObj.HasVertexAttribute(VertexAttribute.TexCoord1)) + { + var uvDim1 = meshObj.GetVertexAttributeDimension(VertexAttribute.TexCoord1); + if (uvDim1 != 2) + Debug.LogWarning(null, "UV1 must be Vector2 in glTF, but it has " + uvDim1 + " channels. Only xy will be exported. Mesh: " + meshObj.name); + var uv2 = meshObj.uv2; + if (uv2.Length != 0) + aTexcoord1 = ExportAccessor(SchemaExtensions.FlipTexCoordArrayVAndCopy(uv2)); + } + // From UV2, we're exporting as custom attribute - if (meshObj.HasVertexAttribute(VertexAttribute.TexCoord2)) { + if (meshObj.HasVertexAttribute(VertexAttribute.TexCoord2)) + { var uvDim2 = meshObj.GetVertexAttributeDimension(VertexAttribute.TexCoord2); if (uvDim2 == 2) { From 74f54e1eb1a54a957f57852913bcfa70403a532b Mon Sep 17 00:00:00 2001 From: hybridherbst Date: Mon, 28 Oct 2024 16:00:35 +0100 Subject: [PATCH 078/117] fix: Don't call export multiple times from context menu for multi-selections The exporter already handles multi-selections. --- Editor/Scripts/GLTFExportMenu.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Editor/Scripts/GLTFExportMenu.cs b/Editor/Scripts/GLTFExportMenu.cs index 275fc0727..a373c360b 100644 --- a/Editor/Scripts/GLTFExportMenu.cs +++ b/Editor/Scripts/GLTFExportMenu.cs @@ -79,8 +79,12 @@ private static bool ExportSelectedValidate() [MenuItem(MenuPrefix + ExportGltf)] [MenuItem(MenuPrefixGameObject + ExportGltf, false, 33)] - private static void ExportSelected() + private static void ExportSelected(MenuCommand command) { + // The exporter handles multi-selection. We don't want to call export multiple times here. + if (Selection.gameObjects.Length > 1 && command.context != Selection.gameObjects[0]) + return; + if (!TryGetExportNameAndRootTransformsFromSelection(out var sceneName, out var rootTransforms, out var rootResources)) { Debug.LogError("Can't export: selection is empty"); @@ -99,8 +103,12 @@ private static bool ExportGLBSelectedValidate() [MenuItem(MenuPrefix + ExportGlb)] [MenuItem(MenuPrefixGameObject + ExportGlb, false, 34)] - private static void ExportGLBSelected() + private static void ExportGLBSelected(MenuCommand command) { + // The exporter handles multi-selection. We don't want to call export multiple times here. + if (Selection.gameObjects.Length > 1 && command.context != Selection.gameObjects[0]) + return; + if (!TryGetExportNameAndRootTransformsFromSelection(out var sceneName, out var rootTransforms, out var rootResources)) { Debug.LogError("Can't export: selection is empty"); From 6c56024ffbe308451ed3d25082ff2f1e5cb4bc28 Mon Sep 17 00:00:00 2001 From: hybridherbst Date: Mon, 28 Oct 2024 16:06:01 +0100 Subject: [PATCH 079/117] fix: clean up unused property in `GLTFComponent` --- Runtime/Scripts/GLTFComponent.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/Runtime/Scripts/GLTFComponent.cs b/Runtime/Scripts/GLTFComponent.cs index c1e2a85b3..ac5ea008e 100644 --- a/Runtime/Scripts/GLTFComponent.cs +++ b/Runtime/Scripts/GLTFComponent.cs @@ -21,7 +21,6 @@ public class GLTFComponent : MonoBehaviour { public string GLTFUri = null; public bool Multithreaded = true; - public bool UseStream = false; public bool AppendStreamingAssets = true; public bool PlayAnimationOnLoad = true; [Tooltip("Hide the scene object during load, then activate it when complete")] @@ -107,7 +106,6 @@ public async Task Load() { if (!Factory) Factory = ScriptableObject.CreateInstance(); - // UseStream is currently not supported... string fullPath; if (AppendStreamingAssets) fullPath = Path.Combine(Application.streamingAssetsPath, GLTFUri.TrimStart(new[] { Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar })); From b99d85f0b6d5a20ebc2d5a78158f92f938e8438a Mon Sep 17 00:00:00 2001 From: hybridherbst Date: Mon, 28 Oct 2024 16:11:34 +0100 Subject: [PATCH 080/117] changelog, version --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d483bd12..c8d315f11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ 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). +## [2.14.1] - 2024-10-28 + +- fix: compiler error with `ParticleSystemBakeMeshOptions` before 2022.3.11f1 since that's where the API was introduced +- fix: prevent incorrect warning when meshes don't have UV1/UV2 attributes +- fix: don't call export multiple times from context menu for multi-selections +- fix: remove unused property from `GLTFComponent` + ## [2.14.0] - 2024-10-06 - fix: potential NullReferenceExceptions when importing material-only, mesh-only or texture-only glTF files diff --git a/package.json b/package.json index d65dc92be..090cf7407 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "org.khronos.unitygltf", "displayName": "UnityGLTF", - "version": "2.14.0", + "version": "2.14.1", "unity": "2020.3", "description": "Import and export glTF 2.0 assets, both in the editor and at runtime. Excellent support for animations, materials, extensions. Can be extended with plugins for both import and export use cases.", "repository": { From b2853b3be570c084db8c9f532519a3365034bf9e Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Wed, 23 Oct 2024 19:47:31 +0200 Subject: [PATCH 081/117] added new runtime texture compression option, exposed import setting keep cpu copy of mesh/textures to gltfcomponent --- Runtime/Scripts/GLTFComponent.cs | 15 ++++++++--- Runtime/Scripts/GLTFSceneImporter.cs | 9 ++++++- .../Scripts/SceneImporter/ImporterTextures.cs | 27 +++++++++++++++++-- 3 files changed, 45 insertions(+), 6 deletions(-) diff --git a/Runtime/Scripts/GLTFComponent.cs b/Runtime/Scripts/GLTFComponent.cs index ac5ea008e..e7d7b7281 100644 --- a/Runtime/Scripts/GLTFComponent.cs +++ b/Runtime/Scripts/GLTFComponent.cs @@ -59,12 +59,18 @@ public Shader ShaderOverride } [Header("Import Settings")] + public RuntimeTextureCompression TextureCompression = RuntimeTextureCompression.None; public GLTFImporterNormals ImportNormals = GLTFImporterNormals.Import; public GLTFImporterNormals ImportTangents = GLTFImporterNormals.Import; public bool SwapUVs = false; [Tooltip("Blend shape frame weight import multiplier. Default is 1. For compatibility with some FBX animations you may need to use 100.")] public BlendShapeFrameWeightSetting blendShapeFrameWeight = new BlendShapeFrameWeightSetting(BlendShapeFrameWeightSetting.MultiplierOption.Multiplier1); - + [Tooltip("When enabled, the CPU copy of the mesh will be kept in memory after the mesh has been uploaded to the GPU. This is useful if you want to modify the mesh at runtime.")] + public bool KeepCPUCopyOfMesh = true; + [Tooltip("When enabled, the CPU copy of the texture will be kept in memory after the texture has been uploaded to the GPU. This is useful if you want to modify the texture at runtime.")] + public bool KeepCPUCopyOfTexture = true; + + private async void Start() { if (!loadOnStart) return; @@ -95,7 +101,8 @@ public async Task Load() AsyncCoroutineHelper = gameObject.GetComponent() ?? gameObject.AddComponent(), ImportNormals = ImportNormals, ImportTangents = ImportTangents, - SwapUVs = SwapUVs + SwapUVs = SwapUVs, + RuntimeTextureCompression = TextureCompression, }; var settings = GLTFSettings.GetOrCreateSettings(); @@ -125,7 +132,9 @@ public async Task Load() sceneImporter.Timeout = Timeout; sceneImporter.IsMultithreaded = Multithreaded; sceneImporter.CustomShaderName = shaderOverride ? shaderOverride.name : null; - + sceneImporter.KeepCPUCopyOfTexture = KeepCPUCopyOfTexture; + sceneImporter.KeepCPUCopyOfMesh = KeepCPUCopyOfMesh; + // for logging progress await sceneImporter.LoadSceneAsync( showSceneObj:!HideSceneObjDuringLoad, diff --git a/Runtime/Scripts/GLTFSceneImporter.cs b/Runtime/Scripts/GLTFSceneImporter.cs index 2acc94c9e..29b7f0784 100644 --- a/Runtime/Scripts/GLTFSceneImporter.cs +++ b/Runtime/Scripts/GLTFSceneImporter.cs @@ -30,6 +30,13 @@ public enum DeduplicateOptions Meshes = 1, Textures = 2, } + + public enum RuntimeTextureCompression + { + None, + LowQuality , + HighQuality, + } public class ImportOptions { @@ -52,7 +59,7 @@ public class ImportOptions public GLTFImporterNormals ImportTangents = GLTFImporterNormals.Import; public bool ImportBlendShapeNames = true; public CameraImportOption CameraImport = CameraImportOption.ImportAndCameraDisabled; - + public RuntimeTextureCompression RuntimeTextureCompression = RuntimeTextureCompression.None; public BlendShapeFrameWeightSetting BlendShapeFrameWeight = new BlendShapeFrameWeightSetting(BlendShapeFrameWeightSetting.MultiplierOption.Multiplier1); #if UNITY_EDITOR diff --git a/Runtime/Scripts/SceneImporter/ImporterTextures.cs b/Runtime/Scripts/SceneImporter/ImporterTextures.cs index d586b74f2..a527d8a89 100644 --- a/Runtime/Scripts/SceneImporter/ImporterTextures.cs +++ b/Runtime/Scripts/SceneImporter/ImporterTextures.cs @@ -214,12 +214,21 @@ protected async Task ConstructImageBuffer(GLTFTexture texture, int textureIndex) // With using KTX, we need to return a new Texture2D instance at the moment. Unity KTX package does not support loading into existing one async Task CheckMimeTypeAndLoadImage(GLTFImage image, Texture2D texture, NativeArray data, bool markGpuOnly, bool isLinear) { + bool textureWillBeCompressed = false; +#if UNITY_EDITOR + if (Context.SourceImporter != null) +#endif + { + if (_options.RuntimeTextureCompression != RuntimeTextureCompression.None) + textureWillBeCompressed = true; + } + switch (image.MimeType) { case "image/png": case "image/jpeg": // NOTE: the second parameter of LoadImage() marks non-readable, but we can't mark it until after we call Apply() - texture.LoadImage(data.ToArray(), markGpuOnly); + texture.LoadImage(data.ToArray(), markGpuOnly && !textureWillBeCompressed); break; case "image/exr": Debug.Log(LogType.Warning, $"EXR images are not supported. The texture {texture.name} won't be imported. File: {_gltfFileName}"); @@ -250,7 +259,7 @@ async Task CheckMimeTypeAndLoadImage(GLTFImage image, Texture2D textu } break; default: - texture.LoadImage(data.ToArray(), markGpuOnly); + texture.LoadImage(data.ToArray(), markGpuOnly && !textureWillBeCompressed); break; } @@ -262,6 +271,20 @@ async Task CheckMimeTypeAndLoadImage(GLTFImage image, Texture2D textu texture.wrapModeU = TextureWrapMode.Repeat; texture.filterMode = FilterMode.Bilinear; } +#if UNITY_EDITOR + if (Context.SourceImporter != null) +#endif + { + // Only when this import is not an Asset Import + + if (_options.RuntimeTextureCompression != RuntimeTextureCompression.None) + { + // Texture need to be readable to compress it + texture.Compress(_options.RuntimeTextureCompression == RuntimeTextureCompression.HighQuality); + if (markGpuOnly) + texture.Apply(true, true); + } + } await Task.CompletedTask; return texture; From d98a676d5bae3f27e3e48d03c8128e80536db385 Mon Sep 17 00:00:00 2001 From: hybridherbst Date: Mon, 25 Nov 2024 14:03:18 +0100 Subject: [PATCH 082/117] fix: assets with absolute URLs or paths that contain URL encoded information did not load correctly --- Runtime/Scripts/Loader/FileLoader.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Runtime/Scripts/Loader/FileLoader.cs b/Runtime/Scripts/Loader/FileLoader.cs index b3397a48b..c5479e51c 100644 --- a/Runtime/Scripts/Loader/FileLoader.cs +++ b/Runtime/Scripts/Loader/FileLoader.cs @@ -60,6 +60,11 @@ public static string CombinePaths(string basePath, string relativePath) } public Task LoadStreamAsync(string relativeFilePath) { + if (relativeFilePath.StartsWith("http://") || relativeFilePath.StartsWith("https://")) + { + return new UnityWebRequestLoader("").LoadStreamAsync(relativeFilePath); + } + #if UNITY_EDITOR string path = CombinePaths(_rootDirectoryPath, relativeFilePath); @@ -99,7 +104,7 @@ public Stream LoadStream(string relativeFilePath) string pathToLoad = Path.Combine(_rootDirectoryPath, relativeFilePath); if (!File.Exists(pathToLoad)) { - pathToLoad = Path.Combine(_rootDirectoryPath, Uri.UnescapeDataString(relativeFilePath)); + pathToLoad = Uri.UnescapeDataString(Path.Combine(_rootDirectoryPath, relativeFilePath)); } if (!File.Exists(pathToLoad)) From c7b6763d0d984d1ae2d63165ca896fffb1724482 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Wed, 5 Feb 2025 10:33:06 +0100 Subject: [PATCH 083/117] fixed 808 - Check all sub Meshes of used attributes instead only the first one to create attribute arrays --- .../Scripts/SceneImporter/ImporterMeshes.cs | 57 ++++++++++++------- 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/Runtime/Scripts/SceneImporter/ImporterMeshes.cs b/Runtime/Scripts/SceneImporter/ImporterMeshes.cs index c2bd92dae..e96b6d947 100644 --- a/Runtime/Scripts/SceneImporter/ImporterMeshes.cs +++ b/Runtime/Scripts/SceneImporter/ImporterMeshes.cs @@ -91,13 +91,11 @@ protected virtual async Task ConstructMesh(GLTFMesh mesh, int meshIndex, Cancell } #endif - var firstPrim = mesh.Primitives.Count > 0 ? mesh.Primitives[0] : null; cancellationToken.ThrowIfCancellationRequested(); - - + var meshCache = _assetCache.MeshCache[meshIndex]; - var unityData = CreateUnityMeshData(mesh, meshIndex, firstPrim); + var unityData = CreateUnityMeshData(mesh, meshIndex); for (int i = 0; i < mesh.Primitives.Count; ++i) { @@ -159,8 +157,7 @@ protected void PrepareUnityMeshData() int meshIndex = i; var mesh = _gltfRoot.Meshes[meshIndex]; var meshCache = _assetCache.MeshCache[meshIndex]; - var unityData = CreateUnityMeshData(mesh, meshIndex, - mesh.Primitives.Count > 0 ? mesh.Primitives[0] : null); + var unityData = CreateUnityMeshData(mesh, meshIndex); for (int primIndex = 0; primIndex < mesh.Primitives.Count; ++primIndex) { var primitive = mesh.Primitives[primIndex]; @@ -504,8 +501,7 @@ protected async Task ConstructUnityMesh(GLTFMesh gltfMesh, DecodeResult[] decode await YieldOnTimeoutAndThrowOnLowMemory(); - var firstPrim = gltfMesh.Primitives[0]; - var unityMeshData = CreateUnityMeshData(gltfMesh, meshIndex, firstPrim, true); + var unityMeshData = CreateUnityMeshData(gltfMesh, meshIndex, true); uint vertOffset = 0; var meshCache = _assetCache.MeshCache[meshIndex]; @@ -544,7 +540,7 @@ protected async Task ConstructUnityMesh(GLTFMesh gltfMesh, DecodeResult[] decode #endif - private UnityMeshData CreateUnityMeshData(GLTFMesh gltfMesh, int meshIndex, MeshPrimitive firstPrim, bool onlyMorphTargets = false) + private UnityMeshData CreateUnityMeshData(GLTFMesh gltfMesh, int meshIndex, bool onlyMorphTargets = false) { if (_assetCache.UnityMeshDataCache[meshIndex] != null) { @@ -564,13 +560,30 @@ private UnityMeshData CreateUnityMeshData(GLTFMesh gltfMesh, int meshIndex, Mesh for (int i = 0; i < unityMeshData.subMeshDataCreated.Length; i++) unityMeshData.subMeshDataCreated[i] = false; + + var attributes = new HashSet(); + bool hasTargets = false; + int targetCount = 0; + foreach (var prim in gltfMesh.Primitives) + { + if (prim.Targets != null) + { + hasTargets = true; + targetCount = prim.Targets.Count; + } + + if (prim.Attributes == null) + continue; + + foreach (var attribute in prim.Attributes) + attributes.Add(attribute.Key); + } - - if (firstPrim.Targets != null) + if (hasTargets) { - unityMeshData.MorphTargetVertices = new Vector3[firstPrim.Targets.Count][]; - unityMeshData.MorphTargetNormals = new Vector3[firstPrim.Targets.Count][]; - unityMeshData.MorphTargetTangents = new Vector3[firstPrim.Targets.Count][]; + unityMeshData.MorphTargetVertices = new Vector3[targetCount][]; + unityMeshData.MorphTargetNormals = new Vector3[targetCount][]; + unityMeshData.MorphTargetTangents = new Vector3[targetCount][]; foreach (var prim in gltfMesh.Primitives) { @@ -605,28 +618,28 @@ private UnityMeshData CreateUnityMeshData(GLTFMesh gltfMesh, int meshIndex, Mesh if (!onlyMorphTargets) { unityMeshData.Vertices = new Vector3[verticesLength]; - unityMeshData.Normals = firstPrim.Attributes.ContainsKey(SemanticProperties.NORMAL) + unityMeshData.Normals = attributes.Contains(SemanticProperties.NORMAL) ? new Vector3[verticesLength] : null; - unityMeshData.Tangents = firstPrim.Attributes.ContainsKey(SemanticProperties.TANGENT) + unityMeshData.Tangents = attributes.Contains(SemanticProperties.TANGENT) ? new Vector4[verticesLength] : null; - unityMeshData.Uv1 = firstPrim.Attributes.ContainsKey(SemanticProperties.TEXCOORD_0) + unityMeshData.Uv1 = attributes.Contains(SemanticProperties.TEXCOORD_0) ? new Vector2[verticesLength] : null; - unityMeshData.Uv2 = firstPrim.Attributes.ContainsKey(SemanticProperties.TEXCOORD_1) + unityMeshData.Uv2 = attributes.Contains(SemanticProperties.TEXCOORD_1) ? new Vector2[verticesLength] : null; - unityMeshData.Uv3 = firstPrim.Attributes.ContainsKey(SemanticProperties.TEXCOORD_2) + unityMeshData.Uv3 = attributes.Contains(SemanticProperties.TEXCOORD_2) ? new Vector2[verticesLength] : null; - unityMeshData.Uv4 = firstPrim.Attributes.ContainsKey(SemanticProperties.TEXCOORD_3) + unityMeshData.Uv4 = attributes.Contains(SemanticProperties.TEXCOORD_3) ? new Vector2[verticesLength] : null; - unityMeshData.Colors = firstPrim.Attributes.ContainsKey(SemanticProperties.COLOR_0) + unityMeshData.Colors = attributes.Contains(SemanticProperties.COLOR_0) ? new Color[verticesLength] : null; - unityMeshData.BoneWeights = firstPrim.Attributes.ContainsKey(SemanticProperties.WEIGHTS_0) + unityMeshData.BoneWeights = attributes.Contains(SemanticProperties.WEIGHTS_0) ? new BoneWeight[verticesLength] : null; } From 8fc79ecb7bdd4cbe7d1d172843b594ec22188533 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Wed, 5 Feb 2025 12:39:36 +0100 Subject: [PATCH 084/117] added in scene loader a Task.Yield() to ensure the progress callback is triggered before onLoadComplete (fixes 803) --- Runtime/Scripts/GLTFSceneImporter.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Runtime/Scripts/GLTFSceneImporter.cs b/Runtime/Scripts/GLTFSceneImporter.cs index 2acc94c9e..c3bc65fe7 100644 --- a/Runtime/Scripts/GLTFSceneImporter.cs +++ b/Runtime/Scripts/GLTFSceneImporter.cs @@ -502,7 +502,10 @@ public void Dispose() } _gltfStream.Stream.Close(); DisposeNativeBuffers(); - + + if (this.progress != null) + await Task.Yield(); + onLoadComplete?.Invoke(LastLoadedScene, null); } From 8eb92684fc9e0c0c5b92e3578758ac07ef06d1db Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Wed, 5 Feb 2025 15:04:07 +0100 Subject: [PATCH 085/117] added RoughRefractionFeature Unity 6 support --- Runtime/Scripts/RenderPipelines/RoughRefractionFeature.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Runtime/Scripts/RenderPipelines/RoughRefractionFeature.cs b/Runtime/Scripts/RenderPipelines/RoughRefractionFeature.cs index 7a69671dd..8b5668f46 100644 --- a/Runtime/Scripts/RenderPipelines/RoughRefractionFeature.cs +++ b/Runtime/Scripts/RenderPipelines/RoughRefractionFeature.cs @@ -115,7 +115,12 @@ public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderin descriptor.height /= 4; } #if UNITY_2022_3_OR_NEWER + +#if UNITY_6000_0_OR_NEWER + RenderingUtils.ReAllocateHandleIfNeeded(ref m_destination, descriptor, FilterMode.Trilinear, TextureWrapMode.Clamp, name: CAMERA_OPAQUE_TEXTURENAME); +#else RenderingUtils.ReAllocateIfNeeded(ref m_destination, descriptor, FilterMode.Trilinear, TextureWrapMode.Clamp, name: CAMERA_OPAQUE_TEXTURENAME); +#endif base.Setup(m_source, m_destination, this.m_DownsamplingMethod); cmd.SetGlobalTexture(m_destination.name, m_destination.nameID); #else From dcf7e9bce24bf38a05fc563fb58a3a23fb198fd4 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Tue, 18 Feb 2025 11:46:54 +0100 Subject: [PATCH 086/117] added UnityGltf Package Version, Unity Version and current Render Pipeline to gltf generator export --- .../Scripts/PackageVersionPreprocessBuild.cs | 39 +++++++++++++++++++ .../PackageVersionPreprocessBuild.cs.meta | 3 ++ Runtime/Scripts/GLTFSceneExporter.cs | 2 +- Runtime/Scripts/GLTFSettings.cs | 38 ++++++++++++++++++ 4 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 Editor/Scripts/PackageVersionPreprocessBuild.cs create mode 100644 Editor/Scripts/PackageVersionPreprocessBuild.cs.meta diff --git a/Editor/Scripts/PackageVersionPreprocessBuild.cs b/Editor/Scripts/PackageVersionPreprocessBuild.cs new file mode 100644 index 000000000..d055b12c9 --- /dev/null +++ b/Editor/Scripts/PackageVersionPreprocessBuild.cs @@ -0,0 +1,39 @@ +using UnityEditor; +using UnityEditor.Build; +using UnityEditor.Build.Reporting; +using UnityEditor.Callbacks; +using UnityEngine; + +namespace UnityGLTF +{ + public class PackageVersionPreprocessBuild : IPreprocessBuildWithReport + { + public int callbackOrder + { + get => 0; + } + + private static void SetPackageVersion(bool resetValue = false) + { + var defaultSettings = GLTFSettings.GetOrCreateSettings(); + if (!defaultSettings) + return; + + defaultSettings.packageVersion = resetValue ? null : defaultSettings.GetUnityGltfVersion(); + EditorUtility.SetDirty(defaultSettings); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + + public void OnPreprocessBuild(BuildReport report) + { + SetPackageVersion(); + } + + [PostProcessBuild(1)] + public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject) + { + SetPackageVersion(true); + } + } +} \ No newline at end of file diff --git a/Editor/Scripts/PackageVersionPreprocessBuild.cs.meta b/Editor/Scripts/PackageVersionPreprocessBuild.cs.meta new file mode 100644 index 000000000..4db45e4d0 --- /dev/null +++ b/Editor/Scripts/PackageVersionPreprocessBuild.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 44af7bd45fd643e6abb82d8a482e9daa +timeCreated: 1739877372 \ No newline at end of file diff --git a/Runtime/Scripts/GLTFSceneExporter.cs b/Runtime/Scripts/GLTFSceneExporter.cs index 34a86cf0d..829ca4936 100644 --- a/Runtime/Scripts/GLTFSceneExporter.cs +++ b/Runtime/Scripts/GLTFSceneExporter.cs @@ -626,7 +626,7 @@ public GLTFSceneExporter(Transform[] rootTransforms, ExportContext context) Asset = new Asset { Version = "2.0", - Generator = "UnityGLTF" + Generator = settings.Generator }, Buffers = new List(), BufferViews = new List(), diff --git a/Runtime/Scripts/GLTFSettings.cs b/Runtime/Scripts/GLTFSettings.cs index 2309c7b76..8786a084f 100644 --- a/Runtime/Scripts/GLTFSettings.cs +++ b/Runtime/Scripts/GLTFSettings.cs @@ -19,6 +19,44 @@ public class GLTFSettings : ScriptableObject private const string k_SettingsFileName = "UnityGLTFSettings.asset"; public const string k_RuntimeAndEditorSettingsPath = "Assets/Resources/" + k_SettingsFileName; + + [SerializeField, HideInInspector] + // Will be set on building in PackageVersionPreprocessBuild.cs + internal string packageVersion = null; + + public string Generator { get => GetGenerator();} + +#if UNITY_EDITOR + internal string GetUnityGltfVersion() + { + var packageInfo = UnityEditor.PackageManager.PackageInfo.FindForAssembly(Assembly.GetAssembly(typeof(GLTFSettings))); + if (packageInfo != null) + return packageInfo.version; + return ""; + } +#endif + + internal string GetGenerator() + { + string gltfVersion; +#if UNITY_EDITOR + gltfVersion = GetUnityGltfVersion(); +#else + gltfVersion = packageVersion; +#endif + var renderPipeline = "Built-in RP"; + var renderPipelineAsset = UnityEngine.Rendering.GraphicsSettings.renderPipelineAsset; + if (renderPipelineAsset) + { + renderPipeline = renderPipelineAsset.GetType().Name; + if (renderPipeline == "UniversalRenderPipelineAsset") + renderPipeline = "URP"; + else if (renderPipeline == "HighDefinitionRenderPipelineAsset") + renderPipeline = "HDRP"; + } + return $"UnityGltf {gltfVersion}, Unity {Application.unityVersion}, {renderPipeline}"; + } + [Flags] public enum BlendShapeExportPropertyFlags { From c118ba0160cead04ec6d304bb5a30075eb4d1ee0 Mon Sep 17 00:00:00 2001 From: hybridherbst Date: Tue, 4 Mar 2025 12:11:08 +0100 Subject: [PATCH 087/117] fix nullref when plugin is not loaded/defined --- Editor/Scripts/GLTFSettingsInspector.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Editor/Scripts/GLTFSettingsInspector.cs b/Editor/Scripts/GLTFSettingsInspector.cs index 5950b43a8..26b4bc3da 100644 --- a/Editor/Scripts/GLTFSettingsInspector.cs +++ b/Editor/Scripts/GLTFSettingsInspector.cs @@ -167,6 +167,7 @@ internal static void OnPluginsGUI(IEnumerable plugins, bool allowDis foreach (var plugin in plugins .OrderBy(x => { + if (!x) return "ZZZ"; var displayName = x.GetType().Assembly.GetName().Name; if (displayName == "UnityGLTFScripts") displayName = "____"; return displayName; From a5a70f4d14e45a00285a3acdde191cb38c555d89 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Tue, 4 Mar 2025 14:39:03 +0100 Subject: [PATCH 088/117] removed unity internal method invocation for current platform name --- Editor/Scripts/GLTFImporter.cs | 3 +-- .../Scripts/Internal/TextureImporterHelper.cs | 18 +++++------------- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/Editor/Scripts/GLTFImporter.cs b/Editor/Scripts/GLTFImporter.cs index ac723dbc4..1b6caf78b 100644 --- a/Editor/Scripts/GLTFImporter.cs +++ b/Editor/Scripts/GLTFImporter.cs @@ -702,8 +702,7 @@ string GetUniqueName(string desiredName) if (_textureCompression != GLTFImporterTextureCompressionQuality.None) { // platform-dependant texture compression - var buildTargetName = BuildPipeline.GetBuildTargetName(ctx.selectedBuildTarget); - var format = TextureImporterHelper.GetAutomaticFormat(tex, buildTargetName); + var format = TextureImporterHelper.GetAutomaticFormat(tex); var convertedFormat = (TextureFormat)(int)format; if ((int)convertedFormat > -1) { diff --git a/Editor/Scripts/Internal/TextureImporterHelper.cs b/Editor/Scripts/Internal/TextureImporterHelper.cs index 522565761..7f7f43683 100644 --- a/Editor/Scripts/Internal/TextureImporterHelper.cs +++ b/Editor/Scripts/Internal/TextureImporterHelper.cs @@ -8,22 +8,13 @@ namespace UnityGLTF { public class TextureImporterHelper { - private static MethodInfo GetFixedPlatformName; private const string DefaultTextureAssetGuid = "7b7ff3cec11c24c599d6f12443877d5e"; - public static TextureImporterFormat GetAutomaticFormat(Texture2D texture, string platform) + public static TextureImporterFormat GetAutomaticFormat(Texture2D texture) { var defaultTextureImporter = AssetImporter.GetAtPath(AssetDatabase.GUIDToAssetPath(DefaultTextureAssetGuid)) as TextureImporter; // defaultTextureImporter = new TextureImporter(); - - if (GetFixedPlatformName == null) - GetFixedPlatformName = typeof(TextureImporter) - .GetMethod("GetFixedPlatformName", BindingFlags.Static | BindingFlags.NonPublic); - if (GetFixedPlatformName == null) - throw new MissingMethodException("TextureImporter.GetFixedPlatformName"); - - platform = GetFixedPlatformName.Invoke(null, new object[] { platform }) as string; TextureImporterSettings importerSettings = new TextureImporterSettings(); importerSettings.aniso = 5; @@ -36,12 +27,13 @@ public static TextureImporterFormat GetAutomaticFormat(Texture2D texture, string var isHDR = TextureUtil.IsHDRFormat(texture.format); // var platformSettings = new TextureImporterPlatformSettings(); - foreach (BuildPlatform validPlatform in BuildPlatforms.instance.GetValidPlatforms()) { // TextureImporter.RecommendedFormatsFromTextureTypeAndPlatform - if (validPlatform.name == platform) - return TextureImporter.DefaultFormatFromTextureParameters(importerSettings, defaultTextureImporter.GetPlatformTextureSettings(platform), hasAlpha, isHDR, validPlatform.defaultTarget); + if (validPlatform.IsActive()) + { + return TextureImporter.DefaultFormatFromTextureParameters(importerSettings, defaultTextureImporter.GetPlatformTextureSettings(validPlatform.name), hasAlpha, isHDR, validPlatform.defaultTarget); + } } // This should never happen From 372c0f4c744fdb4abd504f6cd83de3e20ae1a036 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Tue, 12 Nov 2024 13:04:55 +0100 Subject: [PATCH 089/117] added KHR_visibility schema --- .../Extensions/KHR_visibility.cs | 52 +++++++++++++++++++ .../Extensions/KHR_visibility.cs.meta | 3 ++ .../GLTFSerialization/Schema/GLTFProperty.cs | 1 + 3 files changed, 56 insertions(+) create mode 100644 Runtime/Plugins/GLTFSerialization/Extensions/KHR_visibility.cs create mode 100644 Runtime/Plugins/GLTFSerialization/Extensions/KHR_visibility.cs.meta diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_visibility.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_visibility.cs new file mode 100644 index 000000000..94d9279ac --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_visibility.cs @@ -0,0 +1,52 @@ +using System; +using Newtonsoft.Json.Linq; + +namespace GLTF.Schema +{ + + [Serializable] + public class KHR_visbility : IExtension + { + public bool visible = true; + + public JProperty Serialize() + { + var obj = new JObject(); + JProperty jProperty = new JProperty(KHR_visbility_Factory.EXTENSION_NAME, obj); + return jProperty; + } + + public IExtension Clone(GLTFRoot root) + { + return new KHR_visbility() { visible = visible}; + } + } + + public class KHR_visbility_Factory : ExtensionFactory + { + public const string EXTENSION_NAME = "KHR_visibility"; + + public KHR_visbility_Factory() + { + ExtensionName = EXTENSION_NAME; + } + + public override IExtension Deserialize(GLTFRoot root, JProperty extensionToken) + { + if (extensionToken != null) + { + var extension = new KHR_visbility(); + + JToken visible = extensionToken.Value[nameof(KHR_visbility.visible)]; + if (visible != null) + extension.visible = visible.Value(); + else + extension.visible = true; + return extension; + } + + return null; + } + } +} + diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_visibility.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_visibility.cs.meta new file mode 100644 index 000000000..08074d5d2 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_visibility.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: fc4f3932bbad4f518063e1fe7d976092 +timeCreated: 1731401543 \ No newline at end of file diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs index 30f38a806..f0f68b177 100644 --- a/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs @@ -41,6 +41,7 @@ public static IReadOnlyList RegisteredExtensions { KHR_animation_pointerExtensionFactory.EXTENSION_NAME, new KHR_animation_pointerExtensionFactory() }, { KHR_materials_dispersion_Factory.EXTENSION_NAME, new KHR_materials_dispersion_Factory() }, { KHR_materials_sheen_Factory.EXTENSION_NAME, new KHR_materials_sheen_Factory()}, + { KHR_visbility_Factory.EXTENSION_NAME, new KHR_visbility_Factory()}, }; private static DefaultExtensionFactory _defaultExtensionFactory = new DefaultExtensionFactory(); From b97d9211c67bfc0554625eca95fab9d94efde7d6 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Tue, 12 Nov 2024 13:05:11 +0100 Subject: [PATCH 090/117] added visibility plugins --- Runtime/Scripts/Plugins/VisibilityExport.cs | 15 +++++++++++++++ Runtime/Scripts/Plugins/VisibilityExport.cs.meta | 3 +++ Runtime/Scripts/Plugins/VisibilityImport.cs | 15 +++++++++++++++ Runtime/Scripts/Plugins/VisibilityImport.cs.meta | 3 +++ 4 files changed, 36 insertions(+) create mode 100644 Runtime/Scripts/Plugins/VisibilityExport.cs create mode 100644 Runtime/Scripts/Plugins/VisibilityExport.cs.meta create mode 100644 Runtime/Scripts/Plugins/VisibilityImport.cs create mode 100644 Runtime/Scripts/Plugins/VisibilityImport.cs.meta diff --git a/Runtime/Scripts/Plugins/VisibilityExport.cs b/Runtime/Scripts/Plugins/VisibilityExport.cs new file mode 100644 index 000000000..401cfd402 --- /dev/null +++ b/Runtime/Scripts/Plugins/VisibilityExport.cs @@ -0,0 +1,15 @@ +namespace UnityGLTF.Plugins +{ + public class VisibilityExport : GLTFExportPlugin + { + public override string DisplayName => "KHR_visibility"; + public override string Description => "Exports visibility of objects."; + public override bool AlwaysEnabled => false; + public override bool EnabledByDefault => false; + public override GLTFExportPluginContext CreateInstance(ExportContext context) + { + // always enabled + return null; + } + } +} \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/VisibilityExport.cs.meta b/Runtime/Scripts/Plugins/VisibilityExport.cs.meta new file mode 100644 index 000000000..d8d9b1467 --- /dev/null +++ b/Runtime/Scripts/Plugins/VisibilityExport.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f2b6fa8618a247c3a77768773459dcd5 +timeCreated: 1731402026 \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/VisibilityImport.cs b/Runtime/Scripts/Plugins/VisibilityImport.cs new file mode 100644 index 000000000..d97bbf28e --- /dev/null +++ b/Runtime/Scripts/Plugins/VisibilityImport.cs @@ -0,0 +1,15 @@ +namespace UnityGLTF.Plugins +{ + public class VisibilityImport: GLTFImportPlugin + { + public override string DisplayName => "KHR_visibility"; + public override string Description => "Imports visibility of objects"; + public override bool AlwaysEnabled => true; + public override GLTFImportPluginContext CreateInstance(GLTFImportContext context) + { + // always enabled + return null; + } + + } +} \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/VisibilityImport.cs.meta b/Runtime/Scripts/Plugins/VisibilityImport.cs.meta new file mode 100644 index 000000000..497630ab3 --- /dev/null +++ b/Runtime/Scripts/Plugins/VisibilityImport.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 06b516fa9f5941be92bd6cecf2dd5ca5 +timeCreated: 1731402011 \ No newline at end of file From 9eb4f56be9b7541938c2b7c5dca1b43d58021c5d Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Tue, 12 Nov 2024 13:05:41 +0100 Subject: [PATCH 091/117] added visibility check on node import --- Runtime/Scripts/GLTFSceneImporter.cs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/Runtime/Scripts/GLTFSceneImporter.cs b/Runtime/Scripts/GLTFSceneImporter.cs index c3bc65fe7..c47e96139 100644 --- a/Runtime/Scripts/GLTFSceneImporter.cs +++ b/Runtime/Scripts/GLTFSceneImporter.cs @@ -958,6 +958,16 @@ async Task GetAttrAccessorAndAccessorContent(AccessorId acces return null; } + private bool ShouldBeVisible(Node node, GameObject nodeObj) + { + if (node.Extensions != null && node.Extensions.TryGetValue(KHR_visbility_Factory.EXTENSION_NAME, out var ext)) + { + return (ext as KHR_visbility).visible; + } + else + return true; + } + protected virtual async Task ConstructNode(Node node, int nodeIndex, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); @@ -1063,7 +1073,7 @@ async Task CreateNodeComponentsAndChilds(bool ignoreMesh = false, bool onlyMesh if (onlyMesh) { - nodeObj.SetActive(true); + nodeObj.SetActive(ShouldBeVisible(node, nodeObj)); return; } @@ -1127,8 +1137,7 @@ async Task CreateNodeComponentsAndChilds(bool ignoreMesh = false, bool onlyMesh inbetween.transform.localRotation = Quaternion.Inverse(SchemaExtensions.InvertDirection); } } - - nodeObj.SetActive(true); + nodeObj.SetActive( ShouldBeVisible(node, nodeObj)); } var instancesTRS = await GetInstancesTRS(node); @@ -1139,6 +1148,7 @@ async Task CreateNodeComponentsAndChilds(bool ignoreMesh = false, bool onlyMesh } else { + var shouldBeVisible = ShouldBeVisible(node, nodeObj); await CreateNodeComponentsAndChilds(true); var instanceParentNode = new GameObject("Instances"); instanceParentNode.transform.SetParent(nodeObj.transform, false); @@ -1172,7 +1182,7 @@ async Task CreateNodeComponentsAndChilds(bool ignoreMesh = false, bool onlyMesh nodeObj.transform.localScale = instancesTRS[i].Item3; nodeObj.name = $"Instance {i.ToString()}"; } - instanceParentNode.gameObject.SetActive(true); + instanceParentNode.gameObject.SetActive(shouldBeVisible); } progressStatus.NodeLoaded++; From 7f33447f08f470202d12826bb1d98788588e6638 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Tue, 12 Nov 2024 19:19:16 +0100 Subject: [PATCH 092/117] added KHR_node_selectability schema --- .../Extensions/KHR_node_selectability.cs | 52 +++++++++++++++++++ .../Extensions/KHR_node_selectability.cs.meta | 3 ++ .../GLTFSerialization/Schema/GLTFProperty.cs | 1 + 3 files changed, 56 insertions(+) create mode 100644 Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_selectability.cs create mode 100644 Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_selectability.cs.meta diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_selectability.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_selectability.cs new file mode 100644 index 000000000..7515dea06 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_selectability.cs @@ -0,0 +1,52 @@ +using System; +using Newtonsoft.Json.Linq; +using UnityEngine.Serialization; + +namespace GLTF.Schema +{ + + [Serializable] + public class KHR_node_selectability : IExtension + { + public bool selectable = true; + + public JProperty Serialize() + { + var obj = new JObject(); + JProperty jProperty = new JProperty(KHR_node_selectability_Factory.EXTENSION_NAME, obj); + return jProperty; + } + + public IExtension Clone(GLTFRoot root) + { + return new KHR_node_selectability() { selectable = selectable}; + } + } + + public class KHR_node_selectability_Factory : ExtensionFactory + { + public const string EXTENSION_NAME = "KHR_node_selectability"; + + public KHR_node_selectability_Factory() + { + ExtensionName = EXTENSION_NAME; + } + + public override IExtension Deserialize(GLTFRoot root, JProperty extensionToken) + { + if (extensionToken != null) + { + var extension = new KHR_node_selectability(); + + JToken visible = extensionToken.Value[nameof(KHR_node_selectability.selectable)]; + if (visible != null) + extension.selectable = visible.Value(); + else + extension.selectable = true; + return extension; + } + + return null; + } + } +} \ No newline at end of file diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_selectability.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_selectability.cs.meta new file mode 100644 index 000000000..fb6f1bdfa --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_selectability.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 416a36fe49924ae9bdf9980b1f37592d +timeCreated: 1731435389 \ No newline at end of file diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs index f0f68b177..0beddc1e6 100644 --- a/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs @@ -42,6 +42,7 @@ public static IReadOnlyList RegisteredExtensions { KHR_materials_dispersion_Factory.EXTENSION_NAME, new KHR_materials_dispersion_Factory() }, { KHR_materials_sheen_Factory.EXTENSION_NAME, new KHR_materials_sheen_Factory()}, { KHR_visbility_Factory.EXTENSION_NAME, new KHR_visbility_Factory()}, + { KHR_node_selectability_Factory.EXTENSION_NAME, new KHR_node_selectability_Factory()}, }; private static DefaultExtensionFactory _defaultExtensionFactory = new DefaultExtensionFactory(); From a15253003a9ca3dce99e8154cd7b6b591de232c2 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Tue, 12 Nov 2024 19:57:28 +0100 Subject: [PATCH 093/117] renamed KHR_visibility to KHR_node_visibility --- ...{KHR_visibility.cs => KHR_node_visibility.cs} | 16 ++++++++-------- ...ility.cs.meta => KHR_node_visibility.cs.meta} | 0 Runtime/Scripts/GLTFSceneImporter.cs | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) rename Runtime/Plugins/GLTFSerialization/Extensions/{KHR_visibility.cs => KHR_node_visibility.cs} (55%) rename Runtime/Plugins/GLTFSerialization/Extensions/{KHR_visibility.cs.meta => KHR_node_visibility.cs.meta} (100%) diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_visibility.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_visibility.cs similarity index 55% rename from Runtime/Plugins/GLTFSerialization/Extensions/KHR_visibility.cs rename to Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_visibility.cs index 94d9279ac..c960c88e8 100644 --- a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_visibility.cs +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_visibility.cs @@ -5,28 +5,28 @@ namespace GLTF.Schema { [Serializable] - public class KHR_visbility : IExtension + public class KHR_node_visbility : IExtension { public bool visible = true; public JProperty Serialize() { var obj = new JObject(); - JProperty jProperty = new JProperty(KHR_visbility_Factory.EXTENSION_NAME, obj); + JProperty jProperty = new JProperty(KHR_node_visbility_Factory.EXTENSION_NAME, obj); return jProperty; } public IExtension Clone(GLTFRoot root) { - return new KHR_visbility() { visible = visible}; + return new KHR_node_visbility() { visible = visible}; } } - public class KHR_visbility_Factory : ExtensionFactory + public class KHR_node_visbility_Factory : ExtensionFactory { - public const string EXTENSION_NAME = "KHR_visibility"; + public const string EXTENSION_NAME = "KHR_node_visibility"; - public KHR_visbility_Factory() + public KHR_node_visbility_Factory() { ExtensionName = EXTENSION_NAME; } @@ -35,9 +35,9 @@ public override IExtension Deserialize(GLTFRoot root, JProperty extensionToken) { if (extensionToken != null) { - var extension = new KHR_visbility(); + var extension = new KHR_node_visbility(); - JToken visible = extensionToken.Value[nameof(KHR_visbility.visible)]; + JToken visible = extensionToken.Value[nameof(KHR_node_visbility.visible)]; if (visible != null) extension.visible = visible.Value(); else diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_visibility.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_visibility.cs.meta similarity index 100% rename from Runtime/Plugins/GLTFSerialization/Extensions/KHR_visibility.cs.meta rename to Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_visibility.cs.meta diff --git a/Runtime/Scripts/GLTFSceneImporter.cs b/Runtime/Scripts/GLTFSceneImporter.cs index c47e96139..8fd0df901 100644 --- a/Runtime/Scripts/GLTFSceneImporter.cs +++ b/Runtime/Scripts/GLTFSceneImporter.cs @@ -960,9 +960,9 @@ async Task GetAttrAccessorAndAccessorContent(AccessorId acces private bool ShouldBeVisible(Node node, GameObject nodeObj) { - if (node.Extensions != null && node.Extensions.TryGetValue(KHR_visbility_Factory.EXTENSION_NAME, out var ext)) + if (node.Extensions != null && node.Extensions.TryGetValue(KHR_node_visbility_Factory.EXTENSION_NAME, out var ext)) { - return (ext as KHR_visbility).visible; + return (ext as KHR_node_visbility).visible; } else return true; From 2783d8de8271df3355cdf67b23ab8f0a67d6adbf Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Wed, 13 Nov 2024 12:32:23 +0100 Subject: [PATCH 094/117] added missing serialization of visible and selectable --- .../GLTFSerialization/Extensions/KHR_node_selectability.cs | 2 ++ .../Plugins/GLTFSerialization/Extensions/KHR_node_visibility.cs | 1 + 2 files changed, 3 insertions(+) diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_selectability.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_selectability.cs index 7515dea06..6f55bd93a 100644 --- a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_selectability.cs +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_selectability.cs @@ -14,6 +14,8 @@ public JProperty Serialize() { var obj = new JObject(); JProperty jProperty = new JProperty(KHR_node_selectability_Factory.EXTENSION_NAME, obj); + obj.Add(new JProperty(nameof(selectable), selectable)); + return jProperty; } diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_visibility.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_visibility.cs index c960c88e8..186adbb9e 100644 --- a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_visibility.cs +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_visibility.cs @@ -13,6 +13,7 @@ public JProperty Serialize() { var obj = new JObject(); JProperty jProperty = new JProperty(KHR_node_visbility_Factory.EXTENSION_NAME, obj); + obj.Add(new JProperty(nameof(visible), visible)); return jProperty; } From 7d7661cb0129a2a30b1fccb8d2db771dd537a88b Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Wed, 13 Nov 2024 12:33:18 +0100 Subject: [PATCH 095/117] missing commit of renaming KHR_visibilty to KHR_node_visibility --- Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs index 0beddc1e6..464d8ce09 100644 --- a/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs @@ -41,7 +41,7 @@ public static IReadOnlyList RegisteredExtensions { KHR_animation_pointerExtensionFactory.EXTENSION_NAME, new KHR_animation_pointerExtensionFactory() }, { KHR_materials_dispersion_Factory.EXTENSION_NAME, new KHR_materials_dispersion_Factory() }, { KHR_materials_sheen_Factory.EXTENSION_NAME, new KHR_materials_sheen_Factory()}, - { KHR_visbility_Factory.EXTENSION_NAME, new KHR_visbility_Factory()}, + { KHR_node_visbility_Factory.EXTENSION_NAME, new KHR_node_visbility_Factory()}, { KHR_node_selectability_Factory.EXTENSION_NAME, new KHR_node_selectability_Factory()}, }; From 796c5238b677a4642bb2d082466284d2aa24a422 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Wed, 13 Nov 2024 12:33:31 +0100 Subject: [PATCH 096/117] added visibility extension to export --- Runtime/Scripts/GLTFSceneExporter.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Runtime/Scripts/GLTFSceneExporter.cs b/Runtime/Scripts/GLTFSceneExporter.cs index 34a86cf0d..343f77c13 100644 --- a/Runtime/Scripts/GLTFSceneExporter.cs +++ b/Runtime/Scripts/GLTFSceneExporter.cs @@ -389,6 +389,8 @@ public struct ExportFileResult private const int GLTFHeaderSize = 12; private const int SectionHeaderSize = 8; + private bool _visbilityPluginEnabled = false; + public struct UniqueTexture : IEquatable { public Texture Texture; @@ -655,6 +657,12 @@ public GLTFSceneExporter(Transform[] rootTransforms, ExportContext context) Root = _root }; _root.Buffers.Add(_buffer); + + _visbilityPluginEnabled = settings.ExportPlugins.Any(x => x is VisibilityExport && x.Enabled); + if (_visbilityPluginEnabled && !settings.ExportDisabledGameObjects) + { + Debug.Log(LogType.Warning,"KHR_node_visibility export plugin is enabled, but Export Disabled GameObjects is not. This may lead to unexpected results."); + } } /// @@ -974,6 +982,7 @@ private bool ShouldExportTransform(Transform transform) { return false; } + if (settings.UseMainCameraVisibility && (_exportLayerMask >= 0 && _exportLayerMask != (_exportLayerMask | 1 << transform.gameObject.layer))) return false; if (transform.CompareTag("EditorOnly")) return false; return true; @@ -1036,6 +1045,12 @@ private NodeId ExportNode(Transform nodeTransform) var node = new Node(); + if (_visbilityPluginEnabled && !nodeTransform.gameObject.activeSelf) + { + DeclareExtensionUsage(KHR_node_selectability_Factory.EXTENSION_NAME, false); + node.AddExtension(KHR_node_visbility_Factory.EXTENSION_NAME, new KHR_node_visbility { visible = false }); + } + if (ExportNames) { node.Name = nodeTransform.name; From 077f8a9741f3c270d874c6d6c23841105ed0e17c Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Wed, 13 Nov 2024 12:54:43 +0100 Subject: [PATCH 097/117] fixed importer issues for invisible objects when using KHR_node_visibility extension --- Editor/Scripts/GLTFImporter.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Editor/Scripts/GLTFImporter.cs b/Editor/Scripts/GLTFImporter.cs index ac723dbc4..885a0013d 100644 --- a/Editor/Scripts/GLTFImporter.cs +++ b/Editor/Scripts/GLTFImporter.cs @@ -431,7 +431,7 @@ string GetUniqueName(string desiredName) // scale all localPosition values if necessary if (gltfScene && !Mathf.Approximately(_scaleFactor, 1)) { - var transforms = gltfScene.GetComponentsInChildren(); + var transforms = gltfScene.GetComponentsInChildren(true); foreach (var tr in transforms) { tr.localPosition *= _scaleFactor; @@ -443,8 +443,8 @@ string GetUniqueName(string desiredName) var meshFilters = new List<(GameObject gameObject, Mesh sharedMesh)>(); if (gltfScene) { - meshFilters = gltfScene.GetComponentsInChildren().Select(x => (x.gameObject, x.sharedMesh)).ToList(); - meshFilters.AddRange(gltfScene.GetComponentsInChildren().Select(x => (x.gameObject, x.sharedMesh))); + meshFilters = gltfScene.GetComponentsInChildren(true).Select(x => (x.gameObject, x.sharedMesh)).ToList(); + meshFilters.AddRange(gltfScene.GetComponentsInChildren(true).Select(x => (x.gameObject, x.sharedMesh))); } var vertexBuffer = new List(); @@ -534,7 +534,7 @@ string GetUniqueName(string desiredName) ctx.AddObjectToAsset("avatar", avatar); } - var renderers = gltfScene ? gltfScene.GetComponentsInChildren() : Array.Empty(); + var renderers = gltfScene ? gltfScene.GetComponentsInChildren(true) : Array.Empty(); if (_importMaterials) { From 33ab0c9d4c071a383f9d780993be63f393cafae4 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Wed, 13 Nov 2024 13:10:01 +0100 Subject: [PATCH 098/117] fixed typo --- Runtime/Scripts/GLTFSceneExporter.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Runtime/Scripts/GLTFSceneExporter.cs b/Runtime/Scripts/GLTFSceneExporter.cs index 343f77c13..aad70c582 100644 --- a/Runtime/Scripts/GLTFSceneExporter.cs +++ b/Runtime/Scripts/GLTFSceneExporter.cs @@ -1047,7 +1047,7 @@ private NodeId ExportNode(Transform nodeTransform) if (_visbilityPluginEnabled && !nodeTransform.gameObject.activeSelf) { - DeclareExtensionUsage(KHR_node_selectability_Factory.EXTENSION_NAME, false); + DeclareExtensionUsage(KHR_node_visbility_Factory.EXTENSION_NAME, false); node.AddExtension(KHR_node_visbility_Factory.EXTENSION_NAME, new KHR_node_visbility { visible = false }); } From b87f667224262424fd6d4d1f474f0bc7d9f352ec Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Wed, 4 Dec 2024 09:25:31 +0100 Subject: [PATCH 099/117] added hoverability extension --- .../Extensions/KHR_node_hoverability.cs | 54 +++++++++++++++++++ .../Extensions/KHR_node_hoverability.cs.meta | 3 ++ .../GLTFSerialization/Schema/GLTFProperty.cs | 1 + 3 files changed, 58 insertions(+) create mode 100644 Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_hoverability.cs create mode 100644 Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_hoverability.cs.meta diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_hoverability.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_hoverability.cs new file mode 100644 index 000000000..d76bd787b --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_hoverability.cs @@ -0,0 +1,54 @@ +using System; +using Newtonsoft.Json.Linq; +using UnityEngine.Serialization; + +namespace GLTF.Schema +{ + + [Serializable] + public class KHR_node_hoverability : IExtension + { + public bool hoverable = true; + + public JProperty Serialize() + { + var obj = new JObject(); + JProperty jProperty = new JProperty(KHR_node_hoverability_Factory.EXTENSION_NAME, obj); + obj.Add(new JProperty(nameof(hoverable), hoverable)); + + return jProperty; + } + + public IExtension Clone(GLTFRoot root) + { + return new KHR_node_hoverability() { hoverable = hoverable}; + } + } + + public class KHR_node_hoverability_Factory : ExtensionFactory + { + public const string EXTENSION_NAME = "KHR_node_hoverability"; + + public KHR_node_hoverability_Factory() + { + ExtensionName = EXTENSION_NAME; + } + + public override IExtension Deserialize(GLTFRoot root, JProperty extensionToken) + { + if (extensionToken != null) + { + var extension = new KHR_node_hoverability(); + + JToken hoverable = extensionToken.Value[nameof(KHR_node_hoverability.hoverable)]; + if (hoverable != null) + extension.hoverable = hoverable.Value(); + else + extension.hoverable = true; + return extension; + } + + return null; + } + } +} \ No newline at end of file diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_hoverability.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_hoverability.cs.meta new file mode 100644 index 000000000..de792da2e --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_hoverability.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ce8968759cf34e3ea014d5d047970e96 +timeCreated: 1733300503 \ No newline at end of file diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs index 464d8ce09..4423dbf1e 100644 --- a/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs @@ -43,6 +43,7 @@ public static IReadOnlyList RegisteredExtensions { KHR_materials_sheen_Factory.EXTENSION_NAME, new KHR_materials_sheen_Factory()}, { KHR_node_visbility_Factory.EXTENSION_NAME, new KHR_node_visbility_Factory()}, { KHR_node_selectability_Factory.EXTENSION_NAME, new KHR_node_selectability_Factory()}, + { KHR_node_hoverability_Factory.EXTENSION_NAME, new KHR_node_hoverability_Factory()}, }; private static DefaultExtensionFactory _defaultExtensionFactory = new DefaultExtensionFactory(); From 46d9af1d605b8d8ecc87383e49b5132d4e96a685 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 5 Dec 2024 14:15:43 +0100 Subject: [PATCH 100/117] fixed wrong extension name for visibility extension plugin --- Runtime/Scripts/Plugins/VisibilityExport.cs | 4 +++- Runtime/Scripts/Plugins/VisibilityImport.cs | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Runtime/Scripts/Plugins/VisibilityExport.cs b/Runtime/Scripts/Plugins/VisibilityExport.cs index 401cfd402..6d5a8d81d 100644 --- a/Runtime/Scripts/Plugins/VisibilityExport.cs +++ b/Runtime/Scripts/Plugins/VisibilityExport.cs @@ -1,8 +1,10 @@ +using GLTF.Schema; + namespace UnityGLTF.Plugins { public class VisibilityExport : GLTFExportPlugin { - public override string DisplayName => "KHR_visibility"; + public override string DisplayName => KHR_node_visbility_Factory.EXTENSION_NAME; public override string Description => "Exports visibility of objects."; public override bool AlwaysEnabled => false; public override bool EnabledByDefault => false; diff --git a/Runtime/Scripts/Plugins/VisibilityImport.cs b/Runtime/Scripts/Plugins/VisibilityImport.cs index d97bbf28e..6b2b67953 100644 --- a/Runtime/Scripts/Plugins/VisibilityImport.cs +++ b/Runtime/Scripts/Plugins/VisibilityImport.cs @@ -1,8 +1,10 @@ +using GLTF.Schema; + namespace UnityGLTF.Plugins { public class VisibilityImport: GLTFImportPlugin { - public override string DisplayName => "KHR_visibility"; + public override string DisplayName => KHR_node_visbility_Factory.EXTENSION_NAME; public override string Description => "Imports visibility of objects"; public override bool AlwaysEnabled => true; public override GLTFImportPluginContext CreateInstance(GLTFImportContext context) From dfbbdbc41801fe568957625320e8d76e0fe0a41e Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 6 Feb 2025 15:12:12 +0100 Subject: [PATCH 101/117] exposed plugins from exporter --- Runtime/Scripts/GLTFSceneExporter.cs | 2 ++ .../Plugins/AnimationPointer/MaterialPropertiesRemapper.cs | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/Runtime/Scripts/GLTFSceneExporter.cs b/Runtime/Scripts/GLTFSceneExporter.cs index aad70c582..26c83d435 100644 --- a/Runtime/Scripts/GLTFSceneExporter.cs +++ b/Runtime/Scripts/GLTFSceneExporter.cs @@ -152,6 +152,8 @@ public override bool BeforeMaterialExport(GLTFSceneExporter exporter, GLTFRoot g private static ILogger Debug = UnityEngine.Debug.unityLogger; private List _plugins = new List(); + public IReadOnlyList Plugins => _plugins; + public struct TextureMapType { public const string BaseColor = "baseColorTexture"; diff --git a/Runtime/Scripts/Plugins/AnimationPointer/MaterialPropertiesRemapper.cs b/Runtime/Scripts/Plugins/AnimationPointer/MaterialPropertiesRemapper.cs index 0434036d1..26093590c 100644 --- a/Runtime/Scripts/Plugins/AnimationPointer/MaterialPropertiesRemapper.cs +++ b/Runtime/Scripts/Plugins/AnimationPointer/MaterialPropertiesRemapper.cs @@ -238,6 +238,11 @@ public void AddMap(MaterialPointerPropertyMap map, ImportExportUsageOption impor } } + public bool GetMapByUnityProperty(string unityPropertyName, out MaterialPointerPropertyMap map) + { + return exportMaps.TryGetValue(unityPropertyName, out map); + } + public bool GetMapFromUnityMaterial(Material mat, string unityPropertyName, out MaterialPointerPropertyMap map) { map = null; From 9708cb66507449e2359061d737764d55edc4fec3 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Wed, 5 Mar 2025 08:29:58 +0100 Subject: [PATCH 102/117] fixed typo --- .../Extensions/KHR_node_visibility.cs | 14 +++++++------- .../GLTFSerialization/Schema/GLTFProperty.cs | 2 +- Runtime/Scripts/GLTFSceneExporter.cs | 4 ++-- Runtime/Scripts/GLTFSceneImporter.cs | 4 ++-- Runtime/Scripts/Plugins/VisibilityExport.cs | 2 +- Runtime/Scripts/Plugins/VisibilityImport.cs | 2 +- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_visibility.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_visibility.cs index 186adbb9e..af825743a 100644 --- a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_visibility.cs +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_node_visibility.cs @@ -5,29 +5,29 @@ namespace GLTF.Schema { [Serializable] - public class KHR_node_visbility : IExtension + public class KHR_node_visibility : IExtension { public bool visible = true; public JProperty Serialize() { var obj = new JObject(); - JProperty jProperty = new JProperty(KHR_node_visbility_Factory.EXTENSION_NAME, obj); + JProperty jProperty = new JProperty(KHR_node_visibility_Factory.EXTENSION_NAME, obj); obj.Add(new JProperty(nameof(visible), visible)); return jProperty; } public IExtension Clone(GLTFRoot root) { - return new KHR_node_visbility() { visible = visible}; + return new KHR_node_visibility() { visible = visible}; } } - public class KHR_node_visbility_Factory : ExtensionFactory + public class KHR_node_visibility_Factory : ExtensionFactory { public const string EXTENSION_NAME = "KHR_node_visibility"; - public KHR_node_visbility_Factory() + public KHR_node_visibility_Factory() { ExtensionName = EXTENSION_NAME; } @@ -36,9 +36,9 @@ public override IExtension Deserialize(GLTFRoot root, JProperty extensionToken) { if (extensionToken != null) { - var extension = new KHR_node_visbility(); + var extension = new KHR_node_visibility(); - JToken visible = extensionToken.Value[nameof(KHR_node_visbility.visible)]; + JToken visible = extensionToken.Value[nameof(KHR_node_visibility.visible)]; if (visible != null) extension.visible = visible.Value(); else diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs index 4423dbf1e..4a1651228 100644 --- a/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs @@ -41,7 +41,7 @@ public static IReadOnlyList RegisteredExtensions { KHR_animation_pointerExtensionFactory.EXTENSION_NAME, new KHR_animation_pointerExtensionFactory() }, { KHR_materials_dispersion_Factory.EXTENSION_NAME, new KHR_materials_dispersion_Factory() }, { KHR_materials_sheen_Factory.EXTENSION_NAME, new KHR_materials_sheen_Factory()}, - { KHR_node_visbility_Factory.EXTENSION_NAME, new KHR_node_visbility_Factory()}, + { KHR_node_visibility_Factory.EXTENSION_NAME, new KHR_node_visibility_Factory()}, { KHR_node_selectability_Factory.EXTENSION_NAME, new KHR_node_selectability_Factory()}, { KHR_node_hoverability_Factory.EXTENSION_NAME, new KHR_node_hoverability_Factory()}, }; diff --git a/Runtime/Scripts/GLTFSceneExporter.cs b/Runtime/Scripts/GLTFSceneExporter.cs index 26c83d435..2ff9c45ea 100644 --- a/Runtime/Scripts/GLTFSceneExporter.cs +++ b/Runtime/Scripts/GLTFSceneExporter.cs @@ -1049,8 +1049,8 @@ private NodeId ExportNode(Transform nodeTransform) if (_visbilityPluginEnabled && !nodeTransform.gameObject.activeSelf) { - DeclareExtensionUsage(KHR_node_visbility_Factory.EXTENSION_NAME, false); - node.AddExtension(KHR_node_visbility_Factory.EXTENSION_NAME, new KHR_node_visbility { visible = false }); + DeclareExtensionUsage(KHR_node_visibility_Factory.EXTENSION_NAME, false); + node.AddExtension(KHR_node_visibility_Factory.EXTENSION_NAME, new KHR_node_visibility { visible = false }); } if (ExportNames) diff --git a/Runtime/Scripts/GLTFSceneImporter.cs b/Runtime/Scripts/GLTFSceneImporter.cs index 8fd0df901..931ce3542 100644 --- a/Runtime/Scripts/GLTFSceneImporter.cs +++ b/Runtime/Scripts/GLTFSceneImporter.cs @@ -960,9 +960,9 @@ async Task GetAttrAccessorAndAccessorContent(AccessorId acces private bool ShouldBeVisible(Node node, GameObject nodeObj) { - if (node.Extensions != null && node.Extensions.TryGetValue(KHR_node_visbility_Factory.EXTENSION_NAME, out var ext)) + if (node.Extensions != null && node.Extensions.TryGetValue(KHR_node_visibility_Factory.EXTENSION_NAME, out var ext)) { - return (ext as KHR_node_visbility).visible; + return (ext as KHR_node_visibility).visible; } else return true; diff --git a/Runtime/Scripts/Plugins/VisibilityExport.cs b/Runtime/Scripts/Plugins/VisibilityExport.cs index 6d5a8d81d..d672d9e48 100644 --- a/Runtime/Scripts/Plugins/VisibilityExport.cs +++ b/Runtime/Scripts/Plugins/VisibilityExport.cs @@ -4,7 +4,7 @@ namespace UnityGLTF.Plugins { public class VisibilityExport : GLTFExportPlugin { - public override string DisplayName => KHR_node_visbility_Factory.EXTENSION_NAME; + public override string DisplayName => KHR_node_visibility_Factory.EXTENSION_NAME; public override string Description => "Exports visibility of objects."; public override bool AlwaysEnabled => false; public override bool EnabledByDefault => false; diff --git a/Runtime/Scripts/Plugins/VisibilityImport.cs b/Runtime/Scripts/Plugins/VisibilityImport.cs index 6b2b67953..44906af41 100644 --- a/Runtime/Scripts/Plugins/VisibilityImport.cs +++ b/Runtime/Scripts/Plugins/VisibilityImport.cs @@ -4,7 +4,7 @@ namespace UnityGLTF.Plugins { public class VisibilityImport: GLTFImportPlugin { - public override string DisplayName => KHR_node_visbility_Factory.EXTENSION_NAME; + public override string DisplayName => KHR_node_visibility_Factory.EXTENSION_NAME; public override string Description => "Imports visibility of objects"; public override bool AlwaysEnabled => true; public override GLTFImportPluginContext CreateInstance(GLTFImportContext context) From 15790db20aada80adb5bd22482c8814f8daf8a86 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 6 Mar 2025 09:43:12 +0100 Subject: [PATCH 103/117] PBRGraph Shader: clamped Sheen Rougness to 0..1 --- .../Shaders/ShaderGraph/PBRGraph.shadergraph | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph b/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph index 3c8c33b0c..799c76b8d 100644 --- a/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph +++ b/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph @@ -7661,10 +7661,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 575.0000610351563, - "y": 620.0000610351563, - "width": 130.00006103515626, - "height": 142.0 + "x": 932.6666870117188, + "y": 580.0, + "width": 131.33331298828126, + "height": 143.99993896484376 } }, "m_Slots": [ @@ -18626,7 +18626,7 @@ "hlslDeclarationOverride": 0, "m_Hidden": false, "m_Value": 0.0, - "m_FloatType": 0, + "m_FloatType": 1, "m_RangeValues": { "x": 0.0, "y": 1.0 @@ -24287,10 +24287,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 378.0001525878906, - "y": 553.0001220703125, - "width": 129.99969482421876, - "height": 118.00006103515625 + "x": 706.6666870117188, + "y": 428.66668701171877, + "width": 131.333251953125, + "height": 119.99993896484375 } }, "m_Slots": [ @@ -24835,10 +24835,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 300.00006103515627, - "y": 683.0001831054688, - "width": 207.99978637695313, - "height": 127.00006103515625 + "x": 98.00000762939453, + "y": 428.66668701171877, + "width": 209.33334350585938, + "height": 129.99993896484376 } }, "m_Slots": [ @@ -26314,10 +26314,10 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": 64.00001525878906, - "y": 381.7143249511719, - "width": 209.14283752441407, - "height": 304.5714416503906 + "x": 376.0, + "y": 251.33334350585938, + "width": 185.33331298828126, + "height": 121.33334350585938 } }, "m_Slots": [ @@ -26333,7 +26333,7 @@ ], "synonyms": [], "m_Precision": 0, - "m_PreviewExpanded": true, + "m_PreviewExpanded": false, "m_PreviewMode": 0, "m_CustomColors": { "m_SerializableColors": [] From 6f990fb72c0d64d4aaf651dfef84b6822c67e2a6 Mon Sep 17 00:00:00 2001 From: Felix Herbst Date: Thu, 6 Mar 2025 13:55:23 +0100 Subject: [PATCH 104/117] cleanup: pass selected build target into TextureImporterHelper --- Editor/Scripts/GLTFImporter.cs | 2 +- Editor/Scripts/Internal/TextureImporterHelper.cs | 16 ++-------------- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/Editor/Scripts/GLTFImporter.cs b/Editor/Scripts/GLTFImporter.cs index 1b6caf78b..86a6fa8c4 100644 --- a/Editor/Scripts/GLTFImporter.cs +++ b/Editor/Scripts/GLTFImporter.cs @@ -702,7 +702,7 @@ string GetUniqueName(string desiredName) if (_textureCompression != GLTFImporterTextureCompressionQuality.None) { // platform-dependant texture compression - var format = TextureImporterHelper.GetAutomaticFormat(tex); + var format = TextureImporterHelper.GetAutomaticFormat(tex, ctx.selectedBuildTarget); var convertedFormat = (TextureFormat)(int)format; if ((int)convertedFormat > -1) { diff --git a/Editor/Scripts/Internal/TextureImporterHelper.cs b/Editor/Scripts/Internal/TextureImporterHelper.cs index 7f7f43683..17852ea84 100644 --- a/Editor/Scripts/Internal/TextureImporterHelper.cs +++ b/Editor/Scripts/Internal/TextureImporterHelper.cs @@ -10,10 +10,9 @@ public class TextureImporterHelper { private const string DefaultTextureAssetGuid = "7b7ff3cec11c24c599d6f12443877d5e"; - public static TextureImporterFormat GetAutomaticFormat(Texture2D texture) + public static TextureImporterFormat GetAutomaticFormat(Texture2D texture, BuildTarget buildTarget) { var defaultTextureImporter = AssetImporter.GetAtPath(AssetDatabase.GUIDToAssetPath(DefaultTextureAssetGuid)) as TextureImporter; - // defaultTextureImporter = new TextureImporter(); TextureImporterSettings importerSettings = new TextureImporterSettings(); @@ -25,19 +24,8 @@ public static TextureImporterFormat GetAutomaticFormat(Texture2D texture) var hasAlpha = TextureUtil.HasAlphaTextureFormat(texture.format); var isHDR = TextureUtil.IsHDRFormat(texture.format); - - // var platformSettings = new TextureImporterPlatformSettings(); - foreach (BuildPlatform validPlatform in BuildPlatforms.instance.GetValidPlatforms()) - { - // TextureImporter.RecommendedFormatsFromTextureTypeAndPlatform - if (validPlatform.IsActive()) - { - return TextureImporter.DefaultFormatFromTextureParameters(importerSettings, defaultTextureImporter.GetPlatformTextureSettings(validPlatform.name), hasAlpha, isHDR, validPlatform.defaultTarget); - } - } - // This should never happen - return TextureImporterFormat.Automatic; + return TextureImporter.DefaultFormatFromTextureParameters(importerSettings, defaultTextureImporter.GetDefaultPlatformTextureSettings(), hasAlpha, isHDR, buildTarget); } } } \ No newline at end of file From 1e7096fb935da6f7050d0c9110a7bf2b1b6731d3 Mon Sep 17 00:00:00 2001 From: Felix Herbst Date: Thu, 6 Mar 2025 16:58:06 +0100 Subject: [PATCH 105/117] add shader dependencies to importer to work around some edge cases at first library import --- Editor/Scripts/GLTFImporter.cs | 4 ++++ Runtime/Scripts/UniformMaps/PBRGraphMap.cs | 2 +- Runtime/Scripts/UniformMaps/UnlitGraphMap.cs | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Editor/Scripts/GLTFImporter.cs b/Editor/Scripts/GLTFImporter.cs index 86a6fa8c4..88ffc0dd7 100644 --- a/Editor/Scripts/GLTFImporter.cs +++ b/Editor/Scripts/GLTFImporter.cs @@ -195,6 +195,10 @@ private class NonReorderableAttribute : Attribute {} private static string[] GatherDependenciesFromSourceFile(string path) { var dependencies = new List(); + + // Add shader dependencies to ensure they're imported first + dependencies.Add(AssetDatabase.GUIDToAssetPath(PBRGraphMap.PBRGraphGuid)); + dependencies.Add(AssetDatabase.GUIDToAssetPath(UnlitGraphMap.UnlitGraphGuid)); // only supported glTF for now - would be harder to check for external references in glb assets. if (!path.ToLowerInvariant().EndsWith(".gltf")) diff --git a/Runtime/Scripts/UniformMaps/PBRGraphMap.cs b/Runtime/Scripts/UniformMaps/PBRGraphMap.cs index d1feece24..4dfc860e6 100644 --- a/Runtime/Scripts/UniformMaps/PBRGraphMap.cs +++ b/Runtime/Scripts/UniformMaps/PBRGraphMap.cs @@ -4,7 +4,7 @@ namespace UnityGLTF { public class PBRGraphMap : BaseGraphMap, IMetalRoughUniformMap, IVolumeMap, ITransmissionMap, IIORMap, IIridescenceMap, ISpecularMap, IClearcoatMap, IDispersionMap, ISheenMap { - private const string PBRGraphGuid = "478ce3626be7a5f4ea58d6b13f05a2e4"; + internal const string PBRGraphGuid = "478ce3626be7a5f4ea58d6b13f05a2e4"; public PBRGraphMap() : this("UnityGLTF/PBRGraph") {} diff --git a/Runtime/Scripts/UniformMaps/UnlitGraphMap.cs b/Runtime/Scripts/UniformMaps/UnlitGraphMap.cs index d40440bd6..ad5341529 100644 --- a/Runtime/Scripts/UniformMaps/UnlitGraphMap.cs +++ b/Runtime/Scripts/UniformMaps/UnlitGraphMap.cs @@ -4,7 +4,7 @@ namespace UnityGLTF { public class UnlitGraphMap : BaseGraphMap, IUnlitUniformMap { - private const string UnlitGraphGuid = "59541e6caf586ca4f96ccf48a4813a51"; + internal const string UnlitGraphGuid = "59541e6caf586ca4f96ccf48a4813a51"; public UnlitGraphMap() : this("UnityGLTF/UnlitGraph") {} #if !UNITY_2021_1_OR_NEWER From da6098934b312e074fce81e2b6627d0e3d83d3cf Mon Sep 17 00:00:00 2001 From: Felix Herbst Date: Thu, 6 Mar 2025 16:58:41 +0100 Subject: [PATCH 106/117] changelog/version --- CHANGELOG.md | 18 ++++++++++++++++++ package.json | 4 ++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c8d315f11..de0cd3fa6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,24 @@ 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). +## [2.15.0] - 2025-03-06 + +- fix: assets with absolute URLs or paths containing URL encoded information now load correctly +- fix: improve shader dependencies in editor importer to work around some edge cases at first library import +- fix: check all sub-meshes of used attributes instead of only the first one when creating attribute arrays +- fix: ensure progress callback is triggered before `onLoadComplete` in scene loader +- fix: prevent null reference exception when plugin is not loaded/defined +- fix: work around API change in Unity 6000.0.38f1 that caused compilation error +- fix: clamped `Sheen Roughness` to 0..1 range in PBRGraph shader +- fix: `RoughRefractionFeature` now supports Unity 6 and new Render Graph API +- fix: set volume and transmission materials to `AlphaMode.BLEND` on VisionOS to ensure proper rendering +- change: mark package as compatible with Unity 2021.3+. Legacy support for 2020 and earlier will be removed in future updates. +- add: MaterialX branches to `UnityGLTF/PBRGraph` shader with conditional compilation for VisionOS +- add: `MaterialXColor` and `MaterialXFloat` shadersubgraphs for platform-specific material settings +- add: new runtime texture compression option (`None`, `LowQuality`, `HighQuality`) to improve runtime memory usage +- add: exposed import settings to keep CPU copy of mesh/textures to `GLTFComponent` +- add: include UnityGLTF package version, Unity version and current render pipeline in `assets.extras` on export + ## [2.14.1] - 2024-10-28 - fix: compiler error with `ParticleSystemBakeMeshOptions` before 2022.3.11f1 since that's where the API was introduced diff --git a/package.json b/package.json index 090cf7407..1d798fc47 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "org.khronos.unitygltf", "displayName": "UnityGLTF", - "version": "2.14.1", - "unity": "2020.3", + "version": "2.15.0", + "unity": "2021.3", "description": "Import and export glTF 2.0 assets, both in the editor and at runtime. Excellent support for animations, materials, extensions. Can be extended with plugins for both import and export use cases.", "repository": { "url": "https://github.com/KhronosGroup/UnityGLTF.git" From 72b35df65413b831420b0dac372f2b9d613ec8e4 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 6 Mar 2025 12:18:24 +0100 Subject: [PATCH 107/117] updated readme: added runtime loading code snippets, runtime shader informations --- README.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/README.md b/README.md index e293a8f5a..a607d6865 100644 --- a/README.md +++ b/README.md @@ -310,6 +310,52 @@ To create smaller files for complex blend shape animations (e.g. faces with doze ## Importing glTF files +### Runtime Import + +#### Load via Gltf Component + +To import `.gltf` or `.glb` files at runtime, you can use the `GLTFComponent` for loading. + + + +#### Load via code example: + +From local file: +```csharp +string dir = "C:\SamplePath\"; +string filename = "AntiqueCamera.glb"; + +var importOpt = new ImportOptions(); +importOpt.DataLoader = new UnityWebRequestLoader(dir); +var import = new GLTFSceneImporter(filename, importOpt); +await import.LoadSceneAsync(); +``` + +From Web: +```csharp +string uriDir = "https://github.com/KhronosGroup/glTF-Sample-Models/raw/refs/heads/main/2.0/AntiqueCamera/glTF-Binary/"; +string filename = "AntiqueCamera.glb"; + +var importOpt = new ImportOptions(); +importOpt.DataLoader = new UnityWebRequestLoader(uriDir); +var import = new GLTFSceneImporter(filename, importOpt); +await import.LoadSceneAsync(); +``` + +Accessing the loaded gltf scene: +```csharp +import.LastLoadedScene +``` +On the loaded gltf scene you will find the `InstantiatedGLTFObject` component. Use the method `Duplicate` from it, to create a copy of the loaded scene. + +### Ensure shaders are available in your build +Please make sure you have added the `UnityGLTFShaderVariantCollection` (or `UnityGLTFShaderVariantCollection-BiRP` for BuildIn render pipeline) in the `Project Settings > Graphics > Preloaded Shaders`. +Otherwise, it's possible that shaders are missing in build. Please be aware, that on the first build the compile time can take some time. + +When you building for mobile platforms and you have the requirement for smaller shader sizes, and you know which shaders features you realy need, it might be better to create your own Shader Variant Collection. + +You can also strip additional shader variants under `Project Settings > UnityGtlf > Build` to reduce shader compile time. + ### Editor Import For importing `.gltf` or `.glb` files in the editor, place them in your project as usual (Assets or Packages). From e6ccad1a054d7aeb68c3f11ca394214b48954b67 Mon Sep 17 00:00:00 2001 From: pfcDorn <118285915+pfcDorn@users.noreply.github.com> Date: Thu, 6 Mar 2025 17:08:27 +0100 Subject: [PATCH 108/117] added GLTFComponent screenshot --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a607d6865..7b03c281f 100644 --- a/README.md +++ b/README.md @@ -316,7 +316,7 @@ To create smaller files for complex blend shape animations (e.g. faces with doze To import `.gltf` or `.glb` files at runtime, you can use the `GLTFComponent` for loading. - +![image](https://github.com/user-attachments/assets/ae00761a-513d-4ea9-8ce8-edfc06086ce2) #### Load via code example: From a401ac0bb975366f0bfd011c8a6a4db30fd2d1f1 Mon Sep 17 00:00:00 2001 From: pfcDorn <118285915+pfcDorn@users.noreply.github.com> Date: Thu, 6 Mar 2025 17:11:49 +0100 Subject: [PATCH 109/117] changed screenshot size --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7b03c281f..5b2ac7cd5 100644 --- a/README.md +++ b/README.md @@ -316,7 +316,7 @@ To create smaller files for complex blend shape animations (e.g. faces with doze To import `.gltf` or `.glb` files at runtime, you can use the `GLTFComponent` for loading. -![image](https://github.com/user-attachments/assets/ae00761a-513d-4ea9-8ce8-edfc06086ce2) +![image](https://github.com/user-attachments/assets/40f184ae-3135-4b60-a1bd-d6273105e507) #### Load via code example: From f2e443a70de6d802da740ec1fedf7d05c3e29deb Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Thu, 6 Mar 2025 17:15:22 +0100 Subject: [PATCH 110/117] renamed AppendStreamingassets to LoadFromStreamingAssets, inclusive changelog change entry --- CHANGELOG.md | 1 + Runtime/Scripts/GLTFComponent.cs | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index de0cd3fa6..5ca5ebc5d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - fix: `RoughRefractionFeature` now supports Unity 6 and new Render Graph API - fix: set volume and transmission materials to `AlphaMode.BLEND` on VisionOS to ensure proper rendering - change: mark package as compatible with Unity 2021.3+. Legacy support for 2020 and earlier will be removed in future updates. +- change: renamed `GLTFComponent` setting `AppendStreamingAssets` to `LoadFromStreamingAssetsFolder` - add: MaterialX branches to `UnityGLTF/PBRGraph` shader with conditional compilation for VisionOS - add: `MaterialXColor` and `MaterialXFloat` shadersubgraphs for platform-specific material settings - add: new runtime texture compression option (`None`, `LowQuality`, `HighQuality`) to improve runtime memory usage diff --git a/Runtime/Scripts/GLTFComponent.cs b/Runtime/Scripts/GLTFComponent.cs index e7d7b7281..361657d50 100644 --- a/Runtime/Scripts/GLTFComponent.cs +++ b/Runtime/Scripts/GLTFComponent.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using UnityEngine; using UnityEngine.Events; +using UnityEngine.Serialization; using UnityGLTF.Loader; using UnityGLTF.Plugins; #if WINDOWS_UWP @@ -21,7 +22,7 @@ public class GLTFComponent : MonoBehaviour { public string GLTFUri = null; public bool Multithreaded = true; - public bool AppendStreamingAssets = true; + [FormerlySerializedAs("AppendStreamingAssets")] public bool LoadFromStreamingAssets = true; public bool PlayAnimationOnLoad = true; [Tooltip("Hide the scene object during load, then activate it when complete")] public bool HideSceneObjDuringLoad = false; @@ -114,7 +115,7 @@ public async Task Load() if (!Factory) Factory = ScriptableObject.CreateInstance(); string fullPath; - if (AppendStreamingAssets) + if (LoadFromStreamingAssets) fullPath = Path.Combine(Application.streamingAssetsPath, GLTFUri.TrimStart(new[] { Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar })); else fullPath = GLTFUri; From 58968ca81623c74380489cd8ef0b44edc9c6872c Mon Sep 17 00:00:00 2001 From: Felix Herbst Date: Thu, 6 Mar 2025 17:38:25 +0100 Subject: [PATCH 111/117] changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ca5ebc5d..31fd17a60 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - add: new runtime texture compression option (`None`, `LowQuality`, `HighQuality`) to improve runtime memory usage - add: exposed import settings to keep CPU copy of mesh/textures to `GLTFComponent` - add: include UnityGLTF package version, Unity version and current render pipeline in `assets.extras` on export +- add: [`KHR_node_visibility`](https://github.com/KhronosGroup/glTF/pull/2410) import and export support, currently disabled by default. Enable in `UnityGLTFSettings`. This is a preparative step for `KHR_interactivity`, which will be added in a later release. Please note that this extension is not yet ratified and implementation details may change. +- add: schema and serialization support for [`KHR_node_hoverability`](https://github.com/KhronosGroup/glTF/pull/2426) and [`KHR_node_selectability`](https://github.com/KhronosGroup/glTF/pull/2422). Please note that these extensions are not yet ratified and implementation details may change. ## [2.14.1] - 2024-10-28 From e0e086fe0e17af54b4ce732d76e24247153bf5c8 Mon Sep 17 00:00:00 2001 From: Andy Baker Date: Tue, 18 Jun 2024 10:18:36 +0100 Subject: [PATCH 112/117] Add plugin hook for ShouldNodeExport --- Runtime/Scripts/GLTFSceneExporter.cs | 6 +++++- Runtime/Scripts/Plugins/Core/GltfExportPlugin.cs | 1 + Runtime/Scripts/Plugins/LodsExport.cs | 4 +++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Runtime/Scripts/GLTFSceneExporter.cs b/Runtime/Scripts/GLTFSceneExporter.cs index 45862b380..6e2a825d4 100644 --- a/Runtime/Scripts/GLTFSceneExporter.cs +++ b/Runtime/Scripts/GLTFSceneExporter.cs @@ -1043,6 +1043,9 @@ private NodeId ExportNode(Transform nodeTransform) if (_exportedTransforms.TryGetValue(nodeTransform.GetInstanceID(), out var existingNodeId)) return new NodeId() { Id = existingNodeId, Root = _root }; + foreach (var plugin in _plugins) + if (!(plugin?.ShouldNodeExport(this, _root, nodeTransform) ?? true)) return null; + exportNodeMarker.Begin(); var node = new Node(); @@ -1189,7 +1192,8 @@ private NodeId ExportNode(Transform nodeTransform) foreach (var child in nonPrimitives) { if (!ShouldExportTransform(child.transform)) continue; - parentOfChilds.Children.Add(ExportNode(child.transform)); + var childNode = ExportNode(child.transform); + if (childNode != null) parentOfChilds.Children.Add(childNode); } } diff --git a/Runtime/Scripts/Plugins/Core/GltfExportPlugin.cs b/Runtime/Scripts/Plugins/Core/GltfExportPlugin.cs index 5eaa56e20..96d363718 100644 --- a/Runtime/Scripts/Plugins/Core/GltfExportPlugin.cs +++ b/Runtime/Scripts/Plugins/Core/GltfExportPlugin.cs @@ -15,6 +15,7 @@ public abstract class GLTFExportPluginContext { public virtual void BeforeSceneExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot) {} public virtual void AfterSceneExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot) {} + public virtual bool ShouldNodeExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Transform transform) => true; public virtual void BeforeNodeExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Transform transform, Node node) {} public virtual void AfterNodeExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Transform transform, Node node) {} public virtual bool BeforeMaterialExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Material material, GLTFMaterial materialNode) => false; diff --git a/Runtime/Scripts/Plugins/LodsExport.cs b/Runtime/Scripts/Plugins/LodsExport.cs index 2b525e6d3..1d7ad7d31 100644 --- a/Runtime/Scripts/Plugins/LodsExport.cs +++ b/Runtime/Scripts/Plugins/LodsExport.cs @@ -46,7 +46,9 @@ public override void AfterNodeExport(GLTFSceneExporter exporter, GLTFRoot gltfro return; } - nodeIds[index] = exporter.ExportNode(lod.renderers[0].gameObject).Id; + var lodNode = exporter.ExportNode(lod.renderers[0].gameObject); + if (lodNode != null) nodeIds[index] = lodNode.Id; + coverages[index] = lod.screenRelativeTransitionHeight; } // if (usesCulling) coverages[coverages.Length - 1] = 0; From 4efc65cf63025d7b44281333927add9624873ee9 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Fri, 7 Mar 2025 10:26:02 +0100 Subject: [PATCH 113/117] added KHR_node_visibility to Import/Export section in readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5b2ac7cd5..5664b0d89 100644 --- a/README.md +++ b/README.md @@ -140,6 +140,7 @@ The lists below are non-conclusive and in no particular order. Note that there a - KHR_materials_dispersion (refractive index dispersion) - MSFT_lods (level of detail) - KHR_animation_pointer (arbitrary property animations) +- KHR_node_visibility (GameObject active state) ### Import only From e15a1f7e1e0e0cfa1e2a208df0795fe549f1e194 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Fri, 7 Mar 2025 11:39:34 +0100 Subject: [PATCH 114/117] deprecated unity api changes in GraphicsSettings --- Runtime/Scripts/GLTFSettings.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Runtime/Scripts/GLTFSettings.cs b/Runtime/Scripts/GLTFSettings.cs index 8786a084f..de62ff7ad 100644 --- a/Runtime/Scripts/GLTFSettings.cs +++ b/Runtime/Scripts/GLTFSettings.cs @@ -45,7 +45,7 @@ internal string GetGenerator() gltfVersion = packageVersion; #endif var renderPipeline = "Built-in RP"; - var renderPipelineAsset = UnityEngine.Rendering.GraphicsSettings.renderPipelineAsset; + var renderPipelineAsset = UnityEngine.Rendering.GraphicsSettings.currentRenderPipeline; if (renderPipelineAsset) { renderPipeline = renderPipelineAsset.GetType().Name; From f9782891d8c3206243c149dc2b9a359ca8c5d8c8 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Fri, 7 Mar 2025 11:40:33 +0100 Subject: [PATCH 115/117] added code snippet for custom Plugins to readme, and added warning for using ShouldNodeExport callback --- README.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/README.md b/README.md index 5664b0d89..2cc9df077 100644 --- a/README.md +++ b/README.md @@ -402,6 +402,33 @@ To create a plugin, follow these steps: If your plugin reads/writes custom extension data, you need to also implement `GLTF.Schema.IExtension` for serialization and deserialization. +> [!WARNING] +> `ShouldNodeExport` callback: Using this callback requires understanding of how glTF works. For example, if you filter out some bones of a skeleton on export, the result might not be valid glTF or might not display what you expect. Use with caution + +### Example for custom plugin +```csharp +public class MyExportPlugin : GLTFExportPlugin +{ + public override string DisplayName { get => "My Custom Plugin"; } + public override bool EnabledByDefault => true; + public override bool AlwaysEnabled => false; + + public override GLTFExportPluginContext CreateInstance(ExportContext context) + { + return new MyExportPluginContext(); + } +} + +public class MyExportPluginContext: GLTFExportPluginContext +{ + public override bool ShouldNodeExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Transform transform) + { + return !transform.CompareTag("ignore"); + } +} +``` + + > 🏗️ Under construction. You can take a look at `MaterialVariantsPlugin.cs` for an example. ## Known Issues From 908a4495d4b93f83d5516b5b0267c2fd01606334 Mon Sep 17 00:00:00 2001 From: Robert Dorn Date: Fri, 7 Mar 2025 13:59:56 +0100 Subject: [PATCH 116/117] removed Unity 2020.x from ReadMe, and added in legacy section which UnityGltf version should be used with Unity 2020.3 --- README.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 2cc9df077..62911f0fb 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ ![Great coverage of glTF 2.0.](https://img.shields.io/badge/glTF%20Spec-2.0-brightgreen) ![Unity 2021.3+ and URP recommended](https://img.shields.io/badge/Unity-2021.3%E2%80%932023.1%2B-brightgreen) -![Support for 2020.3 is not actively maintained](https://img.shields.io/badge/Unity-2020.3-yellow) ![URP supported](https://img.shields.io/badge/Render%20Pipeline-URP-brightgreen) ![BiRP supported with better support on 2021.3+](https://img.shields.io/badge/Render%20Pipeline-Built--in-brightgreen) @@ -85,19 +84,17 @@ Please use Long-Term Support versions of Unity (2021.3+, 2022.3+, 2023.3+). - Universal Render Pipeline (URP) and Built-In Render Pipeline (BiRP) **Tested:** -- Unity 2020.3+ +- Unity 2021.3+ - Linear colorspace - Universal Render Pipeline (URP) and Built-In Render Pipeline (BiRP) -**Legacy:** -These configurations have been working in the past. They will not be updated with material extensions or new features. Also, issues in these configurations will most likely not be addressed if they're not also happening on later versions. -- Unity 2018.4–2019.4 -- Gamma colorspace +**Legacy:** +- When using Unity 2020.3, please use an older version of UnityGLTF, like 2.9.1-rc and before. **HDRP**: - Currently limited functionality. -> **Note:** Issues on non-LTS Unity versions (not on 2020.3, 2021.3, 2022.3, ...) will most likely not be addressed. Please use LTS (Long-Term Support) versions where possible. +> **Note:** Issues on non-LTS Unity versions (not on 2021.3, 2022.3, 2023.3...) will most likely not be addressed. Please use LTS (Long-Term Support) versions where possible. ## UnityGLTF and glTFast From f958bf71824fb36c5b55bf0b52310bc7392e156e Mon Sep 17 00:00:00 2001 From: hybridherbst Date: Mon, 10 Mar 2025 11:07:58 +0100 Subject: [PATCH 117/117] readme updates, changelog --- CHANGELOG.md | 3 ++ README.md | 101 +++++++++++++++++++++++++-------------------------- 2 files changed, 53 insertions(+), 51 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 31fd17a60..f990ffcf6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - fix: clamped `Sheen Roughness` to 0..1 range in PBRGraph shader - fix: `RoughRefractionFeature` now supports Unity 6 and new Render Graph API - fix: set volume and transmission materials to `AlphaMode.BLEND` on VisionOS to ensure proper rendering +- fix: update render pipeline-related methods for Unity 6000.0+ - change: mark package as compatible with Unity 2021.3+. Legacy support for 2020 and earlier will be removed in future updates. - change: renamed `GLTFComponent` setting `AppendStreamingAssets` to `LoadFromStreamingAssetsFolder` - add: MaterialX branches to `UnityGLTF/PBRGraph` shader with conditional compilation for VisionOS @@ -22,6 +23,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - add: new runtime texture compression option (`None`, `LowQuality`, `HighQuality`) to improve runtime memory usage - add: exposed import settings to keep CPU copy of mesh/textures to `GLTFComponent` - add: include UnityGLTF package version, Unity version and current render pipeline in `assets.extras` on export +- add: better code snippets for the readme +- add: export plugin hook for `ShouldNodeExport` (https://github.com/KhronosGroup/UnityGLTF/pull/767) - add: [`KHR_node_visibility`](https://github.com/KhronosGroup/glTF/pull/2410) import and export support, currently disabled by default. Enable in `UnityGLTFSettings`. This is a preparative step for `KHR_interactivity`, which will be added in a later release. Please note that this extension is not yet ratified and implementation details may change. - add: schema and serialization support for [`KHR_node_hoverability`](https://github.com/KhronosGroup/glTF/pull/2426) and [`KHR_node_selectability`](https://github.com/KhronosGroup/glTF/pull/2422). Please note that these extensions are not yet ratified and implementation details may change. diff --git a/README.md b/README.md index 62911f0fb..a82b0cab1 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # UnityGLTF ![Great coverage of glTF 2.0.](https://img.shields.io/badge/glTF%20Spec-2.0-brightgreen) -![Unity 2021.3+ and URP recommended](https://img.shields.io/badge/Unity-2021.3%E2%80%932023.1%2B-brightgreen) +![Unity 2021.3+ and URP recommended](https://img.shields.io/badge/Unity-2021.3%E2%80%936000.0%2B-brightgreen) ![URP supported](https://img.shields.io/badge/Render%20Pipeline-URP-brightgreen) ![BiRP supported with better support on 2021.3+](https://img.shields.io/badge/Render%20Pipeline-Built--in-brightgreen) @@ -24,30 +24,35 @@ The library is designed to be easy to extend with additional extensions to the g - [UnityGLTF and glTFast](#unitygltf-and-gltfast) - [Supported Features and Extensions](#supported-features-and-extensions) - [Import and Export](#import-and-export) - - [Export only](#export-only) - [Import only](#import-only) + - [Export only](#export-only) - [glTF Materials](#gltf-materials) - [Material Conversions](#material-conversions) + - [Material and Shader Export Compatibility](#material-and-shader-export-compatibility) - [Configure for Refractive Materials (Transmission and Volume)](#configure-for-refractive-materials-transmission-and-volume) - [Material Setup](#material-setup) - [URP](#urp) - [Built-In](#built-in) - [HDRP](#hdrp) - - [Material and Shader Export Compatibility](#material-and-shader-export-compatibility) - [Exporting glTF Files](#exporting-gltf-files) - [Testing, debugging, compatibility](#testing-debugging-compatibility) - [Animation Export](#animation-export) - [Animator Controller](#animator-controller) - - [GLTFRecorder](#gltfrecorder-api) + - [GLTFRecorder API](#gltfrecorder-api) - [Timeline Recorder](#timeline-recorder) - - [Legacy: Animation Component](#legacy-animation-component) - - [KHR\_animation\_pointer](#khr_animation_pointer-support) -- [Blendshape Export](#blend-shape-export) + - [Legacy Animation Component](#legacy-animation-component) + - [KHR\_animation\_pointer support](#khr_animation_pointer-support) +- [Blend Shape Export](#blend-shape-export) - [Importing glTF files](#importing-gltf-files) + - [Runtime Import](#runtime-import) + - [Load via Gltf Component](#load-via-gltf-component) + - [Load via code example:](#load-via-code-example) + - [Ensure shaders are available in your build](#ensure-shaders-are-available-in-your-build) - [Editor Import](#editor-import) - [Default Importer Selection](#default-importer-selection) - [Animation Import](#animation-import) - [Extensibility](#extensibility) + - [Example for custom plugin](#example-for-custom-plugin) - [Known Issues](#known-issues) - [Contributing](#contributing) - [Unity Package](#unity-package) @@ -72,29 +77,24 @@ You can also install this package from git, compatible with UPM (Unity Package M 5. Click Add. > **Note**: If you want to target a specific version, append `#release/` or a specific commit to the URL above. -> Example: `https://github.com/KhronosGroup/UnityGLTF.git#release/2.9.0-rc`. +> Example: `https://github.com/KhronosGroup/UnityGLTF.git#release/2.14.1`. ## Unity Version and Render Pipeline Compatibility -Please use Long-Term Support versions of Unity (2021.3+, 2022.3+, 2023.3+). +Please use Long-Term Support versions of Unity (2021.3+, 2022.3+, 6000.0+). **Recommended:** -- Unity 2021.3+, Unity 2022.3+, Unity 2023.3+ +- Unity 2021.3+, Unity 2022.3+, Unity 6+ - Linear colorspace - Universal Render Pipeline (URP) and Built-In Render Pipeline (BiRP) -**Tested:** -- Unity 2021.3+ -- Linear colorspace -- Universal Render Pipeline (URP) and Built-In Render Pipeline (BiRP) +**HDRP**: +- Currently limited functionality. **Legacy:** - When using Unity 2020.3, please use an older version of UnityGLTF, like 2.9.1-rc and before. -**HDRP**: -- Currently limited functionality. - -> **Note:** Issues on non-LTS Unity versions (not on 2021.3, 2022.3, 2023.3...) will most likely not be addressed. Please use LTS (Long-Term Support) versions where possible. +> **Note:** Issues on non-LTS Unity versions (not on 2021.3, 2022.3, 6000.0...) will most likely not be addressed. Please use LTS (Long-Term Support) versions where possible. ## UnityGLTF and glTFast @@ -116,7 +116,7 @@ The lists below are non-conclusive and in no particular order. Note that there a ### Import and Export -- Animations +- Animation and Animator with multiple clips - Skinned Mesh Renderers - Blend Shapes - Sparse accessors for Blend Shapes @@ -124,45 +124,44 @@ The lists below are non-conclusive and in no particular order. Note that there a - Vertex Colors - Cameras (perspective, orthographic) - URP and Built-In Render Pipeline [Learn More](#material-and-shader-export-compatibility) -- KHR_lights_punctual (point, spot, and directional lights) -- KHR_texture_transform (UV offset, scale, rotation) -- KHR_materials_unlit -- KHR_materials_transmission (glass-like materials) -- KHR_materials_volume (refractive materials) -- KHR_materials_ior (for transmission and volume) -- KHR_materials_emissive_strength (emissive values greater than 1) -- KHR_materials_iridescence (thin-film interference, like oil on water) -- KHR_materials_clearcoat (secondary specular layer, like a coat of varnish) -- KHR_materials_specular (partial support) -- KHR_materials_dispersion (refractive index dispersion) -- MSFT_lods (level of detail) -- KHR_animation_pointer (arbitrary property animations) -- KHR_node_visibility (GameObject active state) - +- [KHR_lights_punctual](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_lights_punctual/README.md) (point, spot, and directional lights) +- [KHR_texture_transform](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_texture_transform/README.md) (UV offset, scale, rotation) +- [KHR_materials_unlit](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_unlit/README.md) (unlit surfaces) +- [KHR_materials_transmission](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_transmission/README.md) (glass-like materials) +- [KHR_materials_volume](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_volume/README.md) (refractive materials) +- [KHR_materials_ior](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_ior/README.md) (for transmission and volume) +- [KHR_materials_emissive_strength](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_emissive_strength/README.md) (emissive values greater than 1) +- [KHR_materials_iridescence](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_iridescence/README.md) (thin-film interference, like oil on water) +- [KHR_materials_clearcoat](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_clearcoat/README.md) (secondary specular layer, like a coat of varnish) +- [KHR_materials_sheen](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_sheen/README.md) (fabric surfaces) +- [KHR_materials_specular](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_specular/README.md) (partial support) +- [KHR_materials_dispersion](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_dispersion/README.md) (refractive index dispersion) +- [KHR_animation_pointer](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_animation_pointer/README.md) (arbitrary property animations) +- [KHR_node_visibility](https://github.com/KhronosGroup/glTF/blob/fbe806836526cdd8cd99ed3770b1c56df56c6863/extensions/2.0/Khronos/KHR_node_visibility/README.md) (GameObject active state) ![Non-Ratified Extension](https://img.shields.io/badge/⚠️%20Non--Ratified%20Extension-gray) +- [MSFT_lod](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Vendor/MSFT_lod/README.md) (level of detail) ![Vendor-specific Extension](https://img.shields.io/badge/⚠️%20Vendor--specific%20Extension-gray) ### Import only -- KHR_mesh_quantization (smaller buffers) -- EXT_mesh_gpu_instancing (instance data) -- KHR_draco_mesh_compression (requires [`com.unity.cloud.draco`](https://docs.unity3d.com/Packages/com.unity.cloud.draco@latest)) -- KHR_texture_basisu (requires [`com.unity.cloud.ktx`](https://docs.unity3d.com/Packages/com.unity.cloud.ktx@latest)) -- EXT_meshopt_compression (requires [`com.unity.meshopt.decompress`](https://docs.unity3d.com/Packages/com.unity.meshopt.decompress@latest)) +- [KHR_mesh_quantization](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_mesh_quantization/README.md) (smaller buffers / smaller filesize) +- [KHR_draco_mesh_compression](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_draco_mesh_compression/README.md) (requires [`com.unity.cloud.draco`](https://docs.unity3d.com/Packages/com.unity.cloud.draco@latest)) +- [KHR_texture_basisu](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_texture_basisu/README.md) (requires [`com.unity.cloud.ktx`](https://docs.unity3d.com/Packages/com.unity.cloud.ktx@latest)) +- [EXT_mesh_gpu_instancing](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Vendor/EXT_mesh_gpu_instancing/README.md) (instance data) ![Vendor-specific Extension](https://img.shields.io/badge/⚠️%20Vendor--specific%20Extension-gray) +- [EXT_meshopt_compression](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Vendor/EXT_meshopt_compression/README.md) (requires [`com.unity.meshopt.decompress`](https://docs.unity3d.com/Packages/com.unity.meshopt.decompress@latest)) ![Vendor-specific Extension](https://img.shields.io/badge/⚠️%20Vendor--specific%20Extension-gray) ### Export only -- KHR_materials_variants +- [KHR_materials_variants](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_variants/README.md) - Timeline recorder track for exporting animations in the editor and at runtime - Lossless keyframe optimization on export - All 2D textures can be exported, RenderTextures included – they're baked at export. - Optional plugin: Bake TMPro 3D objects to meshes on export - Optional plugin: Bake Particle Systems to meshes on export - Optional plugin: Bake Canvas to meshes on export -- Included plugin sample: KHR_audio +- Included plugin sample: [KHR_audio_emitter](https://github.com/KhronosGroup/glTF/pull/2137) ![Non-Ratified Extension](https://img.shields.io/badge/⚠️%20Non--Ratified%20Extension-gray) ## glTF Materials -To leverage the extended material model of glTF in Unity, use the `UnityGLTF/PBRGraph` material. -It allows the use of various glTF material extensions for import, export, and inside Unity. -This includes features that URP is missing, such as transmission, volume, and per-texture UV control. +The glTF shading model is physically based and supports many different types of surfaces. To use this extended material model of glTF in Unity, use the `UnityGLTF/PBRGraph` material. +It allows the use of various glTF material extensions for import, export, and inside Unity. The shader includes a number of features that URP is missing, such as transmission and rough refraction, sheen and clearcoat, and per-texture UV control. For unlit materials, use `UnityGLTF/UnlitGraph`. ### Material Conversions @@ -174,13 +173,13 @@ When a shader doesn't have a converter yet, UnityGLTF will ask if you want to cr After the conversion script has been created, you can edit it to correctly map from the source shader's properties to PBRGraph properties. When you switch such a shader to PBRGraph the next time, your conversion script will run and automatically translate the materials in the specified way. -> **Note:** Currently, conversion scripts aren't used automatically on glTF export. Convert materials at edit time for best results. +> **Note:** Currently, custom conversion scripts aren't used automatically on glTF export. For best results, convert materials in the Editor. ### Material and Shader Export Compatibility -If you want to design for glTF export, it's recommended to use Unity 2021.3+ with URP and the **UnityGLTF/PBRGraph** material. It comes with support for modern material extensions like refraction and iridescence, and allows for perfect roundtrips. Great for building glTF pipelines in and out of Unity. +If you want to design for glTF export, it's recommended to use Unity 2021.3+ with URP and the **UnityGLTF/PBRGraph** material. It comes with support for modern material extensions like refraction and iridescence, and allows for perfect roundtrips. This material works great for building glTF pipelines in and out of Unity. -| Render Pipeline | Shader | Notes | Source | +| Render Pipeline | Used Shader | Notes | Source | |----------------------------------------|--------------------------------------------------------------|----------------------------------------|--------------------| | URP on 2020.3+
Built-In on 2021.3+ | **UnityGLTF/PBRGraph**
☝️ *Use this if you're not sure* | Perfect roundtrip, Material Extensions | UnityGLTF | | | UnityGLTF/UnlitGraph | Perfect roundtrip | UnityGLTF | @@ -287,7 +286,7 @@ Timeline recording uses the GLTFRecorder API under the hood. ### Legacy Animation Component -> **Note**: Animation Component export only works in the Editor. For runtime export, use the GLTFRecorder capabilities. +> **Note**: Animation Component export only works in the Editor since Unity does not provide the required runtime access. For runtime export, use the `GLTFRecorder` capabilities. Animation components and their legacy clips can also be exported. @@ -435,14 +434,14 @@ public class MyExportPluginContext: GLTFExportPluginContext ## Contributing -> **Note**: As of 20240129 the default branch of this repository has been renamed from `master` to `main`. - UnityGLTF is an open-source project. Well-tested PRs are welcome. -It is currently maintained by +UnityGLTF is currently maintained by - [prefrontal cortex](https://prefrontalcortex.de), member of the Khronos Group and - [Needle](https://needle.tools), member of the Metaverse Standards Forum. +> **Note**: As of 20240129, the default branch of this repository has been renamed from `master` to `main`. +
More Details (legacy)