From a49a1081c58a583f341ab0d9a47de5f251c99044 Mon Sep 17 00:00:00 2001 From: BlackMATov Date: Tue, 27 Sep 2016 17:32:10 +0700 Subject: [PATCH] grab blend modes wip --- Assembly-CSharp-Editor.csproj | 3 + Assembly-CSharp.csproj | 3 + .../Examples/Animations/Tests/4_blends.fla | Bin 15354 -> 15910 bytes .../FlashTools/Examples/Scenes/Scene00.unity | 368 +----------------- .../Resources/Materials/Generated.meta | 9 - .../Materials/Generated/SwfDecrMaskShader.mat | 26 -- .../Generated/SwfDecrMaskShader.mat.meta | 8 - .../Materials/Generated/SwfIncrMaskShader.mat | 26 -- .../Generated/SwfIncrMaskShader.mat.meta | 8 - .../Generated/SwfMaskedShader_Add_0.mat | 46 --- .../Generated/SwfMaskedShader_Add_0.mat.meta | 8 - .../Generated/SwfMaskedShader_Add_1.mat | 46 --- .../Generated/SwfMaskedShader_Add_1.mat.meta | 8 - .../Generated/SwfMaskedShader_Add_2.mat | 46 --- .../Generated/SwfMaskedShader_Add_2.mat.meta | 8 - .../Generated/SwfMaskedShader_Add_3.mat | 46 --- .../Generated/SwfMaskedShader_Add_3.mat.meta | 8 - .../Generated/SwfMaskedShader_Add_4.mat | 46 --- .../Generated/SwfMaskedShader_Add_4.mat.meta | 8 - .../Generated/SwfMaskedShader_Add_5.mat | 46 --- .../Generated/SwfMaskedShader_Add_5.mat.meta | 8 - .../Generated/SwfMaskedShader_Add_6.mat | 46 --- .../Generated/SwfMaskedShader_Add_6.mat.meta | 8 - .../Generated/SwfMaskedShader_Add_7.mat | 46 --- .../Generated/SwfMaskedShader_Add_7.mat.meta | 8 - .../Generated/SwfMaskedShader_Add_8.mat | 46 --- .../Generated/SwfMaskedShader_Add_8.mat.meta | 8 - .../Generated/SwfMaskedShader_Add_9.mat | 46 --- .../Generated/SwfMaskedShader_Add_9.mat.meta | 8 - .../Generated/SwfMaskedShader_Lighten_0.mat | 46 --- .../SwfMaskedShader_Lighten_0.mat.meta | 8 - .../Generated/SwfMaskedShader_Lighten_1.mat | 46 --- .../SwfMaskedShader_Lighten_1.mat.meta | 8 - .../Generated/SwfMaskedShader_Lighten_2.mat | 46 --- .../SwfMaskedShader_Lighten_2.mat.meta | 8 - .../Generated/SwfMaskedShader_Lighten_3.mat | 46 --- .../SwfMaskedShader_Lighten_3.mat.meta | 8 - .../Generated/SwfMaskedShader_Lighten_4.mat | 46 --- .../SwfMaskedShader_Lighten_4.mat.meta | 8 - .../Generated/SwfMaskedShader_Lighten_5.mat | 46 --- .../SwfMaskedShader_Lighten_5.mat.meta | 8 - .../Generated/SwfMaskedShader_Lighten_6.mat | 46 --- .../SwfMaskedShader_Lighten_6.mat.meta | 8 - .../Generated/SwfMaskedShader_Lighten_7.mat | 46 --- .../SwfMaskedShader_Lighten_7.mat.meta | 8 - .../Generated/SwfMaskedShader_Lighten_8.mat | 46 --- .../SwfMaskedShader_Lighten_8.mat.meta | 8 - .../Generated/SwfMaskedShader_Lighten_9.mat | 46 --- .../SwfMaskedShader_Lighten_9.mat.meta | 8 - .../Generated/SwfMaskedShader_Multiply_0.mat | 46 --- .../SwfMaskedShader_Multiply_0.mat.meta | 8 - .../Generated/SwfMaskedShader_Multiply_1.mat | 46 --- .../SwfMaskedShader_Multiply_1.mat.meta | 8 - .../Generated/SwfMaskedShader_Multiply_2.mat | 46 --- .../SwfMaskedShader_Multiply_2.mat.meta | 8 - .../Generated/SwfMaskedShader_Multiply_3.mat | 46 --- .../SwfMaskedShader_Multiply_3.mat.meta | 8 - .../Generated/SwfMaskedShader_Multiply_4.mat | 46 --- .../SwfMaskedShader_Multiply_4.mat.meta | 8 - .../Generated/SwfMaskedShader_Multiply_5.mat | 46 --- .../SwfMaskedShader_Multiply_5.mat.meta | 8 - .../Generated/SwfMaskedShader_Multiply_6.mat | 46 --- .../SwfMaskedShader_Multiply_6.mat.meta | 8 - .../Generated/SwfMaskedShader_Multiply_7.mat | 46 --- .../SwfMaskedShader_Multiply_7.mat.meta | 8 - .../Generated/SwfMaskedShader_Multiply_8.mat | 46 --- .../SwfMaskedShader_Multiply_8.mat.meta | 8 - .../Generated/SwfMaskedShader_Multiply_9.mat | 46 --- .../SwfMaskedShader_Multiply_9.mat.meta | 8 - .../Generated/SwfMaskedShader_Normal_0.mat | 46 --- .../SwfMaskedShader_Normal_0.mat.meta | 8 - .../Generated/SwfMaskedShader_Normal_1.mat | 46 --- .../SwfMaskedShader_Normal_1.mat.meta | 8 - .../Generated/SwfMaskedShader_Normal_2.mat | 46 --- .../SwfMaskedShader_Normal_2.mat.meta | 8 - .../Generated/SwfMaskedShader_Normal_3.mat | 46 --- .../SwfMaskedShader_Normal_3.mat.meta | 8 - .../Generated/SwfMaskedShader_Normal_4.mat | 46 --- .../SwfMaskedShader_Normal_4.mat.meta | 8 - .../Generated/SwfMaskedShader_Normal_5.mat | 46 --- .../SwfMaskedShader_Normal_5.mat.meta | 8 - .../Generated/SwfMaskedShader_Normal_6.mat | 46 --- .../SwfMaskedShader_Normal_6.mat.meta | 8 - .../Generated/SwfMaskedShader_Normal_7.mat | 46 --- .../SwfMaskedShader_Normal_7.mat.meta | 8 - .../Generated/SwfMaskedShader_Normal_8.mat | 46 --- .../SwfMaskedShader_Normal_8.mat.meta | 8 - .../Generated/SwfMaskedShader_Normal_9.mat | 46 --- .../SwfMaskedShader_Normal_9.mat.meta | 8 - .../Generated/SwfMaskedShader_Screen_0.mat | 46 --- .../SwfMaskedShader_Screen_0.mat.meta | 8 - .../Generated/SwfMaskedShader_Screen_1.mat | 46 --- .../SwfMaskedShader_Screen_1.mat.meta | 8 - .../Generated/SwfMaskedShader_Screen_2.mat | 46 --- .../SwfMaskedShader_Screen_2.mat.meta | 8 - .../Generated/SwfMaskedShader_Screen_3.mat | 46 --- .../SwfMaskedShader_Screen_3.mat.meta | 8 - .../Generated/SwfMaskedShader_Screen_4.mat | 46 --- .../SwfMaskedShader_Screen_4.mat.meta | 8 - .../Generated/SwfMaskedShader_Screen_5.mat | 46 --- .../SwfMaskedShader_Screen_5.mat.meta | 8 - .../Generated/SwfMaskedShader_Screen_6.mat | 46 --- .../SwfMaskedShader_Screen_6.mat.meta | 8 - .../Generated/SwfMaskedShader_Screen_7.mat | 46 --- .../SwfMaskedShader_Screen_7.mat.meta | 8 - .../Generated/SwfMaskedShader_Screen_8.mat | 46 --- .../SwfMaskedShader_Screen_8.mat.meta | 8 - .../Generated/SwfMaskedShader_Screen_9.mat | 46 --- .../SwfMaskedShader_Screen_9.mat.meta | 8 - .../Generated/SwfMaskedShader_Subtract_0.mat | 46 --- .../SwfMaskedShader_Subtract_0.mat.meta | 8 - .../Generated/SwfMaskedShader_Subtract_1.mat | 46 --- .../SwfMaskedShader_Subtract_1.mat.meta | 8 - .../Generated/SwfMaskedShader_Subtract_2.mat | 46 --- .../SwfMaskedShader_Subtract_2.mat.meta | 8 - .../Generated/SwfMaskedShader_Subtract_3.mat | 46 --- .../SwfMaskedShader_Subtract_3.mat.meta | 8 - .../Generated/SwfMaskedShader_Subtract_4.mat | 46 --- .../SwfMaskedShader_Subtract_4.mat.meta | 8 - .../Generated/SwfMaskedShader_Subtract_5.mat | 46 --- .../SwfMaskedShader_Subtract_5.mat.meta | 8 - .../Generated/SwfMaskedShader_Subtract_6.mat | 46 --- .../SwfMaskedShader_Subtract_6.mat.meta | 8 - .../Generated/SwfMaskedShader_Subtract_7.mat | 46 --- .../SwfMaskedShader_Subtract_7.mat.meta | 8 - .../Generated/SwfMaskedShader_Subtract_8.mat | 46 --- .../SwfMaskedShader_Subtract_8.mat.meta | 8 - .../Generated/SwfMaskedShader_Subtract_9.mat | 46 --- .../SwfMaskedShader_Subtract_9.mat.meta | 8 - .../Generated/SwfSimpleShader_Add.mat | 42 -- .../Generated/SwfSimpleShader_Add.mat.meta | 8 - .../Generated/SwfSimpleShader_Lighten.mat | 42 -- .../SwfSimpleShader_Lighten.mat.meta | 8 - .../Generated/SwfSimpleShader_Multiply.mat | 42 -- .../SwfSimpleShader_Multiply.mat.meta | 8 - .../Generated/SwfSimpleShader_Normal.mat | 42 -- .../Generated/SwfSimpleShader_Normal.mat.meta | 8 - .../Generated/SwfSimpleShader_Screen.mat | 42 -- .../Generated/SwfSimpleShader_Screen.mat.meta | 8 - .../Generated/SwfSimpleShader_Subtract.mat | 42 -- .../SwfSimpleShader_Subtract.mat.meta | 8 - .../Resources/Materials/SwfBaseCG.cginc | 133 +++++++ .../Resources/Materials/SwfBaseCG.cginc.meta | 9 + .../Materials/SwfMaskedGrabShader.shader | 52 +++ .../Materials/SwfMaskedGrabShader.shader.meta | 9 + .../Materials/SwfMaskedShader.shader | 59 +-- .../Materials/SwfSimpleGrabShader.shader | 47 +++ .../Materials/SwfSimpleGrabShader.shader.meta | 9 + .../Materials/SwfSimpleShader.shader | 59 +-- Assets/FlashTools/Resources/SwfSettings.asset | 2 + .../Editor/SwfTools/SwfTypes/SwfBlendMode.cs | 38 +- .../Scripts/Internal/SwfSettings.cs | 78 +++- Assets/FlashTools/Scripts/SwfAsset.cs | 7 +- Assets/FlashTools/Scripts/SwfClip.cs | 2 +- 154 files changed, 387 insertions(+), 4108 deletions(-) delete mode 100644 Assets/FlashTools/Resources/Materials/Generated.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfDecrMaskShader.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfDecrMaskShader.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfIncrMaskShader.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfIncrMaskShader.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Add_0.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Add_0.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Add_1.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Add_1.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Add_2.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Add_2.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Add_3.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Add_3.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Add_4.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Add_4.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Add_5.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Add_5.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Add_6.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Add_6.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Add_7.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Add_7.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Add_8.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Add_8.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Add_9.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Add_9.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Lighten_0.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Lighten_0.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Lighten_1.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Lighten_1.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Lighten_2.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Lighten_2.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Lighten_3.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Lighten_3.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Lighten_4.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Lighten_4.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Lighten_5.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Lighten_5.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Lighten_6.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Lighten_6.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Lighten_7.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Lighten_7.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Lighten_8.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Lighten_8.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Lighten_9.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Lighten_9.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Multiply_0.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Multiply_0.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Multiply_1.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Multiply_1.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Multiply_2.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Multiply_2.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Multiply_3.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Multiply_3.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Multiply_4.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Multiply_4.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Multiply_5.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Multiply_5.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Multiply_6.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Multiply_6.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Multiply_7.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Multiply_7.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Multiply_8.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Multiply_8.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Multiply_9.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Multiply_9.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Normal_0.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Normal_0.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Normal_1.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Normal_1.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Normal_2.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Normal_2.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Normal_3.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Normal_3.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Normal_4.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Normal_4.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Normal_5.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Normal_5.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Normal_6.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Normal_6.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Normal_7.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Normal_7.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Normal_8.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Normal_8.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Normal_9.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Normal_9.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Screen_0.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Screen_0.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Screen_1.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Screen_1.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Screen_2.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Screen_2.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Screen_3.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Screen_3.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Screen_4.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Screen_4.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Screen_5.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Screen_5.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Screen_6.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Screen_6.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Screen_7.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Screen_7.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Screen_8.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Screen_8.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Screen_9.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Screen_9.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Subtract_0.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Subtract_0.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Subtract_1.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Subtract_1.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Subtract_2.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Subtract_2.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Subtract_3.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Subtract_3.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Subtract_4.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Subtract_4.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Subtract_5.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Subtract_5.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Subtract_6.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Subtract_6.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Subtract_7.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Subtract_7.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Subtract_8.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Subtract_8.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Subtract_9.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfMaskedShader_Subtract_9.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfSimpleShader_Add.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfSimpleShader_Add.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfSimpleShader_Lighten.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfSimpleShader_Lighten.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfSimpleShader_Multiply.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfSimpleShader_Multiply.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfSimpleShader_Normal.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfSimpleShader_Normal.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfSimpleShader_Screen.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfSimpleShader_Screen.mat.meta delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfSimpleShader_Subtract.mat delete mode 100644 Assets/FlashTools/Resources/Materials/Generated/SwfSimpleShader_Subtract.mat.meta create mode 100644 Assets/FlashTools/Resources/Materials/SwfBaseCG.cginc create mode 100644 Assets/FlashTools/Resources/Materials/SwfBaseCG.cginc.meta create mode 100644 Assets/FlashTools/Resources/Materials/SwfMaskedGrabShader.shader create mode 100644 Assets/FlashTools/Resources/Materials/SwfMaskedGrabShader.shader.meta create mode 100644 Assets/FlashTools/Resources/Materials/SwfSimpleGrabShader.shader create mode 100644 Assets/FlashTools/Resources/Materials/SwfSimpleGrabShader.shader.meta diff --git a/Assembly-CSharp-Editor.csproj b/Assembly-CSharp-Editor.csproj index a15850f..a59c8bb 100644 --- a/Assembly-CSharp-Editor.csproj +++ b/Assembly-CSharp-Editor.csproj @@ -104,9 +104,12 @@ + + + diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj index 9d52272..ca3732d 100644 --- a/Assembly-CSharp.csproj +++ b/Assembly-CSharp.csproj @@ -55,9 +55,12 @@ + + + diff --git a/Assets/FlashTools/Examples/Animations/Tests/4_blends.fla b/Assets/FlashTools/Examples/Animations/Tests/4_blends.fla index d64ab4ac6435423a55304409efcf10844e1107de..f02ecdcfdb28ded86c1297a5b53a111e54b1dfa1 100644 GIT binary patch delta 2194 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 0.5 ? 1.0 - 2.0 * (1.0 - a) * (1.0 - b) : 2.0 * a * b; + r.a = b.a; + return r; +} + +fixed4 swf_hardlight(fixed4 a, fixed4 b) { + fixed4 r = b > 0.5 ? 1.0 - (1.0 - a) * (1.0 - 2.0 * (b - 0.5)) : a * (2.0 * b); + r.a = b.a; + return r; +} + +// +// +// + +struct swf_appdata_t { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + float4 mulcolor : COLOR; + float4 addcolor : TEXCOORD1; +}; + +struct swf_v2f_t { + float4 vertex : SV_POSITION; + float2 uv : TEXCOORD0; + fixed4 mulcolor : COLOR; + fixed4 addcolor : TEXCOORD1; +}; + +struct swf_grab_v2f_t { + float4 vertex : SV_POSITION; + float2 uv : TEXCOORD0; + fixed4 mulcolor : COLOR; + fixed4 addcolor : TEXCOORD1; + float4 screenpos : TEXCOORD2; +}; + +// +// +// + +inline fixed4 swf_sample_sprite_texture(sampler2D main_tex, float2 uv) { + fixed4 c = tex2D(main_tex, uv); +#if UNITY_TEXTURE_ALPHASPLIT_ALLOWED + if ( _AlphaSplitEnabled ) { + c.a = tex2D(_AlphaTex, uv).r; + } +#endif + return c; +} + +inline swf_v2f_t swf_vert(swf_appdata_t IN) { + swf_v2f_t OUT; + OUT.vertex = mul(UNITY_MATRIX_MVP, IN.vertex); + OUT.uv = IN.uv; + OUT.mulcolor = IN.mulcolor * _Tint; + OUT.addcolor = IN.addcolor; + return OUT; +} + +inline swf_grab_v2f_t swf_grab_vert(swf_appdata_t IN) { + swf_grab_v2f_t OUT; + OUT.vertex = mul(UNITY_MATRIX_MVP, IN.vertex); + OUT.uv = IN.uv; + OUT.mulcolor = IN.mulcolor * _Tint; + OUT.addcolor = IN.addcolor; + OUT.screenpos = OUT.vertex; + return OUT; +} + +inline fixed4 swf_frag(swf_v2f_t IN) : SV_Target { + fixed4 c = swf_sample_sprite_texture(_MainTex, IN.uv); + if ( c.a > 0.01 ) { + c = c * IN.mulcolor + IN.addcolor; + } + c.rgb *= c.a; + return c; +} + +inline fixed4 swf_grab_frag(swf_grab_v2f_t IN) : SV_Target { + fixed4 c = swf_sample_sprite_texture(_MainTex, IN.uv); + if ( c.a > 0.01 ) { + c = c * IN.mulcolor + IN.addcolor; + } + + float2 grabTexcoord = IN.screenpos.xy / IN.screenpos.w; + grabTexcoord.x = (grabTexcoord.x + 1.0) * .5; + grabTexcoord.y = (grabTexcoord.y + 1.0) * .5; + fixed4 grabColor = tex2D(_GrabTexture, grabTexcoord); + + #if FT_DARKEN_BLEND + c = swf_darken(grabColor, c); + #elif FT_DIFFERENCE_BLEND + c = swf_difference(grabColor, c); + #elif FT_INVERT_BLEND + c = swf_invert(grabColor, c); + #elif FT_OVERLAY_BLEND + c = swf_overlay(grabColor, c); + #elif FT_HARDLIGHT_BLEND + c = swf_hardlight(grabColor, c); + #endif + + c.rgb *= c.a; + return c; +} + +#endif // SWF_BASE_CG_INCLUDED \ No newline at end of file diff --git a/Assets/FlashTools/Resources/Materials/SwfBaseCG.cginc.meta b/Assets/FlashTools/Resources/Materials/SwfBaseCG.cginc.meta new file mode 100644 index 0000000..6ed9a1b --- /dev/null +++ b/Assets/FlashTools/Resources/Materials/SwfBaseCG.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 22b5ede0e40fe4227abf1d8ba84d05b2 +timeCreated: 1474967647 +licenseType: Free +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/FlashTools/Resources/Materials/SwfMaskedGrabShader.shader b/Assets/FlashTools/Resources/Materials/SwfMaskedGrabShader.shader new file mode 100644 index 0000000..74c1f77 --- /dev/null +++ b/Assets/FlashTools/Resources/Materials/SwfMaskedGrabShader.shader @@ -0,0 +1,52 @@ +Shader "FlashTools/SwfGrabMasked" { + Properties { + [PerRendererData] _MainTex ("Main Texture", 2D ) = "white" {} + [PerRendererData] _Tint ("Tint" , Color) = (1,1,1,1) + + _StencilID ("Stencil ID", Int) = 0 + [Enum(UnityEngine.Rendering.BlendOp )] _BlendOp ("BlendOp" , Int) = 0 + [Enum(UnityEngine.Rendering.BlendMode)] _SrcBlend ("SrcBlend", Int) = 1 + [Enum(UnityEngine.Rendering.BlendMode)] _DstBlend ("DstBlend", Int) = 10 + } + + SubShader { + Tags { + "Queue" = "Transparent" + "IgnoreProjector" = "True" + "RenderType" = "Transparent" + "PreviewType" = "Plane" + "CanUseSpriteAtlas" = "True" + } + + Cull Off + Lighting Off + ZWrite Off + + BlendOp [_BlendOp] + Blend [_SrcBlend] [_DstBlend] + + GrabPass { } + + Pass { + Stencil { + Ref [_StencilID] + Comp Equal + } + CGPROGRAM + fixed4 _Tint; + sampler2D _MainTex; + sampler2D _GrabTexture; + sampler2D _AlphaTex; + float _AlphaSplitEnabled; + + #pragma multi_compile FT_DARKEN_BLEND FT_DIFFERENCE_BLEND FT_INVERT_BLEND FT_OVERLAY_BLEND FT_HARDLIGHT_BLEND + + #include "UnityCG.cginc" + #include "SwfBaseCG.cginc" + + #pragma vertex swf_grab_vert + #pragma fragment swf_grab_frag + ENDCG + } + } +} \ No newline at end of file diff --git a/Assets/FlashTools/Resources/Materials/SwfMaskedGrabShader.shader.meta b/Assets/FlashTools/Resources/Materials/SwfMaskedGrabShader.shader.meta new file mode 100644 index 0000000..f9cef2b --- /dev/null +++ b/Assets/FlashTools/Resources/Materials/SwfMaskedGrabShader.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1fe2c789c6a584e829f4c364674513b9 +timeCreated: 1474963000 +licenseType: Free +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/FlashTools/Resources/Materials/SwfMaskedShader.shader b/Assets/FlashTools/Resources/Materials/SwfMaskedShader.shader index 900d883..ce4916a 100644 --- a/Assets/FlashTools/Resources/Materials/SwfMaskedShader.shader +++ b/Assets/FlashTools/Resources/Materials/SwfMaskedShader.shader @@ -1,12 +1,12 @@ Shader "FlashTools/SwfMasked" { Properties { [PerRendererData] _MainTex ("Main Texture", 2D ) = "white" {} - [PerRendererData] _Color ("Tint" , Color) = (1,1,1,1) + [PerRendererData] _Tint ("Tint" , Color) = (1,1,1,1) _StencilID ("Stencil ID", Int) = 0 - [Enum(UnityEngine.Rendering.BlendOp )] _BlendOp ("BlendOp" , Int) = 0 - [Enum(UnityEngine.Rendering.BlendMode)] _SrcBlend ("SrcBlend" , Int) = 1 - [Enum(UnityEngine.Rendering.BlendMode)] _DstBlend ("DstBlend" , Int) = 10 + [Enum(UnityEngine.Rendering.BlendOp )] _BlendOp ("BlendOp" , Int) = 0 + [Enum(UnityEngine.Rendering.BlendMode)] _SrcBlend ("SrcBlend", Int) = 1 + [Enum(UnityEngine.Rendering.BlendMode)] _DstBlend ("DstBlend", Int) = 10 } SubShader { @@ -31,56 +31,17 @@ Shader "FlashTools/SwfMasked" { Comp Equal } CGPROGRAM - #pragma vertex vert - #pragma fragment frag - #include "UnityCG.cginc" - - struct appdata_t { - float4 vertex : POSITION; - float2 uv : TEXCOORD0; - float4 mulcolor : COLOR; - float4 addcolor : TEXCOORD1; - }; - - struct v2f { - float4 vertex : SV_POSITION; - float2 uv : TEXCOORD0; - fixed4 mulcolor : COLOR; - fixed4 addcolor : TEXCOORD1; - }; - - fixed4 _Color; - - v2f vert(appdata_t IN) { - v2f OUT; - OUT.vertex = mul(UNITY_MATRIX_MVP, IN.vertex); - OUT.uv = IN.uv; - OUT.mulcolor = IN.mulcolor * _Color; - OUT.addcolor = IN.addcolor; - return OUT; - } - + fixed4 _Tint; sampler2D _MainTex; + sampler2D _GrabTexture; sampler2D _AlphaTex; float _AlphaSplitEnabled; - fixed4 SampleSpriteTexture(float2 uv) { - fixed4 color = tex2D(_MainTex, uv); - #if UNITY_TEXTURE_ALPHASPLIT_ALLOWED - if (_AlphaSplitEnabled) - color.a = tex2D(_AlphaTex, uv).r; - #endif //UNITY_TEXTURE_ALPHASPLIT_ALLOWED - return color; - } + #include "UnityCG.cginc" + #include "SwfBaseCG.cginc" - fixed4 frag(v2f IN) : SV_Target { - fixed4 c = SampleSpriteTexture(IN.uv); - if ( c.a > 0.01 ) { - c = c * IN.mulcolor + IN.addcolor; - } - c.rgb *= c.a; - return c; - } + #pragma vertex swf_vert + #pragma fragment swf_frag ENDCG } } diff --git a/Assets/FlashTools/Resources/Materials/SwfSimpleGrabShader.shader b/Assets/FlashTools/Resources/Materials/SwfSimpleGrabShader.shader new file mode 100644 index 0000000..58fe74b --- /dev/null +++ b/Assets/FlashTools/Resources/Materials/SwfSimpleGrabShader.shader @@ -0,0 +1,47 @@ +Shader "FlashTools/SwfGrabSimple" { + Properties { + [PerRendererData] _MainTex ("Main Texture", 2D ) = "white" {} + [PerRendererData] _Tint ("Tint" , Color) = (1,1,1,1) + + [Enum(UnityEngine.Rendering.BlendOp )] _BlendOp ("BlendOp" , Int) = 0 + [Enum(UnityEngine.Rendering.BlendMode)] _SrcBlend ("SrcBlend", Int) = 1 + [Enum(UnityEngine.Rendering.BlendMode)] _DstBlend ("DstBlend", Int) = 10 + } + + SubShader { + Tags { + "Queue" = "Transparent" + "IgnoreProjector" = "True" + "RenderType" = "Transparent" + "PreviewType" = "Plane" + "CanUseSpriteAtlas" = "True" + } + + Cull Off + Lighting Off + ZWrite Off + + BlendOp [_BlendOp] + Blend [_SrcBlend] [_DstBlend] + + GrabPass { } + + Pass { + CGPROGRAM + fixed4 _Tint; + sampler2D _MainTex; + sampler2D _GrabTexture; + sampler2D _AlphaTex; + float _AlphaSplitEnabled; + + #pragma multi_compile FT_DARKEN_BLEND FT_DIFFERENCE_BLEND FT_INVERT_BLEND FT_OVERLAY_BLEND FT_HARDLIGHT_BLEND + + #include "UnityCG.cginc" + #include "SwfBaseCG.cginc" + + #pragma vertex swf_grab_vert + #pragma fragment swf_grab_frag + ENDCG + } + } +} \ No newline at end of file diff --git a/Assets/FlashTools/Resources/Materials/SwfSimpleGrabShader.shader.meta b/Assets/FlashTools/Resources/Materials/SwfSimpleGrabShader.shader.meta new file mode 100644 index 0000000..eb0d28a --- /dev/null +++ b/Assets/FlashTools/Resources/Materials/SwfSimpleGrabShader.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 75e1212bdbac941a4a085c1aecfc6bef +timeCreated: 1474962993 +licenseType: Free +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/FlashTools/Resources/Materials/SwfSimpleShader.shader b/Assets/FlashTools/Resources/Materials/SwfSimpleShader.shader index a5f6d0a..0054240 100644 --- a/Assets/FlashTools/Resources/Materials/SwfSimpleShader.shader +++ b/Assets/FlashTools/Resources/Materials/SwfSimpleShader.shader @@ -1,11 +1,11 @@ Shader "FlashTools/SwfSimple" { Properties { [PerRendererData] _MainTex ("Main Texture", 2D ) = "white" {} - [PerRendererData] _Color ("Tint" , Color) = (1,1,1,1) + [PerRendererData] _Tint ("Tint" , Color) = (1,1,1,1) - [Enum(UnityEngine.Rendering.BlendOp )] _BlendOp ("BlendOp" , Int) = 0 - [Enum(UnityEngine.Rendering.BlendMode)] _SrcBlend ("SrcBlend" , Int) = 1 - [Enum(UnityEngine.Rendering.BlendMode)] _DstBlend ("DstBlend" , Int) = 10 + [Enum(UnityEngine.Rendering.BlendOp )] _BlendOp ("BlendOp" , Int) = 0 + [Enum(UnityEngine.Rendering.BlendMode)] _SrcBlend ("SrcBlend", Int) = 1 + [Enum(UnityEngine.Rendering.BlendMode)] _DstBlend ("DstBlend", Int) = 10 } SubShader { @@ -26,56 +26,17 @@ Shader "FlashTools/SwfSimple" { Pass { CGPROGRAM - #pragma vertex vert - #pragma fragment frag - #include "UnityCG.cginc" - - struct appdata_t { - float4 vertex : POSITION; - float2 uv : TEXCOORD0; - float4 mulcolor : COLOR; - float4 addcolor : TEXCOORD1; - }; - - struct v2f { - float4 vertex : SV_POSITION; - float2 uv : TEXCOORD0; - fixed4 mulcolor : COLOR; - fixed4 addcolor : TEXCOORD1; - }; - - fixed4 _Color; - - v2f vert(appdata_t IN) { - v2f OUT; - OUT.vertex = mul(UNITY_MATRIX_MVP, IN.vertex); - OUT.uv = IN.uv; - OUT.mulcolor = IN.mulcolor * _Color; - OUT.addcolor = IN.addcolor; - return OUT; - } - + fixed4 _Tint; sampler2D _MainTex; + sampler2D _GrabTexture; sampler2D _AlphaTex; float _AlphaSplitEnabled; - fixed4 SampleSpriteTexture(float2 uv) { - fixed4 color = tex2D(_MainTex, uv); - #if UNITY_TEXTURE_ALPHASPLIT_ALLOWED - if (_AlphaSplitEnabled) - color.a = tex2D(_AlphaTex, uv).r; - #endif //UNITY_TEXTURE_ALPHASPLIT_ALLOWED - return color; - } + #include "UnityCG.cginc" + #include "SwfBaseCG.cginc" - fixed4 frag(v2f IN) : SV_Target { - fixed4 c = SampleSpriteTexture(IN.uv); - if ( c.a > 0.01 ) { - c = c * IN.mulcolor + IN.addcolor; - } - c.rgb *= c.a; - return c; - } + #pragma vertex swf_vert + #pragma fragment swf_frag ENDCG } } diff --git a/Assets/FlashTools/Resources/SwfSettings.asset b/Assets/FlashTools/Resources/SwfSettings.asset index 16a679c..832725d 100644 --- a/Assets/FlashTools/Resources/SwfSettings.asset +++ b/Assets/FlashTools/Resources/SwfSettings.asset @@ -22,5 +22,7 @@ MonoBehaviour: AtlasTextureFormat: 0 SimpleShader: {fileID: 4800000, guid: 71f5f783ce2ab4fc4bf826e4acb105dd, type: 3} MaskedShader: {fileID: 4800000, guid: 2fb923af3a46a49fdb944d636b6f79e8, type: 3} + SimpleGrabShader: {fileID: 4800000, guid: 75e1212bdbac941a4a085c1aecfc6bef, type: 3} + MaskedGrabShader: {fileID: 4800000, guid: 1fe2c789c6a584e829f4c364674513b9, type: 3} IncrMaskShader: {fileID: 4800000, guid: 86b3e29b378884f228862fd1170176b5, type: 3} DecrMaskShader: {fileID: 4800000, guid: f1e8cd2344e824b6a9b12efcacde262c, type: 3} diff --git a/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTypes/SwfBlendMode.cs b/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTypes/SwfBlendMode.cs index fc07091..f45e261 100644 --- a/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTypes/SwfBlendMode.cs +++ b/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTypes/SwfBlendMode.cs @@ -3,20 +3,20 @@ namespace FlashTools.Internal.SwfTools.SwfTypes { public struct SwfBlendMode { public enum Mode { - Normal, - Layer, - Multiply, - Screen, - Lighten, - Darken, - Difference, - Add, - Subtract, - Invert, - Alpha, - Erase, - Overlay, - Hardlight + Normal, // + + Layer, // - + Multiply, // + + Screen, // + + Lighten, // + + Darken, // + GrabPass + Difference, // + GrabPass + Add, // + + Subtract, // + + Invert, // + GrabPass + Alpha, // - + Erase, // - + Overlay, // + GrabPass + Hardlight // + GrabPass } public Mode Value; @@ -49,10 +49,20 @@ namespace FlashTools.Internal.SwfTools.SwfTypes { return new SwfBlendModeData(SwfBlendModeData.Types.Screen); case Mode.Lighten: return new SwfBlendModeData(SwfBlendModeData.Types.Lighten); + case Mode.Darken: + return new SwfBlendModeData(SwfBlendModeData.Types.Darken); + case Mode.Difference: + return new SwfBlendModeData(SwfBlendModeData.Types.Difference); case Mode.Add: return new SwfBlendModeData(SwfBlendModeData.Types.Add); case Mode.Subtract: return new SwfBlendModeData(SwfBlendModeData.Types.Subtract); + case Mode.Invert: + return new SwfBlendModeData(SwfBlendModeData.Types.Invert); + case Mode.Overlay: + return new SwfBlendModeData(SwfBlendModeData.Types.Overlay); + case Mode.Hardlight: + return new SwfBlendModeData(SwfBlendModeData.Types.Hardlight); default: Debug.LogWarningFormat( "[FlashTools] SwfBlendMode. Unsupported blend mode {0}", diff --git a/Assets/FlashTools/Scripts/Internal/SwfSettings.cs b/Assets/FlashTools/Scripts/Internal/SwfSettings.cs index 63dd8e0..18ab7c7 100644 --- a/Assets/FlashTools/Scripts/Internal/SwfSettings.cs +++ b/Assets/FlashTools/Scripts/Internal/SwfSettings.cs @@ -67,6 +67,8 @@ namespace FlashTools.Internal { [HideInInspector] public Shader SimpleShader; [HideInInspector] public Shader MaskedShader; + [HideInInspector] public Shader SimpleGrabShader; + [HideInInspector] public Shader MaskedGrabShader; [HideInInspector] public Shader IncrMaskShader; [HideInInspector] public Shader DecrMaskShader; @@ -78,16 +80,20 @@ namespace FlashTools.Internal { // // --------------------------------------------------------------------- - const string SwfSimpleShaderName = "SwfSimpleShader"; - const string SwfMaskedShaderName = "SwfMaskedShader"; - const string SwfIncrMaskShaderName = "SwfIncrMaskShader"; - const string SwfDecrMaskShaderName = "SwfDecrMaskShader"; + const string SwfSimpleShaderName = "SwfSimpleShader"; + const string SwfMaskedShaderName = "SwfMaskedShader"; + const string SwfSimpleGrabShaderName = "SwfSimpleGrabShader"; + const string SwfMaskedGrabShaderName = "SwfMaskedGrabShader"; + const string SwfIncrMaskShaderName = "SwfIncrMaskShader"; + const string SwfDecrMaskShaderName = "SwfDecrMaskShader"; void FillShadersCache() { - SimpleShader = SafeLoadShader(SwfSimpleShaderName); - MaskedShader = SafeLoadShader(SwfMaskedShaderName); - IncrMaskShader = SafeLoadShader(SwfIncrMaskShaderName); - DecrMaskShader = SafeLoadShader(SwfDecrMaskShaderName); + SimpleShader = SafeLoadShader(SwfSimpleShaderName); + MaskedShader = SafeLoadShader(SwfMaskedShaderName); + SimpleGrabShader = SafeLoadShader(SwfSimpleGrabShaderName); + MaskedGrabShader = SafeLoadShader(SwfMaskedGrabShaderName); + IncrMaskShader = SafeLoadShader(SwfIncrMaskShaderName); + DecrMaskShader = SafeLoadShader(SwfDecrMaskShaderName); EditorUtility.SetDirty(this); AssetDatabase.SaveAssets(); } @@ -150,6 +156,28 @@ namespace FlashTools.Internal { return material; } + Shader SelectShader(bool masked, SwfBlendModeData.Types blend_type) { + switch ( blend_type ) { + case SwfBlendModeData.Types.Normal: + case SwfBlendModeData.Types.Multiply: + case SwfBlendModeData.Types.Screen: + case SwfBlendModeData.Types.Lighten: + case SwfBlendModeData.Types.Add: + case SwfBlendModeData.Types.Subtract: + return CheckAndGetShader(masked ? MaskedShader : SimpleShader); + case SwfBlendModeData.Types.Darken: + case SwfBlendModeData.Types.Difference: + case SwfBlendModeData.Types.Invert: + case SwfBlendModeData.Types.Overlay: + case SwfBlendModeData.Types.Hardlight: + return CheckAndGetShader(masked ? MaskedGrabShader : SimpleGrabShader); + default: + throw new UnityException(string.Format( + "SwfSettings. Incorrect blend type: {0}", + blend_type)); + } + } + Shader CheckAndGetShader(Shader shader) { if ( !shader ) { FillShadersCache(); @@ -188,6 +216,18 @@ namespace FlashTools.Internal { material.SetInt("_SrcBlend", (int)BlendMode.One); material.SetInt("_DstBlend", (int)BlendMode.OneMinusSrcAlpha); break; + case SwfBlendModeData.Types.Darken: + material.SetInt("_BlendOp" , (int)BlendOp.Add); + material.SetInt("_SrcBlend", (int)BlendMode.One); + material.SetInt("_DstBlend", (int)BlendMode.OneMinusSrcAlpha); + material.EnableKeyword("FT_DARKEN_BLEND"); + break; + case SwfBlendModeData.Types.Difference: + material.SetInt("_BlendOp" , (int)BlendOp.Add); + material.SetInt("_SrcBlend", (int)BlendMode.One); + material.SetInt("_DstBlend", (int)BlendMode.OneMinusSrcAlpha); + material.EnableKeyword("FT_DIFFERENCE_BLEND"); + break; case SwfBlendModeData.Types.Add: material.SetInt("_BlendOp" , (int)BlendOp.Add); material.SetInt("_SrcBlend", (int)BlendMode.One); @@ -198,6 +238,24 @@ namespace FlashTools.Internal { material.SetInt("_SrcBlend", (int)BlendMode.One); material.SetInt("_DstBlend", (int)BlendMode.One); break; + case SwfBlendModeData.Types.Invert: + material.SetInt("_BlendOp" , (int)BlendOp.Add); + material.SetInt("_SrcBlend", (int)BlendMode.One); + material.SetInt("_DstBlend", (int)BlendMode.OneMinusSrcAlpha); + material.EnableKeyword("FT_INVERT_BLEND"); + break; + case SwfBlendModeData.Types.Overlay: + material.SetInt("_BlendOp" , (int)BlendOp.Add); + material.SetInt("_SrcBlend", (int)BlendMode.One); + material.SetInt("_DstBlend", (int)BlendMode.OneMinusSrcAlpha); + material.EnableKeyword("FT_OVERLAY_BLEND"); + break; + case SwfBlendModeData.Types.Hardlight: + material.SetInt("_BlendOp" , (int)BlendOp.Add); + material.SetInt("_SrcBlend", (int)BlendMode.One); + material.SetInt("_DstBlend", (int)BlendMode.OneMinusSrcAlpha); + material.EnableKeyword("FT_HARDLIGHT_BLEND"); + break; default: throw new UnityException(string.Format( "SwfSettings. Incorrect blend type: {0}", @@ -215,7 +273,7 @@ namespace FlashTools.Internal { public Material GetSimpleMaterial(SwfBlendModeData.Types blend_type) { return LoadOrCreateMaterial( - CheckAndGetShader(SimpleShader), + CheckAndGetShader(SelectShader(false, blend_type)), (dir_path, filename) => { return string.Format( "{0}/{1}_{2}.mat", @@ -226,7 +284,7 @@ namespace FlashTools.Internal { public Material GetMaskedMaterial(SwfBlendModeData.Types blend_type, int stencil_id) { return LoadOrCreateMaterial( - CheckAndGetShader(MaskedShader), + CheckAndGetShader(SelectShader(true, blend_type)), (dir_path, filename) => { return string.Format( "{0}/{1}_{2}_{3}.mat", diff --git a/Assets/FlashTools/Scripts/SwfAsset.cs b/Assets/FlashTools/Scripts/SwfAsset.cs index 0fa29a8..4dd9385 100644 --- a/Assets/FlashTools/Scripts/SwfAsset.cs +++ b/Assets/FlashTools/Scripts/SwfAsset.cs @@ -112,8 +112,13 @@ namespace FlashTools { Multiply, Screen, Lighten, + Darken, + Difference, Add, - Subtract + Subtract, + Invert, + Overlay, + Hardlight } public Types type; diff --git a/Assets/FlashTools/Scripts/SwfClip.cs b/Assets/FlashTools/Scripts/SwfClip.cs index 39ec19d..357369a 100644 --- a/Assets/FlashTools/Scripts/SwfClip.cs +++ b/Assets/FlashTools/Scripts/SwfClip.cs @@ -236,7 +236,7 @@ namespace FlashTools { } _meshRenderer.GetPropertyBlock(_curPropBlock); _curPropBlock.SetColor( - "_Color", + "_Tint", tint); _curPropBlock.SetTexture( "_MainTex",