diff --git a/CHANGELOG.md b/CHANGELOG.md index a066b942a..508e268c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -366,6 +366,9 @@ - Added define `SPINE_DISABLE_THREADING` to disable threaded animation and mesh generation entirely, removing the respective code. This define can be set as `Scripting Define Symbols` globally or for selective build profiles where desired. - Added automatic load balancing (work stealing) for improved performance when using threaded animation and mesh generation, enabled by default. Load balancing can be disabled via a new Spine preferences parameter `Threading Defaults - Load Balancing` setting a build define accordingly. Additional configuration parameters `SkeletonUpdateSystem.UpdateChunksPerThread` and `LateUpdateChunksPerThread` are available to fine-tune the chunk count for load balancing. A minimum of 8 chunks is recommended with load balancing enabled. Higher values add higher overhead with potentially detrimental effect on performance. + - Spine UI Toolkit UPM package now supports rendering back-face triangles. Enable `Flip Back Faces` to automatically fix back-face geometry in an additional pass (defaults to enabled). Disable the setting to save additional processing overhead. + - Spine UI Toolkit UPM package now supports PMA atlas textures. At the `SpineVisualElement` expand `Blend Mode Materials` and hit `Detect Materials` to automatically assign the proper PMA or straight alpha material at `Normal Material`. Unity minimum version increased to 6000.3 which added support for UI Toolkit materials. + - Spine UI Toolkit UPM package now supports all Spine blend modes via blend mode materials and multiple materials per skeleton. Enable `Multiple Materials` (enabled by default), expand `Blend Mode Materials` and hit `Detect Materials` to automatically assign the correct PMA or straight alpha blend mode materials. - **Deprecated** diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SkeletonGraphicUtility.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SkeletonGraphicUtility.cs index ab7eef85c..4c8f56943 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SkeletonGraphicUtility.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SkeletonGraphicUtility.cs @@ -100,11 +100,15 @@ namespace Spine.Unity.Editor { public static bool IsSkeletonTexturePMA (SkeletonGraphic skeletonGraphic, out bool detectionSucceeded) { Texture texture = skeletonGraphic.mainTexture; + return IsSkeletonTexturePMA(texture, skeletonGraphic.name, out detectionSucceeded); + } + + public static bool IsSkeletonTexturePMA (Texture texture, string skeletonName, out bool detectionSucceeded) { string texturePath = AssetDatabase.GetAssetPath(texture.GetInstanceID()); TextureImporter importer = (TextureImporter)TextureImporter.GetAtPath(texturePath); if (importer.alphaIsTransparency != importer.sRGBTexture) { Debug.LogWarning(string.Format("Texture '{0}' at skeleton '{1}' is neither configured correctly for " + - "PMA nor Straight Alpha.", texture, skeletonGraphic), texture); + "PMA nor Straight Alpha.", texture, skeletonName), texture); detectionSucceeded = false; return false; } diff --git a/spine-unity/Assets/Spine/package.json b/spine-unity/Assets/Spine/package.json index bf4d01e05..2c9b5ef65 100644 --- a/spine-unity/Assets/Spine/package.json +++ b/spine-unity/Assets/Spine/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-unity", "displayName": "spine-unity Runtime", "description": "This plugin provides the spine-unity runtime core and examples. Spine Examples can be installed via the Samples tab.", - "version": "4.3.41", + "version": "4.3.42", "unity": "2018.3", "author": { "name": "Esoteric Software", diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Editor/SpineVisualElementAttributeDrawers.cs b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Editor/SpineVisualElementAttributeDrawers.cs index 86f0fab7c..64f7c368a 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Editor/SpineVisualElementAttributeDrawers.cs +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Editor/SpineVisualElementAttributeDrawers.cs @@ -29,6 +29,7 @@ //#define CHANGE_BOUNDS_ON_ANIMATION_CHANGE +using System.Linq; using UnityEditor; using UnityEditor.UIElements; using UnityEngine; @@ -36,6 +37,109 @@ using UnityEngine.UIElements; namespace Spine.Unity.Editor { + [CustomPropertyDrawer(typeof(UITKBlendModeMaterialsAttribute))] + public class UITKBlendModeMaterialsAttributeDrawer : PropertyDrawer { + + protected UITKBlendModeMaterialsAttribute TargetAttribute { get { return (UITKBlendModeMaterialsAttribute)attribute; } } + + public override VisualElement CreatePropertyGUI (SerializedProperty materialsProperty) { + var container = new VisualElement(); + PropertyField blendModeMaterials = new PropertyField(); + blendModeMaterials.BindProperty(materialsProperty); + + SerializedProperty normalMaterialProperty = materialsProperty.FindPropertyRelative("normalMaterial"); + SerializedProperty additiveMaterialProperty = materialsProperty.FindPropertyRelative("additiveMaterial"); + SerializedProperty multiplyMaterialProperty = materialsProperty.FindPropertyRelative("multiplyMaterial"); + SerializedProperty screenMaterialProperty = materialsProperty.FindPropertyRelative("screenMaterial"); + PropertyField normalField = new PropertyField(); + PropertyField additiveField = new PropertyField(); + PropertyField multiplyField = new PropertyField(); + PropertyField screenField = new PropertyField(); + + normalField.BindProperty(normalMaterialProperty); + additiveField.BindProperty(additiveMaterialProperty); + multiplyField.BindProperty(multiplyMaterialProperty); + screenField.BindProperty(screenMaterialProperty); + + var parentPropertyPath = materialsProperty.propertyPath.Substring(0, materialsProperty.propertyPath.LastIndexOf('.')); + var parent = materialsProperty.serializedObject.FindProperty(parentPropertyPath); + SerializedProperty skeletonDataProperty = parent.FindPropertyRelative(TargetAttribute.dataField); + + Button detectMaterialsButton = new Button(() => { + DetectMaterials(materialsProperty, (SkeletonDataAsset)skeletonDataProperty.objectReferenceValue); + }); + detectMaterialsButton.text = "Detect Materials"; + container.Add(detectMaterialsButton); + + //container.Add(blendModeMaterials); + container.Add(normalField); + container.Add(additiveField); + container.Add(multiplyField); + container.Add(screenField); + + container.Bind(materialsProperty.serializedObject); + return container; + } + + protected void DetectMaterials (SerializedProperty materialsProperty, SkeletonDataAsset skeletonDataAsset) { + if (!skeletonDataAsset) + return; + + SerializedProperty normalMaterialProperty = materialsProperty.FindPropertyRelative("normalMaterial"); + SerializedProperty additiveMaterialProperty = materialsProperty.FindPropertyRelative("additiveMaterial"); + SerializedProperty multiplyMaterialProperty = materialsProperty.FindPropertyRelative("multiplyMaterial"); + SerializedProperty screenMaterialProperty = materialsProperty.FindPropertyRelative("screenMaterial"); + bool hasPMATextures = HasPMATextures(skeletonDataAsset); + + if (hasPMATextures) { + AssignMaterial(normalMaterialProperty, "Spine-UITK-Normal-PMA"); + } else { + AssignMaterial(normalMaterialProperty, "Spine-UITK-Normal-Straight"); + } + + if (!skeletonDataAsset.blendModeMaterials.RequiresBlendModeMaterials) { + additiveMaterialProperty.objectReferenceValue = null; + multiplyMaterialProperty.objectReferenceValue = null; + screenMaterialProperty.objectReferenceValue = null; + } else { + if (hasPMATextures) { + AssignMaterial(additiveMaterialProperty, "Spine-UITK-Additive-PMA"); + AssignMaterial(multiplyMaterialProperty, "Spine-UITK-Multiply-PMA"); + AssignMaterial(screenMaterialProperty, "Spine-UITK-Screen-PMA"); + } else { + AssignMaterial(additiveMaterialProperty, "Spine-UITK-Additive-Straight"); + AssignMaterial(multiplyMaterialProperty, "Spine-UITK-Multiply-Straight"); + AssignMaterial(screenMaterialProperty, "Spine-UITK-Screen-Straight"); + } + } + materialsProperty.serializedObject.ApplyModifiedProperties(); + } + + bool HasPMATextures (SkeletonDataAsset skeletonDataAsset) { + if (skeletonDataAsset.atlasAssets.Length == 0) return false; + AtlasAssetBase firstAtlasAsset = skeletonDataAsset.atlasAssets[0]; + if (firstAtlasAsset.MaterialCount == 0) return false; + + Texture texture = firstAtlasAsset.Materials.First().mainTexture; + bool detectionSucceeded; + return IsSkeletonTexturePMA(texture, skeletonDataAsset.name, out detectionSucceeded); + } + + void AssignMaterial (SerializedProperty property, string name) { + Material material = MaterialWithName(name); + if (material != null) + property.objectReferenceValue = material; + } + + public static Material MaterialWithName (string name) { + return SkeletonGraphicUtility.MaterialWithName(name); + } + + public static bool IsSkeletonTexturePMA (Texture texture, string skeletonName, out bool detectionSucceeded) { + return SkeletonGraphicUtility.IsSkeletonTexturePMA(texture, skeletonName, out detectionSucceeded); + } + } + [CustomPropertyDrawer(typeof(BoundsFromAnimationAttribute))] public class BoundsFromAnimationAttributeDrawer : PropertyDrawer { diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials.meta new file mode 100644 index 000000000..f0b0c8663 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 10a53051ebab05b49aefe40657f93ea6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Additive-PMA.mat b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Additive-PMA.mat new file mode 100644 index 000000000..41e9b0c68 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Additive-PMA.mat @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Spine-UITK-Additive-PMA + m_Shader: {fileID: 4800000, guid: 9818276b7a7ab2148a8a3ed86c9ac555, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _StraightAlphaTexture: 0 + m_Colors: [] + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Additive-PMA.mat.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Additive-PMA.mat.meta new file mode 100644 index 000000000..2322fada5 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Additive-PMA.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c65757e42907f4b45bad666a80868c27 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Additive-Straight.mat b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Additive-Straight.mat new file mode 100644 index 000000000..d54555939 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Additive-Straight.mat @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Spine-UITK-Additive-Straight + m_Shader: {fileID: 4800000, guid: 9818276b7a7ab2148a8a3ed86c9ac555, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _StraightAlphaTexture: 1 + m_Colors: [] + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Additive-Straight.mat.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Additive-Straight.mat.meta new file mode 100644 index 000000000..bd9cb3210 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Additive-Straight.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 079fc4bc98abfbd43ac9f3e385474bcd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Multiply-PMA.mat b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Multiply-PMA.mat new file mode 100644 index 000000000..426d1c9ad --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Multiply-PMA.mat @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Spine-UITK-Multiply-PMA + m_Shader: {fileID: 4800000, guid: ed93aea253bcdc94a84ee09cd390c587, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _StraightAlphaTexture: 0 + m_Colors: [] + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Multiply-PMA.mat.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Multiply-PMA.mat.meta new file mode 100644 index 000000000..0e2138621 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Multiply-PMA.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a8bca9a46bcb36d4a82140b67bfd09c1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Multiply-Straight.mat b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Multiply-Straight.mat new file mode 100644 index 000000000..8c2f654c7 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Multiply-Straight.mat @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Spine-UITK-Multiply-Straight + m_Shader: {fileID: 4800000, guid: ed93aea253bcdc94a84ee09cd390c587, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _StraightAlphaTexture: 1 + m_Colors: [] + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Multiply-Straight.mat.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Multiply-Straight.mat.meta new file mode 100644 index 000000000..85fe54814 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Multiply-Straight.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6096595964896114b99904ecc8796e30 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Normal-PMA.mat b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Normal-PMA.mat new file mode 100644 index 000000000..d180dc86f --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Normal-PMA.mat @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Spine-UITK-Normal-PMA + m_Shader: {fileID: -6465566751694194690, guid: 1baeaee5c1b883a418362717b2ca2fb7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _StraightAlphaTexture: 0 + m_Colors: [] + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Normal-PMA.mat.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Normal-PMA.mat.meta new file mode 100644 index 000000000..4ca9a0113 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Normal-PMA.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ac3524f1da29e4047a8b2b09bd7717b0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Normal-Straight.mat b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Normal-Straight.mat new file mode 100644 index 000000000..83702857f --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Normal-Straight.mat @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Spine-UITK-Normal-Straight + m_Shader: {fileID: -6465566751694194690, guid: 1baeaee5c1b883a418362717b2ca2fb7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _StraightAlphaTexture: 1 + m_Colors: [] + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Normal-Straight.mat.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Normal-Straight.mat.meta new file mode 100644 index 000000000..986b659cb --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Normal-Straight.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1f5a60758b7c3be44b646c262eed02f0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Screen-PMA.mat b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Screen-PMA.mat new file mode 100644 index 000000000..c83891d9b --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Screen-PMA.mat @@ -0,0 +1,64 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Spine-UITK-Screen-PMA + m_Shader: {fileID: 4800000, guid: b0198c7d0f7c55c4992b84a4c94afaac, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AlphaTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _EnableExternalAlpha: 0 + - _StraightAlphaTexture: 0 + - _Straight_Alpha_Texture: 0 + - _ZWrite: 0 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _RendererColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Screen-PMA.mat.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Screen-PMA.mat.meta new file mode 100644 index 000000000..6d1739de3 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Screen-PMA.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b3d3e71e32136e448a5eacadc8b9b966 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Screen-Straight.mat b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Screen-Straight.mat new file mode 100644 index 000000000..d00eda6ad --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Screen-Straight.mat @@ -0,0 +1,63 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Spine-UITK-Screen-Straight + m_Shader: {fileID: 4800000, guid: b0198c7d0f7c55c4992b84a4c94afaac, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AlphaTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _EnableExternalAlpha: 0 + - _Straight_Alpha_Texture: 0 + - _ZWrite: 0 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _RendererColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Screen-Straight.mat.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Screen-Straight.mat.meta new file mode 100644 index 000000000..234930aef --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Materials/Spine-UITK-Screen-Straight.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fb35db9efd634bd4287a2fef3bbec26a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Runtime/SpineVisualElement.cs b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Runtime/SpineVisualElement.cs index dc2262dc2..0cc628ffb 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Runtime/SpineVisualElement.cs +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Runtime/SpineVisualElement.cs @@ -28,6 +28,7 @@ *****************************************************************************/ using System; +using System.Collections.Generic; using Unity.Collections; using UnityEngine; using UnityEngine.UIElements; @@ -35,6 +36,13 @@ using UIVertex = UnityEngine.UIElements.Vertex; namespace Spine.Unity { + public class UITKBlendModeMaterialsAttribute : PropertyAttribute { + public readonly string dataField; + public UITKBlendModeMaterialsAttribute (string dataField = "skeletonDataAsset") { + this.dataField = dataField; + } + } + public class BoundsFromAnimationAttribute : PropertyAttribute { public readonly string animationField; @@ -48,6 +56,19 @@ namespace Spine.Unity { } } + [UxmlObject] + [System.Serializable] + public partial class UITKBlendModeMaterials { + [UxmlAttribute] + public Material normalMaterial; + [UxmlAttribute] + public Material additiveMaterial; + [UxmlAttribute] + public Material multiplyMaterial; + [UxmlAttribute] + public Material screenMaterial; + } + [UxmlElement] public partial class SpineVisualElement : VisualElement { @@ -58,28 +79,14 @@ namespace Spine.Unity { if (skeletonDataAsset == value) return; skeletonDataAsset = value; #if UNITY_EDITOR - if (!Application.isPlaying) + if (!Application.isPlaying) { Initialize(true); + } #endif } } public SkeletonDataAsset skeletonDataAsset; - [SpineAnimation(dataField: "SkeletonDataAsset", avoidGenericMenu: true)] - [UxmlAttribute] - public string StartingAnimation { - get { return startingAnimation; } - set { - if (startingAnimation == value) return; - startingAnimation = value; -#if UNITY_EDITOR - if (!Application.isPlaying) - Initialize(true); -#endif - } - } - public string startingAnimation = ""; - [SpineSkin(dataField: "SkeletonDataAsset", defaultAsEmptyString: true, avoidGenericMenu: true)] [UxmlAttribute] public string InitialSkinName { @@ -95,11 +102,46 @@ namespace Spine.Unity { } public string initialSkinName; + [SpineAnimation(dataField: "SkeletonDataAsset", avoidGenericMenu: true)] + [UxmlAttribute] + public string StartingAnimation { + get { return startingAnimation; } + set { + if (startingAnimation == value) return; + startingAnimation = value; +#if UNITY_EDITOR + if (!Application.isPlaying) + Initialize(true); +#endif + } + } + public string startingAnimation = ""; + [UxmlAttribute] public bool startingLoop { get; set; } = true; + [UxmlAttribute] public float timeScale { get; set; } = 1.0f; + [UxmlAttribute] public bool unscaledTime { get; set; } + [UxmlAttribute] public bool freeze { get; set; } + + [UxmlAttribute] public bool MultipleMaterials { + get { return supportMultipleMaterials; } + set { + if (supportMultipleMaterials == value) return; + supportMultipleMaterials = value; + if (!supportMultipleMaterials) { + RemoveMultiMaterialRendererElements(); + } else { + Update(0); + } + } + } + public bool supportMultipleMaterials = true; + + [UxmlObjectReference("blend-mode-materials")] + [UITKBlendModeMaterials(dataField: "SkeletonDataAsset")] + public UITKBlendModeMaterials blendModeMaterials = new UITKBlendModeMaterials(); + /// Flip indices of back-faces to correct winding order during mesh generation. /// UI Elements otherwise does not draw back-faces. [UxmlAttribute] public bool flipBackFaces { get; set; } = true; - [UxmlAttribute] public bool startingLoop { get; set; } = true; - [UxmlAttribute] public float timeScale { get; set; } = 1.0f; [SpineAnimation(dataField: "SkeletonDataAsset", avoidGenericMenu: true)] [UxmlAttribute] @@ -133,7 +175,8 @@ namespace Spine.Unity { referenceMeshBounds = value; if (!this.IsValid) return; - AdjustOffsetScaleToMeshBounds(rendererElement); + for (int i = 0, count = rendererElements.Count; i < count; ++i) + AdjustOffsetScaleToMeshBounds(rendererElements.Items[i]); } } public Bounds referenceMeshBounds; @@ -144,21 +187,17 @@ namespace Spine.Unity { return state; } } - [UxmlAttribute] - public bool freeze { get; set; } - [UxmlAttribute] - public bool unscaledTime { get; set; } - + /// Update mode to optionally limit updates to e.g. only apply animations but not update the mesh. public UpdateMode UpdateMode { get { return updateMode; } set { updateMode = value; } } protected UpdateMode updateMode = UpdateMode.FullUpdate; protected AnimationState state = null; protected Skeleton skeleton = null; - protected SkeletonRendererInstruction currentInstructions = new();// to match existing code better + protected SkeletonRendererInstruction currentInstructions = new(); protected Spine.Unity.MeshGeneratorUIElements meshGenerator = new MeshGeneratorUIElements(); - protected VisualElement rendererElement; + protected ExposedList rendererElements = new ExposedList(1); IVisualElementScheduledItem scheduledItem; protected float scale = 100; protected float offsetX, offsetY; @@ -169,8 +208,33 @@ namespace Spine.Unity { RegisterCallback(OnAttachedCallback); RegisterCallback(OnDetatchedCallback); - rendererElement = new VisualElement(); - rendererElement.generateVisualContent += GenerateVisualContents; + AddRendererElement(); + } + + protected void SetActiveRendererCount (int count) { + if (count == rendererElements.Count) + return; + else if (count > rendererElements.Count) { + int oldCount = rendererElements.Count; + int reactivateCount = Math.Min(count, rendererElements.Capacity); + for (int i = oldCount; i < reactivateCount; ++i) { + EnableRenderElement(rendererElements.Items[i]); + } + rendererElements.EnsureCapacity(count); + for (int i = reactivateCount; i < count; ++i) { + AddRendererElement(); + } + } else { // new count < old count + for (int i = count, oldCount = rendererElements.Count; i < oldCount; ++i) + DisableRenderElement(rendererElements.Items[i]); + } + rendererElements.Count = count; + } + + protected VisualElement AddRendererElement () { + VisualElement rendererElement = new VisualElement(); + int index = rendererElements.Count; + rendererElement.generateVisualContent += (context) => GenerateVisualContents(context, index); rendererElement.pickingMode = PickingMode.Ignore; rendererElement.style.position = Position.Absolute; rendererElement.style.top = 0; @@ -180,6 +244,26 @@ namespace Spine.Unity { Add(rendererElement); rendererElement.RegisterCallback(OnGeometryChanged); + rendererElements.Add(rendererElement); + return rendererElement; + } + + protected void EnableRenderElement (VisualElement rendererElement) { + rendererElement.enabledSelf = true; + rendererElement.RegisterCallback(OnGeometryChanged); + } + + protected void DisableRenderElement (VisualElement rendererElement) { + rendererElement.enabledSelf = false; + rendererElement.UnregisterCallback(OnGeometryChanged); + } + + protected void RemoveMultiMaterialRendererElements () { + for (int i = rendererElements.Capacity - 1; i > 0; --i) { + rendererElements.Items[i].RemoveFromHierarchy(); + } + rendererElements.Count = 1; + rendererElements.TrimExcess(); } void OnGeometryChanged (GeometryChangedEvent evt) { @@ -187,7 +271,8 @@ namespace Spine.Unity { if (referenceMeshBounds.size.x == 0 || referenceMeshBounds.size.y == 0) { AdjustReferenceMeshBounds(); } - AdjustOffsetScaleToMeshBounds(rendererElement); + for (int i = 0, count = rendererElements.Count; i < count; ++i) + AdjustOffsetScaleToMeshBounds(rendererElements.Items[i]); } void OnAttachedCallback (AttachToPanelEvent evt) { @@ -212,7 +297,7 @@ namespace Spine.Unity { #endif if (freeze) return; Update(unscaledTime ? Time.unscaledDeltaTime : Time.deltaTime); - rendererElement.MarkDirtyRepaint(); + MarkAllDirtyAndRepaint(); } public virtual void Update (float deltaTime) { @@ -225,6 +310,7 @@ namespace Spine.Unity { if (updateMode == UpdateMode.OnlyAnimationStatus) return; ApplyAnimation(); + PrepareInstructionsAndRenderers(); } protected void UpdateAnimationStatus (float deltaTime) { @@ -234,7 +320,6 @@ namespace Spine.Unity { } protected void ApplyAnimation () { - if (updateMode != UpdateMode.OnlyEventTimelines) state.Apply(skeleton); else @@ -264,8 +349,16 @@ namespace Spine.Unity { }; // Set the initial Skin and Animation - if (!string.IsNullOrEmpty(initialSkinName)) + if (!string.IsNullOrEmpty(initialSkinName)) { +#if UNITY_EDITOR + if (!Application.isPlaying) { + if (skeletonData.FindSkin(initialSkinName) == null) { + initialSkinName = "default"; + } + } +#endif skeleton.SetSkin(initialSkinName); + } string displayedAnimation = Application.isPlaying ? startingAnimation : boundsAnimation; if (!string.IsNullOrEmpty(displayedAnimation)) { @@ -276,7 +369,8 @@ namespace Spine.Unity { } if (referenceMeshBounds.size.x == 0 || referenceMeshBounds.size.y == 0) { AdjustReferenceMeshBounds(); - AdjustOffsetScaleToMeshBounds(rendererElement); + for (int i = 0, count = rendererElements.Count; i < count; ++i) + AdjustOffsetScaleToMeshBounds(rendererElements.Items[i]); } if (scheduledItem == null) @@ -285,7 +379,14 @@ namespace Spine.Unity { if (!Application.isPlaying) Update(0.0f); - rendererElement.MarkDirtyRepaint(); + MarkAllDirtyAndRepaint(); + } + + protected void MarkAllDirtyAndRepaint () { + for (int i = 0, count = rendererElements.Count; i < count; ++i) { + var rendererElement = rendererElements.Items[i]; + if (rendererElement != null) rendererElement.MarkDirtyRepaint(); + } } protected void UpdateAnimation () { @@ -301,11 +402,33 @@ namespace Spine.Unity { } if (referenceMeshBounds.size.x == 0 || referenceMeshBounds.size.y == 0) { AdjustReferenceMeshBounds(); - AdjustOffsetScaleToMeshBounds(rendererElement); + for (int i = 0, count = rendererElements.Count; i < count; ++i) + AdjustOffsetScaleToMeshBounds(rendererElements.Items[i]); } Update(0.0f); + MarkAllDirtyAndRepaint(); + } - rendererElement.MarkDirtyRepaint(); + protected void PrepareInstructionsAndRenderers () { + MeshGeneratorUIElements.GenerateSkeletonRendererInstruction(currentInstructions, skeleton, null, + null, false, false); + + int submeshCount = currentInstructions.submeshInstructions.Count; + PrepareUISubmeshCount(submeshCount); + + if (supportMultipleMaterials) { + SetActiveRendererCount(submeshCount); + if (supportMultipleMaterials) { + for (int i = 0, count = rendererElements.Count; i < count; ++i) { + AssignBlendModeMaterial(i, currentInstructions.submeshInstructions.Items[i].material); + } + } + } else if (rendererElements.Count > 0) { + if (blendModeMaterials != null && blendModeMaterials.normalMaterial) + rendererElements.Items[0].style.unityMaterial = blendModeMaterials.normalMaterial; + else + rendererElements.Items[0].style.unityMaterial = null; + } } protected class UISubmesh { @@ -317,40 +440,58 @@ namespace Spine.Unity { } protected readonly ExposedList uiSubmeshes = new ExposedList(); - protected void GenerateVisualContents (MeshGenerationContext context) { + protected void GenerateVisualContents (MeshGenerationContext context, int rendererElementIndex) { if (!this.IsValid) return; + if (!context.visualElement.enabledInHierarchy) return; - MeshGeneratorUIElements.GenerateSkeletonRendererInstruction(currentInstructions, skeleton, null, - null, - false, - false); + int submeshesPerRenderer = supportMultipleMaterials ? 1 : currentInstructions.submeshInstructions.Count; + int submeshOffset = rendererElementIndex; - int submeshCount = currentInstructions.submeshInstructions.Count; - PrepareUISubmeshCount(submeshCount); - - // Generate meshes. - for (int i = 0; i < submeshCount; i++) { + meshGenerator.settings.pmaVertexColors = false; + for (int i = submeshOffset; i < submeshOffset + submeshesPerRenderer; i++) { var submeshInstructionItem = currentInstructions.submeshInstructions.Items[i]; UISubmesh uiSubmesh = uiSubmeshes.Items[i]; meshGenerator.Begin(); meshGenerator.AddSubmesh(submeshInstructionItem); - // clipping is done, vertex counts are final. PrepareUISubmesh(uiSubmesh, meshGenerator.VertexCount, meshGenerator.SubmeshIndexCount(0)); if (flipBackFaces) meshGenerator.FlipBackfaceWindingOrder(); meshGenerator.FillVertexData(ref uiSubmesh.verticesSlice); meshGenerator.FillTrianglesSingleSubmesh(ref uiSubmesh.indicesSlice); - + var submeshMaterial = submeshInstructionItem.material; - Texture usedTexture = submeshMaterial.mainTexture; - FillContext(context, uiSubmesh, usedTexture); } } + protected void AssignBlendModeMaterial (int rendererElementIndex, Material originalSubmeshMaterial) { + if (skeletonDataAsset == null) return; + VisualElement rendererElement = rendererElements.Items[rendererElementIndex]; + if (blendModeMaterials == null) { + rendererElement.style.unityMaterial = null; + return; + } + BlendModeMaterials requiredBlendModeMaterials = skeletonDataAsset.blendModeMaterials; + if (!requiredBlendModeMaterials.RequiresBlendModeMaterials) { + rendererElement.style.unityMaterial = blendModeMaterials.normalMaterial; + return; + } + Material material = null; + BlendMode blendMode = requiredBlendModeMaterials.BlendModeForMaterial(originalSubmeshMaterial); + if (blendMode == BlendMode.Normal) + material = blendModeMaterials.normalMaterial; + else if (blendMode == BlendMode.Additive) + material = blendModeMaterials.additiveMaterial; + else if (blendMode == BlendMode.Multiply) + material = blendModeMaterials.multiplyMaterial; + else if (blendMode == BlendMode.Screen) + material = blendModeMaterials.screenMaterial; + rendererElement.style.unityMaterial = material; + } + protected void PrepareUISubmeshCount (int targetCount) { int oldCount = uiSubmeshes.Count; uiSubmeshes.EnsureCapacity(targetCount); @@ -427,6 +568,7 @@ namespace Spine.Unity { } void AdjustOffsetScaleToMeshBounds (VisualElement visualElement) { + if (visualElement == null) return; Rect targetRect = visualElement.layout; if (float.IsNaN(targetRect.width)) return; diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/PaneSettings.asset b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/PaneSettings.asset index a5c47e745..cb5024518 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/PaneSettings.asset +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/PaneSettings.asset @@ -12,10 +12,12 @@ MonoBehaviour: m_Script: {fileID: 19101, guid: 0000000000000000e000000000000000, type: 0} m_Name: PaneSettings m_EditorClassIdentifier: - themeUss: {fileID: -4733365628477956816, guid: 6fd02a62ce112e547aa19d3af6f42b02, type: 3} + themeUss: {fileID: -4733365628477956816, guid: 979e15cdd57e0ce42b2b97c7a4361084, type: 3} + m_DisableNoThemeWarning: 0 m_TargetTexture: {fileID: 0} m_RenderMode: 0 - m_WorldSpaceLayer: 0 + m_ColliderUpdateMode: 0 + m_ColliderIsTrigger: 1 m_ScaleMode: 1 m_ReferenceSpritePixelsPerUnit: 100 m_PixelsPerUnit: 100 @@ -32,12 +34,19 @@ MonoBehaviour: m_ClearColor: 0 m_ColorClearValue: {r: 0, g: 0, b: 0, a: 0} m_VertexBudget: 0 + m_TextureSlotCount: 8 m_DynamicAtlasSettings: m_MinAtlasSize: 64 m_MaxAtlasSize: 4096 m_MaxSubTextureSize: 64 m_ActiveFilters: -1 m_AtlasBlitShader: {fileID: 9101, guid: 0000000000000000f000000000000000, type: 0} - m_RuntimeShader: {fileID: 9100, guid: 0000000000000000f000000000000000, type: 0} - m_RuntimeWorldShader: {fileID: 9102, guid: 0000000000000000f000000000000000, type: 0} + m_DefaultShader: {fileID: 9100, guid: 0000000000000000f000000000000000, type: 0} + m_RuntimeGaussianBlurShader: {fileID: 20300, guid: 0000000000000000f000000000000000, type: 0} + m_RuntimeColorEffectShader: {fileID: 20301, guid: 0000000000000000f000000000000000, type: 0} + m_SDFShader: {fileID: 19011, guid: 0000000000000000f000000000000000, type: 0} + m_BitmapShader: {fileID: 9001, guid: 0000000000000000f000000000000000, type: 0} + m_SpriteShader: {fileID: 19012, guid: 0000000000000000f000000000000000, type: 0} + m_ICUDataAsset: {fileID: 0} + forceGammaRendering: 0 textSettings: {fileID: 0} diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/Raptor/raptor.png.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/Raptor/raptor.png.meta index 9a9073716..451bc791b 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/Raptor/raptor.png.meta +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/Raptor/raptor.png.meta @@ -121,7 +121,7 @@ TextureImporter: mipmaps: mipMapMode: 0 enableMipMap: 0 - sRGBTexture: 0 + sRGBTexture: 1 linearTexture: 0 fadeOut: 0 borderMipMap: 0 @@ -166,7 +166,7 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 + alphaIsTransparency: 1 spriteTessellationDetail: -1 textureType: 0 textureShape: 1 @@ -181,7 +181,7 @@ TextureImporter: swizzle: 50462976 cookieLightType: 0 platformSettings: - - serializedVersion: 3 + - serializedVersion: 4 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -193,8 +193,8 @@ TextureImporter: overridden: 0 ignorePlatformSupport: 0 androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 1 - - serializedVersion: 3 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -206,11 +206,12 @@ TextureImporter: overridden: 0 ignorePlatformSupport: 0 androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 1 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] outline: [] + customData: physicsShape: [] bones: [] spriteID: @@ -220,6 +221,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/Raptor/raptor_Atlas.asset b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/Raptor/raptor_Atlas.asset index 23c98a039..0d310ca1b 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/Raptor/raptor_Atlas.asset +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/Raptor/raptor_Atlas.asset @@ -12,6 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a6b194f808b1af6499c93410e504af42, type: 3} m_Name: raptor_Atlas m_EditorClassIdentifier: + serializedMaterialOverrides: [] textureLoadingMode: 0 onDemandTextureLoader: {fileID: 0} atlasFile: {fileID: 4900000, guid: 93456ae5f468800499b80d92a05282f3, type: 3} diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/Raptor/raptor_Material.mat b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/Raptor/raptor_Material.mat index 6b6a6c377..5cb830f27 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/Raptor/raptor_Material.mat +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/Raptor/raptor_Material.mat @@ -11,7 +11,8 @@ Material: m_Shader: {fileID: 4800000, guid: 1e8a610c9e01c3648bac42585e5fc676, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: [] + m_ValidKeywords: + - _STRAIGHT_ALPHA_INPUT m_InvalidKeywords: - _USE8NEIGHBOURHOOD_ON m_LightmapFlags: 4 @@ -31,6 +32,7 @@ Material: m_Ints: [] m_Floats: - _Cutoff: 0.1 + - _Fill: 0 - _OutlineMipLevel: 0 - _OutlineOpaqueAlpha: 1 - _OutlineReferenceTexWidth: 1024 @@ -38,7 +40,7 @@ Material: - _OutlineWidth: 3 - _StencilComp: 8 - _StencilRef: 1 - - _StraightAlphaInput: 0 + - _StraightAlphaInput: 1 - _ThresholdEnd: 0.25 - _Use8Neighbourhood: 1 - _UseScreenSpaceOutlineWidth: 0 diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes.meta new file mode 100644 index 000000000..d6329b5af --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 37b659b9642ed194497999a637a62c17 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes.atlas.txt b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes.atlas.txt new file mode 100644 index 000000000..d45879f2b --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes.atlas.txt @@ -0,0 +1,5 @@ +whirlyblendmodes.png + size: 512, 512 + filter: Linear, Linear +whirly + bounds: 2, 2, 256, 256 diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes.atlas.txt.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes.atlas.txt.meta new file mode 100644 index 000000000..d7ba3bfe3 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes.atlas.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d4fe1661c50e86b4a951b11855a4f44f +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes.json b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes.json new file mode 100644 index 000000000..553551842 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes.json @@ -0,0 +1,74 @@ +{ +"skeleton": { + "hash": "acq/cF9RZNM", + "spine": "4.3.39-beta", + "x": -252.71397, + "y": -232.55397, + "width": 456.70795, + "height": 360.68793, + "images": "./images/", + "audio": null +}, +"bones": [ + { "name": "root" }, + { "name": "_rotation", "parent": "root", "color": "abe323ff" }, + { "name": "additive", "parent": "root", "x": -37.18, "y": -104.42 }, + { "name": "multiply", "parent": "root", "x": 75.86 }, + { "name": "normal", "parent": "root" }, + { "name": "screen", "parent": "root", "x": -124.58 } +], +"slots": [ + { "name": "normal", "bone": "normal", "color": "ff9100ff", "attachment": "whirly" }, + { "name": "multiply", "bone": "multiply", "color": "905e9eff", "attachment": "whirly", "blend": "multiply" }, + { "name": "screen", "bone": "screen", "color": "0670c6ff", "attachment": "whirly", "blend": "screen" }, + { "name": "additive", "bone": "additive", "color": "0670c6ff", "attachment": "whirly", "blend": "additive" } +], +"constraints": [ + { + "type": "transform", + "name": "rotation", + "source": "_rotation", + "bones": [ "additive", "multiply", "normal", "screen" ], + "properties": { + "rotate": { + "to": { + "rotate": { "max": 100 } + } + } + } + } +], +"skins": [ + { + "name": "default", + "attachments": { + "additive": { + "whirly": { "rotation": -0.06, "width": 256, "height": 256 } + }, + "multiply": { + "whirly": { "rotation": -0.06, "width": 256, "height": 256 } + }, + "normal": { + "whirly": { "rotation": -0.06, "width": 256, "height": 256 } + }, + "screen": { + "whirly": { "rotation": -0.06, "width": 256, "height": 256 } + } + } + } +], +"animations": { + "animation": { + "bones": { + "_rotation": { + "rotate": [ + {}, + { "time": 0.33333334, "value": -120 }, + { "time": 0.6666667, "value": -240 }, + { "time": 1, "value": -360 } + ] + } + } + } +} +} \ No newline at end of file diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes.json.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes.json.meta new file mode 100644 index 000000000..e552ab679 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9e190d520b56f3c4d823981b48c3e131 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes.png b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes.png new file mode 100644 index 000000000..70194960f Binary files /dev/null and b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes.png differ diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes.png.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes.png.meta new file mode 100644 index 000000000..ef78a7544 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: 56f5f2fbc1025d64f8ac75874c48b4e1 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Atlas.asset b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Atlas.asset new file mode 100644 index 000000000..3fdd44144 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Atlas.asset @@ -0,0 +1,20 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a6b194f808b1af6499c93410e504af42, type: 3} + m_Name: whirlyblendmodes_Atlas + m_EditorClassIdentifier: spine-unity::Spine.Unity.SpineAtlasAsset + serializedMaterialOverrides: [] + textureLoadingMode: 0 + onDemandTextureLoader: {fileID: 0} + atlasFile: {fileID: 4900000, guid: d4fe1661c50e86b4a951b11855a4f44f, type: 3} + materials: + - {fileID: 2100000, guid: 17b5573ded7e02d49a155f13d7e8a6a6, type: 2} diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Atlas.asset.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Atlas.asset.meta new file mode 100644 index 000000000..72454ec9d --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Atlas.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c363a61a0bc21d43b6a0ebef815e9dc +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Material-Multiply.mat b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Material-Multiply.mat new file mode 100644 index 000000000..f5a73a90c --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Material-Multiply.mat @@ -0,0 +1,57 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: whirlyblendmodes_Material-Multiply + m_Shader: {fileID: 4800000, guid: 8bdcdc7ee298e594a9c20c61d25c33b6, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _STRAIGHT_ALPHA_INPUT + m_InvalidKeywords: + - _USE8NEIGHBOURHOOD_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - : + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 56f5f2fbc1025d64f8ac75874c48b4e1, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - : 0 + - _Cutoff: 0.1 + - _Fill: 0 + - _OutlineMipLevel: 0 + - _OutlineOpaqueAlpha: 1 + - _OutlineReferenceTexWidth: 1024 + - _OutlineSmoothness: 1 + - _OutlineWidth: 3 + - _StencilComp: 8 + - _StencilRef: 1 + - _StraightAlphaInput: 1 + - _ThresholdEnd: 0.25 + - _Use8Neighbourhood: 1 + - _UseScreenSpaceOutlineWidth: 0 + m_Colors: + - : {r: 0, g: 2.018574, b: 1e-45, a: 0.000007110106} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _OutlineColor: {r: 1, g: 1, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Material-Multiply.mat.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Material-Multiply.mat.meta new file mode 100644 index 000000000..ab6f6ed21 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Material-Multiply.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c3ebf8286d77e014ab400e79cbe037b9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Material-Screen.mat b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Material-Screen.mat new file mode 100644 index 000000000..4c0266fff --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Material-Screen.mat @@ -0,0 +1,57 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: whirlyblendmodes_Material-Screen + m_Shader: {fileID: 4800000, guid: 4e8caa36c07aacf4ab270da00784e4d9, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _STRAIGHT_ALPHA_INPUT + m_InvalidKeywords: + - _USE8NEIGHBOURHOOD_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - : + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 56f5f2fbc1025d64f8ac75874c48b4e1, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - : 0 + - _Cutoff: 0.1 + - _Fill: 0 + - _OutlineMipLevel: 0 + - _OutlineOpaqueAlpha: 1 + - _OutlineReferenceTexWidth: 1024 + - _OutlineSmoothness: 1 + - _OutlineWidth: 3 + - _StencilComp: 8 + - _StencilRef: 1 + - _StraightAlphaInput: 1 + - _ThresholdEnd: 0.25 + - _Use8Neighbourhood: 1 + - _UseScreenSpaceOutlineWidth: 0 + m_Colors: + - : {r: 0, g: 2.018574, b: 1e-45, a: 0.000007121922} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _OutlineColor: {r: 1, g: 1, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Material-Screen.mat.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Material-Screen.mat.meta new file mode 100644 index 000000000..a123ad2d5 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Material-Screen.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2b67e1dec82fb464c87254223445e12a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Material.mat b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Material.mat new file mode 100644 index 000000000..ab5621220 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Material.mat @@ -0,0 +1,50 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: whirlyblendmodes_Material + m_Shader: {fileID: 4800000, guid: 1e8a610c9e01c3648bac42585e5fc676, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _STRAIGHT_ALPHA_INPUT + m_InvalidKeywords: + - _USE8NEIGHBOURHOOD_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _MainTex: + m_Texture: {fileID: 2800000, guid: 56f5f2fbc1025d64f8ac75874c48b4e1, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _Cutoff: 0.1 + - _Fill: 0 + - _OutlineMipLevel: 0 + - _OutlineOpaqueAlpha: 1 + - _OutlineReferenceTexWidth: 1024 + - _OutlineSmoothness: 1 + - _OutlineWidth: 3 + - _StencilComp: 8 + - _StencilRef: 1 + - _StraightAlphaInput: 1 + - _ThresholdEnd: 0.25 + - _Use8Neighbourhood: 1 + - _UseScreenSpaceOutlineWidth: 0 + m_Colors: + - _OutlineColor: {r: 1, g: 1, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Material.mat.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Material.mat.meta new file mode 100644 index 000000000..b088dbae5 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_Material.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 17b5573ded7e02d49a155f13d7e8a6a6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_SkeletonData.asset b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_SkeletonData.asset new file mode 100644 index 000000000..27d2aeed8 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_SkeletonData.asset @@ -0,0 +1,35 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1b3b4b945939a54ea0b23d3396115fb, type: 3} + m_Name: whirlyblendmodes_SkeletonData + m_EditorClassIdentifier: spine-unity::Spine.Unity.SkeletonDataAsset + atlasAssets: + - {fileID: 11400000, guid: 8c363a61a0bc21d43b6a0ebef815e9dc, type: 2} + scale: 0.01 + skeletonJSON: {fileID: 4900000, guid: 9e190d520b56f3c4d823981b48c3e131, type: 3} + isUpgradingBlendModeMaterials: 0 + blendModeMaterials: + requiresBlendModeMaterials: 1 + applyAdditiveMaterial: 0 + additiveMaterials: [] + multiplyMaterials: + - pageName: whirlyblendmodes.png + material: {fileID: 2100000, guid: c3ebf8286d77e014ab400e79cbe037b9, type: 2} + screenMaterials: + - pageName: whirlyblendmodes.png + material: {fileID: 2100000, guid: 2b67e1dec82fb464c87254223445e12a, type: 2} + skeletonDataModifiers: [] + fromAnimation: [] + toAnimation: [] + duration: [] + defaultMix: 0.2 + controller: {fileID: 0} diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_SkeletonData.asset.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_SkeletonData.asset.meta new file mode 100644 index 000000000..703303e30 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/Spine Skeletons/whirlyblendmodes/whirlyblendmodes_SkeletonData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ad972744e16a88445ac76c691dbfc937 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/SpineUIToolkit.uxml b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/SpineUIToolkit.uxml index 0af34ac93..06d95ece0 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/SpineUIToolkit.uxml +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Samples~/Examples/SpineUIToolkit.uxml @@ -1,11 +1,28 @@ - + - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders.meta new file mode 100644 index 000000000..84fb27914 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a0478fd21e9daa047b9426b503d9098f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Additive.shader b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Additive.shader new file mode 100644 index 000000000..bc9884498 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Additive.shader @@ -0,0 +1,439 @@ +Shader "Spine/UITK/Additive" +{ + Properties + { + [ToggleUI]_StraightAlphaTexture("Straight Alpha Texture", Float) = 1 + [HideInInspector][NoScaleOffset]unity_Lightmaps("unity_Lightmaps", 2DArray) = "" {} + [HideInInspector][NoScaleOffset]unity_LightmapsInd("unity_LightmapsInd", 2DArray) = "" {} + [HideInInspector][NoScaleOffset]unity_ShadowMasks("unity_ShadowMasks", 2DArray) = "" {} + } + SubShader + { + Tags + { + "RenderPipeline"="UniversalPipeline" + "RenderType"="Transparent" + "Queue"="Transparent" + // DisableBatching: + "ShaderGraphShader"="true" + "ShaderGraphTargetId"="" + "IgnoreProjector"="True" + "PreviewType"="Plane" + "CanUseSpriteAtlas"="True" + } + + Pass + { + Name "Default" + Tags + { + // LightMode: + } + + // Render State + Cull Off + Blend One One + ZWrite Off + + // Debug + // + + // -------------------------------------------------- + // Pass + + HLSLPROGRAM + + // Pragmas + #pragma target 3.5 + #pragma vertex uie_custom_vert + #pragma fragment uie_custom_frag + + // Keywords + #pragma multi_compile_local _ _UIE_FORCE_GAMMA + #pragma multi_compile_local _ _UIE_TEXTURE_SLOT_COUNT_4 _UIE_TEXTURE_SLOT_COUNT_2 _UIE_TEXTURE_SLOT_COUNT_1 + #pragma multi_compile_local _ _UIE_RENDER_TYPE_SOLID _UIE_RENDER_TYPE_TEXTURE _UIE_RENDER_TYPE_TEXT _UIE_RENDER_TYPE_GRADIENT + // GraphKeywords: + + #define UITK_SHADERGRAPH + + // Defines + #define _SURFACE_TYPE_TRANSPARENT 1 + #define _ALPHAPREMULTIPLY_ON 1 + #define ATTRIBUTES_NEED_TEXCOORD0 + #define ATTRIBUTES_NEED_TEXCOORD1 + #define ATTRIBUTES_NEED_TEXCOORD2 + #define ATTRIBUTES_NEED_TEXCOORD3 + #define ATTRIBUTES_NEED_COLOR + #define VARYINGS_NEED_TEXCOORD0 + #define VARYINGS_NEED_TEXCOORD1 + #define VARYINGS_NEED_TEXCOORD3 + #define VARYINGS_NEED_COLOR + #define FEATURES_GRAPH_VERTEX + + #define REQUIRE_DEPTH_TEXTURE + #define REQUIRE_NORMAL_TEXTURE + + #define SHADERPASS SHADERPASS_CUSTOM_UI + + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/UnityInstancing.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl" + #include "Packages/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/ShaderLibrary/Shim/UIShim.hlsl" + + // -------------------------------------------------- + // Structs and Packing + + + struct Attributes + { + float3 positionOS : POSITION; + float4 color : COLOR; + float4 uv0 : TEXCOORD0; + float4 uv1 : TEXCOORD1; + float4 uv2 : TEXCOORD2; + float4 uv3 : TEXCOORD3; + float4 uv4 : TEXCOORD4; + float4 uv5 : TEXCOORD5; + float4 uv6 : TEXCOORD6; + float4 uv7 : TEXCOORD7; + #if UNITY_ANY_INSTANCING_ENABLED || defined(ATTRIBUTES_NEED_INSTANCEID) + uint instanceID : INSTANCEID_SEMANTIC; + #endif + }; + struct SurfaceDescriptionInputs + { + float4 color; + float4 typeTexSettings; + float2 textCoreLoc; + float4 circle; + float4 uvClip; + float2 layoutUV; + }; + struct Varyings + { + float4 positionCS : SV_POSITION; + float4 texCoord0; + float4 texCoord1; + float4 texCoord3; + float4 texCoord4; + float4 color; + #if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID) + uint instanceID : CUSTOM_INSTANCE_ID; + #endif + #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE))) + uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0; + #endif + #if (defined(UNITY_STEREO_INSTANCING_ENABLED)) + uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex; + #endif + }; + struct VertexDescriptionInputs + { + float4 vertexPosition; + float4 vertexColor; + float4 uv; + float4 xformClipPages; + float4 ids; + float4 flags; + float4 opacityColorPages; + float4 settingIndex; + float4 circle; + }; + struct PackedVaryings + { + float4 positionCS : SV_POSITION; + float4 texCoord0 : INTERP0; + float4 texCoord1 : INTERP1; + float4 texCoord3 : INTERP2; + float4 texCoord4 : INTERP3; + float4 color : INTERP4; + #if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID) + uint instanceID : CUSTOM_INSTANCE_ID; + #endif + #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE))) + uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0; + #endif + #if (defined(UNITY_STEREO_INSTANCING_ENABLED)) + uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex; + #endif + }; + + PackedVaryings PackVaryings (Varyings input) + { + PackedVaryings output; + ZERO_INITIALIZE(PackedVaryings, output); + output.positionCS = input.positionCS; + output.texCoord0.xyzw = input.texCoord0; + output.texCoord1.xyzw = input.texCoord1; + output.texCoord3.xyzw = input.texCoord3; + output.texCoord4.xyzw = input.texCoord4; + output.color.xyzw = input.color; + #if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID) + output.instanceID = input.instanceID; + #endif + #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE))) + output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0; + #endif + #if (defined(UNITY_STEREO_INSTANCING_ENABLED)) + output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx; + #endif + return output; + } + + Varyings UnpackVaryings (PackedVaryings input) + { + Varyings output; + output.positionCS = input.positionCS; + output.texCoord0 = input.texCoord0.xyzw; + output.texCoord1 = input.texCoord1.xyzw; + output.texCoord3 = input.texCoord3.xyzw; + output.texCoord4 = input.texCoord4.xyzw; + output.color = input.color.xyzw; + #if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID) + output.instanceID = input.instanceID; + #endif + #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE))) + output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0; + #endif + #if (defined(UNITY_STEREO_INSTANCING_ENABLED)) + output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx; + #endif + return output; + } + + + // -- Property used by ScenePickingPass + #ifdef SCENEPICKINGPASS + float4 _SelectionID; + #endif + + // -- Properties used by SceneSelectionPass + #ifdef SCENESELECTIONPASS + int _ObjectId; + int _PassValue; + #endif + + //UGUI has no keyword for when a renderer has "bloom", so its nessecary to hardcore it here, like all the base UI shaders. + half4 _TextureSampleAdd; + + // -------------------------------------------------- + // Graph + + // Graph Properties + CBUFFER_START(UnityPerMaterial) + float _StraightAlphaTexture; + UNITY_TEXTURE_STREAMING_DEBUG_VARS; + CBUFFER_END + + + // Object and Global properties + + // Graph Includes + // GraphIncludes: + + // Graph Functions + + void Unity_Branch_float(float Predicate, float True, float False, out float Out) + { + Out = Predicate ? True : False; + } + + void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out) + { + Out = A * B; + } + + /* WARNING: $splice Could not find named fragment 'CustomInterpolatorPreVertex' */ + + // Graph Vertex + struct VertexDescription + { + }; + + VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN) + { + VertexDescription description = (VertexDescription)0; + return description; + } + + /* WARNING: $splice Could not find named fragment 'CustomInterpolatorPreSurface' */ + + // Graph Pixel + struct SurfaceDescription + { + float3 BaseColor; + float Alpha; + }; + + SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN) + { + SurfaceDescription surface = (SurfaceDescription)0; + float4 _DefaultSolid_e5d4725ba3424f12a78b05bd317dacfe_Solid_0_Vector4 = float4(1, 1, 0, 1); + [branch] if (_UIE_RENDER_TYPE_SOLID || _UIE_RENDER_TYPE_ANY && round(IN.typeTexSettings.x) == k_FragTypeSolid) + { + SolidFragInput Unity_UIE_EvaluateSolidNode_Input; + Unity_UIE_EvaluateSolidNode_Input.tint = IN.color; + Unity_UIE_EvaluateSolidNode_Input.isArc = false; + Unity_UIE_EvaluateSolidNode_Input.outer = float2(-10000, -10000); + Unity_UIE_EvaluateSolidNode_Input.inner = float2(-10000, -10000); + CommonFragOutput Unity_UIE_EvaluateSolidNode_Output = uie_std_frag_solid(Unity_UIE_EvaluateSolidNode_Input); + _DefaultSolid_e5d4725ba3424f12a78b05bd317dacfe_Solid_0_Vector4 = Unity_UIE_EvaluateSolidNode_Output.color; + } + float4 _DefaultTexture_0ff00ac4ba3f46138bd69732235d2fb4_Texture_2_Vector4 = float4(1, 1, 0, 1); + [branch] if (_UIE_RENDER_TYPE_TEXTURE || _UIE_RENDER_TYPE_ANY && round(IN.typeTexSettings.x) == k_FragTypeTexture) + { + TextureFragInput Unity_UIE_EvaluateTextureNode_Input; + Unity_UIE_EvaluateTextureNode_Input.tint = IN.color; + Unity_UIE_EvaluateTextureNode_Input.textureSlot = IN.typeTexSettings.y; + Unity_UIE_EvaluateTextureNode_Input.uv = IN.uvClip.xy; + Unity_UIE_EvaluateTextureNode_Input.isArc = false; + Unity_UIE_EvaluateTextureNode_Input.outer = float2(-10000, -10000); + Unity_UIE_EvaluateTextureNode_Input.inner = float2(-10000, -10000); + CommonFragOutput Unity_UIE_EvaluateTextureNode_Output = uie_std_frag_texture(Unity_UIE_EvaluateTextureNode_Input); + _DefaultTexture_0ff00ac4ba3f46138bd69732235d2fb4_Texture_2_Vector4 = Unity_UIE_EvaluateTextureNode_Output.color; + } + float3 _Swizzle_c3b6fc22d71a49e49cdeae1847c155da_Out_1_Vector3 = _DefaultTexture_0ff00ac4ba3f46138bd69732235d2fb4_Texture_2_Vector4.xyz; + float _Property_4e9c19f167f743a2a7022781a02d70f9_Out_0_Boolean = _StraightAlphaTexture; + float _Split_775865f90de4425e89b1219e16b8b1b8_R_1_Float = _DefaultTexture_0ff00ac4ba3f46138bd69732235d2fb4_Texture_2_Vector4[0]; + float _Split_775865f90de4425e89b1219e16b8b1b8_G_2_Float = _DefaultTexture_0ff00ac4ba3f46138bd69732235d2fb4_Texture_2_Vector4[1]; + float _Split_775865f90de4425e89b1219e16b8b1b8_B_3_Float = _DefaultTexture_0ff00ac4ba3f46138bd69732235d2fb4_Texture_2_Vector4[2]; + float _Split_775865f90de4425e89b1219e16b8b1b8_A_4_Float = _DefaultTexture_0ff00ac4ba3f46138bd69732235d2fb4_Texture_2_Vector4[3]; + float _Branch_497e29be0ebf40e7991f43fc57bf1a3e_Out_3_Float; + Unity_Branch_float(_Property_4e9c19f167f743a2a7022781a02d70f9_Out_0_Boolean, _Split_775865f90de4425e89b1219e16b8b1b8_A_4_Float, float(1), _Branch_497e29be0ebf40e7991f43fc57bf1a3e_Out_3_Float); + float3 _Multiply_d99b3fd6d1a849ea8b7ba160b4f11ece_Out_2_Vector3; + Unity_Multiply_float3_float3(_Swizzle_c3b6fc22d71a49e49cdeae1847c155da_Out_1_Vector3, (_Branch_497e29be0ebf40e7991f43fc57bf1a3e_Out_3_Float.xxx), _Multiply_d99b3fd6d1a849ea8b7ba160b4f11ece_Out_2_Vector3); + float4 _Append_1a863cc20632474aa4fef9f0995dc8c9_Out_2_Vector4 = float4( _Multiply_d99b3fd6d1a849ea8b7ba160b4f11ece_Out_2_Vector3.xyz, _Split_775865f90de4425e89b1219e16b8b1b8_A_4_Float.x ); + float3 _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Color_5_Vector3 = float3(0, 0, 0); + float _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Alpha_6_Float = 1.0; + [branch] if (_UIE_RENDER_TYPE_SOLID || _UIE_RENDER_TYPE_ANY && TestType(IN.typeTexSettings.x, k_FragTypeSolid)) + { + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Color_5_Vector3 = _DefaultSolid_e5d4725ba3424f12a78b05bd317dacfe_Solid_0_Vector4.rgb; + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Alpha_6_Float = _DefaultSolid_e5d4725ba3424f12a78b05bd317dacfe_Solid_0_Vector4.a; + } + else [branch] if (_UIE_RENDER_TYPE_TEXTURE || _UIE_RENDER_TYPE_ANY && TestType(IN.typeTexSettings.x, k_FragTypeTexture)) + { + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Color_5_Vector3 = _Append_1a863cc20632474aa4fef9f0995dc8c9_Out_2_Vector4.rgb; + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Alpha_6_Float = _Append_1a863cc20632474aa4fef9f0995dc8c9_Out_2_Vector4.a; + } + else [branch] if ((_UIE_RENDER_TYPE_TEXT || _UIE_RENDER_TYPE_ANY) && TestType(IN.typeTexSettings.x, k_FragTypeText)) + { + [branch] if (GetTextureInfo(IN.typeTexSettings.y).sdfScale > 0.0) + { + SdfTextFragInput Unity_UIE_RenderTypeSwitchNode_SdfText_Input; + Unity_UIE_RenderTypeSwitchNode_SdfText_Input.tint = IN.color; + Unity_UIE_RenderTypeSwitchNode_SdfText_Input.textureSlot = IN.typeTexSettings.y; + Unity_UIE_RenderTypeSwitchNode_SdfText_Input.uv = IN.uvClip.xy; + Unity_UIE_RenderTypeSwitchNode_SdfText_Input.extraDilate = IN.circle.x; + Unity_UIE_RenderTypeSwitchNode_SdfText_Input.textCoreLoc = round(IN.textCoreLoc); + Unity_UIE_RenderTypeSwitchNode_SdfText_Input.opacity = IN.typeTexSettings.z; + CommonFragOutput Unity_UIE_RenderTypeSwitchNode_Output = uie_std_frag_sdf_text(Unity_UIE_RenderTypeSwitchNode_SdfText_Input); + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Color_5_Vector3 = Unity_UIE_RenderTypeSwitchNode_Output.color.rgb; + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Alpha_6_Float = Unity_UIE_RenderTypeSwitchNode_Output.color.a; + } + else + { + BitmapTextFragInput Unity_UIE_RenderTypeSwitchNode_BitmapText_Input; + Unity_UIE_RenderTypeSwitchNode_BitmapText_Input.tint = IN.color; + Unity_UIE_RenderTypeSwitchNode_BitmapText_Input.textureSlot = IN.typeTexSettings.y; + Unity_UIE_RenderTypeSwitchNode_BitmapText_Input.uv = IN.uvClip.xy; + Unity_UIE_RenderTypeSwitchNode_BitmapText_Input.opacity = IN.typeTexSettings.z; + CommonFragOutput Unity_UIE_RenderTypeSwitchNode_Output = uie_std_frag_bitmap_text(Unity_UIE_RenderTypeSwitchNode_BitmapText_Input); + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Color_5_Vector3 = Unity_UIE_RenderTypeSwitchNode_Output.color.rgb; + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Alpha_6_Float = Unity_UIE_RenderTypeSwitchNode_Output.color.a; + } + } + else + { + SvgGradientFragInput Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input; + Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input.settingIndex = round(IN.typeTexSettings.z); + Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input.textureSlot = round(IN.typeTexSettings.y); + Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input.uv = IN.uvClip.xy; + Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input.isArc = false; + Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input.outer = float2(-10000, -10000); + Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input.inner = float2(-10000, -10000); + CommonFragOutput Unity_UIE_RenderTypeSwitchNode_Output = uie_std_frag_svg_gradient(Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input); + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Color_5_Vector3 = Unity_UIE_RenderTypeSwitchNode_Output.color.rgb * IN.color.rgb; + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Alpha_6_Float = Unity_UIE_RenderTypeSwitchNode_Output.color.a * IN.color.a; + } + surface.BaseColor = _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Color_5_Vector3; + surface.Alpha = _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Alpha_6_Float; + return surface; + } + + // -------------------------------------------------- + // Build Graph Inputs + + VertexDescriptionInputs BuildVertexDescriptionInputs(Attributes input) + { + VertexDescriptionInputs output; + ZERO_INITIALIZE(VertexDescriptionInputs, output); + + #if UNITY_ANY_INSTANCING_ENABLED + #else // TODO: XR support for procedural instancing because in this case UNITY_ANY_INSTANCING_ENABLED is not defined and instanceID is incorrect. + #endif + + return output; + } + SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input) + { + SurfaceDescriptionInputs output; + ZERO_INITIALIZE(SurfaceDescriptionInputs, output); + + /* WARNING: $splice Could not find named fragment 'CustomInterpolatorCopyToSDI' */ + + + + + + + #if UNITY_UV_STARTS_AT_TOP + #else + #endif + + + + #if defined(UNITY_UIE_INCLUDED) + #else + #endif + + + output.color = input.color; + output.uvClip = input.texCoord0; + output.typeTexSettings = input.texCoord1; + output.textCoreLoc = input.texCoord3.xy; + output.layoutUV = input.texCoord3.zw; + + output.circle = input.texCoord4; + + #if UNITY_ANY_INSTANCING_ENABLED + #else // TODO: XR support for procedural instancing because in this case UNITY_ANY_INSTANCING_ENABLED is not defined and instanceID is incorrect. + #endif + #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE) + #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign = IS_FRONT_VFACE(input.cullFace, true, false); + #else + #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN + #endif + #undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN + + return output; + } + + // -------------------------------------------------- + // Main + + #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/UITKPass.hlsl" + + ENDHLSL + } + } + CustomEditor "UnityEditor.ShaderGraph.GenericShaderGraphMaterialGUI" + FallBack off +} diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Additive.shader.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Additive.shader.meta new file mode 100644 index 000000000..27007601e --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Additive.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9818276b7a7ab2148a8a3ed86c9ac555 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Multiply.shader b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Multiply.shader new file mode 100644 index 000000000..2504c7322 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Multiply.shader @@ -0,0 +1,439 @@ +Shader "Spine/UITK/Multiply" +{ + Properties + { + [ToggleUI]_StraightAlphaTexture("Straight Alpha Texture", Float) = 1 + [HideInInspector][NoScaleOffset]unity_Lightmaps("unity_Lightmaps", 2DArray) = "" {} + [HideInInspector][NoScaleOffset]unity_LightmapsInd("unity_LightmapsInd", 2DArray) = "" {} + [HideInInspector][NoScaleOffset]unity_ShadowMasks("unity_ShadowMasks", 2DArray) = "" {} + } + SubShader + { + Tags + { + "RenderPipeline"="UniversalPipeline" + "RenderType"="Transparent" + "Queue"="Transparent" + // DisableBatching: + "ShaderGraphShader"="true" + "ShaderGraphTargetId"="" + "IgnoreProjector"="True" + "PreviewType"="Plane" + "CanUseSpriteAtlas"="True" + } + + Pass + { + Name "Default" + Tags + { + // LightMode: + } + + // Render State + Cull Off + Blend DstColor OneMinusSrcAlpha + ZWrite Off + + // Debug + // + + // -------------------------------------------------- + // Pass + + HLSLPROGRAM + + // Pragmas + #pragma target 3.5 + #pragma vertex uie_custom_vert + #pragma fragment uie_custom_frag + + // Keywords + #pragma multi_compile_local _ _UIE_FORCE_GAMMA + #pragma multi_compile_local _ _UIE_TEXTURE_SLOT_COUNT_4 _UIE_TEXTURE_SLOT_COUNT_2 _UIE_TEXTURE_SLOT_COUNT_1 + #pragma multi_compile_local _ _UIE_RENDER_TYPE_SOLID _UIE_RENDER_TYPE_TEXTURE _UIE_RENDER_TYPE_TEXT _UIE_RENDER_TYPE_GRADIENT + // GraphKeywords: + + #define UITK_SHADERGRAPH + + // Defines + #define _SURFACE_TYPE_TRANSPARENT 1 + #define _ALPHAPREMULTIPLY_ON 1 + #define ATTRIBUTES_NEED_TEXCOORD0 + #define ATTRIBUTES_NEED_TEXCOORD1 + #define ATTRIBUTES_NEED_TEXCOORD2 + #define ATTRIBUTES_NEED_TEXCOORD3 + #define ATTRIBUTES_NEED_COLOR + #define VARYINGS_NEED_TEXCOORD0 + #define VARYINGS_NEED_TEXCOORD1 + #define VARYINGS_NEED_TEXCOORD3 + #define VARYINGS_NEED_COLOR + #define FEATURES_GRAPH_VERTEX + + #define REQUIRE_DEPTH_TEXTURE + #define REQUIRE_NORMAL_TEXTURE + + #define SHADERPASS SHADERPASS_CUSTOM_UI + + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/UnityInstancing.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl" + #include "Packages/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/ShaderLibrary/Shim/UIShim.hlsl" + + // -------------------------------------------------- + // Structs and Packing + + + struct Attributes + { + float3 positionOS : POSITION; + float4 color : COLOR; + float4 uv0 : TEXCOORD0; + float4 uv1 : TEXCOORD1; + float4 uv2 : TEXCOORD2; + float4 uv3 : TEXCOORD3; + float4 uv4 : TEXCOORD4; + float4 uv5 : TEXCOORD5; + float4 uv6 : TEXCOORD6; + float4 uv7 : TEXCOORD7; + #if UNITY_ANY_INSTANCING_ENABLED || defined(ATTRIBUTES_NEED_INSTANCEID) + uint instanceID : INSTANCEID_SEMANTIC; + #endif + }; + struct SurfaceDescriptionInputs + { + float4 color; + float4 typeTexSettings; + float2 textCoreLoc; + float4 circle; + float4 uvClip; + float2 layoutUV; + }; + struct Varyings + { + float4 positionCS : SV_POSITION; + float4 texCoord0; + float4 texCoord1; + float4 texCoord3; + float4 texCoord4; + float4 color; + #if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID) + uint instanceID : CUSTOM_INSTANCE_ID; + #endif + #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE))) + uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0; + #endif + #if (defined(UNITY_STEREO_INSTANCING_ENABLED)) + uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex; + #endif + }; + struct VertexDescriptionInputs + { + float4 vertexPosition; + float4 vertexColor; + float4 uv; + float4 xformClipPages; + float4 ids; + float4 flags; + float4 opacityColorPages; + float4 settingIndex; + float4 circle; + }; + struct PackedVaryings + { + float4 positionCS : SV_POSITION; + float4 texCoord0 : INTERP0; + float4 texCoord1 : INTERP1; + float4 texCoord3 : INTERP2; + float4 texCoord4 : INTERP3; + float4 color : INTERP4; + #if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID) + uint instanceID : CUSTOM_INSTANCE_ID; + #endif + #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE))) + uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0; + #endif + #if (defined(UNITY_STEREO_INSTANCING_ENABLED)) + uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex; + #endif + }; + + PackedVaryings PackVaryings (Varyings input) + { + PackedVaryings output; + ZERO_INITIALIZE(PackedVaryings, output); + output.positionCS = input.positionCS; + output.texCoord0.xyzw = input.texCoord0; + output.texCoord1.xyzw = input.texCoord1; + output.texCoord3.xyzw = input.texCoord3; + output.texCoord4.xyzw = input.texCoord4; + output.color.xyzw = input.color; + #if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID) + output.instanceID = input.instanceID; + #endif + #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE))) + output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0; + #endif + #if (defined(UNITY_STEREO_INSTANCING_ENABLED)) + output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx; + #endif + return output; + } + + Varyings UnpackVaryings (PackedVaryings input) + { + Varyings output; + output.positionCS = input.positionCS; + output.texCoord0 = input.texCoord0.xyzw; + output.texCoord1 = input.texCoord1.xyzw; + output.texCoord3 = input.texCoord3.xyzw; + output.texCoord4 = input.texCoord4.xyzw; + output.color = input.color.xyzw; + #if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID) + output.instanceID = input.instanceID; + #endif + #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE))) + output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0; + #endif + #if (defined(UNITY_STEREO_INSTANCING_ENABLED)) + output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx; + #endif + return output; + } + + + // -- Property used by ScenePickingPass + #ifdef SCENEPICKINGPASS + float4 _SelectionID; + #endif + + // -- Properties used by SceneSelectionPass + #ifdef SCENESELECTIONPASS + int _ObjectId; + int _PassValue; + #endif + + //UGUI has no keyword for when a renderer has "bloom", so its nessecary to hardcore it here, like all the base UI shaders. + half4 _TextureSampleAdd; + + // -------------------------------------------------- + // Graph + + // Graph Properties + CBUFFER_START(UnityPerMaterial) + float _StraightAlphaTexture; + UNITY_TEXTURE_STREAMING_DEBUG_VARS; + CBUFFER_END + + + // Object and Global properties + + // Graph Includes + // GraphIncludes: + + // Graph Functions + + void Unity_Branch_float(float Predicate, float True, float False, out float Out) + { + Out = Predicate ? True : False; + } + + void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out) + { + Out = A * B; + } + + /* WARNING: $splice Could not find named fragment 'CustomInterpolatorPreVertex' */ + + // Graph Vertex + struct VertexDescription + { + }; + + VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN) + { + VertexDescription description = (VertexDescription)0; + return description; + } + + /* WARNING: $splice Could not find named fragment 'CustomInterpolatorPreSurface' */ + + // Graph Pixel + struct SurfaceDescription + { + float3 BaseColor; + float Alpha; + }; + + SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN) + { + SurfaceDescription surface = (SurfaceDescription)0; + float4 _DefaultSolid_e5d4725ba3424f12a78b05bd317dacfe_Solid_0_Vector4 = float4(1, 1, 0, 1); + [branch] if (_UIE_RENDER_TYPE_SOLID || _UIE_RENDER_TYPE_ANY && round(IN.typeTexSettings.x) == k_FragTypeSolid) + { + SolidFragInput Unity_UIE_EvaluateSolidNode_Input; + Unity_UIE_EvaluateSolidNode_Input.tint = IN.color; + Unity_UIE_EvaluateSolidNode_Input.isArc = false; + Unity_UIE_EvaluateSolidNode_Input.outer = float2(-10000, -10000); + Unity_UIE_EvaluateSolidNode_Input.inner = float2(-10000, -10000); + CommonFragOutput Unity_UIE_EvaluateSolidNode_Output = uie_std_frag_solid(Unity_UIE_EvaluateSolidNode_Input); + _DefaultSolid_e5d4725ba3424f12a78b05bd317dacfe_Solid_0_Vector4 = Unity_UIE_EvaluateSolidNode_Output.color; + } + float4 _DefaultTexture_0ff00ac4ba3f46138bd69732235d2fb4_Texture_2_Vector4 = float4(1, 1, 0, 1); + [branch] if (_UIE_RENDER_TYPE_TEXTURE || _UIE_RENDER_TYPE_ANY && round(IN.typeTexSettings.x) == k_FragTypeTexture) + { + TextureFragInput Unity_UIE_EvaluateTextureNode_Input; + Unity_UIE_EvaluateTextureNode_Input.tint = IN.color; + Unity_UIE_EvaluateTextureNode_Input.textureSlot = IN.typeTexSettings.y; + Unity_UIE_EvaluateTextureNode_Input.uv = IN.uvClip.xy; + Unity_UIE_EvaluateTextureNode_Input.isArc = false; + Unity_UIE_EvaluateTextureNode_Input.outer = float2(-10000, -10000); + Unity_UIE_EvaluateTextureNode_Input.inner = float2(-10000, -10000); + CommonFragOutput Unity_UIE_EvaluateTextureNode_Output = uie_std_frag_texture(Unity_UIE_EvaluateTextureNode_Input); + _DefaultTexture_0ff00ac4ba3f46138bd69732235d2fb4_Texture_2_Vector4 = Unity_UIE_EvaluateTextureNode_Output.color; + } + float3 _Swizzle_c3b6fc22d71a49e49cdeae1847c155da_Out_1_Vector3 = _DefaultTexture_0ff00ac4ba3f46138bd69732235d2fb4_Texture_2_Vector4.xyz; + float _Property_4e9c19f167f743a2a7022781a02d70f9_Out_0_Boolean = _StraightAlphaTexture; + float _Split_775865f90de4425e89b1219e16b8b1b8_R_1_Float = _DefaultTexture_0ff00ac4ba3f46138bd69732235d2fb4_Texture_2_Vector4[0]; + float _Split_775865f90de4425e89b1219e16b8b1b8_G_2_Float = _DefaultTexture_0ff00ac4ba3f46138bd69732235d2fb4_Texture_2_Vector4[1]; + float _Split_775865f90de4425e89b1219e16b8b1b8_B_3_Float = _DefaultTexture_0ff00ac4ba3f46138bd69732235d2fb4_Texture_2_Vector4[2]; + float _Split_775865f90de4425e89b1219e16b8b1b8_A_4_Float = _DefaultTexture_0ff00ac4ba3f46138bd69732235d2fb4_Texture_2_Vector4[3]; + float _Branch_497e29be0ebf40e7991f43fc57bf1a3e_Out_3_Float; + Unity_Branch_float(_Property_4e9c19f167f743a2a7022781a02d70f9_Out_0_Boolean, _Split_775865f90de4425e89b1219e16b8b1b8_A_4_Float, float(1), _Branch_497e29be0ebf40e7991f43fc57bf1a3e_Out_3_Float); + float3 _Multiply_d99b3fd6d1a849ea8b7ba160b4f11ece_Out_2_Vector3; + Unity_Multiply_float3_float3(_Swizzle_c3b6fc22d71a49e49cdeae1847c155da_Out_1_Vector3, (_Branch_497e29be0ebf40e7991f43fc57bf1a3e_Out_3_Float.xxx), _Multiply_d99b3fd6d1a849ea8b7ba160b4f11ece_Out_2_Vector3); + float4 _Append_1a863cc20632474aa4fef9f0995dc8c9_Out_2_Vector4 = float4( _Multiply_d99b3fd6d1a849ea8b7ba160b4f11ece_Out_2_Vector3.xyz, _Split_775865f90de4425e89b1219e16b8b1b8_A_4_Float.x ); + float3 _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Color_5_Vector3 = float3(0, 0, 0); + float _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Alpha_6_Float = 1.0; + [branch] if (_UIE_RENDER_TYPE_SOLID || _UIE_RENDER_TYPE_ANY && TestType(IN.typeTexSettings.x, k_FragTypeSolid)) + { + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Color_5_Vector3 = _DefaultSolid_e5d4725ba3424f12a78b05bd317dacfe_Solid_0_Vector4.rgb; + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Alpha_6_Float = _DefaultSolid_e5d4725ba3424f12a78b05bd317dacfe_Solid_0_Vector4.a; + } + else [branch] if (_UIE_RENDER_TYPE_TEXTURE || _UIE_RENDER_TYPE_ANY && TestType(IN.typeTexSettings.x, k_FragTypeTexture)) + { + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Color_5_Vector3 = _Append_1a863cc20632474aa4fef9f0995dc8c9_Out_2_Vector4.rgb; + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Alpha_6_Float = _Append_1a863cc20632474aa4fef9f0995dc8c9_Out_2_Vector4.a; + } + else [branch] if ((_UIE_RENDER_TYPE_TEXT || _UIE_RENDER_TYPE_ANY) && TestType(IN.typeTexSettings.x, k_FragTypeText)) + { + [branch] if (GetTextureInfo(IN.typeTexSettings.y).sdfScale > 0.0) + { + SdfTextFragInput Unity_UIE_RenderTypeSwitchNode_SdfText_Input; + Unity_UIE_RenderTypeSwitchNode_SdfText_Input.tint = IN.color; + Unity_UIE_RenderTypeSwitchNode_SdfText_Input.textureSlot = IN.typeTexSettings.y; + Unity_UIE_RenderTypeSwitchNode_SdfText_Input.uv = IN.uvClip.xy; + Unity_UIE_RenderTypeSwitchNode_SdfText_Input.extraDilate = IN.circle.x; + Unity_UIE_RenderTypeSwitchNode_SdfText_Input.textCoreLoc = round(IN.textCoreLoc); + Unity_UIE_RenderTypeSwitchNode_SdfText_Input.opacity = IN.typeTexSettings.z; + CommonFragOutput Unity_UIE_RenderTypeSwitchNode_Output = uie_std_frag_sdf_text(Unity_UIE_RenderTypeSwitchNode_SdfText_Input); + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Color_5_Vector3 = Unity_UIE_RenderTypeSwitchNode_Output.color.rgb; + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Alpha_6_Float = Unity_UIE_RenderTypeSwitchNode_Output.color.a; + } + else + { + BitmapTextFragInput Unity_UIE_RenderTypeSwitchNode_BitmapText_Input; + Unity_UIE_RenderTypeSwitchNode_BitmapText_Input.tint = IN.color; + Unity_UIE_RenderTypeSwitchNode_BitmapText_Input.textureSlot = IN.typeTexSettings.y; + Unity_UIE_RenderTypeSwitchNode_BitmapText_Input.uv = IN.uvClip.xy; + Unity_UIE_RenderTypeSwitchNode_BitmapText_Input.opacity = IN.typeTexSettings.z; + CommonFragOutput Unity_UIE_RenderTypeSwitchNode_Output = uie_std_frag_bitmap_text(Unity_UIE_RenderTypeSwitchNode_BitmapText_Input); + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Color_5_Vector3 = Unity_UIE_RenderTypeSwitchNode_Output.color.rgb; + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Alpha_6_Float = Unity_UIE_RenderTypeSwitchNode_Output.color.a; + } + } + else + { + SvgGradientFragInput Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input; + Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input.settingIndex = round(IN.typeTexSettings.z); + Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input.textureSlot = round(IN.typeTexSettings.y); + Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input.uv = IN.uvClip.xy; + Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input.isArc = false; + Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input.outer = float2(-10000, -10000); + Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input.inner = float2(-10000, -10000); + CommonFragOutput Unity_UIE_RenderTypeSwitchNode_Output = uie_std_frag_svg_gradient(Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input); + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Color_5_Vector3 = Unity_UIE_RenderTypeSwitchNode_Output.color.rgb * IN.color.rgb; + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Alpha_6_Float = Unity_UIE_RenderTypeSwitchNode_Output.color.a * IN.color.a; + } + surface.BaseColor = _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Color_5_Vector3; + surface.Alpha = _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Alpha_6_Float; + return surface; + } + + // -------------------------------------------------- + // Build Graph Inputs + + VertexDescriptionInputs BuildVertexDescriptionInputs(Attributes input) + { + VertexDescriptionInputs output; + ZERO_INITIALIZE(VertexDescriptionInputs, output); + + #if UNITY_ANY_INSTANCING_ENABLED + #else // TODO: XR support for procedural instancing because in this case UNITY_ANY_INSTANCING_ENABLED is not defined and instanceID is incorrect. + #endif + + return output; + } + SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input) + { + SurfaceDescriptionInputs output; + ZERO_INITIALIZE(SurfaceDescriptionInputs, output); + + /* WARNING: $splice Could not find named fragment 'CustomInterpolatorCopyToSDI' */ + + + + + + + #if UNITY_UV_STARTS_AT_TOP + #else + #endif + + + + #if defined(UNITY_UIE_INCLUDED) + #else + #endif + + + output.color = input.color; + output.uvClip = input.texCoord0; + output.typeTexSettings = input.texCoord1; + output.textCoreLoc = input.texCoord3.xy; + output.layoutUV = input.texCoord3.zw; + + output.circle = input.texCoord4; + + #if UNITY_ANY_INSTANCING_ENABLED + #else // TODO: XR support for procedural instancing because in this case UNITY_ANY_INSTANCING_ENABLED is not defined and instanceID is incorrect. + #endif + #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE) + #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign = IS_FRONT_VFACE(input.cullFace, true, false); + #else + #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN + #endif + #undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN + + return output; + } + + // -------------------------------------------------- + // Main + + #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/UITKPass.hlsl" + + ENDHLSL + } + } + CustomEditor "UnityEditor.ShaderGraph.GenericShaderGraphMaterialGUI" + FallBack off +} diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Multiply.shader.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Multiply.shader.meta new file mode 100644 index 000000000..43e5fcd65 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Multiply.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ed93aea253bcdc94a84ee09cd390c587 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Normal.shadergraph b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Normal.shadergraph new file mode 100644 index 000000000..170a3a275 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Normal.shadergraph @@ -0,0 +1,1601 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "f4de081a32f94489b4543e4b45df06eb", + "m_Properties": [ + { + "m_Id": "b8efffcdb161493ea29d9857dbdcee96" + } + ], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "266e0514b7e64b689fea5f4a76386338" + } + ], + "m_Nodes": [ + { + "m_Id": "4f813a8c3d56482789a2bcbecd1b6fe0" + }, + { + "m_Id": "3ca104e183d441e18505d765a037afa8" + }, + { + "m_Id": "532ba7da13274f1d9adcf8b9b5924c01" + }, + { + "m_Id": "e5d4725ba3424f12a78b05bd317dacfe" + }, + { + "m_Id": "0ff00ac4ba3f46138bd69732235d2fb4" + }, + { + "m_Id": "775865f90de4425e89b1219e16b8b1b8" + }, + { + "m_Id": "d99b3fd6d1a849ea8b7ba160b4f11ece" + }, + { + "m_Id": "4e9c19f167f743a2a7022781a02d70f9" + }, + { + "m_Id": "497e29be0ebf40e7991f43fc57bf1a3e" + }, + { + "m_Id": "c3b6fc22d71a49e49cdeae1847c155da" + }, + { + "m_Id": "1a863cc20632474aa4fef9f0995dc8c9" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [ + { + "m_Id": "29736332519042679a717e4faaa6ce5b" + } + ], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0ff00ac4ba3f46138bd69732235d2fb4" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "775865f90de4425e89b1219e16b8b1b8" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0ff00ac4ba3f46138bd69732235d2fb4" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "c3b6fc22d71a49e49cdeae1847c155da" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1a863cc20632474aa4fef9f0995dc8c9" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "532ba7da13274f1d9adcf8b9b5924c01" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "497e29be0ebf40e7991f43fc57bf1a3e" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d99b3fd6d1a849ea8b7ba160b4f11ece" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "4e9c19f167f743a2a7022781a02d70f9" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "497e29be0ebf40e7991f43fc57bf1a3e" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "532ba7da13274f1d9adcf8b9b5924c01" + }, + "m_SlotId": 5 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "4f813a8c3d56482789a2bcbecd1b6fe0" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "532ba7da13274f1d9adcf8b9b5924c01" + }, + "m_SlotId": 6 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3ca104e183d441e18505d765a037afa8" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "775865f90de4425e89b1219e16b8b1b8" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1a863cc20632474aa4fef9f0995dc8c9" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "775865f90de4425e89b1219e16b8b1b8" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "497e29be0ebf40e7991f43fc57bf1a3e" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c3b6fc22d71a49e49cdeae1847c155da" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d99b3fd6d1a849ea8b7ba160b4f11ece" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d99b3fd6d1a849ea8b7ba160b4f11ece" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1a863cc20632474aa4fef9f0995dc8c9" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e5d4725ba3424f12a78b05bd317dacfe" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "532ba7da13274f1d9adcf8b9b5924c01" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 254.0000457763672, + "y": 23.000017166137697 + }, + "m_Blocks": [] + }, + "m_FragmentContext": { + "m_Position": { + "x": 391.9999694824219, + "y": 286.0 + }, + "m_Blocks": [ + { + "m_Id": "4f813a8c3d56482789a2bcbecd1b6fe0" + }, + { + "m_Id": "3ca104e183d441e18505d765a037afa8" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_SubDatas": [], + "m_ActiveTargets": [ + { + "m_Id": "d7e31537adc443cc9e6bcdb02c8a3074" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "07054ca48f7d4ab6ad2468c54e6083cf", + "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": "08413eea3d654e509dd509f85012b8c6", + "m_Id": 6, + "m_DisplayName": "Alpha", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [], + "m_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultTextureNode", + "m_ObjectId": "0ff00ac4ba3f46138bd69732235d2fb4", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Default Texture", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1056.0, + "y": 184.99998474121095, + "width": 164.00006103515626, + "height": 100.99998474121094 + } + }, + "m_Slots": [ + { + "m_Id": "be5459bf033c4291b925892b508968fc" + }, + { + "m_Id": "662fce56901046ce9b9d9f7b35f11ec2" + }, + { + "m_Id": "2437d2c7e618447784b00b47279c36aa" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1993d85a77c745ccaddd69314f966124", + "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_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AppendVectorNode", + "m_ObjectId": "1a863cc20632474aa4fef9f0995dc8c9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Append", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -231.00001525878907, + "y": 271.0, + "width": 129.99996948242188, + "height": 117.99996948242188 + } + }, + "m_Slots": [ + { + "m_Id": "7d26e74e52fe44b98575e5694eeb88a3" + }, + { + "m_Id": "dc4af3eafede4050b415df3f29270e07" + }, + { + "m_Id": "68e2a96b35b24fbe94187bf7941f3388" + } + ], + "synonyms": [ + "join", + "combine" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", + "m_ObjectId": "2437d2c7e618447784b00b47279c36aa", + "m_Id": 2, + "m_DisplayName": "Texture", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "266e0514b7e64b689fea5f4a76386338", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "b8efffcdb161493ea29d9857dbdcee96" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.StickyNoteData", + "m_ObjectId": "29736332519042679a717e4faaa6ce5b", + "m_Title": "PMA Texture", + "m_Content": "if (straightAlphaTexture)\n texture.rgb *= texture.a;", + "m_TextSize": 1, + "m_Theme": 0, + "m_Position": { + "serializedVersion": "2", + "x": -1144.0, + "y": 23.0, + "width": 1080.0, + "height": 499.8832092285156 + }, + "m_Group": { + "m_Id": "" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "36cedeec57ff465bac4282c237af14f0", + "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_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "37cb1ab9eace4a59b8aee182c37dde1d", + "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_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "3ca104e183d441e18505d765a037afa8", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "5da51d9f840a4ddc8b6541da6376ad65" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "3e5ee2b1bacc46f4a483ea61ef68c058", + "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_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BranchNode", + "m_ObjectId": "497e29be0ebf40e7991f43fc57bf1a3e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Branch", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -621.0, + "y": 219.00001525878907, + "width": 170.00003051757813, + "height": 141.9999542236328 + } + }, + "m_Slots": [ + { + "m_Id": "4ce5e80e11b94e948933751a627bc2cc" + }, + { + "m_Id": "751a372a8dea499b9f87f9059859f8e9" + }, + { + "m_Id": "f7e65ffb1dcd49cdbe10ba2e021a6e45" + }, + { + "m_Id": "7b23876812744b27b424d9c29c569f86" + } + ], + "synonyms": [ + "switch", + "if", + "else" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "4ce5e80e11b94e948933751a627bc2cc", + "m_Id": 0, + "m_DisplayName": "Predicate", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Predicate", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "4e9c19f167f743a2a7022781a02d70f9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -850.9999389648438, + "y": 252.0, + "width": 193.0, + "height": 33.999969482421878 + } + }, + "m_Slots": [ + { + "m_Id": "ac8fbb25895245e2ba09c61739da0e1a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "b8efffcdb161493ea29d9857dbdcee96" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "4f813a8c3d56482789a2bcbecd1b6fe0", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "5cc6d14de9cf4423b02705b90f845cf3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RenderTypeBranchNode", + "m_ObjectId": "532ba7da13274f1d9adcf8b9b5924c01", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Render Type Branch", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 61.000038146972659, + "y": 286.0, + "width": 193.0, + "height": 173.00006103515626 + } + }, + "m_Slots": [ + { + "m_Id": "f7083f60458d44b596d25a3e6401bd26" + }, + { + "m_Id": "ade3fc5a902749bd905185a4bb36f3f5" + }, + { + "m_Id": "c37711e96a764ea691ff2503bb672c50" + }, + { + "m_Id": "939d2ef0a2d7421d80a88fe6fec4452f" + }, + { + "m_Id": "8234cfac6a2f480da91e65ff5135bdd6" + }, + { + "m_Id": "5f0aff867e0a4da9a27746fbdbb3c37e" + }, + { + "m_Id": "08413eea3d654e509dd509f85012b8c6" + } + ], + "synonyms": [ + "toggle", + "uber" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "58192af92eff47ebae53fda06eb96d96", + "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_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "5cc6d14de9cf4423b02705b90f845cf3", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "5da51d9f840a4ddc8b6541da6376ad65", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [], + "m_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "5f0aff867e0a4da9a27746fbdbb3c37e", + "m_Id": 5, + "m_DisplayName": "Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Color", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "662fce56901046ce9b9d9f7b35f11ec2", + "m_Id": 1, + "m_DisplayName": "Tint", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tint", + "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_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "68e2a96b35b24fbe94187bf7941f3388", + "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_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "6f6b9bf9cf3c4aa2a13e9cd2476d54a8", + "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_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "751a372a8dea499b9f87f9059859f8e9", + "m_Id": 1, + "m_DisplayName": "True", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "True", + "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_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "775865f90de4425e89b1219e16b8b1b8", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -834.9999389648438, + "y": 342.0, + "width": 119.99993896484375, + "height": 149.0 + } + }, + "m_Slots": [ + { + "m_Id": "6f6b9bf9cf3c4aa2a13e9cd2476d54a8" + }, + { + "m_Id": "58192af92eff47ebae53fda06eb96d96" + }, + { + "m_Id": "1993d85a77c745ccaddd69314f966124" + }, + { + "m_Id": "37cb1ab9eace4a59b8aee182c37dde1d" + }, + { + "m_Id": "36cedeec57ff465bac4282c237af14f0" + } + ], + "synonyms": [ + "separate" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "7b23876812744b27b424d9c29c569f86", + "m_Id": 3, + "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_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "7d26e74e52fe44b98575e5694eeb88a3", + "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_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "8234cfac6a2f480da91e65ff5135bdd6", + "m_Id": 4, + "m_DisplayName": "Gradient", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Gradient", + "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_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", + "m_ObjectId": "8b2cdcd8838448798a39a38765437766", + "m_Id": 0, + "m_DisplayName": "Solid", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Solid", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalUISubTarget", + "m_ObjectId": "8f7f9a1d028e4fce8ac9fa38d1cc4fd0" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "921c30d183ab4862947ba4551265d5a8", + "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.DefaultVector4MaterialSlot", + "m_ObjectId": "939d2ef0a2d7421d80a88fe6fec4452f", + "m_Id": 3, + "m_DisplayName": "Bitmap Text", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Bitmap Text", + "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_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.UITK.ShaderGraph.UIData", + "m_ObjectId": "ab0855ef9bdb471a8eb85efbdfe3fb12", + "m_Version": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "ac8fbb25895245e2ba09c61739da0e1a", + "m_Id": 0, + "m_DisplayName": "Straight Alpha Texture", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "ade3fc5a902749bd905185a4bb36f3f5", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "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_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "b5a6010865274b6ba2016feb05e41448", + "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.Internal.BooleanShaderProperty", + "m_ObjectId": "b8efffcdb161493ea29d9857dbdcee96", + "m_Guid": { + "m_GuidSerialized": "5ddb173a-7e47-4892-9c17-2bb3693da035" + }, + "promotedFromAssetID": "", + "promotedFromCategoryName": "", + "promotedOrdering": -1, + "m_Name": "Straight Alpha Texture", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Straight Alpha Texture", + "m_DefaultReferenceName": "_Straight_Alpha_Texture", + "m_OverrideReferenceName": "_StraightAlphaTexture", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_PerRendererData": false, + "m_customAttributes": [], + "m_Value": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "bc433a99b2f54f87b0c864209323dbdf", + "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.DefaultVector2MaterialSlot", + "m_ObjectId": "be5459bf033c4291b925892b508968fc", + "m_Id": 0, + "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_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "c37711e96a764ea691ff2503bb672c50", + "m_Id": 2, + "m_DisplayName": "SDF Text", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "SDF Text", + "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_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.SwizzleNode", + "m_ObjectId": "c3b6fc22d71a49e49cdeae1847c155da", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Swizzle", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -715.0, + "y": 86.00001525878906, + "width": 132.0, + "height": 121.99996948242188 + } + }, + "m_Slots": [ + { + "m_Id": "3e5ee2b1bacc46f4a483ea61ef68c058" + }, + { + "m_Id": "921c30d183ab4862947ba4551265d5a8" + } + ], + "synonyms": [ + "swap", + "reorder", + "component mask" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "_maskInput": "xyz", + "convertedMask": "xyz" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "d7e31537adc443cc9e6bcdb02c8a3074", + "m_Datas": [ + { + "m_Id": "ab0855ef9bdb471a8eb85efbdfe3fb12" + } + ], + "m_ActiveSubTarget": { + "m_Id": "8f7f9a1d028e4fce8ac9fa38d1cc4fd0" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 0, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 1, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": true, + "m_ReceiveShadows": true, + "m_DisableTint": false, + "m_Sort3DAs2DCompatible": false, + "m_AdditionalMotionVectorMode": 0, + "m_AlembicMotionVectors": false, + "m_SupportsLODCrossFade": false, + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "d99b3fd6d1a849ea8b7ba160b4f11ece", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -401.9999694824219, + "y": 207.99998474121095, + "width": 129.99996948242188, + "height": 118.00001525878906 + } + }, + "m_Slots": [ + { + "m_Id": "bc433a99b2f54f87b0c864209323dbdf" + }, + { + "m_Id": "b5a6010865274b6ba2016feb05e41448" + }, + { + "m_Id": "07054ca48f7d4ab6ad2468c54e6083cf" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "dc4af3eafede4050b415df3f29270e07", + "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_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultSolidNode", + "m_ObjectId": "e5d4725ba3424f12a78b05bd317dacfe", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Default Solid", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -120.00006866455078, + "y": -35.99998092651367, + "width": 119.00006103515625, + "height": 76.99998474121094 + } + }, + "m_Slots": [ + { + "m_Id": "8b2cdcd8838448798a39a38765437766" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "f7083f60458d44b596d25a3e6401bd26", + "m_Id": 0, + "m_DisplayName": "Solid", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Solid", + "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_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "f7e65ffb1dcd49cdbe10ba2e021a6e45", + "m_Id": 2, + "m_DisplayName": "False", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "False", + "m_StageCapability": 3, + "m_Value": { + "x": 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_LiteralMode": false +} + diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Normal.shadergraph.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Normal.shadergraph.meta new file mode 100644 index 000000000..306b69b2d --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Normal.shadergraph.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: 1baeaee5c1b883a418362717b2ca2fb7 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} + useAsTemplate: 0 + exposeTemplateAsShader: 0 + template: + name: + category: + description: + icon: {instanceID: 0} + thumbnail: {instanceID: 0} diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Screen.shader b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Screen.shader new file mode 100644 index 000000000..9846f2962 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Screen.shader @@ -0,0 +1,439 @@ +Shader "Spine/UITK/Screen" +{ + Properties + { + [ToggleUI]_StraightAlphaTexture("Straight Alpha Texture", Float) = 1 + [HideInInspector][NoScaleOffset]unity_Lightmaps("unity_Lightmaps", 2DArray) = "" {} + [HideInInspector][NoScaleOffset]unity_LightmapsInd("unity_LightmapsInd", 2DArray) = "" {} + [HideInInspector][NoScaleOffset]unity_ShadowMasks("unity_ShadowMasks", 2DArray) = "" {} + } + SubShader + { + Tags + { + "RenderPipeline"="UniversalPipeline" + "RenderType"="Transparent" + "Queue"="Transparent" + // DisableBatching: + "ShaderGraphShader"="true" + "ShaderGraphTargetId"="" + "IgnoreProjector"="True" + "PreviewType"="Plane" + "CanUseSpriteAtlas"="True" + } + + Pass + { + Name "Default" + Tags + { + // LightMode: + } + + // Render State + Cull Off + Blend One OneMinusSrcColor + ZWrite Off + + // Debug + // + + // -------------------------------------------------- + // Pass + + HLSLPROGRAM + + // Pragmas + #pragma target 3.5 + #pragma vertex uie_custom_vert + #pragma fragment uie_custom_frag + + // Keywords + #pragma multi_compile_local _ _UIE_FORCE_GAMMA + #pragma multi_compile_local _ _UIE_TEXTURE_SLOT_COUNT_4 _UIE_TEXTURE_SLOT_COUNT_2 _UIE_TEXTURE_SLOT_COUNT_1 + #pragma multi_compile_local _ _UIE_RENDER_TYPE_SOLID _UIE_RENDER_TYPE_TEXTURE _UIE_RENDER_TYPE_TEXT _UIE_RENDER_TYPE_GRADIENT + // GraphKeywords: + + #define UITK_SHADERGRAPH + + // Defines + #define _SURFACE_TYPE_TRANSPARENT 1 + #define _ALPHAPREMULTIPLY_ON 1 + #define ATTRIBUTES_NEED_TEXCOORD0 + #define ATTRIBUTES_NEED_TEXCOORD1 + #define ATTRIBUTES_NEED_TEXCOORD2 + #define ATTRIBUTES_NEED_TEXCOORD3 + #define ATTRIBUTES_NEED_COLOR + #define VARYINGS_NEED_TEXCOORD0 + #define VARYINGS_NEED_TEXCOORD1 + #define VARYINGS_NEED_TEXCOORD3 + #define VARYINGS_NEED_COLOR + #define FEATURES_GRAPH_VERTEX + + #define REQUIRE_DEPTH_TEXTURE + #define REQUIRE_NORMAL_TEXTURE + + #define SHADERPASS SHADERPASS_CUSTOM_UI + + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/UnityInstancing.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl" + #include "Packages/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/ShaderLibrary/Shim/UIShim.hlsl" + + // -------------------------------------------------- + // Structs and Packing + + + struct Attributes + { + float3 positionOS : POSITION; + float4 color : COLOR; + float4 uv0 : TEXCOORD0; + float4 uv1 : TEXCOORD1; + float4 uv2 : TEXCOORD2; + float4 uv3 : TEXCOORD3; + float4 uv4 : TEXCOORD4; + float4 uv5 : TEXCOORD5; + float4 uv6 : TEXCOORD6; + float4 uv7 : TEXCOORD7; + #if UNITY_ANY_INSTANCING_ENABLED || defined(ATTRIBUTES_NEED_INSTANCEID) + uint instanceID : INSTANCEID_SEMANTIC; + #endif + }; + struct SurfaceDescriptionInputs + { + float4 color; + float4 typeTexSettings; + float2 textCoreLoc; + float4 circle; + float4 uvClip; + float2 layoutUV; + }; + struct Varyings + { + float4 positionCS : SV_POSITION; + float4 texCoord0; + float4 texCoord1; + float4 texCoord3; + float4 texCoord4; + float4 color; + #if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID) + uint instanceID : CUSTOM_INSTANCE_ID; + #endif + #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE))) + uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0; + #endif + #if (defined(UNITY_STEREO_INSTANCING_ENABLED)) + uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex; + #endif + }; + struct VertexDescriptionInputs + { + float4 vertexPosition; + float4 vertexColor; + float4 uv; + float4 xformClipPages; + float4 ids; + float4 flags; + float4 opacityColorPages; + float4 settingIndex; + float4 circle; + }; + struct PackedVaryings + { + float4 positionCS : SV_POSITION; + float4 texCoord0 : INTERP0; + float4 texCoord1 : INTERP1; + float4 texCoord3 : INTERP2; + float4 texCoord4 : INTERP3; + float4 color : INTERP4; + #if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID) + uint instanceID : CUSTOM_INSTANCE_ID; + #endif + #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE))) + uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0; + #endif + #if (defined(UNITY_STEREO_INSTANCING_ENABLED)) + uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex; + #endif + }; + + PackedVaryings PackVaryings (Varyings input) + { + PackedVaryings output; + ZERO_INITIALIZE(PackedVaryings, output); + output.positionCS = input.positionCS; + output.texCoord0.xyzw = input.texCoord0; + output.texCoord1.xyzw = input.texCoord1; + output.texCoord3.xyzw = input.texCoord3; + output.texCoord4.xyzw = input.texCoord4; + output.color.xyzw = input.color; + #if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID) + output.instanceID = input.instanceID; + #endif + #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE))) + output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0; + #endif + #if (defined(UNITY_STEREO_INSTANCING_ENABLED)) + output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx; + #endif + return output; + } + + Varyings UnpackVaryings (PackedVaryings input) + { + Varyings output; + output.positionCS = input.positionCS; + output.texCoord0 = input.texCoord0.xyzw; + output.texCoord1 = input.texCoord1.xyzw; + output.texCoord3 = input.texCoord3.xyzw; + output.texCoord4 = input.texCoord4.xyzw; + output.color = input.color.xyzw; + #if UNITY_ANY_INSTANCING_ENABLED || defined(VARYINGS_NEED_INSTANCEID) + output.instanceID = input.instanceID; + #endif + #if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) && (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE))) + output.stereoTargetEyeIndexAsBlendIdx0 = input.stereoTargetEyeIndexAsBlendIdx0; + #endif + #if (defined(UNITY_STEREO_INSTANCING_ENABLED)) + output.stereoTargetEyeIndexAsRTArrayIdx = input.stereoTargetEyeIndexAsRTArrayIdx; + #endif + return output; + } + + + // -- Property used by ScenePickingPass + #ifdef SCENEPICKINGPASS + float4 _SelectionID; + #endif + + // -- Properties used by SceneSelectionPass + #ifdef SCENESELECTIONPASS + int _ObjectId; + int _PassValue; + #endif + + //UGUI has no keyword for when a renderer has "bloom", so its nessecary to hardcore it here, like all the base UI shaders. + half4 _TextureSampleAdd; + + // -------------------------------------------------- + // Graph + + // Graph Properties + CBUFFER_START(UnityPerMaterial) + float _StraightAlphaTexture; + UNITY_TEXTURE_STREAMING_DEBUG_VARS; + CBUFFER_END + + + // Object and Global properties + + // Graph Includes + // GraphIncludes: + + // Graph Functions + + void Unity_Branch_float(float Predicate, float True, float False, out float Out) + { + Out = Predicate ? True : False; + } + + void Unity_Multiply_float3_float3(float3 A, float3 B, out float3 Out) + { + Out = A * B; + } + + /* WARNING: $splice Could not find named fragment 'CustomInterpolatorPreVertex' */ + + // Graph Vertex + struct VertexDescription + { + }; + + VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN) + { + VertexDescription description = (VertexDescription)0; + return description; + } + + /* WARNING: $splice Could not find named fragment 'CustomInterpolatorPreSurface' */ + + // Graph Pixel + struct SurfaceDescription + { + float3 BaseColor; + float Alpha; + }; + + SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN) + { + SurfaceDescription surface = (SurfaceDescription)0; + float4 _DefaultSolid_e5d4725ba3424f12a78b05bd317dacfe_Solid_0_Vector4 = float4(1, 1, 0, 1); + [branch] if (_UIE_RENDER_TYPE_SOLID || _UIE_RENDER_TYPE_ANY && round(IN.typeTexSettings.x) == k_FragTypeSolid) + { + SolidFragInput Unity_UIE_EvaluateSolidNode_Input; + Unity_UIE_EvaluateSolidNode_Input.tint = IN.color; + Unity_UIE_EvaluateSolidNode_Input.isArc = false; + Unity_UIE_EvaluateSolidNode_Input.outer = float2(-10000, -10000); + Unity_UIE_EvaluateSolidNode_Input.inner = float2(-10000, -10000); + CommonFragOutput Unity_UIE_EvaluateSolidNode_Output = uie_std_frag_solid(Unity_UIE_EvaluateSolidNode_Input); + _DefaultSolid_e5d4725ba3424f12a78b05bd317dacfe_Solid_0_Vector4 = Unity_UIE_EvaluateSolidNode_Output.color; + } + float4 _DefaultTexture_0ff00ac4ba3f46138bd69732235d2fb4_Texture_2_Vector4 = float4(1, 1, 0, 1); + [branch] if (_UIE_RENDER_TYPE_TEXTURE || _UIE_RENDER_TYPE_ANY && round(IN.typeTexSettings.x) == k_FragTypeTexture) + { + TextureFragInput Unity_UIE_EvaluateTextureNode_Input; + Unity_UIE_EvaluateTextureNode_Input.tint = IN.color; + Unity_UIE_EvaluateTextureNode_Input.textureSlot = IN.typeTexSettings.y; + Unity_UIE_EvaluateTextureNode_Input.uv = IN.uvClip.xy; + Unity_UIE_EvaluateTextureNode_Input.isArc = false; + Unity_UIE_EvaluateTextureNode_Input.outer = float2(-10000, -10000); + Unity_UIE_EvaluateTextureNode_Input.inner = float2(-10000, -10000); + CommonFragOutput Unity_UIE_EvaluateTextureNode_Output = uie_std_frag_texture(Unity_UIE_EvaluateTextureNode_Input); + _DefaultTexture_0ff00ac4ba3f46138bd69732235d2fb4_Texture_2_Vector4 = Unity_UIE_EvaluateTextureNode_Output.color; + } + float3 _Swizzle_c3b6fc22d71a49e49cdeae1847c155da_Out_1_Vector3 = _DefaultTexture_0ff00ac4ba3f46138bd69732235d2fb4_Texture_2_Vector4.xyz; + float _Property_4e9c19f167f743a2a7022781a02d70f9_Out_0_Boolean = _StraightAlphaTexture; + float _Split_775865f90de4425e89b1219e16b8b1b8_R_1_Float = _DefaultTexture_0ff00ac4ba3f46138bd69732235d2fb4_Texture_2_Vector4[0]; + float _Split_775865f90de4425e89b1219e16b8b1b8_G_2_Float = _DefaultTexture_0ff00ac4ba3f46138bd69732235d2fb4_Texture_2_Vector4[1]; + float _Split_775865f90de4425e89b1219e16b8b1b8_B_3_Float = _DefaultTexture_0ff00ac4ba3f46138bd69732235d2fb4_Texture_2_Vector4[2]; + float _Split_775865f90de4425e89b1219e16b8b1b8_A_4_Float = _DefaultTexture_0ff00ac4ba3f46138bd69732235d2fb4_Texture_2_Vector4[3]; + float _Branch_497e29be0ebf40e7991f43fc57bf1a3e_Out_3_Float; + Unity_Branch_float(_Property_4e9c19f167f743a2a7022781a02d70f9_Out_0_Boolean, _Split_775865f90de4425e89b1219e16b8b1b8_A_4_Float, float(1), _Branch_497e29be0ebf40e7991f43fc57bf1a3e_Out_3_Float); + float3 _Multiply_d99b3fd6d1a849ea8b7ba160b4f11ece_Out_2_Vector3; + Unity_Multiply_float3_float3(_Swizzle_c3b6fc22d71a49e49cdeae1847c155da_Out_1_Vector3, (_Branch_497e29be0ebf40e7991f43fc57bf1a3e_Out_3_Float.xxx), _Multiply_d99b3fd6d1a849ea8b7ba160b4f11ece_Out_2_Vector3); + float4 _Append_1a863cc20632474aa4fef9f0995dc8c9_Out_2_Vector4 = float4( _Multiply_d99b3fd6d1a849ea8b7ba160b4f11ece_Out_2_Vector3.xyz, _Split_775865f90de4425e89b1219e16b8b1b8_A_4_Float.x ); + float3 _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Color_5_Vector3 = float3(0, 0, 0); + float _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Alpha_6_Float = 1.0; + [branch] if (_UIE_RENDER_TYPE_SOLID || _UIE_RENDER_TYPE_ANY && TestType(IN.typeTexSettings.x, k_FragTypeSolid)) + { + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Color_5_Vector3 = _DefaultSolid_e5d4725ba3424f12a78b05bd317dacfe_Solid_0_Vector4.rgb; + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Alpha_6_Float = _DefaultSolid_e5d4725ba3424f12a78b05bd317dacfe_Solid_0_Vector4.a; + } + else [branch] if (_UIE_RENDER_TYPE_TEXTURE || _UIE_RENDER_TYPE_ANY && TestType(IN.typeTexSettings.x, k_FragTypeTexture)) + { + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Color_5_Vector3 = _Append_1a863cc20632474aa4fef9f0995dc8c9_Out_2_Vector4.rgb; + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Alpha_6_Float = _Append_1a863cc20632474aa4fef9f0995dc8c9_Out_2_Vector4.a; + } + else [branch] if ((_UIE_RENDER_TYPE_TEXT || _UIE_RENDER_TYPE_ANY) && TestType(IN.typeTexSettings.x, k_FragTypeText)) + { + [branch] if (GetTextureInfo(IN.typeTexSettings.y).sdfScale > 0.0) + { + SdfTextFragInput Unity_UIE_RenderTypeSwitchNode_SdfText_Input; + Unity_UIE_RenderTypeSwitchNode_SdfText_Input.tint = IN.color; + Unity_UIE_RenderTypeSwitchNode_SdfText_Input.textureSlot = IN.typeTexSettings.y; + Unity_UIE_RenderTypeSwitchNode_SdfText_Input.uv = IN.uvClip.xy; + Unity_UIE_RenderTypeSwitchNode_SdfText_Input.extraDilate = IN.circle.x; + Unity_UIE_RenderTypeSwitchNode_SdfText_Input.textCoreLoc = round(IN.textCoreLoc); + Unity_UIE_RenderTypeSwitchNode_SdfText_Input.opacity = IN.typeTexSettings.z; + CommonFragOutput Unity_UIE_RenderTypeSwitchNode_Output = uie_std_frag_sdf_text(Unity_UIE_RenderTypeSwitchNode_SdfText_Input); + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Color_5_Vector3 = Unity_UIE_RenderTypeSwitchNode_Output.color.rgb; + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Alpha_6_Float = Unity_UIE_RenderTypeSwitchNode_Output.color.a; + } + else + { + BitmapTextFragInput Unity_UIE_RenderTypeSwitchNode_BitmapText_Input; + Unity_UIE_RenderTypeSwitchNode_BitmapText_Input.tint = IN.color; + Unity_UIE_RenderTypeSwitchNode_BitmapText_Input.textureSlot = IN.typeTexSettings.y; + Unity_UIE_RenderTypeSwitchNode_BitmapText_Input.uv = IN.uvClip.xy; + Unity_UIE_RenderTypeSwitchNode_BitmapText_Input.opacity = IN.typeTexSettings.z; + CommonFragOutput Unity_UIE_RenderTypeSwitchNode_Output = uie_std_frag_bitmap_text(Unity_UIE_RenderTypeSwitchNode_BitmapText_Input); + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Color_5_Vector3 = Unity_UIE_RenderTypeSwitchNode_Output.color.rgb; + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Alpha_6_Float = Unity_UIE_RenderTypeSwitchNode_Output.color.a; + } + } + else + { + SvgGradientFragInput Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input; + Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input.settingIndex = round(IN.typeTexSettings.z); + Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input.textureSlot = round(IN.typeTexSettings.y); + Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input.uv = IN.uvClip.xy; + Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input.isArc = false; + Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input.outer = float2(-10000, -10000); + Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input.inner = float2(-10000, -10000); + CommonFragOutput Unity_UIE_RenderTypeSwitchNode_Output = uie_std_frag_svg_gradient(Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input); + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Color_5_Vector3 = Unity_UIE_RenderTypeSwitchNode_Output.color.rgb * IN.color.rgb; + _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Alpha_6_Float = Unity_UIE_RenderTypeSwitchNode_Output.color.a * IN.color.a; + } + surface.BaseColor = _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Color_5_Vector3; + surface.Alpha = _RenderTypeBranch_532ba7da13274f1d9adcf8b9b5924c01_Alpha_6_Float; + return surface; + } + + // -------------------------------------------------- + // Build Graph Inputs + + VertexDescriptionInputs BuildVertexDescriptionInputs(Attributes input) + { + VertexDescriptionInputs output; + ZERO_INITIALIZE(VertexDescriptionInputs, output); + + #if UNITY_ANY_INSTANCING_ENABLED + #else // TODO: XR support for procedural instancing because in this case UNITY_ANY_INSTANCING_ENABLED is not defined and instanceID is incorrect. + #endif + + return output; + } + SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input) + { + SurfaceDescriptionInputs output; + ZERO_INITIALIZE(SurfaceDescriptionInputs, output); + + /* WARNING: $splice Could not find named fragment 'CustomInterpolatorCopyToSDI' */ + + + + + + + #if UNITY_UV_STARTS_AT_TOP + #else + #endif + + + + #if defined(UNITY_UIE_INCLUDED) + #else + #endif + + + output.color = input.color; + output.uvClip = input.texCoord0; + output.typeTexSettings = input.texCoord1; + output.textCoreLoc = input.texCoord3.xy; + output.layoutUV = input.texCoord3.zw; + + output.circle = input.texCoord4; + + #if UNITY_ANY_INSTANCING_ENABLED + #else // TODO: XR support for procedural instancing because in this case UNITY_ANY_INSTANCING_ENABLED is not defined and instanceID is incorrect. + #endif + #if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE) + #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign = IS_FRONT_VFACE(input.cullFace, true, false); + #else + #define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN + #endif + #undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN + + return output; + } + + // -------------------------------------------------- + // Main + + #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/UITKPass.hlsl" + + ENDHLSL + } + } + CustomEditor "UnityEditor.ShaderGraph.GenericShaderGraphMaterialGUI" + FallBack off +} diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Screen.shader.meta b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Screen.shader.meta new file mode 100644 index 000000000..09f9eff75 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/Shaders/Spine-UITK-Screen.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b0198c7d0f7c55c4992b84a4c94afaac +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/package.json b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/package.json index 360b86043..973fe560d 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/package.json +++ b/spine-unity/Modules/com.esotericsoftware.spine.ui-toolkit/package.json @@ -1,9 +1,9 @@ { "name": "com.esotericsoftware.spine.ui-toolkit", "displayName": "Spine UI Toolkit [Experimental]", - "description": "This plugin provides UI Toolkit integration for the spine-unity runtime.\n\nPrerequisites:\nIt requires a working installation of the spine-unity runtime, version 4.3.0 or newer and Unity 6000.0.16 or newer (requires [this bugfix](https://issuetracker.unity3d.com/issues/some-default-uxmlconverters-are-dependent-on-the-current-culture)).\n(See http://esotericsoftware.com/git/spine-runtimes/spine-unity)", - "version": "4.3.0-preview.4", - "unity": "6000.0", + "description": "This plugin provides UI Toolkit integration for the spine-unity runtime.\n\nPrerequisites:\nIt requires a working installation of the spine-unity runtime, version 4.3.42 or newer and Unity 6000.3 or newer (requires [this bugfix](https://issuetracker.unity3d.com/issues/some-default-uxmlconverters-are-dependent-on-the-current-culture)).\n(See http://esotericsoftware.com/git/spine-runtimes/spine-unity)", + "version": "4.3.0-preview.5", + "unity": "6000.3", "author": { "name": "Esoteric Software", "email": "contact@esotericsoftware.com", @@ -11,7 +11,7 @@ }, "dependencies": { "com.unity.modules.uielements": "1.0.0", - "com.esotericsoftware.spine.spine-unity": "4.3.41" + "com.esotericsoftware.spine.spine-unity": "4.3.42" }, "keywords": [ "spine",