unity导入3Dmax模型时。很多时候模型中都带黑白透明的材质,然而unity自带的shader没有这样的功能,自能自己写:
shader代码如下“
Shader "Esfog/FilterBlack" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader
{
Tags { "RenderType"="Opaque" }
//LOD 200
Cull Off
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
uniform sampler2D _MainTex;
struct VertexOutput
{
float4 pos:SV_POSITION;
float4 uv:TEXCOORD0;
};
VertexOutput vert(float4 vertex:POSITION,float4 uv:TEXCOORD0)
{
VertexOutput o;
o.pos = mul(UNITY_MATRIX_MVP,vertex);
o.uv = uv;
return o;
}
float4 frag(VertexOutput i):COLOR
{
float4 col;
col.rgba = tex2D(_MainTex,i.uv.xy);
col.a = 1;
if(col.r + col.g + col.b == 0)
{
col.a = 0;
}
return col;
}
ENDCG
}
}
FallBack "Diffuse"
}
本文介绍了一种在Unity中实现从3Dmax导入带有黑白透明材质的方法。由于Unity默认不支持该功能,文章提供了一个自定义shader的示例代码,通过检查RGB通道的总和来判断是否应用透明度。
1061

被折叠的 条评论
为什么被折叠?



