0

在我的着色器中,我通过将 vertex.position 乘以某个矩阵来计算 uv。如果我不移动我的对象,这看起来很好,但是一旦我移动我的对象或缩放对象,顶点位置就会改变并且 uv 会出错。

如果shader有办法存储参数,像这样,那么我只能在第一次计算uv,然后我就使用那个uv值。

if( ifCalculated==false)
{
   ifCalculated=true;
   uv=CalculateUV();
   temp = uv;
}
else
{
  uv = temp;
}
4

1 回答 1

0

UV 坐标存储在每个顶点的网格中。您可以从代码更新它们,而不是从着色器:

Vector2[] CalculateUV(Vector3[] vertices);

...

if(!ifCalculated)
{
    var mesh = GetComponent<MeshFilter>().mesh;
    mesh.uv = CalculateUV(mesh.vertices);
    ifCalculated = true;
}
于 2016-10-15T13:04:18.103 回答