unity3d - 简单的cutout,即mask,基于普通标准shader的shader和一个mask
问题描述
“新”标准着色器有一个剪切模式,
但它适用于主纹理的 Alpha 通道。
我只想拥有另一种质感,一个平凡的面具,
并简单地用它来掩盖主要纹理。
这是普通的 Unity“新”标准着色器(透明)——我只是无法让简单的 _Mask 工作:/
我猜你只需要将 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"
}
推荐阅读
- parse-platform - 是否可以在 beforeSave 中设置用户 ACL?
- reactjs - 如何在 withFormik() 形式中使用 useMutation 钩子
- java - java - 如何在java swing gui中验证用户输入而不使用循环
- c# - addmob 测试广告不再显示
- python - 是否可以从子类的方法中更改超类变量并在另一个子类中使用它?
- java - 使用spring和hibernate的类转换错误:com.w2e.model.Session不能转换为com.w2e.model.Session
- shopify - Shopify 液体循环 current_tags
- r - 如何在r中总结二进制结果
- react-native - 笑话问题:找不到模块 ./images/ticketsMessageIcon.png 映射为:RelativeImageStub
- python - 更新数据框列并丢失日期索引