Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 简单剪切,即遮罩、基于普通标准着色器的着色器和遮罩_Unity3d_Shader - Fatal编程技术网

Unity3d 简单剪切,即遮罩、基于普通标准着色器的着色器和遮罩

Unity3d 简单剪切,即遮罩、基于普通标准着色器的着色器和遮罩,unity3d,shader,Unity3d,Shader,“新”标准着色器具有剪切模式 但它与主纹理的alpha通道一起工作 我只想要另一个纹理,一个平凡的面具 然后简单地用它遮住主纹理 这是普通的Unity“new”标准着色器(透明)-我无法让简单的遮罩工作:/ 我想您只需要将o.Alpha=设置为类似于_Mask的Alpha?这似乎有效: Shader "Custom/SimpleMaskShader" { Properties { _MainTex ("Base (RGB)

“新”标准着色器具有剪切模式

但它与主纹理的alpha通道一起工作

我只想要另一个纹理,一个平凡的面具

然后简单地用它遮住主纹理

这是普通的Unity“new”标准着色器(透明)-我无法让简单的遮罩工作:/

我想您只需要将o.Alpha=设置为类似于_Mask的Alpha?

这似乎有效:

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"
 }