ここでは、フラグメントライティングについて説明します。
フラグメントライティングの計算式など詳細については、別途用意されている「CTR-グラフィックス入門」を参照してください。
頂点処理から出力された情報に対して、フラグメント単位で陰影付けを行う処理のことです。
参照テーブルを使用することで、複雑なライティング表現ができます。
図 1 法線ベクトルを補間した頂点シェーダーからの入力値に対し、フラグメント単位に陰影をつけたイメージ
補足:
フラグメントライティングのクオリティはポリゴン密度の影響を受けません。
フラグメントライティングは、「頂点処理から入力された情報」をもとにして、「ライトとマテリアルの設定からライティングの計算」を行い、プライマリカラーとセカンダリカラーの 2 種類のカラーを出力します。
図 2 プライマリカラーとセカンダリカラーを出力するまでの流れ
ここでは、フラグメント単位のライティングを行うさいのライトとマテリアルの設定について説明します。
表 1 ライトの種類ごとの設定項目
| カテゴリ | 項目 | 説明 |
|---|---|---|
| ライトの色 | アンビエントカラー ( 環境光 ) |
マテリアルのアンビエントカラーに影響を与える、ライトの色とアルファ値です。フラグメントライトで設定します。 |
| ディフューズカラー ( 拡散光 ) |
マテリアルのディフューズカラーに影響を与える、ライトの色とアルファ値です。フラグメントライトで設定します。 | |
| スペキュラーカラー 0 ( 鏡面光 0 ) |
マテリアルのスペキュラーカラー 0 に影響を与える、ライト の色とアルファ値です。フラグメントライトで設定します。 | |
| スペキュラーカラー 1 ( 鏡面光 1 ) |
マテリアルのスペキュラーカラー 1 に影響を与える、 ライト の色とアルファ値です。フラグメントライトで設定します。 | |
| ライトの姿勢 | 位置 | ライトの位置です。フラグメントライトにおいて、ワールド座標系で設定します。 |
| 方向 | ライトの方向です。フラグメントライトにおいて、ワールド座標系で設定します。アニメーションのついているノードと階層を組むことで、上位の階層から値を受け継ぐことができます。 | |
| ライトの減衰率 | 距離減衰 | 光の届く距離を減衰率で指定します。ポイントライトとスポットライトで使用します。 |
| スポットライト減衰 | 光の届く範囲を参照テーブルを用いた減衰率で指定します。スポットライトで使用します。 | |
| ハイライトの調整 | ジオメトリックファクタ | スペキュラーの入り方を調整します。マテリアルの設定において、有効 / 無効を決めます。 |
図 3 フラグメントライトで使用できるライトの種類と各ライトの光の照射
補足:
使用するライトを増やすとフラグメントの処理負荷が大きくなります。
アンビエントライトは、ポリゴンモデル全体を均一に照らすライトです。そのため、ライトの方向や減衰などのパラメータはありません。
表 2 マテリアルごとに設定できる項目
| カテゴリ | 項目 | 説明 |
|---|---|---|
| マテリアルの色 | エミッションカラー ( 放射色 ) |
物体を全体的に明るくする色です。マテリアルで設定します。 |
| アンビエントカラー ( 環境色 ) |
物体の陰側を表現する色です。マテリアルで設定します。 | |
| ディフューズカラー ( 拡散色 ) |
物体表面の質感を表現する色です。マテリアルで設定します。 | |
| スペキュラーカラー 0 ( 鏡面色 0 ) |
物体のハイライトを表現する色です。マテリアルで設定します。 | |
| スペキュラーカラー 1 ( 鏡面色 1 ) |
物体のハイライトを表現する色です。マテリアルで設定します。 | |
| シーン全体の環境光 | グローバルアンビエントカラー | シーンに配置された複数の物体全体をなじませる、環境光を表現する色です。フラグメントライトで設定します。 |
| ハイライトの制御 | 分布 0 | 参照テーブルを使用することで、スペキュラーカラー 0 のハイライト形状を制御します。 |
| 分布 1 | 参照テーブルを使用することで、スペキュラーカラー 1 のハイライト形状を制御します。 | |
| 反射 | 参照テーブルを使用することで、スペキュラーカラーの色を R 、 G 、 B 、 各成分ごとに制御します。 | |
| フレネル | 参照テーブルを使用することで、スペキュラーのアルファ成分を制御します。 |
マテリアルカラーとは、フラグメントライティングの計算に必要なポリゴンモデルのカラーです。
5 種類のカラーを設定できます。
図 4 左上方向から光があてられた球体モデル
上図は、左上方向から光があてられた球体モデルで、各マテリアルカラーが反映される場所を示したものです。
ジオメトリファクタとは、スペキュラーの見え方を調整する為の機能です。
この機能を使用することにより、スペキュラーが視線方向に対して正面に入るときは弱く、側面に入るときは強く見えます。
「ジオメトリファクタ 0 はスペキュラーカラー 0」 に「ジオメトリファクタ 1 はスペキュラーカラー 1」 に対して影響します。
図 5 ジオメトリファクタの機能を使用したときと使用しないときの見え方の違い
分布とは、セカンダリカラーの計算として、スペキュラーの形状に変化を与える要素です。
分布の設定は参照テーブルを使って行います。
分布 0 はスペキュラーカラー 0 に、分布 1 はスペキュラーカラー 1 に対して影響します。
図 6 参照テーブルを使用したスペキュラー形状の制御
反射とは、セカンダリカラーの計算として、スペキュラーの色を制御する要素です。
反射の設定は参照テーブルを使って行います。
図 7 参照テーブルを使用したスペキュラーカラーの制御
フレネルとは、セカンダリカラーの計算として、マテリアルの透明度 ( アルファ値 ) を制御する要素です。
フレネルの設定は参照テーブルを使って行います。
図 8 フレネルによる表現