opengl:lefthand
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
opengl:lefthand [2014/04/16 16:18] – [Screen 座標系] oga | opengl:lefthand [2014/04/16 17:57] (現在) – [OpenGL で Direct3D 座標系を使う (またはその逆)] oga | ||
---|---|---|---|
行 29: | 行 29: | ||
+ | GPU ハードウエア的には両 API に対応するのが当たり前なので、一部の GPU を除いてどちらでも問題ありません。 | ||
===== OpenGL と Direct3D の座標系の違い ===== | ===== OpenGL と Direct3D の座標系の違い ===== | ||
- | ^ ^ Direct3D | + | ^ ^ Direct3D |
- | ^ 3D 座標系 | + | ^ 3D 座標系 |
- | ^ Clip (device) 座標系 | + | ^ Clip (device) 座標系 |
^ Screen 座標系 | ^ Screen 座標系 | ||
- | ^ UV 座標系 | + | ^ UV 座標系 |
- | ^ Tangent 座標系 | + | ^ Tangent 座標系 |
行 157: | 行 157: | ||
===== Screen 座標系 ===== | ===== Screen 座標系 ===== | ||
- | OpenGL | + | OpenGL |
- | 例えば Viewport や Scissor 範囲の設定がこれに相当します。 | + | 関連する API 郡、例えば Viewport や Scissor 範囲の設定も左下原点です。 |
- | API による固定機能なので自由に座標系を決めることができません。 | + | 固定機能なので自由に座標系を決めることができません。 |
- | RenderBuffer | + | また Texture へのレンダリングを行った場合も左下原点とみなすため、 |
- | OpenGL は左下原点で格納されるために、D3D とちょうど上下逆のイメージが生成されます。 | + | 生成されたイメージは Direct3D |
- | ===== Tangent 座標系 ===== | + | |
+ | |||
+ | |||
+ | ===== Tangent 座標系 | ||
行 173: | 行 176: | ||
ObjectSpace の Normal Map であっても右手座標系 (RH) が用いられている場合が多くなります。 | ObjectSpace の Normal Map であっても右手座標系 (RH) が用いられている場合が多くなります。 | ||
- | そのため | + | よって |
- | 符号反転は Shader 内で低コストに実現できるため、Normal Map の座標系の違いはほとんど問題になりませんでした。 | + | 符号反転は Shader 内で低コストに実現できるため、Normal Map の座標系の違いはあまり問題になりませんでした。 |
- | また Normal Map はデータ圧縮のため、Tangent Space でリピートやミラーを併用する場合があります。 | + | また Normal Map はデータ圧縮のため、地形データなどは |
- | この場合の座標系は一定ではなくなります。 | + | そもそもこの場合の座標系は |
Matrix (Normal, Binormal, Tangent) で表現する場合は座標系の自由度が高いこと、 | Matrix (Normal, Binormal, Tangent) で表現する場合は座標系の自由度が高いこと、 | ||
- | API と関係なく Shader 内部の事情にすぎないことから、 | + | API と関係なく Shader 内部の事情にすぎないことから、特に問題なく相互利用が可能となります。 |
- | やはり特に問題にはなりません。 | + | なお、Quaternion が用いられている場合は軸(座標系)が固定になるので要注意。 |
opengl/lefthand.1397632717.txt.gz · 最終更新: 2014/04/16 16:18 by oga