diff --git a/Assets/FlashTools/Docs/CHANGELOG.md b/Assets/FlashTools/Docs/CHANGELOG.md index 0e9eb31..a55f4ee 100644 --- a/Assets/FlashTools/Docs/CHANGELOG.md +++ b/Assets/FlashTools/Docs/CHANGELOG.md @@ -3,6 +3,7 @@ * Fix locked elements problem * Fix optimizator bitmap trim problems * Add shape tween warning +* Remove excess "if" instruction from shaders ###### Version 1.3.7 * Fix multiple import diff --git a/Assets/FlashTools/Resources/Materials/SwfBaseCG.cginc b/Assets/FlashTools/Resources/Materials/SwfBaseCG.cginc index 415f147..4d21be8 100644 --- a/Assets/FlashTools/Resources/Materials/SwfBaseCG.cginc +++ b/Assets/FlashTools/Resources/Materials/SwfBaseCG.cginc @@ -135,9 +135,8 @@ inline swf_mask_v2f_t swf_mask_vert(swf_mask_appdata_t IN) { inline fixed4 swf_frag(swf_v2f_t IN) : SV_Target { fixed4 c = tex2D(_MainTex, IN.uv); - if ( _ExternalAlpha ) { - c.a *= tex2D(_AlphaTex, IN.uv).r; - } + fixed4 a = tex2D(_AlphaTex, IN.uv).r; + c.a = lerp(c.a, a.r, _ExternalAlpha); if ( c.a > 0.01 ) { c = c * IN.mulcolor + IN.addcolor; } @@ -147,9 +146,8 @@ inline fixed4 swf_frag(swf_v2f_t IN) : SV_Target { inline fixed4 swf_grab_frag(swf_grab_v2f_t IN) : SV_Target { fixed4 c = tex2D(_MainTex, IN.uv); - if ( _ExternalAlpha ) { - c.a *= tex2D(_AlphaTex, IN.uv).r; - } + fixed4 a = tex2D(_AlphaTex, IN.uv).r; + c.a = lerp(c.a, a.r, _ExternalAlpha); if ( c.a > 0.01 ) { c = c * IN.mulcolor + IN.addcolor; c = grab_blend(_GrabTexture, IN.screenpos, c); @@ -160,9 +158,8 @@ inline fixed4 swf_grab_frag(swf_grab_v2f_t IN) : SV_Target { inline fixed4 swf_mask_frag(swf_mask_v2f_t IN) : SV_Target { fixed4 c = tex2D(_MainTex, IN.uv); - if ( _ExternalAlpha ) { - c.a *= tex2D(_AlphaTex, IN.uv).r; - } + fixed4 a = tex2D(_AlphaTex, IN.uv).r; + c.a = lerp(c.a, a.r, _ExternalAlpha); if ( c.a < 0.01 ) { discard; } diff --git a/Assets/FlashTools/Scripts/Editor/FTEditor/Editors/SwfClipAssetPreview.cs b/Assets/FlashTools/Scripts/Editor/FTEditor/Editors/SwfClipAssetPreview.cs index 04e76c0..02d0206 100644 --- a/Assets/FlashTools/Scripts/Editor/FTEditor/Editors/SwfClipAssetPreview.cs +++ b/Assets/FlashTools/Scripts/Editor/FTEditor/Editors/SwfClipAssetPreview.cs @@ -174,13 +174,14 @@ namespace FTEditor.Editors { if ( isTargetValidForPreview ) { _previewUtils.BeginPreview(r, background); { - if ( targetAtlas ) { - _matPropBlock.SetTexture("_MainTex", targetAtlas); - } + _matPropBlock.SetTexture( + "_MainTex", + targetAtlas ? targetAtlas : Texture2D.whiteTexture); if ( targetAtlasA ) { _matPropBlock.SetTexture("_AlphaTex", targetAtlasA); _matPropBlock.SetFloat("_ExternalAlpha", 1.0f); } else { + _matPropBlock.SetTexture("_AlphaTex", Texture2D.whiteTexture); _matPropBlock.SetFloat("_ExternalAlpha", 0.0f); } ConfigureCameraForSequence(_previewUtils.m_Camera, targetSequence); diff --git a/Assets/FlashTools/Scripts/FTRuntime/SwfClip.cs b/Assets/FlashTools/Scripts/FTRuntime/SwfClip.cs index 677338f..0f7798b 100644 --- a/Assets/FlashTools/Scripts/FTRuntime/SwfClip.cs +++ b/Assets/FlashTools/Scripts/FTRuntime/SwfClip.cs @@ -348,13 +348,14 @@ namespace FTRuntime { var sprite = clip ? clip.Sprite : null; var atlas = sprite && sprite.texture ? sprite.texture : Texture2D.whiteTexture; var atlasA = sprite ? sprite.associatedAlphaSplitTexture : null; - if ( atlas ) { - _curPropBlock.SetTexture("_MainTex", atlas); - } + _curPropBlock.SetTexture( + "_MainTex", + atlas ? atlas : Texture2D.whiteTexture); if ( atlasA ) { _curPropBlock.SetTexture("_AlphaTex", atlasA); _curPropBlock.SetFloat("_ExternalAlpha", 1.0f); } else { + _curPropBlock.SetTexture("_AlphaTex", Texture2D.whiteTexture); _curPropBlock.SetFloat("_ExternalAlpha", 0.0f); } _meshRenderer.SetPropertyBlock(_curPropBlock); diff --git a/ProjectStuff/FlashTools.org b/ProjectStuff/FlashTools.org index 15aa127..4930d46 100644 --- a/ProjectStuff/FlashTools.org +++ b/ProjectStuff/FlashTools.org @@ -53,7 +53,7 @@ https://gist.github.com/talecrafter/111ea3345911bd238f4998b4d5a04bf3 *** Улучшения **** DONE Ворнинг на shape-tween **** TODO Интеграция с автобилдами -**** TODO Избавиться от условия на _ExternalAlpha +**** DONE Избавиться от условия на _ExternalAlpha **** TODO Добавить возможность брать bounds у клипа **** TODO Не реимпортить на каждый чих анимацию, хранить хэш dipyalov: фишка в том, что swf обновился, но и собранные ассеты-то тоже обновились