remove external alpha IF from shaders

This commit is contained in:
2017-05-15 04:49:25 +07:00
parent d591379acc
commit a38e05f955
5 changed files with 16 additions and 16 deletions

View File

@@ -3,6 +3,7 @@
* Fix locked elements problem * Fix locked elements problem
* Fix optimizator bitmap trim problems * Fix optimizator bitmap trim problems
* Add shape tween warning * Add shape tween warning
* Remove excess "if" instruction from shaders
###### Version 1.3.7 ###### Version 1.3.7
* Fix multiple import * Fix multiple import

View File

@@ -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 { inline fixed4 swf_frag(swf_v2f_t IN) : SV_Target {
fixed4 c = tex2D(_MainTex, IN.uv); fixed4 c = tex2D(_MainTex, IN.uv);
if ( _ExternalAlpha ) { fixed4 a = tex2D(_AlphaTex, IN.uv).r;
c.a *= tex2D(_AlphaTex, IN.uv).r; c.a = lerp(c.a, a.r, _ExternalAlpha);
}
if ( c.a > 0.01 ) { if ( c.a > 0.01 ) {
c = c * IN.mulcolor + IN.addcolor; 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 { inline fixed4 swf_grab_frag(swf_grab_v2f_t IN) : SV_Target {
fixed4 c = tex2D(_MainTex, IN.uv); fixed4 c = tex2D(_MainTex, IN.uv);
if ( _ExternalAlpha ) { fixed4 a = tex2D(_AlphaTex, IN.uv).r;
c.a *= tex2D(_AlphaTex, IN.uv).r; c.a = lerp(c.a, a.r, _ExternalAlpha);
}
if ( c.a > 0.01 ) { if ( c.a > 0.01 ) {
c = c * IN.mulcolor + IN.addcolor; c = c * IN.mulcolor + IN.addcolor;
c = grab_blend(_GrabTexture, IN.screenpos, c); 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 { inline fixed4 swf_mask_frag(swf_mask_v2f_t IN) : SV_Target {
fixed4 c = tex2D(_MainTex, IN.uv); fixed4 c = tex2D(_MainTex, IN.uv);
if ( _ExternalAlpha ) { fixed4 a = tex2D(_AlphaTex, IN.uv).r;
c.a *= tex2D(_AlphaTex, IN.uv).r; c.a = lerp(c.a, a.r, _ExternalAlpha);
}
if ( c.a < 0.01 ) { if ( c.a < 0.01 ) {
discard; discard;
} }

View File

@@ -174,13 +174,14 @@ namespace FTEditor.Editors {
if ( isTargetValidForPreview ) { if ( isTargetValidForPreview ) {
_previewUtils.BeginPreview(r, background); _previewUtils.BeginPreview(r, background);
{ {
if ( targetAtlas ) { _matPropBlock.SetTexture(
_matPropBlock.SetTexture("_MainTex", targetAtlas); "_MainTex",
} targetAtlas ? targetAtlas : Texture2D.whiteTexture);
if ( targetAtlasA ) { if ( targetAtlasA ) {
_matPropBlock.SetTexture("_AlphaTex", targetAtlasA); _matPropBlock.SetTexture("_AlphaTex", targetAtlasA);
_matPropBlock.SetFloat("_ExternalAlpha", 1.0f); _matPropBlock.SetFloat("_ExternalAlpha", 1.0f);
} else { } else {
_matPropBlock.SetTexture("_AlphaTex", Texture2D.whiteTexture);
_matPropBlock.SetFloat("_ExternalAlpha", 0.0f); _matPropBlock.SetFloat("_ExternalAlpha", 0.0f);
} }
ConfigureCameraForSequence(_previewUtils.m_Camera, targetSequence); ConfigureCameraForSequence(_previewUtils.m_Camera, targetSequence);

View File

@@ -348,13 +348,14 @@ namespace FTRuntime {
var sprite = clip ? clip.Sprite : null; var sprite = clip ? clip.Sprite : null;
var atlas = sprite && sprite.texture ? sprite.texture : Texture2D.whiteTexture; var atlas = sprite && sprite.texture ? sprite.texture : Texture2D.whiteTexture;
var atlasA = sprite ? sprite.associatedAlphaSplitTexture : null; var atlasA = sprite ? sprite.associatedAlphaSplitTexture : null;
if ( atlas ) { _curPropBlock.SetTexture(
_curPropBlock.SetTexture("_MainTex", atlas); "_MainTex",
} atlas ? atlas : Texture2D.whiteTexture);
if ( atlasA ) { if ( atlasA ) {
_curPropBlock.SetTexture("_AlphaTex", atlasA); _curPropBlock.SetTexture("_AlphaTex", atlasA);
_curPropBlock.SetFloat("_ExternalAlpha", 1.0f); _curPropBlock.SetFloat("_ExternalAlpha", 1.0f);
} else { } else {
_curPropBlock.SetTexture("_AlphaTex", Texture2D.whiteTexture);
_curPropBlock.SetFloat("_ExternalAlpha", 0.0f); _curPropBlock.SetFloat("_ExternalAlpha", 0.0f);
} }
_meshRenderer.SetPropertyBlock(_curPropBlock); _meshRenderer.SetPropertyBlock(_curPropBlock);

View File

@@ -53,7 +53,7 @@ https://gist.github.com/talecrafter/111ea3345911bd238f4998b4d5a04bf3
*** Улучшения *** Улучшения
**** DONE Ворнинг на shape-tween **** DONE Ворнинг на shape-tween
**** TODO Интеграция с автобилдами **** TODO Интеграция с автобилдами
**** TODO Избавиться от условия на _ExternalAlpha **** DONE Избавиться от условия на _ExternalAlpha
**** TODO Добавить возможность брать bounds у клипа **** TODO Добавить возможность брать bounds у клипа
**** TODO Не реимпортить на каждый чих анимацию, хранить хэш **** TODO Не реимпортить на каждый чих анимацию, хранить хэш
dipyalov: фишка в том, что swf обновился, но и собранные ассеты-то тоже обновились dipyalov: фишка в том, что swf обновился, но и собранные ассеты-то тоже обновились