フラグメントライティング

ここでは、フラグメントライティングについて説明します。

フラグメントライティングの計算式など詳細については、別途用意されている「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 フレネルによる表現

フレネル