頂点処理とピクセル処理

頂点処理とピクセル処理

ジオメトリの固定機能によるジオメトリ パイプラインを実行するのは、Microsoft® Direct3D® のトランスフォーム エンジンである。これは、ワールド内のモデルとビューアを検出し、スクリーン上に表示できるように頂点を射影し、頂点をビューポートに切り取る。また、トランスフォーム エンジンは、ライティング計算を実行して各頂点のディフューズ成分とスペキュラ成分を決定する。

ジオメトリ パイプラインは、頂点を入力として受け取る。トランスフォーム エンジンは、頂点に 3 つのトランスフォーム (ワールド トランスフォーム、ビュー トランスフォーム、および射影トランスフォーム) を適用し、結果を切り取り、そのすべてをラスタライザに渡す。次の図は、一連のステップを示している。

トランスフォーム パイプライン

パイプラインの最初の段階においてはトランスフォームは適用されず、モデルの頂点はすべてローカル座標系 (これはローカル原点の座標系) に対して宣言される。この座標系を一般にモデル空間と呼び、個々のローカル座標はモデル座標と呼ぶ。

ジオメトリ パイプラインは、最初にローカル座標系のモデルの頂点を、シーンのすべてのオブジェクトで使う座標系にトランスフォームする。頂点を再度定義し直すことを、ワールド トランスフォームと呼ぶ。この新しい向きは、通常はワールド空間と呼ばれ、ワールド空間の各頂点は、ワールド座標を使って宣言される。

次に、3D ワールドを記述する頂点をカメラに対する相対位置座標で定義し直す。つまり、アプリケーションはシーンの視点 (カメラの位置) を選択し、ワールド空間は視点の位置と方向に合わせて再定義される。すなわち、ワールド空間がカメラ空間にトランスフォームされる。これがビュー トランスフォームである。

次の段階では、射影トランスフォームが行われる。パイプラインにおけるこの段階では、通常、遠くのオブジェクトよりも近くのオブジェクトの方が大きく見えるようにするなど、ビューアからの距離を基準にオブジェクトがスケーリングされて、シーンに奥行きが生まれる。わかりやすくするために、このドキュメントでは、射影トランスフォーム後の頂点が存在する空間を、射影空間と呼ぶことにする。グラフィックス関連の書籍では、射影空間のことを、遠近補正後同次空間と呼ぶ場合もある。すべての射影トランスフォームによってシーンのオブジェクトのサイズがスケーリングされるとは限らない。このような射影は、アフィン射影または正射影と呼ばれることもある。

パイプラインの最後の段階では、スクリーン上で見えない頂点がすべて削除される。これにより、ラスタライザは、見えないオブジェクトに関して色とシェーディングの計算を実行する必要がなくなる。この処理はクリッピングと呼ばれる。クリッピングが完了すると、残りの頂点はビューポート パラメータに従ってスケーリングされ、スクリーン座標系にトランスフォームされる。その結果、これらの頂点 (シーンがラスタ化されたときにスクリーンに表示される) はスクリーン空間に存在するようになる。