2016-05-21 7 views
2

Ich habe eine Kugel in meinem Spiel und ich muss eine Textur auf ihren Innenseiten haben. Dafür verwende ich ein Certail-Skript. Ich möchte auch Texturen mit einer Funktion, die ich in einem anderen Skript habe, ein- und ausblenden.Kombinieren von 2 Shadern in Einheit

Aber ich kann diese Skript nicht kombinieren. Egal was ich versuche, das Bild zeigt sich nicht in der Sphäre.

Die Shader sind:

Flip Insides:

Shader "Flip Normals" { 
     Properties { 
     _MainTex ("Base (RGB)", 2D) = "white" {} 
    } 
     SubShader { 

     Tags { "RenderType" = "Opaque" } 

     Cull Front 

     CGPROGRAM 

     #pragma surface surf Lambert vertex:vert 
     sampler2D _MainTex; 

     struct Input { 
      float2 uv_MainTex; 
      float4 color : COLOR; 
     }; 


     void vert(inout appdata_full v) 
     { 
      v.normal.xyz = v.normal * -1; 
     } 

     void surf (Input IN, inout SurfaceOutput o) { 
        fixed3 result = tex2D(_MainTex, IN.uv_MainTex); 
      o.Albedo = result.rgb; 
      o.Alpha = 1; 
     } 

     ENDCG 

     } 

     Fallback "Diffuse" 
} 

Und der Fader:

Shader "Custom/AlphaBlendTransition" { 
Properties { 
_Blend ("Blend", Range (0, 1)) = 0.0 
_BaseTexture ("Base Texture", 2D) = "" {} 
_OverlayTexture ("Texture 2 with alpha", 2D) = "" {} 

} 
SubShader { 
    Pass { 
     SetTexture[_BaseTexture] 
     SetTexture[_OverlayTexture] { 
      ConstantColor (0,0,0, [_Blend]) 
      combine texture Lerp(constant) previous 
     } 
    } 
    } 
} 

Ist es möglich, diese Shadern zu kombinieren und gleichzeitig die Textur aus den Sphären innen sehen?

Antwort

2

Es gibt eine Möglichkeit, beides zu vermeiden. Sie können eine beliebige 3D-Modellierungssoftware verwenden, um eine Kugel mit gespiegelten Normalen zu exportieren, und diese in Unity importieren, um nur ein Material mit dem AlphaBlendTransition-Shader anzuwenden.

+0

Das wird großartig! Vielen Dank! – Yuval3210