This commit is contained in:
ww-rm
2025-03-13 13:30:35 +08:00
parent 63a937a45b
commit b37e5c25c3
8 changed files with 51 additions and 51 deletions

View File

@@ -9,7 +9,7 @@ namespace SpineViewer.Spine
/// <summary> /// <summary>
/// SFML 混合模式 /// SFML 混合模式
/// </summary> /// </summary>
public static class BlendMode public static class BlendModeSFML
{ {
/// <summary> /// <summary>
/// Alpha Blend /// Alpha Blend

View File

@@ -236,14 +236,14 @@ namespace SpineViewer.Spine.Implementations.Spine
skeleton.UpdateWorldTransform(); skeleton.UpdateWorldTransform();
} }
//private SFML.Graphics.BlendMode GetSFMLBlendMode(SpineRuntime21.BlendMode spineBlendMode) //private SFML.Graphics.BlendMode GetSFMLBlendMode(BlendMode spineBlendMode)
//{ //{
// return spineBlendMode switch // return spineBlendMode switch
// { // {
// SpineRuntime21.BlendMode.Normal => BlendMode.Normal, // BlendMode.Normal => BlendMode.Normal,
// SpineRuntime21.BlendMode.Additive => BlendMode.Additive, // BlendMode.Additive => BlendMode.Additive,
// SpineRuntime21.BlendMode.Multiply => BlendMode.Multiply, // BlendMode.Multiply => BlendMode.Multiply,
// SpineRuntime21.BlendMode.Screen => BlendMode.Screen, // BlendMode.Screen => BlendMode.Screen,
// _ => throw new NotImplementedException($"{spineBlendMode}"), // _ => throw new NotImplementedException($"{spineBlendMode}"),
// }; // };
//} //}
@@ -313,14 +313,14 @@ namespace SpineViewer.Spine.Implementations.Spine
} }
// 似乎 2.1.x 也没有 BlendMode // 似乎 2.1.x 也没有 BlendMode
SFML.Graphics.BlendMode blendMode = slot.Data.AdditiveBlending ? BlendMode.Additive : BlendMode.Normal; SFML.Graphics.BlendMode blendMode = slot.Data.AdditiveBlending ? BlendModeSFML.Additive : BlendModeSFML.Normal;
states.Texture ??= texture; states.Texture ??= texture;
if (states.BlendMode != blendMode || states.Texture != texture) if (states.BlendMode != blendMode || states.Texture != texture)
{ {
if (vertexArray.VertexCount > 0) if (vertexArray.VertexCount > 0)
{ {
if (UsePremultipliedAlpha && (states.BlendMode == BlendMode.Normal || states.BlendMode == BlendMode.Additive)) if (UsePremultipliedAlpha && (states.BlendMode == BlendModeSFML.Normal || states.BlendMode == BlendModeSFML.Additive))
states.Shader = FragmentShader; states.Shader = FragmentShader;
else else
states.Shader = null; states.Shader = null;
@@ -365,7 +365,7 @@ namespace SpineViewer.Spine.Implementations.Spine
//clipping.ClipEnd(slot); //clipping.ClipEnd(slot);
} }
if (UsePremultipliedAlpha && (states.BlendMode == BlendMode.Normal || states.BlendMode == BlendMode.Additive)) if (UsePremultipliedAlpha && (states.BlendMode == BlendModeSFML.Normal || states.BlendMode == BlendModeSFML.Additive))
states.Shader = FragmentShader; states.Shader = FragmentShader;
else else
states.Shader = null; states.Shader = null;

View File

@@ -194,14 +194,14 @@ namespace SpineViewer.Spine.Implementations.Spine
skeleton.UpdateWorldTransform(); skeleton.UpdateWorldTransform();
} }
private SFML.Graphics.BlendMode GetSFMLBlendMode(SpineRuntime36.BlendMode spineBlendMode) private SFML.Graphics.BlendMode GetSFMLBlendMode(BlendMode spineBlendMode)
{ {
return spineBlendMode switch return spineBlendMode switch
{ {
SpineRuntime36.BlendMode.Normal => BlendMode.Normal, BlendMode.Normal => BlendModeSFML.Normal,
SpineRuntime36.BlendMode.Additive => BlendMode.Additive, BlendMode.Additive => BlendModeSFML.Additive,
SpineRuntime36.BlendMode.Multiply => BlendMode.Multiply, BlendMode.Multiply => BlendModeSFML.Multiply,
SpineRuntime36.BlendMode.Screen => BlendMode.Screen, BlendMode.Screen => BlendModeSFML.Screen,
_ => throw new NotImplementedException($"{spineBlendMode}"), _ => throw new NotImplementedException($"{spineBlendMode}"),
}; };
} }
@@ -276,7 +276,7 @@ namespace SpineViewer.Spine.Implementations.Spine
{ {
if (vertexArray.VertexCount > 0) if (vertexArray.VertexCount > 0)
{ {
if (UsePremultipliedAlpha && (states.BlendMode == BlendMode.Normal || states.BlendMode == BlendMode.Additive)) if (UsePremultipliedAlpha && (states.BlendMode == BlendModeSFML.Normal || states.BlendMode == BlendModeSFML.Additive))
states.Shader = FragmentShader; states.Shader = FragmentShader;
else else
states.Shader = null; states.Shader = null;
@@ -321,7 +321,7 @@ namespace SpineViewer.Spine.Implementations.Spine
clipping.ClipEnd(slot); clipping.ClipEnd(slot);
} }
if (UsePremultipliedAlpha && (states.BlendMode == BlendMode.Normal || states.BlendMode == BlendMode.Additive)) if (UsePremultipliedAlpha && (states.BlendMode == BlendModeSFML.Normal || states.BlendMode == BlendModeSFML.Additive))
states.Shader = FragmentShader; states.Shader = FragmentShader;
else else
states.Shader = null; states.Shader = null;

View File

@@ -201,14 +201,14 @@ namespace SpineViewer.Spine.Implementations.Spine
skeleton.UpdateWorldTransform(); skeleton.UpdateWorldTransform();
} }
private SFML.Graphics.BlendMode GetSFMLBlendMode(SpineRuntime37.BlendMode spineBlendMode) private SFML.Graphics.BlendMode GetSFMLBlendMode(BlendMode spineBlendMode)
{ {
return spineBlendMode switch return spineBlendMode switch
{ {
SpineRuntime37.BlendMode.Normal => BlendMode.Normal, BlendMode.Normal => BlendModeSFML.Normal,
SpineRuntime37.BlendMode.Additive => BlendMode.Additive, BlendMode.Additive => BlendModeSFML.Additive,
SpineRuntime37.BlendMode.Multiply => BlendMode.Multiply, BlendMode.Multiply => BlendModeSFML.Multiply,
SpineRuntime37.BlendMode.Screen => BlendMode.Screen, BlendMode.Screen => BlendModeSFML.Screen,
_ => throw new NotImplementedException($"{spineBlendMode}"), _ => throw new NotImplementedException($"{spineBlendMode}"),
}; };
} }
@@ -284,7 +284,7 @@ namespace SpineViewer.Spine.Implementations.Spine
if (vertexArray.VertexCount > 0) if (vertexArray.VertexCount > 0)
{ {
// XXX: 实测不用设置 sampler2D 的值也正确 // XXX: 实测不用设置 sampler2D 的值也正确
if (UsePremultipliedAlpha && (states.BlendMode == BlendMode.Normal || states.BlendMode == BlendMode.Additive)) if (UsePremultipliedAlpha && (states.BlendMode == BlendModeSFML.Normal || states.BlendMode == BlendModeSFML.Additive))
states.Shader = FragmentShader; states.Shader = FragmentShader;
else else
states.Shader = null; states.Shader = null;
@@ -329,7 +329,7 @@ namespace SpineViewer.Spine.Implementations.Spine
clipping.ClipEnd(slot); clipping.ClipEnd(slot);
} }
if (UsePremultipliedAlpha && (states.BlendMode == BlendMode.Normal || states.BlendMode == BlendMode.Additive)) if (UsePremultipliedAlpha && (states.BlendMode == BlendModeSFML.Normal || states.BlendMode == BlendModeSFML.Additive))
states.Shader = FragmentShader; states.Shader = FragmentShader;
else else
states.Shader = null; states.Shader = null;

View File

@@ -204,14 +204,14 @@ namespace SpineViewer.Spine.Implementations.Spine
skeleton.UpdateWorldTransform(); skeleton.UpdateWorldTransform();
} }
private SFML.Graphics.BlendMode GetSFMLBlendMode(SpineRuntime38.BlendMode spineBlendMode) private SFML.Graphics.BlendMode GetSFMLBlendMode(BlendMode spineBlendMode)
{ {
return spineBlendMode switch return spineBlendMode switch
{ {
SpineRuntime38.BlendMode.Normal => BlendMode.Normal, BlendMode.Normal => BlendModeSFML.Normal,
SpineRuntime38.BlendMode.Additive => BlendMode.Additive, BlendMode.Additive => BlendModeSFML.Additive,
SpineRuntime38.BlendMode.Multiply => BlendMode.Multiply, BlendMode.Multiply => BlendModeSFML.Multiply,
SpineRuntime38.BlendMode.Screen => BlendMode.Screen, BlendMode.Screen => BlendModeSFML.Screen,
_ => throw new NotImplementedException($"{spineBlendMode}"), _ => throw new NotImplementedException($"{spineBlendMode}"),
}; };
} }
@@ -287,7 +287,7 @@ namespace SpineViewer.Spine.Implementations.Spine
if (vertexArray.VertexCount > 0) if (vertexArray.VertexCount > 0)
{ {
// XXX: 实测不用设置 sampler2D 的值也正确 // XXX: 实测不用设置 sampler2D 的值也正确
if (UsePremultipliedAlpha && (states.BlendMode == BlendMode.Normal || states.BlendMode == BlendMode.Additive)) if (UsePremultipliedAlpha && (states.BlendMode == BlendModeSFML.Normal || states.BlendMode == BlendModeSFML.Additive))
states.Shader = FragmentShader; states.Shader = FragmentShader;
else else
states.Shader = null; states.Shader = null;
@@ -332,7 +332,7 @@ namespace SpineViewer.Spine.Implementations.Spine
clipping.ClipEnd(slot); clipping.ClipEnd(slot);
} }
if (UsePremultipliedAlpha && (states.BlendMode == BlendMode.Normal || states.BlendMode == BlendMode.Additive)) if (UsePremultipliedAlpha && (states.BlendMode == BlendModeSFML.Normal || states.BlendMode == BlendModeSFML.Additive))
states.Shader = FragmentShader; states.Shader = FragmentShader;
else else
states.Shader = null; states.Shader = null;

View File

@@ -203,14 +203,14 @@ namespace SpineViewer.Spine.Implementations.Spine
skeleton.UpdateWorldTransform(); skeleton.UpdateWorldTransform();
} }
private SFML.Graphics.BlendMode GetSFMLBlendMode(SpineRuntime40.BlendMode spineBlendMode) private SFML.Graphics.BlendMode GetSFMLBlendMode(BlendMode spineBlendMode)
{ {
return spineBlendMode switch return spineBlendMode switch
{ {
SpineRuntime40.BlendMode.Normal => BlendMode.Normal, BlendMode.Normal => BlendModeSFML.Normal,
SpineRuntime40.BlendMode.Additive => BlendMode.Additive, BlendMode.Additive => BlendModeSFML.Additive,
SpineRuntime40.BlendMode.Multiply => BlendMode.Multiply, BlendMode.Multiply => BlendModeSFML.Multiply,
SpineRuntime40.BlendMode.Screen => BlendMode.Screen, BlendMode.Screen => BlendModeSFML.Screen,
_ => throw new NotImplementedException($"{spineBlendMode}"), _ => throw new NotImplementedException($"{spineBlendMode}"),
}; };
} }
@@ -286,7 +286,7 @@ namespace SpineViewer.Spine.Implementations.Spine
if (vertexArray.VertexCount > 0) if (vertexArray.VertexCount > 0)
{ {
// XXX: 实测不用设置 sampler2D 的值也正确 // XXX: 实测不用设置 sampler2D 的值也正确
if (UsePremultipliedAlpha && (states.BlendMode == BlendMode.Normal || states.BlendMode == BlendMode.Additive)) if (UsePremultipliedAlpha && (states.BlendMode == BlendModeSFML.Normal || states.BlendMode == BlendModeSFML.Additive))
states.Shader = FragmentShader; states.Shader = FragmentShader;
else else
states.Shader = null; states.Shader = null;
@@ -331,7 +331,7 @@ namespace SpineViewer.Spine.Implementations.Spine
clipping.ClipEnd(slot); clipping.ClipEnd(slot);
} }
if (UsePremultipliedAlpha && (states.BlendMode == BlendMode.Normal || states.BlendMode == BlendMode.Additive)) if (UsePremultipliedAlpha && (states.BlendMode == BlendModeSFML.Normal || states.BlendMode == BlendModeSFML.Additive))
states.Shader = FragmentShader; states.Shader = FragmentShader;
else else
states.Shader = null; states.Shader = null;

View File

@@ -203,14 +203,14 @@ namespace SpineViewer.Spine.Implementations.Spine
skeleton.UpdateWorldTransform(); skeleton.UpdateWorldTransform();
} }
private SFML.Graphics.BlendMode GetSFMLBlendMode(SpineRuntime41.BlendMode spineBlendMode) private SFML.Graphics.BlendMode GetSFMLBlendMode(BlendMode spineBlendMode)
{ {
return spineBlendMode switch return spineBlendMode switch
{ {
SpineRuntime41.BlendMode.Normal => BlendMode.Normal, BlendMode.Normal => BlendModeSFML.Normal,
SpineRuntime41.BlendMode.Additive => BlendMode.Additive, BlendMode.Additive => BlendModeSFML.Additive,
SpineRuntime41.BlendMode.Multiply => BlendMode.Multiply, BlendMode.Multiply => BlendModeSFML.Multiply,
SpineRuntime41.BlendMode.Screen => BlendMode.Screen, BlendMode.Screen => BlendModeSFML.Screen,
_ => throw new NotImplementedException($"{spineBlendMode}"), _ => throw new NotImplementedException($"{spineBlendMode}"),
}; };
} }
@@ -286,7 +286,7 @@ namespace SpineViewer.Spine.Implementations.Spine
if (vertexArray.VertexCount > 0) if (vertexArray.VertexCount > 0)
{ {
// XXX: 实测不用设置 sampler2D 的值也正确 // XXX: 实测不用设置 sampler2D 的值也正确
if (UsePremultipliedAlpha && (states.BlendMode == BlendMode.Normal || states.BlendMode == BlendMode.Additive)) if (UsePremultipliedAlpha && (states.BlendMode == BlendModeSFML.Normal || states.BlendMode == BlendModeSFML.Additive))
states.Shader = FragmentShader; states.Shader = FragmentShader;
else else
states.Shader = null; states.Shader = null;
@@ -331,7 +331,7 @@ namespace SpineViewer.Spine.Implementations.Spine
clipping.ClipEnd(slot); clipping.ClipEnd(slot);
} }
if (UsePremultipliedAlpha && (states.BlendMode == BlendMode.Normal || states.BlendMode == BlendMode.Additive)) if (UsePremultipliedAlpha && (states.BlendMode == BlendModeSFML.Normal || states.BlendMode == BlendModeSFML.Additive))
states.Shader = FragmentShader; states.Shader = FragmentShader;
else else
states.Shader = null; states.Shader = null;

View File

@@ -203,14 +203,14 @@ namespace SpineViewer.Spine.Implementations.Spine
skeleton.UpdateWorldTransform(Skeleton.Physics.Update); skeleton.UpdateWorldTransform(Skeleton.Physics.Update);
} }
private SFML.Graphics.BlendMode GetSFMLBlendMode(SpineRuntime42.BlendMode spineBlendMode) private SFML.Graphics.BlendMode GetSFMLBlendMode(BlendMode spineBlendMode)
{ {
return spineBlendMode switch return spineBlendMode switch
{ {
SpineRuntime42.BlendMode.Normal => BlendMode.Normal, BlendMode.Normal => BlendModeSFML.Normal,
SpineRuntime42.BlendMode.Additive => BlendMode.Additive, BlendMode.Additive => BlendModeSFML.Additive,
SpineRuntime42.BlendMode.Multiply => BlendMode.Multiply, BlendMode.Multiply => BlendModeSFML.Multiply,
SpineRuntime42.BlendMode.Screen => BlendMode.Screen, BlendMode.Screen => BlendModeSFML.Screen,
_ => throw new NotImplementedException($"{spineBlendMode}"), _ => throw new NotImplementedException($"{spineBlendMode}"),
}; };
} }
@@ -286,7 +286,7 @@ namespace SpineViewer.Spine.Implementations.Spine
if (vertexArray.VertexCount > 0) if (vertexArray.VertexCount > 0)
{ {
// XXX: 实测不用设置 sampler2D 的值也正确 // XXX: 实测不用设置 sampler2D 的值也正确
if (UsePremultipliedAlpha && (states.BlendMode == BlendMode.Normal || states.BlendMode == BlendMode.Additive)) if (UsePremultipliedAlpha && (states.BlendMode == BlendModeSFML.Normal || states.BlendMode == BlendModeSFML.Additive))
states.Shader = FragmentShader; states.Shader = FragmentShader;
else else
states.Shader = null; states.Shader = null;
@@ -331,7 +331,7 @@ namespace SpineViewer.Spine.Implementations.Spine
clipping.ClipEnd(slot); clipping.ClipEnd(slot);
} }
if (UsePremultipliedAlpha && (states.BlendMode == BlendMode.Normal || states.BlendMode == BlendMode.Additive)) if (UsePremultipliedAlpha && (states.BlendMode == BlendModeSFML.Normal || states.BlendMode == BlendModeSFML.Additive))
states.Shader = FragmentShader; states.Shader = FragmentShader;
else else
states.Shader = null; states.Shader = null;