在我的着色器中,我通过将vertex.position乘以某个矩阵来计算uv。 如果我不移动我的物体,这看起来很好,但是一旦我移动物体或缩放物体,顶点位置就会改变,紫外线也会出错。
如果着色器有一种存储参数的方法,就像这样,我只能在第一次计算uv,然后我只使用那个uv值。
if( ifCalculated==false)
{
ifCalculated=true;
uv=CalculateUV();
temp = uv;
}
else
{
uv = temp;
}
答案 0 :(得分:0)
UV坐标存储在每个顶点的网格中。您可以从代码更新它们,而不是从着色器:
Vector2[] CalculateUV(Vector3[] vertices);
...
if(!ifCalculated)
{
var mesh = GetComponent<MeshFilter>().mesh;
mesh.uv = CalculateUV(mesh.vertices);
ifCalculated = true;
}