如何解决需要有关 Unity 广告牌着色器的帮助
所以我在网上找到了这个广告牌着色器,它运行良好,但它缺少一些我需要的东西,而且我以前从未使用过着色器,也不知道如何自己添加它。
>所以这里是我需要添加的内容: 1. 我需要为材质添加颜色属性,因为我的许多纹理都使用灰度,我需要为这些灰度设置颜色。 Material.color 对此不起作用
我的一些网格共享相同的位置,所以碰巧有些网格呈现在其他网格之前。这成为一个问题,因为错误的渲染器在前面,我似乎无法控制广告牌的顺序。我不知道这是否可能,但我很想添加某种图层排序的东西,它可以帮助我选择网格渲染器的顺序,以便正确的网格显示在其他人面前。也许类似于精灵渲染器的 2D 分层系统?
任何帮助将不胜感激!
这是着色器:Shader "Custom/Billboard" { Properties { _MainTex("Texture Image",2D) = "white" {} _ScaleX("Scale X",Float) = 1.0 _ScaleY("Scale Y",Float) = 1.0 } SubShader { Tags {"Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent"} ZWrite Off Blend SrcAlpha OneMinusSrcAlpha
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
// User-specified uniforms
uniform sampler2D _MainTex;
uniform float _ScaleX;
uniform float _ScaleY;
struct vertexInput
{
float4 vertex : POSITION;
float4 tex : TEXCOORD0;
};
struct vertexOutput
{
float4 pos : SV_POSITION;
float4 tex : TEXCOORD0;
};
vertexOutput vert(vertexInput input)
{
vertexOutput output;
output.pos = mul(UNITY_MATRIX_P,mul(UNITY_MATRIX_MV,float4(0.0,0.0,1.0))
+ float4(input.vertex.x,input.vertex.y,0.0)
* float4(_ScaleX,_ScaleY,1.0,1.0));
output.tex = input.tex;
return output;
}
float4 frag(vertexOutput input) : COLOR
{
return tex2D(_MainTex,float2(input.tex.xy));
}
ENDCG
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。