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",