G3_Normal

# G3*_Normal

## 構文

      #include <nitro/gx/g3imm.h>
      #include <nitro/gx/g3b.h>
      #include <nitro/gx/g3c.h>

      void G3_Normal(fx16 x, fx16 y, fx16 z);

      // 以下ディスプレイリスト（コマンド列）作成用API
      void G3B_Normal(GXDLInfo* info, fx16 x, fx16 y, fx16 z);
      void G3C_Normal(GXDLInfo* info, fx16 x, fx16 y, fx16 z);
      void G3BS_Normal(GXDLInfo* info, fx16 x, fx16 y, fx16 z);
      void G3CS_Normal(GXDLInfo* info, fx16 x, fx16 y, fx16 z);

## 引数

info | コマンドリスト情報
x | 法線ベクトルのx成分
y | 法線ベクトルのy成分
z | 法線ベクトルのz成分

## 返り値

なし。

## 説明

法線ベクトルを設定します。x,y,zはそれぞれ、引数としては、-FX16_ONE以上、FX16_ONE-1以下を取ることができます。内部で符号+小数部9ビットの固定小数に変換されるので、-1.0(0xF000)以上0.998(0x0FF8)以下の値としてハードウェアに渡されます。ハードウェアによるベクトルの正規化は行われませんので、単位ベクトルを設定してください。
ライティングによって求められた頂点カラーは、次の `G3*_Color(), G3*_Normal(), G3*_MaterialColorDiffAmb()` (頂点カラーセットフラグ)のいずれかのコマンドによってカレント頂点カラーが更新されるまで有効です。
このため、実用上は複数の頂点で法線ベクトルを共有することが出来ます。なお、ライティングはNormal コマンド実行時のみ行われます。従って、ライトのON/OFF 切り替えや、ライトもしくはマテリアルのパラメータ変更後、その効果を頂点カラーへ反映させるためには Normal コマンドを再発行する必要があります。

## 参照

G3*_Color, G3*_MaterialColorDiffAmb

## 履歴

Ver. 2004/01/19