「クリップスペース座標」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
 
6行目: 6行目:
  
 
クリップ座標のポイントは4つのコンポーネントで表される。
 
クリップ座標のポイントは4つのコンポーネントで表される。
 +
 
:<math>\begin{pmatrix}x_c\\y_c\\z_c\\w_c\end{pmatrix},</math>
 
:<math>\begin{pmatrix}x_c\\y_c\\z_c\\w_c\end{pmatrix},</math>
  
 
等式
 
等式
 +
 
:<math>\begin{pmatrix}x_n\\y_n\\z_n\end{pmatrix} = \begin{pmatrix}x_c / w_c\\y_c / w_c\\z_c / w_c\end{pmatrix}.</math>
 
:<math>\begin{pmatrix}x_n\\y_n\\z_n\end{pmatrix} = \begin{pmatrix}x_c / w_c\\y_c / w_c\\z_c / w_c\end{pmatrix}.</math>
  
[[ビュー座標]][[正規化]]したものであり、一般的には「−1〜+1」もしくは「0〜+1」の範囲に正規化された数値で表される。この範囲は[[グラフィックスAPI]]ごとに異なる。[[シェーダー]]を移植する際にこの違いに気がつかないとハマる。
+
[[ビュー座標]](x, y, z)を[[正規化]](その際の倍率をwに保存)したものである。
 +
 
 +
== グラフィックスAPIごとの違い ==
 +
xとyの値はどの[[グラフィクスAPI]]でも「-1 〜 +1」の範囲で統一されているが、zの値に関しては「-1 〜 +1」や「0 〜 1」などと範囲が異なる。この違いは[[シェーダー]]を移植する際に意外とハマるポイントである。
 
{| class="wikitable"
 
{| class="wikitable"
 
|+
 
|+
! グラフィックスAPI
+
!グラフィックスAPI
! X軸
+
!X軸
! Y軸
+
!Y軸
! Z軸
+
!Z軸
! 備考
+
!備考
 
|-
 
|-
| [[Direct3D]], [[Metal]]
+
|[[Direct3D]]
| (-1,1)
+
[[Metal]]
| (-1,1)
+
|(-1,+1)
| (0,1)
+
|(-1,+1)
|  
+
|(0,+1)
 +
|
 
|-
 
|-
| [[Vulkan]]
+
|[[Vulkan]]
| (-1,1)
+
|(-1,+1)
| (1,-1)
+
|(+1,-1)
| (0,1)
+
|(0,+1)
| Direct3DやMetalと同じに見えるがY軸が反転している。
+
|Direct3DやMetalと同じに見えるがY軸が反転している。
 
|-
 
|-
| [[OpenGL]], [[OpenGL ES]]
+
|[[OpenGL]]
| (-1,1)
+
[[OpenGL ES]]
| (-1,1)
+
|(-1,+1)
| (-1,1)
+
|(-1,+1)
| こいつだけZ軸もマイナスまである。
+
|(-1,+1)
 +
|こいつだけZ軸もマイナスまである。
 
|}
 
|}
  
 
[[category: 3DCG]]
 
[[category: 3DCG]]

2022年6月8日 (水) 06:01時点における最新版

クリップスペース座標英語:clip space coordinates)とは、表示範囲(クリッピング)を表す座標系のことである。長い名称なので「クリップ空間」や「クリップ座標」とも呼ばれる。

主に3D空間で視界よりも外側にあるかどうかの判断に使われている。

OpenGLVulkanでは頂点シェーダーの実行結果はクリップ座標内にあると見なされる。

クリップ座標のポイントは4つのコンポーネントで表される。

等式

ビュー座標(x, y, z)を正規化(その際の倍率をwに保存)したものである。

グラフィックスAPIごとの違い[編集 | ソースを編集]

xとyの値はどのグラフィクスAPIでも「-1 〜 +1」の範囲で統一されているが、zの値に関しては「-1 〜 +1」や「0 〜 1」などと範囲が異なる。この違いはシェーダーを移植する際に意外とハマるポイントである。

グラフィックスAPI X軸 Y軸 Z軸 備考
Direct3D

Metal

(-1,+1) (-1,+1) (0,+1)
Vulkan (-1,+1) (+1,-1) (0,+1) Direct3DやMetalと同じに見えるがY軸が反転している。
OpenGL

OpenGL ES

(-1,+1) (-1,+1) (-1,+1) こいつだけZ軸もマイナスまである。