
场景上有个3转2的建筑模型,其中透明部分还是挡住了后面的怪物模型
shader是在Toon的基础上改的 代码是这样的
Shader "Cutoff Alpha"
{
Properties
{
_Color ("ColorSwitch", Color) = (1,1,1,1)
_ColorMain ("ColorMain", Color) = (1,1,1,1)
_OutlineColor ("Outline Color", Color) = (0,0,0,1)
_Outline ("Outline width", Range (.002, 0.03)) = 0.002
_MainTex ("Body (RGB)", 2D) = "white" { }
_MaskTex ("Mask", 2D) = "white" { }
_ToonShade ("ToonShader Cubemap(RGB)", CUBE) = "" { Texgen CubeNormal }
_TransVal ("Alpha", Range(0,1)) = 1
_UseSwitch ("UseSwitch", Range(0,1)) = 0
_Cutoff ("Alpha cutoff", Range(0,1)) = 0.5
}
SubShader
{
Tags { "LightMode"="ForwardBase" "RenderType"="Opaque" "Queue"="Transparent"}
Pass
{
Blend SrcAlpha OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert2
#pragma fragment frag2
#include "UnityCG.cginc"
sampler2D _MainTex;
samplerCUBE _ToonShade;
float4 _MainTex_ST;
float _TransVal;
float _UseSwitch;
sampler2D _MaskTex;
float4 _Color;
float4 _ColorMain;
float4 _MaskTex_ST;
struct appdata2 {
float4 vertex : POSITION;
float2 texcoord : TEXCOORD0;
float3 normal : NORMAL;
};
struct v2f2 {
float4 pos : POSITION;
float2 texcoord : TEXCOORD0;
float3 cubenormal : TEXCOORD1;
};
v2f2 vert2 (appdata2 v)
{
v2f2 o;
o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
o.cubenormal = mul (UNITY_MATRIX_MV, float4(v.normal,0));
return o;
}
float4 frag2 (v2f2 i) : COLOR
{
float4 col = tex2D(_MainTex, i.texcoord);
float4 cube = texCUBE(_ToonShade, i.cubenormal);
return float4(2.0f * cube.rgb * col.rgb, col.a * _TransVal);
}
ENDCG
}
}
}
问下各位大神哪里写的有问题啊?

