2012-03-22 10 views
0

サーフェスシェーダで頂点データを使用して角度を取得しようとしています。私は0,0を中心としたカメラを持っています。どの座標系で頂点関数の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で実際に受け取ったデータは何ですか?

+0

パワーの代わりに乗算を使用し、平方根で除算する代わりに逆平方根を使用する必要があります。また、GPUはパラレルであり、スウィズルを提供します。 v.vertex.xyz * v.vertex.xyzまでクリーンアップしてください。 – Jessy

答えて

1

オブジェクト/モデル/ローカルスペース。これが完全に真実ではない唯一のケースは、バッチ処理されたメッシュです。バッチ処理では、関連するすべてのメッシュを同じ空間に配置します。これは、ワールド空間と同じになります。