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

提供:MonoBook
編集の要約なし
編集の要約なし
 
(他の1人の利用者による、間の1版が非表示)
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軸もマイナスまである。