どのような操作でも、最下行を何か他のものにすることはできません。[0 0 0 1]
と頂点位置にはvec3が付属しています。これらは変換前にvec4にアップグレードする必要があります。しかし、私は常に投影/ビュー/ modeltoworldのためのmat4を使用してシェイダーを参照してください。それで、なぜmat4xではなくmat4を使うのが標準ですか? mat4xvec4の乗算の16バイトと1/4の転送を節約できました。ほとんどのシェーダがmat3x4ではなくmat4を使用するのはなぜですか?
1
A
答えて
3
例えば、透視投影変換は、[0 0 -1 0]
の最下位行を持ち、wの頂点座標に影響します。したがって、vec3
をシェーダーの頂点を表すために使用した場合、mat3x4
変換を適用した後、w座標に1.0の値が自動的に挿入され、が無効になりますそれらは眼から離れ得るようにオブジェクトが小さく見えることを可能にする魔法である透視分割ステップ(グラフィックス・システムは、X各を分割する場合、すなわち、Y、及びZがワットにより座標)。
一般に、ユニフォーム更新(投影変換マトリックスを更新するためのもので、シェイダープログラムバインディングごとに1回発生する可能性があります)あたり16バイトを節約することは、頂点属性またはテクスチャアップロードを最適化することと比べて何も行われません。事実上他のグラフィックス関連。
+0
ええ、私はパフォーマンス面をより論理的な側面に押し付けたいとは思わなかった。そしてええ、そうですよ、明るいところで、私はちょうど私が使っている図書館で見つけましたが – user2475269
関連する問題
- 1. なぜ分類ラベルがほとんどないのですか
- 2. なぜSystem.Arrayのほとんどのメソッドは静的ですか?
- 3. なぜGuavaソースの瓶はほとんど空ですか?
- 4. ほとんどの人がxnaのアップベクトルとしてy軸を使用するのはなぜですか?
- 5. なぜ、ほとんどのフレームワークはマージンを使用し、p、h1、h2などにパディングしないのですか?
- 6. ほとんどのMVCサンプルコントローラコードがActionResultを返すのはなぜですか?
- 7. ほとんどのプログラミング言語でカンマを使用できないのはなぜですか?
- 8. ラージオブジェクトヒープは、ほとんど空であるのはなぜですか?
- 9. vimはほとんどすべてのコマンドにレジスタを使用するのはなぜですか?
- 10. ほとんどのasyncioの例でloop.run_until_complete()を使用するのはなぜですか?
- 11. カスタムカメラの画質がシステムカメラほど高くないのはなぜですか?
- 12. 私の初期化とセットアップのほとんどは、viewDidLoadではなくviewWillAppearを使用できますか?
- 13. 出力時間がそれほど短くないのはなぜですか?
- 14. .NETコードのアクセスセキュリティ - なぜこれはほとんど使用されていないのですか?
- 15. ほとんどの言語で文字列リテラルでは単一ではない二重引用符が使用されるのはなぜですか?
- 16. なぜリングバッファーが小さいほど障害が遅くなるのですか?
- 17. なぜstd :: bind1stは「ほとんど使用不可能」と考えられるのですか?
- 18. なぜuitabbaritemに利用できる画像はほとんどないのですか?
- 19. サイドバーの例のほとんどが250を残し、余白が-250になったのはなぜですか?
- 20. Androidアプリがほとんどの端末と互換性がないのはなぜですか?
- 21. NodeJがMysqlではなくMongoDBを使用するのはなぜですか?
- 22. Linuxマシンでスタックサイズがほとんど常に132KiBになるのはなぜですか?
- 23. ほとんどのASP.NET MVP実装でPresenterメソッドを呼び出すのではなく、PresenterがViewイベントにアタッチするのはなぜですか?
- 24. なぜほとんど同じ文書のサイズが大きく異なる
- 25. なぜウェブサイトのほとんどはクッキーなしで動作できないのですか?
- 26. このファイルのほとんどすべてが出力で省略されるのはなぜですか?
- 27. TLSクライアント証明書が、ほとんどのブラウザでプリフライトリクエストに含まれないのはなぜですか?
- 28. どうか、なぜ「異なる」Apacheのプロジェクトのほとんどがそう
- 29. ほとんどの場合、トラバーサル転送のみがなぜですか?
- 30. 戻り値の代わりに反復継続フラグのほとんどのブロック使用引数がなぜですか?ほとんどの反復ブロックの
あなたはまだvec4が必要です(W = 1が必要です)。問題の行列はmat4x3(4列、3行)である必要があります。それ以外の場合、位置の翻訳は機能しません。 –