mirror of
https://github.com/BlackMATov/unity-flash-tools.git
synced 2026-03-22 04:44:08 +07:00
Layer blend mode
This commit is contained in:
@@ -4,7 +4,7 @@ namespace FlashTools.Internal.SwfTools.SwfTypes {
|
||||
public struct SwfBlendMode {
|
||||
public enum Mode {
|
||||
Normal, // +
|
||||
Layer, // -
|
||||
Layer, // +
|
||||
Multiply, // +
|
||||
Screen, // +
|
||||
Lighten, // +
|
||||
@@ -43,6 +43,8 @@ namespace FlashTools.Internal.SwfTools.SwfTypes {
|
||||
switch ( Value ) {
|
||||
case Mode.Normal:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Normal);
|
||||
case Mode.Layer:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Layer);
|
||||
case Mode.Multiply:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Multiply);
|
||||
case Mode.Screen:
|
||||
|
||||
@@ -159,6 +159,7 @@ namespace FlashTools.Internal {
|
||||
Shader SelectShader(bool masked, SwfBlendModeData.Types blend_type) {
|
||||
switch ( blend_type ) {
|
||||
case SwfBlendModeData.Types.Normal:
|
||||
case SwfBlendModeData.Types.Layer:
|
||||
case SwfBlendModeData.Types.Multiply:
|
||||
case SwfBlendModeData.Types.Screen:
|
||||
case SwfBlendModeData.Types.Lighten:
|
||||
@@ -201,6 +202,11 @@ namespace FlashTools.Internal {
|
||||
material.SetInt("_SrcBlend", (int)BlendMode.One);
|
||||
material.SetInt("_DstBlend", (int)BlendMode.OneMinusSrcAlpha);
|
||||
break;
|
||||
case SwfBlendModeData.Types.Layer:
|
||||
material.SetInt("_BlendOp" , (int)BlendOp.Add);
|
||||
material.SetInt("_SrcBlend", (int)BlendMode.One);
|
||||
material.SetInt("_DstBlend", (int)BlendMode.OneMinusSrcAlpha);
|
||||
break;
|
||||
case SwfBlendModeData.Types.Multiply:
|
||||
material.SetInt("_BlendOp" , (int)BlendOp.Add);
|
||||
material.SetInt("_SrcBlend", (int)BlendMode.DstColor);
|
||||
|
||||
@@ -109,6 +109,7 @@ namespace FlashTools {
|
||||
public struct SwfBlendModeData {
|
||||
public enum Types : byte {
|
||||
Normal,
|
||||
Layer,
|
||||
Multiply,
|
||||
Screen,
|
||||
Lighten,
|
||||
@@ -136,7 +137,7 @@ namespace FlashTools {
|
||||
public static SwfBlendModeData operator*(
|
||||
SwfBlendModeData a, SwfBlendModeData b)
|
||||
{
|
||||
return a.type == Types.Normal ? b : a;
|
||||
return (a.type == Types.Normal || a.type == Types.Layer) ? b : a;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user