From ece6530b0cc31dd46a7e4706c79f1a4c13fe4cda Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Wed, 16 Feb 2022 19:51:02 +0100 Subject: [PATCH 1/7] [unity] Fixed exception at prefab baking. Closes #2034. --- .../Editor/Windows/SkeletonBaker.cs | 29 ++++++------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Windows/SkeletonBaker.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Windows/SkeletonBaker.cs index c2e1469ab..339e7d599 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Windows/SkeletonBaker.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Windows/SkeletonBaker.cs @@ -808,20 +808,11 @@ namespace Spine.Unity.Editor { return clip; } - static int BinarySearch (float[] values, float target) { - int low = 0; - int high = values.Length - 2; - if (high == 0) return 1; - int current = (int)((uint)high >> 1); - while (true) { - if (values[(current + 1)] <= target) - low = current + 1; - else - high = current; - - if (low == high) return (low + 1); - current = (int)((uint)(low + high) >> 1); - } + internal static int Search (float[] frames, float time) { + int n = frames.Length; + for (int i = 1; i < n; i++) + if (frames[i] > time) return i - 1; + return n - 1; } static void BakeBoneConstraints (Bone bone, Spine.Animation animation, AnimationClip clip) { @@ -977,8 +968,7 @@ namespace Spine.Unity.Editor { lastTime = time; listIndex++; - } else if (curveType == 2) { - + } else { //bezier Keyframe px = xKeys[pIndex]; Keyframe py = yKeys[pIndex]; @@ -1058,7 +1048,6 @@ namespace Spine.Unity.Editor { while (currentTime < endTime) { int pIndex = listIndex - 1; float curveType = timeline.GetCurveType(frameIndex - 1); - if (curveType == 0) { //linear Keyframe px = xKeys[pIndex]; @@ -1113,7 +1102,7 @@ namespace Spine.Unity.Editor { lastTime = time; listIndex++; - } else if (curveType == 2) { + } else { //bezier Keyframe px = xKeys[pIndex]; Keyframe py = yKeys[pIndex]; @@ -1240,7 +1229,7 @@ namespace Spine.Unity.Editor { lastTime = time; listIndex++; - } else if (curveType == 2) { + } else { //bezier Keyframe pk = keys[pIndex]; @@ -1365,7 +1354,7 @@ namespace Spine.Unity.Editor { while (currentTime < endTime) { float time = frames[f]; - int frameIndex = (time >= frames[frames.Length - 1] ? frames.Length : BinarySearch(frames, time)) - 1; + int frameIndex = Search(frames, time); string name = timeline.AttachmentNames[frameIndex]; foreach (var pair in curveTable) { From dcb593489b4bed04c6b9fc55b4aa58d372b0551a Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Tue, 15 Feb 2022 14:52:29 +0100 Subject: [PATCH 2/7] [unity] Unity SpriteAtlas Support: Removed unnecessary material reference to generated editor atlas texture in pre-build step. See #1900. --- .../Editor/Utility/SpineBuildProcessor.cs | 64 +++++++++++++++---- 1 file changed, 52 insertions(+), 12 deletions(-) diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineBuildProcessor.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineBuildProcessor.cs index 66ed31e9e..611cb993b 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineBuildProcessor.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineBuildProcessor.cs @@ -51,31 +51,73 @@ namespace Spine.Unity.Editor { #if HAS_ON_POSTPROCESS_PREFAB static List prefabsToRestore = new List(); #endif + static Dictionary spriteAtlasTexturesToRestore = new Dictionary(); internal static void PreprocessBuild () { isBuilding = true; #if HAS_ON_POSTPROCESS_PREFAB - var assets = AssetDatabase.FindAssets("t:Prefab"); - foreach(var asset in assets) { + PreprocessSpinePrefabMeshes(); +#endif + PreprocessSpriteAtlases(); + } + + internal static void PostprocessBuild () { + isBuilding = false; +#if HAS_ON_POSTPROCESS_PREFAB + PostprocessSpinePrefabMeshes(); +#endif + PostprocessSpriteAtlases(); + } + +#if HAS_ON_POSTPROCESS_PREFAB + internal static void PreprocessSpinePrefabMeshes () { + var prefabAssets = AssetDatabase.FindAssets("t:Prefab"); + foreach (var asset in prefabAssets) { string assetPath = AssetDatabase.GUIDToAssetPath(asset); GameObject g = AssetDatabase.LoadAssetAtPath(assetPath); if (SpineEditorUtilities.CleanupSpinePrefabMesh(g)) { prefabsToRestore.Add(assetPath); } } - AssetDatabase.SaveAssets(); -#endif + if (prefabAssets.Length > 0) + AssetDatabase.SaveAssets(); } - internal static void PostprocessBuild () { - isBuilding = false; -#if HAS_ON_POSTPROCESS_PREFAB + internal static void PostprocessSpinePrefabMeshes () { foreach (string assetPath in prefabsToRestore) { GameObject g = AssetDatabase.LoadAssetAtPath(assetPath); SpineEditorUtilities.SetupSpinePrefabMesh(g, null); } - AssetDatabase.SaveAssets(); + if (prefabsToRestore.Count > 0) + AssetDatabase.SaveAssets(); + prefabsToRestore.Clear(); + } #endif + internal static void PreprocessSpriteAtlases () { + var spriteAtlasAssets = AssetDatabase.FindAssets("t:SpineSpriteAtlasAsset"); + foreach (var asset in spriteAtlasAssets) { + string assetPath = AssetDatabase.GUIDToAssetPath(asset); + SpineSpriteAtlasAsset atlasAsset = AssetDatabase.LoadAssetAtPath(assetPath); + if (atlasAsset && atlasAsset.materials.Length > 0) { + spriteAtlasTexturesToRestore[assetPath] = atlasAsset.materials[0].mainTexture; + atlasAsset.materials[0].mainTexture = null; + } + } + if (spriteAtlasAssets.Length > 0) + AssetDatabase.SaveAssets(); + } + + internal static void PostprocessSpriteAtlases () { + foreach (var pair in spriteAtlasTexturesToRestore) { + string assetPath = pair.Key; + SpineSpriteAtlasAsset atlasAsset = AssetDatabase.LoadAssetAtPath(assetPath); + if (atlasAsset && atlasAsset.materials.Length > 0) { + atlasAsset.materials[0].mainTexture = pair.Value; + } + } + if (spriteAtlasTexturesToRestore.Count > 0) + AssetDatabase.SaveAssets(); + spriteAtlasTexturesToRestore.Clear(); } } @@ -90,8 +132,7 @@ namespace Spine.Unity.Editor { get { return -2000; } } #if HAS_BUILD_PROCESS_WITH_REPORT - void IPreprocessBuildWithReport.OnPreprocessBuild(BuildReport report) - { + void IPreprocessBuildWithReport.OnPreprocessBuild (BuildReport report) { SpineBuildProcessor.PreprocessBuild(); } #else @@ -114,8 +155,7 @@ namespace Spine.Unity.Editor { #if HAS_BUILD_PROCESS_WITH_REPORT - void IPostprocessBuildWithReport.OnPostprocessBuild(BuildReport report) - { + void IPostprocessBuildWithReport.OnPostprocessBuild (BuildReport report) { SpineBuildProcessor.PostprocessBuild(); } #else From 689daa147ae0da9d3d38e87735875d1d236ad36d Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Mon, 21 Feb 2022 18:26:30 +0100 Subject: [PATCH 3/7] [unity] Minor: example script documentation improved (CustomMaterialOverride). --- .../Spine Examples/Scripts/MaterialReplacementExample.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/spine-unity/Assets/Spine Examples/Scripts/MaterialReplacementExample.cs b/spine-unity/Assets/Spine Examples/Scripts/MaterialReplacementExample.cs index df409c61b..16b854d6b 100644 --- a/spine-unity/Assets/Spine Examples/Scripts/MaterialReplacementExample.cs +++ b/spine-unity/Assets/Spine Examples/Scripts/MaterialReplacementExample.cs @@ -47,6 +47,13 @@ namespace Spine.Unity.Examples { MaterialPropertyBlock mpb; void Start () { + // Use the code below to programmatically query the original material. + // Note: using MeshRenderer.material will fail since it creates an instance copy of the Material, + // MeshRenderer.sharedMaterial might also fail when called too early or when no Attachments + // are visible in the initial first frame. + if (originalMaterial == null) + originalMaterial = skeletonAnimation.SkeletonDataAsset.atlasAssets[0].PrimaryMaterial; + previousEnabled = replacementEnabled; SetReplacementEnabled(replacementEnabled); mpb = new MaterialPropertyBlock(); From 299ab8fff8715f49721e4ae6df7b0be8b7e00f06 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Thu, 24 Feb 2022 21:34:05 +0100 Subject: [PATCH 4/7] [unity] Improved memory utilization during build pre- and post processing. --- .../Editor/Utility/SpineBuildProcessor.cs | 20 ++++++++++++++----- .../Editor/Utility/SpineEditorUtilities.cs | 8 +++----- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineBuildProcessor.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineBuildProcessor.cs index 611cb993b..a7161872a 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineBuildProcessor.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineBuildProcessor.cs @@ -51,7 +51,7 @@ namespace Spine.Unity.Editor { #if HAS_ON_POSTPROCESS_PREFAB static List prefabsToRestore = new List(); #endif - static Dictionary spriteAtlasTexturesToRestore = new Dictionary(); + static Dictionary spriteAtlasTexturesToRestore = new Dictionary(); internal static void PreprocessBuild () { isBuilding = true; @@ -71,19 +71,24 @@ namespace Spine.Unity.Editor { #if HAS_ON_POSTPROCESS_PREFAB internal static void PreprocessSpinePrefabMeshes () { + AssetDatabase.StartAssetEditing(); + prefabsToRestore.Clear(); var prefabAssets = AssetDatabase.FindAssets("t:Prefab"); foreach (var asset in prefabAssets) { string assetPath = AssetDatabase.GUIDToAssetPath(asset); - GameObject g = AssetDatabase.LoadAssetAtPath(assetPath); - if (SpineEditorUtilities.CleanupSpinePrefabMesh(g)) { + GameObject prefabGameObject = AssetDatabase.LoadAssetAtPath(assetPath); + if (SpineEditorUtilities.CleanupSpinePrefabMesh(prefabGameObject)) { prefabsToRestore.Add(assetPath); } + EditorUtility.UnloadUnusedAssetsImmediate(); } + AssetDatabase.StopAssetEditing(); if (prefabAssets.Length > 0) AssetDatabase.SaveAssets(); } internal static void PostprocessSpinePrefabMeshes () { + Debug.Log("PostprocessSpinePrefabMeshes called"); foreach (string assetPath in prefabsToRestore) { GameObject g = AssetDatabase.LoadAssetAtPath(assetPath); SpineEditorUtilities.SetupSpinePrefabMesh(g, null); @@ -94,15 +99,19 @@ namespace Spine.Unity.Editor { } #endif internal static void PreprocessSpriteAtlases () { + AssetDatabase.StartAssetEditing(); + spriteAtlasTexturesToRestore.Clear(); var spriteAtlasAssets = AssetDatabase.FindAssets("t:SpineSpriteAtlasAsset"); foreach (var asset in spriteAtlasAssets) { string assetPath = AssetDatabase.GUIDToAssetPath(asset); SpineSpriteAtlasAsset atlasAsset = AssetDatabase.LoadAssetAtPath(assetPath); if (atlasAsset && atlasAsset.materials.Length > 0) { - spriteAtlasTexturesToRestore[assetPath] = atlasAsset.materials[0].mainTexture; + spriteAtlasTexturesToRestore[assetPath] = AssetDatabase.GetAssetPath(atlasAsset.materials[0].mainTexture); atlasAsset.materials[0].mainTexture = null; } + EditorUtility.UnloadUnusedAssetsImmediate(); } + AssetDatabase.StopAssetEditing(); if (spriteAtlasAssets.Length > 0) AssetDatabase.SaveAssets(); } @@ -112,7 +121,8 @@ namespace Spine.Unity.Editor { string assetPath = pair.Key; SpineSpriteAtlasAsset atlasAsset = AssetDatabase.LoadAssetAtPath(assetPath); if (atlasAsset && atlasAsset.materials.Length > 0) { - atlasAsset.materials[0].mainTexture = pair.Value; + Texture atlasTexture = AssetDatabase.LoadAssetAtPath(pair.Value); + atlasAsset.materials[0].mainTexture = atlasTexture; } } if (spriteAtlasTexturesToRestore.Count > 0) diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineEditorUtilities.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineEditorUtilities.cs index 55fb9331b..d8ebdbf21 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineEditorUtilities.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineEditorUtilities.cs @@ -108,8 +108,7 @@ namespace Spine.Unity.Editor { SetupSpinePrefabMesh(g, context); } - public static bool SetupSpinePrefabMesh(GameObject g, UnityEditor.AssetImporters.AssetImportContext context) - { + public static bool SetupSpinePrefabMesh (GameObject g, UnityEditor.AssetImporters.AssetImportContext context) { Dictionary nameUsageCount = new Dictionary(); bool wasModified = false; var skeletonRenderers = g.GetComponentsInChildren(true); @@ -124,7 +123,7 @@ namespace Spine.Unity.Editor { renderer.LateUpdateMesh(); var mesh = meshFilter.sharedMesh; if (mesh == null) continue; - + string meshName = string.Format("Skeleton Prefab Mesh \"{0}\"", renderer.name); if (nameUsageCount.ContainsKey(meshName)) { nameUsageCount[meshName]++; @@ -140,8 +139,7 @@ namespace Spine.Unity.Editor { return wasModified; } - public static bool CleanupSpinePrefabMesh(GameObject g) - { + public static bool CleanupSpinePrefabMesh (GameObject g) { bool wasModified = false; var skeletonRenderers = g.GetComponentsInChildren(true); foreach (SkeletonRenderer renderer in skeletonRenderers) { From 6a3fb6a42ac920b1c4506e23ed7f2058f3a57203 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Mon, 28 Feb 2022 16:14:44 +0100 Subject: [PATCH 5/7] [unity] Added warnings when Spine Preferences - Texture Atlas Settings PMA and blend mode materials PMA do not match. Added straight alpha blend modes material templates. --- .../Editor/Windows/SpinePreferences.cs | 28 ++++++++++-- .../SkeletonStraightAdditive.mat | 35 +++++++++++++++ .../SkeletonStraightAdditive.mat.meta | 8 ++++ .../SkeletonStraightMultiply.mat | 43 +++++++++++++++++++ .../SkeletonStraightMultiply.mat.meta | 8 ++++ .../SkeletonStraightScreen.mat | 43 +++++++++++++++++++ .../SkeletonStraightScreen.mat.meta | 8 ++++ 7 files changed, 170 insertions(+), 3 deletions(-) create mode 100644 spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightAdditive.mat create mode 100644 spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightAdditive.mat.meta create mode 100644 spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightMultiply.mat create mode 100644 spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightMultiply.mat.meta create mode 100644 spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightScreen.mat create mode 100644 spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightScreen.mat.meta diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Windows/SpinePreferences.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Windows/SpinePreferences.cs index 5683e5398..ccb55cbce 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Windows/SpinePreferences.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Windows/SpinePreferences.cs @@ -216,6 +216,24 @@ namespace Spine.Unity.Editor { return null; } + private static void ShowBlendModeMaterialProperty (SerializedProperty blendModeMaterialProperty, + string blendType, bool isTexturePresetPMA) { + + EditorGUILayout.PropertyField(blendModeMaterialProperty, new GUIContent(blendType + " Material", blendType + " blend mode Material template.")); + var material = blendModeMaterialProperty.objectReferenceValue as Material; + if (material == null) + return; + + bool isMaterialPMA = MaterialChecks.IsPMATextureMaterial(material); + if (!isTexturePresetPMA && isMaterialPMA) { + EditorGUILayout.HelpBox(string.Format("'{0} Material' uses PMA but 'Atlas Texture Settings' uses Straight Alpha. " + + "You might want to assign 'SkeletonStraight{0}' instead.", blendType), MessageType.Warning); + } else if (isTexturePresetPMA && !isMaterialPMA) { + EditorGUILayout.HelpBox(string.Format("'{0} Material' uses Straight Alpha but 'Atlas Texture Settings' uses PMA. " + + "You might want to assign 'SkeletonPMA{0}' instead.", blendType), MessageType.Warning); + } + } + public static void HandlePreferencesGUI (SerializedObject settings) { float prevLabelWidth = EditorGUIUtility.labelWidth; @@ -254,9 +272,13 @@ namespace Spine.Unity.Editor { } } - EditorGUILayout.PropertyField(settings.FindProperty("blendModeMaterialAdditive"), new GUIContent("Additive Material", "Additive blend mode Material template.")); - EditorGUILayout.PropertyField(settings.FindProperty("blendModeMaterialMultiply"), new GUIContent("Multiply Material", "Multiply blend mode Material template.")); - EditorGUILayout.PropertyField(settings.FindProperty("blendModeMaterialScreen"), new GUIContent("Screen Material", "Screen blend mode Material template.")); + SerializedProperty blendModeMaterialAdditive = settings.FindProperty("blendModeMaterialAdditive"); + SerializedProperty blendModeMaterialMultiply = settings.FindProperty("blendModeMaterialMultiply"); + SerializedProperty blendModeMaterialScreen = settings.FindProperty("blendModeMaterialScreen"); + bool isTexturePresetPMA = IsPMAWorkflow(textureSettingsRef.stringValue); + ShowBlendModeMaterialProperty(blendModeMaterialAdditive, "Additive", isTexturePresetPMA); + ShowBlendModeMaterialProperty(blendModeMaterialMultiply, "Multiply", isTexturePresetPMA); + ShowBlendModeMaterialProperty(blendModeMaterialScreen, "Screen", isTexturePresetPMA); } EditorGUILayout.Space(); diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightAdditive.mat b/spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightAdditive.mat new file mode 100644 index 000000000..f40488ba7 --- /dev/null +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightAdditive.mat @@ -0,0 +1,35 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: SkeletonPMAAdditive + m_Shader: {fileID: 4800000, guid: 53efa1d97f5d9f74285d4330cda14e36, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + 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: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - : 0 + - _Cutoff: 0.1 + - _StraightAlphaInput: 0 + m_Colors: + - : {r: 0, g: 2.018574, b: 1e-45, a: 0.000007110106} + - _Color: {r: 1, g: 1, b: 1, a: 1} diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightAdditive.mat.meta b/spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightAdditive.mat.meta new file mode 100644 index 000000000..aa2e180ab --- /dev/null +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightAdditive.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 517c2df5a5dc5d44a8b3820eca503d13 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightMultiply.mat b/spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightMultiply.mat new file mode 100644 index 000000000..28c90c143 --- /dev/null +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightMultiply.mat @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: SkeletonPMAMultiply + m_Shader: {fileID: 4800000, guid: 8bdcdc7ee298e594a9c20c61d25c33b6, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: + second: 0 + - first: + name: _Cutoff + second: 0.1 + m_Colors: + - first: + name: + second: {r: 0, g: 2.018574, b: 1e-45, a: 0.000007110106} + - first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightMultiply.mat.meta b/spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightMultiply.mat.meta new file mode 100644 index 000000000..dd26a56a7 --- /dev/null +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightMultiply.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 053fed1e18e65064ca564f05c4027e1e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightScreen.mat b/spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightScreen.mat new file mode 100644 index 000000000..601f987ed --- /dev/null +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightScreen.mat @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: SkeletonPMAScreen + m_Shader: {fileID: 4800000, guid: 4e8caa36c07aacf4ab270da00784e4d9, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: + second: 0 + - first: + name: _Cutoff + second: 0.1 + m_Colors: + - first: + name: + second: {r: 0, g: 2.018574, b: 1e-45, a: 0.000007121922} + - first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightScreen.mat.meta b/spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightScreen.mat.meta new file mode 100644 index 000000000..7fb88955d --- /dev/null +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/SkeletonDataModifierAssets/BlendModeMaterials/SkeletonStraightScreen.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1a66c2d7ee7642a459bd3831abeb30af +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: From b7f4bbc5e33639de3e2068eedb18e1381b45f96a Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Tue, 1 Mar 2022 11:32:41 +0100 Subject: [PATCH 6/7] [unity] Added missing added changes of previous commit 6a3fb6a. --- .../spine-unity/Utility/MaterialChecks.cs | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Utility/MaterialChecks.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Utility/MaterialChecks.cs index dbf67333f..58a0818e6 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Utility/MaterialChecks.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Utility/MaterialChecks.cs @@ -123,8 +123,7 @@ namespace Spine.Unity { return isProblematic; } - public static bool IsMaterialSetupProblematic(SkeletonGraphic skeletonGraphic, ref string errorMessage) - { + public static bool IsMaterialSetupProblematic (SkeletonGraphic skeletonGraphic, ref string errorMessage) { var material = skeletonGraphic.material; bool isProblematic = false; if (material) { @@ -157,11 +156,11 @@ namespace Spine.Unity { return isProblematic; } - public static bool IsMaterialSetupProblematic(Material material, ref string errorMessage) { + public static bool IsMaterialSetupProblematic (Material material, ref string errorMessage) { return !IsColorSpaceSupported(material, ref errorMessage); } - public static bool IsZSpacingRequired(Material material, ref string errorMessage) { + public static bool IsZSpacingRequired (Material material, ref string errorMessage) { bool hasForwardAddPass = material.FindPass("FORWARD_DELTA") >= 0; if (hasForwardAddPass) { errorMessage += kZSpacingRequiredMessage; @@ -222,8 +221,7 @@ namespace Spine.Unity { "(You can disable this warning in `Edit - Preferences - Spine`)\n", texturePath, materialName); isProblematic = true; } - } - else { // straight alpha texture + } else { // straight alpha texture if (!alphaIsTransparency) { string materialName = System.IO.Path.GetFileName(materialPath); errorMessage += string.Format("`{0}` and material `{1}` : Incorrect" + @@ -245,14 +243,12 @@ namespace Spine.Unity { material.DisableKeyword(STRAIGHT_ALPHA_KEYWORD); else material.EnableKeyword(STRAIGHT_ALPHA_KEYWORD); - } - else { + } else { if (enablePMATexture) { material.DisableKeyword(ALPHAPREMULTIPLY_ON_KEYWORD); material.DisableKeyword(ALPHABLEND_ON_KEYWORD); material.EnableKeyword(ALPHAPREMULTIPLY_VERTEX_ONLY_ON_KEYWORD); - } - else { + } else { material.DisableKeyword(ALPHAPREMULTIPLY_ON_KEYWORD); material.DisableKeyword(ALPHAPREMULTIPLY_VERTEX_ONLY_ON_KEYWORD); material.EnableKeyword(ALPHABLEND_ON_KEYWORD); @@ -260,7 +256,7 @@ namespace Spine.Unity { } } - static bool IsPMATextureMaterial (Material material) { + public static bool IsPMATextureMaterial (Material material) { bool usesAlphaPremultiplyKeyword = IsSpriteShader(material); if (usesAlphaPremultiplyKeyword) return material.IsKeywordEnabled(ALPHAPREMULTIPLY_ON_KEYWORD); From 4cb0f16ae69bb3dbf152b0d33bee4d08b83913c6 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Tue, 1 Mar 2022 12:24:03 +0100 Subject: [PATCH 7/7] [unity] Minor: removed a debug log statement added in commit 299ab8f. --- .../Editor/spine-unity/Editor/Utility/SpineBuildProcessor.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineBuildProcessor.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineBuildProcessor.cs index a7161872a..b42b45f88 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineBuildProcessor.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineBuildProcessor.cs @@ -88,7 +88,6 @@ namespace Spine.Unity.Editor { } internal static void PostprocessSpinePrefabMeshes () { - Debug.Log("PostprocessSpinePrefabMeshes called"); foreach (string assetPath in prefabsToRestore) { GameObject g = AssetDatabase.LoadAssetAtPath(assetPath); SpineEditorUtilities.SetupSpinePrefabMesh(g, null);