ユーザ用ツール

サイト用ツール


opengl:lefthand

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
opengl:lefthand [2014/04/16 16:18] – [Screen 座標系] ogaopengl:lefthand [2014/04/16 17:57] (現在) – [OpenGL で Direct3D 座標系を使う (またはその逆)] oga
行 29: 行 29:
    
  
 +GPU ハードウエア的には両 API に対応するのが当たり前なので、一部の GPU を除いてどちらでも問題ありません。
  
 ===== OpenGL と Direct3D の座標系の違い ===== ===== OpenGL と Direct3D の座標系の違い =====
  
-^                       ^ Direct3D         ^ OpenGL           Programmable   ^                                        ^ +^                       ^ Direct3D         ^ OpenGL           座標系の変更   ^                                        ^ 
-^ 3D 座標系             | LH 左手系        | RH 右手系        | API 依存なし   | Cライブラリと Shader が自由に決定可能 +^ 3D 座標系             | LH 左手系        | RH 右手系        | 可能           | Cライブラリと Shader が自由に決定可能 
-^ Clip (device) 座標系 1.0 >= >= 0.0  1.0 >= >= -1.0 | API 依存あり   | Driver 内部に組み込まれているため Shader で変換が必要  |+^ Clip (device) 座標系  | Z/w: 0.0 ~ 1.0  Z/w: -1.0 ~ 1.0 | API 依存あり   | Driver 内部に組み込まれているため Shader で変換が必要  |
 ^ Screen 座標系         | 左上原点         | 左下原点         | API 依存あり   | API で決められているため、呼び出し時に変換が必要。Viewport/Scissor 等  | ^ Screen 座標系         | 左上原点         | 左下原点         | API 依存あり   | API で決められているため、呼び出し時に変換が必要。Viewport/Scissor 等  |
-^ UV 座標系             | 左上原点         | 左下原点         API 依存なし   | 自由に決定可能。データは上下が反転しているが API 上は違いがない。   | +^ UV 座標系             | 左上原点         | 左下原点         可能           | 自由に決定可能。データは上下が反転しているが API 上は違いがない。   | 
-^ Tangent 座標系        | 未定義(右手系)   | 未定義(右手系)   API 依存なし   | テクスチャデータと Shader で好きな様に定義できるが、RH のデータが多い  |+^ Tangent 座標系        | 未定義(右手系)   | 未定義(右手系)   可能           | テクスチャデータと Shader で好きな様に定義できるが、RH のデータが多い  |
  
  
行 157: 行 157:
 ===== Screen 座標系 ===== ===== Screen 座標系 =====
  
-OpenGL API は左下原点とみなします。 +OpenGL の Framebuffer (Renderbuffer) は左下原点とみなします。 
-例えば Viewport や Scissor 範囲の設定がこれに相当します。 +関連する API 郡、例えば Viewport や Scissor 範囲の設定も左下原点です。 
-API による固定機能なので自由に座標系を決めることができません。+固定機能なので自由に座標系を決めることができません。
  
-RenderBuffer 内容も D3D と OpenGL で異なります。 +また Texture へレンダリングを行った場合も左下原点とみなすため、 
-OpenGL は左下原点で格納されるためD3D ちょうど上下逆のイメージが生成されます。+生成されたイメージは Direct3D 上下逆の画像になります。
  
  
  
-===== Tangent 座標系 =====+ 
 + 
 + 
 +===== Tangent 座標系 (Normal Map 座標系) =====
  
  
行 173: 行 176:
 ObjectSpace の Normal Map であっても右手座標系 (RH) が用いられている場合が多くなります。 ObjectSpace の Normal Map であっても右手座標系 (RH) が用いられている場合が多くなります。
  
-そのため Direct3D であっても Normal Map だけは RH が用いられることが少なくありません。 +よって Direct3D でも Normal Map だけ RH が用いられることが少なくありません。 
-符号反転は Shader 内で低コストに実現できるため、Normal Map の座標系の違いはほとんど問題になりませんでした。+符号反転は Shader 内で低コストに実現できるため、Normal Map の座標系の違いはあまり問題になりませんでした。
  
-また Normal Map はデータ圧縮のため、Tangent Space でリピートやミラーを併用する場合があります。 +また Normal Map はデータ圧縮のため、地形データなどは Tangent Space でリピートやミラーを併用する場合があります。 
-この場合の座標系は一定ではなくなりま+そもそもこの場合の座標系は Polygon Face 毎に異なっており一定ではりません
  
 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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki