Unity3d 简单剪切,即遮罩、基于普通标准着色器的着色器和遮罩
“新”标准着色器具有剪切模式 但它与主纹理的alpha通道一起工作 我只想要另一个纹理,一个平凡的面具 然后简单地用它遮住主纹理 这是普通的Unity“new”标准着色器(透明)-我无法让简单的遮罩工作:/ 我想您只需要将o.Alpha=设置为类似于_Mask的Alpha?这似乎有效:Unity3d 简单剪切,即遮罩、基于普通标准着色器的着色器和遮罩,unity3d,shader,Unity3d,Shader,“新”标准着色器具有剪切模式 但它与主纹理的alpha通道一起工作 我只想要另一个纹理,一个平凡的面具 然后简单地用它遮住主纹理 这是普通的Unity“new”标准着色器(透明)-我无法让简单的遮罩工作:/ 我想您只需要将o.Alpha=设置为类似于_Mask的Alpha?这似乎有效: Shader "Custom/SimpleMaskShader" { Properties { _MainTex ("Base (RGB)
Shader "Custom/SimpleMaskShader"
{
Properties
{
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
_MaskTex ("Mask", 2D) = "white" {}
_Cutoff ("Alpha cutoff", Range(0,1)) = 0.2
}
SubShader
{
Tags {"Queue"="AlphaTest" "IgnoreProjector"="True" "RenderType"="TransparentCutout"}
LOD 300
CGPROGRAM
#pragma surface surf Lambert alphatest:_Cutoff
sampler2D _MainTex;
sampler2D _MaskTex;
struct Input
{
float2 uv_MainTex;
float2 uv_MaskTex;
};
void surf (Input IN, inout SurfaceOutput o)
{
o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb;
o.Alpha = tex2D(_MaskTex, IN.uv_MaskTex).a;
}
ENDCG
}
FallBack "Transparent/Cutout/Diffuse"
}