2012-11-16 3 views
1

J'essaie de faire un simple shader diffuse dans Unity, mais avec une valeur alpha globale. Vous ajoutez donc une texture (sans alpha), puis définissez une valeur alpha dans le shader (float entre 0 et 1.) La texture entière est alors transparente.Unity Diffuse Shader avec Alpha Global

C'est ce que j'ai déjà, c'est juste le shader diffuse le plus basique que vous pouvez imager, même si je suis bloqué à l'ajout de l'alpha.

Properties 
{ 
    _Alpha ("Alpha", Range (0.0,1.0)) = 0.0 
    _MainTex ("Base (RGB) Transparency (A)", 2D) = "" { } 
} 

SubShader 
{ 
    Pass 
    { 
     SetTexture [_MainTex] { combine texture } 
    } 
} 

Merci,

Répondre

1

Il a été un moment que je l'ai fait tout cela, mais je pense que vous voulez quelque chose comme:

SubShader 
{ 
    Tags { "Queue" = "Transparent" } 

    Pass 
    { 
     Blend SrcAlpha OneMinusSrcAlpha 

     SetTexture [_MainTex] { 
      constantColor (1, 1, 1, [_Alpha]) 
      combine texture * constant 
     } 
    } 
} 

Notez que vous pouvez télécharger le intégré shaders pour l'unité de here, ils sont très utiles pour apprendre.

+1

cela fonctionne presque! il doit être "constantColor (1, 1, 1, [_Alpha])" sinon la texture est noire. Merci! –

+0

Glad it helps. Fixé. – user673679

+0

Awesomeness, je commence à comprendre ce truc shaderlab, l'une des choses les plus difficiles dans Unity je pense: P –

Questions connexes