我把从互联网广告牌着色器,但我有说这个警告信息“在“自定义/广告牌着色器警告:。UNITY_MATRIX_MV的使用检测要变换顶点进入视野的空间,可以考虑使用UnityObjectToViewPos有更好的表现”
我不知道如何正确使用新功能的代码。这里是着色器:
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" "RenderType" = "Transparent" }
Pass{
CGPROGRAM
#include "UnityCG.cginc"
#pragma vertex vert
#pragma fragment frag
uniform sampler2D _MainTex;
uniform float _ScaleX;
uniform float _ScaleY;
struct vertexInput {
float4 vertex : POSITION;
float4 tex : TEXCOORD0;
};
struct vertexOutput {
float4 pos : POSITION;
float4 tex : TEXCOORD0;
};
vertexOutput vert(vertexInput input)
{
vertexOutput output;
output.pos = mul(UNITY_MATRIX_P,
mul(UNITY_MATRIX_MV, float4(0,0,0,1))
+ float4(input.vertex.xyz, 0));
output.tex = input.tex;
return output;
}
float4 frag(vertexOutput input) : COLOR
{
return tex2D(_MainTex, float2(input.tex.xy));
}
ENDCG
}
}
}
你真的不需要做任何事情。如果你想,虽然改变它,如果没有别的只是为了警告消失,可以更换此:
mul(UNITY_MATRIX_MV, float4(0,0,0,1))
有了这个:
UnityObjectToViewPos((float3)0)