【问题标题】:Unity Shader Vertex Format in Surface ShaderSurface Shader 中的 Unity Shader 顶点格式
【发布时间】:2012-03-22 16:05:53
【问题描述】:

我正在尝试使用表面着色器中的顶点数据来获取角度。我的相机以 0,0 为中心。 vertex函数中v.vertex在什么坐标系下?

#pragma surface surf Lambert vertex:vert nolightmap 

void vert (inout appdata_full v, out Input o) 
    {
        o.svc =(1-(_vc*v.vertex.z)/sqrt(pow(v.vertex.x,2) + pow(v.vertex.y,2) + pow(v.vertex.z,2)))/sqrt( 1 - _vc  * _vc);
    }

我认为这将是世界坐标系,但与在 3DS Max 中提前旋转以看起来相同顶点的对象相比,统一旋转的对象得到不同的结果。我实际上通过 v.vertex.xyz 收到了哪些数据?

【问题讨论】:

  • 你应该使用乘法而不是幂,反平方根而不是除以平方根。此外,GPU 是并行的并提供 swizzling。清理到 v.vertex.xyz * v.vertex.xyz。

标签: shader unity3d surface vertex


【解决方案1】:

对象/模型/本地空间。唯一不完全正确的情况是批处理网格。批处理将所有相关的网格物体放到同一个空间中,这个空间恰好与世界空间相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-21
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    相关资源
    最近更新 更多