Page 2 sur 2

Re: [RESOLU] Blend textures avec soft mask par dessus

Publié : 16 Nov 2017 16:24
par boubouk50
Essaie ce code:

Code : Tout sélectionner

Shader "Screen_Clamped_Emissive_Fade_Alpha" {
  Properties {
    _Color ( "Main Color", Color ) = ( 1, 1, 1, 1 )
    _Blend ( "Blend", Range ( 0, 1 ) ) = 0.5
    _MainTex ("Main Map", 2D) = "white" {}
    _Texture2 ( "Texture 2", 2D ) = "white" {}
    _AlphaTex ("Alpha mask (R)", 2D) = "white" {}
    _EmissionPower ("Emission Power", Range(0,20)) = 1.0
  }
   
  SubShader {
    Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
    ZWrite Off
    Lighting Off 
    Blend SrcAlpha OneMinusSrcAlpha
    LOD 100
      
    Pass
    {
      SetTexture[_MainTex]
      SetTexture[_Texture2]
      {
        ConstantColor ( 0, 0, 0, [_Blend] )
        Combine texture Lerp( constant ) previous
      }    
    }

    Cull Off
      
    CGPROGRAM   
    #pragma surface surf NoLighting alpha noforwardadd
    #include "UnityCG.cginc"
      
    half4 LightingNoLighting (SurfaceOutput s, half3 lightDir, half atten) {
      half4 c;
      c.rgb = s.Albedo;
      c.a = s.Alpha;
      return c;
    }
    
      
    sampler2D _MainTex;
    sampler2D _Texture2;
    sampler2D _AlphaTex;
    fixed4 _Color;
    float _Blend;
    float _EmissionPower;
      
    struct Input {
      float2 uv_MainTex;
      float2 uv_Texture2;
      float2 uv_AlphaTex;
    };
      
    void surf(Input IN, inout SurfaceOutput o) {
      half4 tex = tex2D(_MainTex, IN.uv_MainTex) * _Color;
      half4 c;
      if (IN.uv_MainTex.x > 1.0 || IN.uv_MainTex.x < 0.0 || IN.uv_MainTex.y > 1.0 || IN.uv_MainTex.y < 0.0)
        c = half4 (0, 0, 0, 0);
      else
        c = tex;
    	half4 tex2  = tex2D ( _Texture2, IN.uv_Texture2 ) * _Color;
      o.Emission = lerp(c.rgb * _EmissionPower, tex2 * _EmissionPower, _Blend );
      o.Albedo = fixed4 (0, 0, 0, 0);
      o.Alpha = tex2D (_AlphaTex, IN.uv_AlphaTex).a;
    }
      
    ENDCG
  }   
  Fallback "Unlit/Texture"
}

Re: [RESOLU] Blend textures avec soft mask par dessus

Publié : 17 Nov 2017 12:17
par Jayme65
Merci pour le code...mais pas de changement Boubouk!
Si ça peut aider (^^ j'aurais p'tet dû y penser plus tôt) on peut voir l'effet..mais de l'autre coté (et donc renversé, ce qui ne m'arrange pas). Je parle donc bien du code que j'ai posté et du tien (pour ne pas que tu ailles chercher dans la direction de ton code spécifiquement)

Image

Re: [RESOLU] Blend textures avec soft mask par dessus

Publié : 17 Nov 2017 12:29
par boubouk50
C'est le Cull Off qui génère cela, il copie la face avant et l'applique à la face arrière. Il doit y avoir quelque chose qui ne fonctionne pas totalement. Aussi la face arrière est en miroir.
Si tu n'as pas besoin de cela, enlève le Cull Off ou bien mets Cull On.
Si tu veux la face arrière sans miroir, duplique ton mesh et tourne le à 180°
Si tu veux la face arrière en miroir, duplique ton mesh, tourne le à 180° et scale-le à -1 dans la largeur.