typedef struct{ Float ratten; /* ブロック・ライト用減衰率 */ Float ipd; /* ブロック・ライト用内積結果 */ Float nrr,frr; /* 距離限界値 */ Float cosi,cose; /* 角度限界値 */ Float idev,odev; /* 光線の距離計算用の係数設定 */ Float rate; /* 減衰率 */ Float intns; /* 輝度値 */ Int exp; /* 指数値 */ Int reserve; /* 予約 */ NJS_POINT3 lpnt; /* 光源位置ベクトル */ NJS_VECTOR lvctr; /* 光源方向ベクトル */ NJS_VECTOR lmvctr; /* ブロック・ライト用ベクトル */ NJS_ARGB atten; /* 光源計算用バッファ */ NJS_ARGB amb,dif,spc; /* 光源計算用バッファ */ NJS_ARGB mamb,mdif,mspc; /* 光源計算用バッファ */ } NJS_LIGHT_CAL, *NJS_LIGHT_CAL_PTR;
typedef struct { Int lsrc; /* 光源の種類 0x01:NJD_AMBIENT 0x02:NJD_DIR_LIGHT 0x03:NJD_LAMBERT_DIR 0x04:NJD_POINT_LIGHT 0x05:NJD_LAMBERT_POINT 0x08:NJD_SPOT_LIGHT 0x10:NJD_SPEC_DIR 0x13:NJD_PHONG_DIR 0x20:NJD_SPEC_POINT 0x25:NJD_PHONG_POINT 0x40:NJD_USER_LIGHT 0x80:NJD_SIMPLE_LIGHT 0xC0:NJD_BLOCK_LIGHT */ Float iamb; /* 環境光の強度 */ Float idif; /* ディフューズ光の強度 */ Float ispc; /* スペキュラの強度 */ Float nrang; /* 光源の距離減衰のはじまる距離 */ Float frang; /* 光源の効果をカットする距離 */ void* func; /* ユーザ指定のライト */ Angle iang; /* スペキュラ又はスポットライトが最大強度である角度*/ Angle oang; /* スペキュラ又はスポットライトの効果がなくなる角度*/ NJS_ARGB argb; /* 光源色 */ } NJS_LIGHT_ATTR, *NJS_LIGHT_ATTR_PTR;
typedef struct { NJS_MATRIX mtrx; /* マトリクス */ NJS_POINT3 pnt; /* 光源の位置ベクトル */ NJS_VECTOR vctr; /* 光源の方向ベクトル */ Int stat; /* 光源の状態(ON・OFF)*/ Int reserve; /* 予約 */ NJS_LIGHT_CAL ltcal; /* ライブラリの計算用作業領域 (通知なく変更する場合がありますので使用しないで下さい) */ NJS_LIGHT_ATTR attr; /* ライトの属性構造体 */ } NJS_LIGHT, *NJS_LIGHT_PTR;
typedef struct { NJS_ARGB ambient; /* マテリアルのアンビエント色 */ NJS_ARGB diffuse; /* マテリアルのマテリアル色 */ NJS_ARGB specular; /* マテリアルのスペキュラ色 */ Float exponent; /* 指数値 */ } NJS_LIGHT_MATERIAL;