「クリップスペース座標」の版間の差分
Administrator (トーク | 投稿記録) 編集の要約なし |
編集の要約なし |
||
| 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> | ||
[[ビュー座標]] | [[ビュー座標]](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]] | |[[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]] | ||
| (-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空間で視界よりも外側にあるかどうかの判断に使われている。
OpenGLとVulkanでは頂点シェーダーの実行結果はクリップ座標内にあると見なされる。
クリップ座標のポイントは4つのコンポーネントで表される。
等式
ビュー座標(x, y, z)を正規化(その際の倍率をwに保存)したものである。
グラフィックスAPIごとの違い[編集 | ソースを編集]
xとyの値はどのグラフィクスAPIでも「-1 〜 +1」の範囲で統一されているが、zの値に関しては「-1 〜 +1」や「0 〜 1」などと範囲が異なる。この違いはシェーダーを移植する際に意外とハマるポイントである。
| グラフィックスAPI | X軸 | Y軸 | Z軸 | 備考 |
|---|---|---|---|---|
| Direct3D | (-1,+1) | (-1,+1) | (0,+1) | |
| Vulkan | (-1,+1) | (+1,-1) | (0,+1) | Direct3DやMetalと同じに見えるがY軸が反転している。 |
| OpenGL | (-1,+1) | (-1,+1) | (-1,+1) | こいつだけZ軸もマイナスまである。 |