在片段着色器中实现一些向量和矩阵计算失败后,我尝试在顶点着色器中测试基本的矩阵计算,只是为了确定。
这符合预期:
uniform float4x4 _Identity4x4 = { 1.0, 0.0, 0.0, 0.0,
0.0, 1.0, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 0.0, 1.0 };
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos( mul( v.vertex, _Identity4x4 ));
...
但这造成了一场浩劫:
uniform float3x3 _Identity3x3 = { 1.0, 0.0, 0.0,
0.0, 1.0, 0.0,
0.0, 0.0, 1.0 };
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos( float4( mul( v.vertex.xyz, _Identity3x3 ), v.vertex.w));
...
我肯定我错过了一些重要的东西,但不能弄清楚或找到一些类似的在线。
1条答案
按热度按时间iecba09b1#
所以矩阵必须是静态的。不知道为什么4x4工作而3x3不工作...一个基本的解释可以在here中找到。