##### Kamui2 Library - 構造体/その他のデータ型

# KMVERTEXCONTEXT

頂点コンテキスト構造体

### 定義

>     typedef struct tagKMVERTEXCONTEXT
>     {
>          KMDWORD  RenderState;  /* Render Context */
>          /*
>           *for Global Parameter
>           */
>          KMPARAMTYPE  ParamType;  /* Parameter Type */
>          KMLISTTYPE  ListType;  /* List Type */
>          KMCOLORTYPE  ColorType;  /* Color Type */
>          KMUVFORMAT  UVFormat;  /* UV Format */
>          /*
>           * for ISP/TSP Instruction Word
>           */
>          KMDEPTHMODE  DepthMode;  /* DepthMode */
>          KMCULLINGMODE  CullingMode;  /* Culling Mode */
>          KMDWORD  reserved00;  /* ScreenCoordination was deleted. */
>          KMSHADINGMODE  ShadingMode;  /* Shading Mode */
>          KMMODIFIER  SelectModifier;  /* Modifier Volume Valiant */
>          KMBOOLEAN  bZWriteDisable;  /* Z Write Disable */
>          /*
>           * for TSP Control Word
>           */
>          KMBLENDINGMODE  SRCBlendingMode; /* Source Blending Mode */
>          KMBLENDINGMODE  DSTBlendingMode; /* Desitination Blending Mode */
>          KMBOOLEAN  bSRCSel;  /* Source Select */
>          KMBOOLEAN  bDSTSel;  /* Distination Select */
>          KMFOGMODE  FogMode;  /* Fogging */
>          KMBOOLEAN  bUseSpecular;  /* Specular Highlight */
>          KMBOOLEAN  bUseAlpha;  /* Alpha */
>          KMBOOLEAN  bIgnoreTextureAlpha; /* Ignore Texture Alpha */
>          KMCLAMPMODE  ClampUV;  /* Clamp */
>          KMFLIPMODE  FlipUV;   /* Flip */
>          KMFILTERMODE  FilterMode;  /* Texture Filter */
>          KMBOOLEAN  bSuperSample;  /* Anisotoropic Filter */
>          KMDWORD  MipMapAdjust;  /* Mipmap D Adjust */
>          KMTEXTURESHADINGMODE TextureShadingMode; /* Texture Shading Mode */
>          KMBOOLEAN  bColorClamp;  /* ColorClamp Mode */
>          KMDWORD  PaletteBank;  /* Bank of Palette */
>          /*
>           * for Texture Control Bit/Address
>           */
>          PKMSURFACEDESC  pTextureSurfaceDesc; /* Texture Handle */
>          /*
>           * for Intensity FaceColor
>           */
>          KMFLOAT  fFaceColorAlpha; /* Face Color Alpha */
>          KMFLOAT  fFaceColorRed;  /* Face Color Red */
>          KMFLOAT  fFaceColorGreen; /* Face Color Green */
>          KMFLOAT  fFaceColorBlue;  /* Face Color Blue */
>          /*
>           * for Intensity Specular Highlight
>           */
>          KMFLOAT  fOffsetColorAlpha; /* Specular Color Alpha  */
>          KMFLOAT  fOffsetColorRed; /* Specular Color Red */
>          KMFLOAT  fOffsetColorGreen; /* Specular Color Green */
>          KMFLOAT  fOffsetColorBlue; /* Specular Color Blue */
>          /*
>           * Internal use values.
>           */
>          KMDWORD  GLOBALPARAMBUFFER; /* Grobal Parameter Buffer */
>          KMDWORD  ISPPARAMBUFFER;  /* ISP Parameter Buffer */
>          KMDWORD  TSPPARAMBUFFER;  /* TSP Parameter Buffer */
>          KMDWORD  TexturePARAMBUFFER; /* Texture Parameter Buffer */
>          /*
>           * for ModifierInstruction
>           */
>          KMDWORD  ModifierInstruction; /* ModifierInstruction */
>          KMFLOAT  reserved01;  /* Bounding Box was deleted. */
>          KMFLOAT  reserved02;  /* Bounding Box was deleted. */
>          KMFLOAT  reserved03;  /* Bounding Box was deleted. */
>          KMFLOAT  reserved04;  /* Bounding Box was deleted. */

>          KMBOOLEAN  bDCalcExact;  /* D Calc Exact */
>          KMDWORD  reserved05;  /* ScreenCoordination was deleted. */
>          KMUSERCLIPMODE  UserClipMode;  /* UserClip Mode */

>     } KMVERTEXCONTEXT, *PKMVERTEXCONTEXT, **PPKMVERTEXCONTEXT;

### メンバ

> RenderState | レンダーコンテキスト
> ParamType | パラメータタイプ:for Global Parameter
> ListType | リストタイプ:for Global Parameter
> ColorType | カラータイプ:for Global Parameter
> UVFormat | UVフォーマット :for Global Parameter
> DepthMode | ディプスモード:for ISP/TSP Instruction Word
> CullingMode | カリングモード:for ISP/TSP Instruction Word
> reserved00 | 未使用
> ShadingMode | シェーディングモード: Mode:for ISP/TSP Instruction Word
> SelectModifier | Modifier Volume Valiant:for ISP/TSP Instruction Word
> bZWriteDisable | Z Write Disable:for ISP/TSP Instruction Word
> SRCBlendingMode | ソースブレンディングモード:for TSP Control Word
> DSTBlendingMode | ディスティネーションブレンディングモード:for TSP Control Word
> bSRCSel | ソース選択:for TSP Control Word
> bDSTSel | ディスティネーション選択:for TSP Control Word
> FogMode | フォグモード :for TSP Control Word
> bUseSpecular | スペキュラー・フラグSpecular Highlight :for TSP Control Word
> bUseAlpha | アルファ・フラグ :for TSP Control Word
> bIgnoreTextureAlpha | テクスチャアルファ無視フラグ:for TSP Control Word
> ClampUV | クランプフラグ :for TSP Control Word
> FlipUV | フリップフラグ :for TSP Control Word
> FilterMode | テクスチャフィルタTexture Filter :for TSP Control Word
> bSuperSample | Anisotoropic Filter :for TSP Control Word
> MipMapAdjust | Mipmap D Adjust :for TSP Control Word
> TextureShadingMode | テクスチャシェーディングモード:for TSP Control Word
> bColorClamp | カラークランプモード:for TSP Control Word
> PaletteBank | パレットのバンク:for TSP Control Word
> pTextureSurfaceDesc | テクスチャハンドル: for Texture Control Bit/Address
> fFaceColorAlpha | インテンシティ・フェイスカラー(アルファ)
> fFaceColorRed | インテンシティ・フェイスカラー(赤)
> fFaceColorGreen | インテンシティ・フェイスカラー(緑)
> fFaceColorBlue | インテンシティ・フェイスカラー(青)
> fOffsetColorAlpha | インテンシティ・スペキュラー・ハイライトカラー(アルファ)
> fOffsetColorRed | インテンシティ・スペキュラー・ハイライトカラー(赤)
> fOffsetColorGreen | インテンシティ・スペキュラー・ハイライトカラー(緑)
> fOffsetColorBlue | インテンシティ・スペキュラー・ハイライトカラー(青)
> GLOBALPARAMBUFFER | グローバルパラメータバッファ(システム使用)
> ISPPARAMBUFFER | ISPパラメータバッファ(システム使用)
> TSPPARAMBUFFER | TSPパラメータバッファ(システム使用)
> TexturePARAMBUFFER | テクスチャパラメータバッファ(システム使用)
> ModifierInstruction | モディファイアインストラクション
> reserved01 | 未使用
> reserved02 | 未使用
> reserved03 | 未使用
> reserved04 | 未使用
> bDCalcExact | D Calc Exact
> reserved05 | 未使用
> UserClipMode | ユーザークリップモード

### 解説

> KMVERTEXCONTEXTは、従来のKamui1ライブラリの互換性用に提供されているものです。 Kamui2では新たにKMSTRIPCONTEXTが定義されており、こちらの方が効率的で高速です。 Kamui2では、KMSTRIPCONTEXTの使用を推奨します。

> Kamui1では、頂点（ストリップ）ごとに設定可能なレンダリングパラメータを、KMVERTEXCONTEXT構造体に集めてあります。アプリケーションでこの構造体を複数持ち、切り替えて使うことが可能です。 最初にアプリケーションでKMVERTEXCONTEXT構造体を確保し、各メンバの値を設定します。 次にkmProcessVertexRenderStateで、 KMVERTEXCONTEXTを完成させます。 最後にkmSetVertexRenderStateによって、システムにこの構造体を登録します。 完成している構造体の切り替えは、 kmSetVertexRenderStateのみの実行で可能です。 すでに完成しているKMVERTEXCONTEXT構造体のメンバの一部を変更する場合は、再度kmProcessVertexRenderStateとkmSetVertexRenderStateを実行する必要があります。

> また、モデファイアボリュームの影響を受ける(２パラメータ)ポリゴンでは、モデファイアボリューム内と、 モデファイアボリューム外で２つのKMVERTEXCONTEXT構造体を必要とします。 アプリケーションで２つのKMVERTEXCONTEXT構造体をアロケートし、それぞれにモデファイアボリューム内と、 モデファイアボリューム外のパラメータを設定します。モデファイアボリューム外のパラメータは、 kmProcessVertexRenderStateとkmSetVertexRenderStateでシステムに登録します。 モデファイアボリューム内のパラメータは、 kmProcessVertexRenderStateとkmSetModifierRenderState でシステムに登録します。

> kmProcessVertexRenderState においてVERTEXCONTEXTを最初に使用する時には、 すべてのメンバを指定する必要があります。RenderStateにすべてのフラグを設定し、 すべてのパラメータを定義してください。未定義のビットがあった場合の動作は保証されません。

> この構造体は、頂点（ストリップ）ごとに設定可能なパラメータを集めた構造体で、以下のメンバを持ちます。

> メンバの一部または全部の内容を変更する場合は、 kmProcessVertexRenderState実行前に、下記のステータスフラグにより、構造体のRenderStateに書き換えたいメンバの種類をセットします。 同時に、それに応じた構造体メンバに値を設定します。

> RenderStateに設定できるステータスフラグは以下のとおりです。

> 定義 | 値 | 意味
> KM_PARAMTYPE | 0x00100000 | パラメータのタイプ
> KM_LISTTYPE | 0x00200000 | リストのタイプ
> KM_STRIPLENGTH | 0x08000000 | ストリップ分割長
> KM_USERCLIPMODE | 0x10000000 | ユーザークリップモード
> KM_COLORTYPE | 0x00400000 | カラーフォーマット指定
> KM_UVFORMAT | 0x00800000 | UVフォーマット指定
> KM_DEPTHMODE | 0x00000001 | Z値比較モードの設定
> KM_CULLINGMODE | 0x00000002 | カリングモードの設定
> KM_SCREENCOORDINATION | 0x00000004 | 座標系の設定
> KM_SHADINGMODE | 0x00000008 | Texture Gouraud Texture Flat, Non-Texture Gouraud
> KM_MODIFIER | 0x00000010 | Modifier Volume Valiant No or A
> KM_ZWRITEDISABLE | 0x00000020 | Z Write Disable or not
> KM_SRCBLENDINGMODE | 0x00000040 | Blending Mode
> KM_DSTBLENDINGMODE | 0x00000080 | Blending Mode
> KM_SRCSELECT | 0x01000000 | SRC Blending select
> KM_DSTSELECT | 0x02000000 | DST Blending select
> KM_FOGMODE | 0x00000100 | Fog Non or Vertex or Table
> KM_USESPECULAR | 0x00000200 | Specular Highlighted or not
> KM_USEALPHA | 0x00000400 | Alpha Blended or not
> KM_IGNORETEXTUREALPHA | 0x00000800 | Ignore Texture Alpha
> KM_FLIPUV | 0x00002000 | Texture Flipping
> KM_CLAMPUV | 0x00001000 | Texture Clamping
> KM_FILTERMODE | 0x00004000 | Point-sample or Bilinear or Trilinear
> KM_SUPERSAMPLE | 0x00008000 | Anisotoropic Filter
> KM_MIPMAPDADJUST | 0x00010000 | MipMap D Adjust
> KM_TEXTURESHADINGMODE | 0x00020000 | Modulate, Decal Alpha, Modulate Alpha
> KM_COLORCLAMP | 0x00040000 | Color Clamping
> KM_PALETTEBANK | 0x00080000 | Palette Bank
> KM_DCALCEXACT | 0x04000000 | DCALC Exact

> それぞれのメンバについて以下の値を設定できます。

> メンバParamTypeは、頂点データのタイプを指定します。 以下のいずれかを選択できます。

> 定義 | 値 | 意味
> KM_POLYGON | 0 | 通常の三角ポリゴン
> KM_MODIFIERVOLUME | 1 | MODIFIER VOLUME(SHADOW/LIGHT)
> KM_SPRITE | 2 | スプライト(四角ポリゴン)

> メンバ ListTypeは、頂点データを格納するリストのタイプを指定します。 以下のいずれかを選択できます。

> 定義 | 値 | 意味
> KM_OPAQUE_POLYGON | 0 | 不透明ポリゴン
> KM_OPAQUE_MODIFIER | 1 | 不透明モデファイアボリューム
> KM_TRANS_POLYGON | 2 | 半透明／透明ポリゴン
> KM_TRANS_MODIFIER | 3 | 半透明／透明モデファイアボリューム
> KM_PUNCHTHROUGH_POLYGON | 4 | パンチスルーポリゴン

> メンバ UserClipModeは、 KmSetUserClippingで指定したクリッピング領域に対する効果を指定します。 以下のいずれかが指定できます。

> 定義 | 値 | 意味
> KM_USERCLIP_DISABLE | 0 | ユーザークリップを無効にします。
> KM_USERCLIP_RESERVE | 1 | これは指定しないでください。
> KM_USERCLIP_INSIDE | 2 | 指定したクリッピング領域の内側のみ有効となります。
> KM_USERCLIP_OUTSIDE | 3 | 指定したクリッピング領域の外側のみ有効となります。

> メンバ ColorTypeは、 頂点のカラーフォーマットを指定します。 以下のパラメータより選択できます。 KMCOLORTYPE

> 定義 | 値 | 意味
> KM_PACKEDCOLOR | 0 | 32bit ARGB packed color format
> KM_FLOATINGCOLOR | 1 | 32bit x 4 floating color format
> KM_INTENSITY | 2 | Intensity format
> KM_INTENSITY_PREV_FACE_COL | 3 | Intensity format

> KM_INTENSITY_PREV_FACE_COLは、 Face Colorは直前に登録されたものをそのまま使用します。このタイプのポリゴンを使用する場合は、同じシーンのなかで、この前にKM_INTENSITYタイプのポリゴンを最低１度は使用する必要があります。

> スプライトポリゴンの場合は、ColorTypeはKM_PACKEDCOLORを指定してください。

> UVFormat 頂点データに含まれているU,V座標パラメータの、フォーマットを指定します。32bit UVでは、U,V座標をIEEE754の32bit Floatフォーマットで表現します。16bit UVでは、32bit UVのMantissa部分の下16bitを削除して精度を低下させた値で表現します。 以下のいずれかが選択できます。

> KMUVFORMAT

> 定義 | 値 | 意味
> KM_32BITUV | 0 | 32bit KMFLOAT format
> KM_16BITUV | 1 | 16bit KMFLOAT format

> スプライトポリゴンの場合は、UVFormatはKM_16BITUVを指定してください。

> DepthMode Z値比較のモードを指定します。 以下のいずれかが選択できます。

> KMDEPTHMODE

> 定義 | 値 | 意味
> KM_IGNORE | 0 | 描画しない
> KM_LESS | 1 | 比較結果が小さいとき描画する
> KM_EQUAL | 2 | 比較結果が等しいとき描画する
> KM_LESSEQUAL | 3 | 比較結果が等しいか小さいとき描画する
> KM_GREATER | 4 | 比較結果が大きいとき描画する
> KM_NOTEQUAL | 5 | 比較結果が等しくないとき描画する
> KM_GREATEREQUAL | 6 | 比較結果が等しいか大きいとき描画する
> KM_ALWAYS | 7 | 比較をしないで描画する

> CullingMode CULL無し、時計周りCulling、反時計周りCulling、小ポリゴンCullingの4つのパラメータを選択できます。以下のいずれかが選択できます。

> KMCULLINGMODE

> 定義 | 値 | 意味
> KM_NOCULLING | 0 | CULL無し
> KM_CULLSMALL | 1 | 小ポリゴンCulling
> KM_CULLCCW | 2 | 反時計周りCulling
> KM_CULLCW | 3 | 時計周りCulling

> KM_CULLSMALLを設定する場合には、グローバル設定のkmSetCullingRegisterを行う必要があります。また、KM_CULLCCW,KM_CULLCWを指定した場合には、同時に小ポリゴンCullingも行われます。

> ScreenCoordination 画面座標系(1/w)または投影座標系(w)を選択します。

> KMSCREENCOORDINATION

> 定義 | 値 | 意味
> KM_SCREEN | 0 | 画面座標系(1/w)
> KM_PROJECTIVE | 1 | 投影座標系(w)

> （このメンバはARC1でのみ有効です。Holly(CLX1/2)では無視されます。Holly(CLX1/2)では常に画面座標系(KM_SCREEN)で座標を与えなければなりません。）

> bDCalcExact

> KMDCALCEXACT

> TRUEを設定するとCLX1/2より追加された正確なDパラメータ計算を行います。 ARC1ではMipMapの選択が画面右上と画面左下で違うという現象が有りましたが、これを解消します。 但し、計算に時間がかかるため動作速度が低下する場合が有ります。 FALSEのときにはARC1と同じDパラメータ計算を行います。 なお、ARC1では、本フラグは意味を持ちません。

> ShadingMode シェーディングモードを選択します。テクスチャ有り/無し、Flat/Gouraudで４つの組み合わせが有ります。

> KMSHADINGMODE

> 定義 | 値 | 意味
> KM_NOTEXTUREFLAT | 0 | テクスチャ無しフラットシェーディング
> KM_NOTEXTUREGOURAUD | 1 | テクスチャ無しグーローシェーディング
> KM_TEXTUREFLAT | 2 | テクスチャありフラットシェーディング
> KM_TEXTUREGOURAUD | 3 | テクスチャありグーローシェーディング

> KM_TEXTUREFLATを指定した場合、頂点ストリップの、第１、第２頂点目のカラーデータは無効となります。

> スプライトポリゴンの場合は、ShadingModeはKM_NOTEXTUREFLATまたはKM_TEXTUREFLATを指定してください。

> SelectModifier モディファイアボリュームの影響をうける（２パラメータポリゴン、またはチープシャドウの影響を受けさせたいポリゴン)か否かを指定します。

> モディファイアボリュームの影響ありに設定した場合は必ず２パラメータポリゴン用の頂点データ構造体を使用するようにしてください。ただし、チープシャドウモードの(kmSetCheapShadowModeを実行した) 場合は、１パラメータポリゴン用の頂点データ構造体を使用してください。

> KMMODIFIER

> 定義 | 値 | 意味
> KM_NOMODIFIER | 0 | 使用しない
> KM_MODIFIER_A | 1 | モデファイアボリュームAの影響をうける

> ARC1及びHOLLYはモディファイアボリュームAのみに対応します。

> bZWriteDisable TRUEを指定した場合、Z値の更新を禁止します。

> SRCBlendingMode, DSTBlendingMode Blendingモードを指定します。D3D仕様のBlendingモードに対応します。 以下のいずれかの値を取ることができます。

> KMBLENDINGMODE

> 定義 | 意味
> KM_BOTHINVSRCALPHA | ソースのブレンディングパラメータを(1-αs, 1-αs, 1-αs, 1-αs)、デスティネーションのブレンディングパラメータを(αs,αs,αs,αs)とします。SRCBlendingModeに設定したときにはDSTBlendingModeが、DSTBlendingModeに設定したときにはSRCBlendingModeがそれぞれオーバーライドされます。
> KM_BOTHSRCALPHA | ソースのブレンディングパラメータを(αs,αs,αs,αs)、デスティネーションのブレンディングパラメータを(1-αs, 1-αs, 1-αs, 1-αs)とします。SRCBlendingModeに設定したときにはDSTBlendingModeが、DSTBlendingModeに設定したときにはSRCBlendingModeがそれぞれオーバーライドされます。
> KM_DESTALPHA | ブレンディングパラメータを(αd,αd,αd,αd)とします。
> KM_DESTCOLOR | ブレンディングパラメータを(αd, Rd, Gd, Bd)とします。
> KM_INVDESTALPHA | ブレンディングパラメータを(1-αd, 1-αd, 1-αd, 1-αd)とします。
> KM_INVDESTCOLOR | ブレンディングパラメータを(1-αd, 1-Rd, 1-Gd, 1-Bd)とします。
> KM_INVSRCALPHA | ブレンディングパラメータを(1-αs, 1-αs, 1-αs, 1-αs)とします。
> KM_INVSRCCOLOR | ブレンディングパラメータを(1-αs, 1-Rs, 1-Gs, 1-Bs)とします。
> KM_SRCALPHA | ブレンディングパラメータを(αs,αs,αs,αs)とします。
> KM_SRCCOLOR | ブレンディングパラメータを(αs, Rs, Gs, Bs)とします。
> KM_ONE | ブレンディングパラメータを(1, 1, 1, 1)とします。
> KM_ZERO | ブレンディングパラメータを(0, 0, 0, 0)とします。

> 注)(αs, Rs, Gs, Bs)はソースカラー、(αd, Rd, Gd, Bd),はデスティネーションカラーを示します。 バックグラウンドプレーンのためのVERTEXCONTEXTでは、DSTBlendingModeにはゼロを設定してください。（kmSetBackGroundRenderStateを参照願います）

> 定義 | 意味
> bSRCSel | ソースカラーとして、セカンドアキュームレーションバッファの内容を使用します。
> bDSTSel | デスティネーションカラーとして、セカンドアキュームレーションバッファの内容を使用します。

> FogMode | フォグモードの設定を行います。

> デプス値に応じてテーブル参照によりフォグを行うFogTableモードと、各頂点のOffsetColorのαチャネル部にフォグパラメータを設定するFogVartexモードの２つが使用できます。 以下の値を取ることができます。

> KMFOGMODE

> KM_FOGTABLE | デプス値に対応するテーブルデータから線形補完してFogのα値を生成します。
> KM_FOGTABLE_2 | ポリゴンの色をFogの色に、ポリゴンのα値をFogのα値に置き換えます。
> KM_FOGVERTEX | OffsetColorのα値を、Fogのα値として使用します。
> KM_NOFOG | Fogの処理を行いません。

> bUseSpecular Specular Highlight（オフセットカラー）を使用するかどうか指定します。TRUEを指定した場合オフセットカラーを使用します。オフセットカラーを使用する場合には、オフセットカラーデータを含む頂点データ構造体を使用してください。

> BUMPマッピングを使用する場合は、bUseSpecularをTRUEにしてください。

> bUseAlpha TRUEを指定した場合シェーディングカラー中のαビットを有効とします。

> bIgnoreTextureAlpha TRUEを指定した場合テクスチャデータ中のαビットを無視します。ハードウェアはテクスチャに含まれる透明度情報を無視します。 FlipUV テクスチャを繰り返しマッピングするとき、パターンをFlip(反転)するか否かを指定します。下記の中のいずれかを指定することができます。なお、FlipUVとClampUVを同時に指定すると、Kamui1はFlipUVの指定を無視します。

> KMFLIPMODE

> 定義 | 意味
> KM_NOFLIP | Flipしません
> KM_FLIP_V | V座標方向にFlipします
> KM_FLIP_U | U座標方向にFlipします
> KM_FLIP_UV | U,V座標方向にFlipします

> ClampUV テクスチャのクランプを指定します。 下記の中のいずれかを指定することができます。FlipUVとClampUVを同時に指定すると、Kamui1はFlipUVの指定を無視します。

> KMCLAMPMODE

> 定義 | 意味
> KM_NOCLAMP | Clampしません
> KM_CLAMP_V | V座標方向をClampします
> KM_CLAMP_U | U座標方向をClampします
> KM_CLAMP_UV | U,V座標方向をClampします

> FilterMode テクスチャフィルタのモードを設定します。Point-sample、Bilinear、Trilinearの３つのフィルタモードを選択できます。 下記の中のいずれかを指定することができます。

> KMFILTERMODE

> 定義 | 意味
> KM_POINT_SAMPLE | ポイントサンプリング
> KM_BILINEAR | バイリニアフィルタ
> KM_TRILINEAR_A | トライリニアの１パス目
> KM_TRILINEAR_B | トライリニアの２パス目

> bSuperSample TRUEを指定すると、４倍スーパーサンプリングフィルタ(Anisotoropic Filter)を使用します。これを行うことでテクスチャマッピングの品質が向上します。

> MipMapAdjust MIPMAPレベル選択のためのDパラメータ計算に係数を乗じます。 これによってエリアシングの調整をすることができます。 この値は下位4bitが有効で、整数部2bit、小数点部2bitの固定小数点データとなっています。 下記の中のいずれかを指定することができます。

> 定義 | 値(16進数) | Dパラメータ
> KM_MIPMAP_D_ADJUST_0_25 | 0x00000001 | D=0.25
> KM_MIPMAP_D_ADJUST_0_50 | 0x00000002 | D=0.50
> KM_MIPMAP_D_ADJUST_0_75 | 0x00000003 | D=0.75
> KM_MIPMAP_D_ADJUST_1_00 | 0x00000004 | D=1.00
> KM_MIPMAP_D_ADJUST_1_25 | 0x00000005 | D=1.25
> KM_MIPMAP_D_ADJUST_1_50 | 0x00000006 | D=1.50
> KM_MIPMAP_D_ADJUST_1_75 | 0x00000007 | D=1.75
> KM_MIPMAP_D_ADJUST_2_00 | 0x00000008 | D=2.00
> KM_MIPMAP_D_ADJUST_2_25 | 0x00000009 | D=2.25
> KM_MIPMAP_D_ADJUST_2_50 | 0x0000000A | D=2.50
> KM_MIPMAP_D_ADJUST_2_75 | 0x0000000B | D=2.75
> KM_MIPMAP_D_ADJUST_3_00 | 0x0000000C | D=3.00
> KM_MIPMAP_D_ADJUST_3_25 | 0x0000000D | D=3.25
> KM_MIPMAP_D_ADJUST_3_50 | 0x0000000E | D=3.50
> KM_MIPMAP_D_ADJUST_3_75 | 0x0000000F | D=3.75

> 通常はKM_MIPMAP_D_ADJUST_1_00 (1.0)を設定してください。 TextureShadingMode D3D仕様のテクスチャブレンディングモードを指定します。 下記の中のいずれかを指定することができます。

> KMTEXTURESHADINGMODE

> 定義 | 値
> KM_DECAL | 0
> KM_MODULATE | 1
> KM_DECAL_ALPHA | 2
> KM_MODULATE_ALPHA | 3

> KM_DECAL テクスチャカラーにオフセット値を加算します。 α値はテクスチャのα値をそのまま使用します。

> Pixel Color = TextureRGB + OffsetRGB
> Pixel α = Texture α

> KM_MODULATE テクスチャカラーにシェーディング結果のカラーを掛けます。テクスチャのα値はシェーディングカラーのα値に置き換わります。

> Pixel Color = ShadingRGB × TextureRGB + OffsetRGB
> Pixel α = Textureα

> KM_DECAL_ALPHA テクスチャカラーをテクスチャのα値に従ってシェーディングカラーとブレンドします。

> Pixel Color = (TextureRGB×Textureα) + (ShadingRGB × (1- Textureα))+ OffsetRGB
> Pixel α = Shadingα

> KM_MODULATE_ALPHA テクスチャカラーにシェーディングカラーを掛けます。テクスチャのα値にはシェーディングカラーのα値を掛けます。

> Pixel Color = (TextureRGB × ShadingRGB )+ OffsetRGB
> Pixel α = Shadingα × Textureα

> bColorClamp カラークランプするかどうかを指定します。 TRUEの場合、ハードウェアはピクセルカラーをkmSetColorClampValueで指定したクランプ値にクランプします。

> PaletteBank パレットのバンク番号を指定します。 この値はテクスチャとしてPalettized Textureを指定したときのみ有効です。 指定できる値は、Palettized -4bppの時は0から63のいずれかです。 また、Palettized -8bppの時も0から63ですが、この場合有効なのは6bit中上位2bitのみなので、使用できる値は0(0から15),16(16から31),32(32から47),48(48から63)の４種の中のいずれかとなります。（詳細はkmSetPaletteData()関数をご参照ください）

> pTextureSurfaceDesc テクスチャサーフェスのSurface構造体へのポインタを指定します。 VERTEXCONTEXTのほかのパラメータは変更せずに、テクスチャだけ変更したいときは、pTextureSurfaceDescメンバだけを変更してkmProcessVertexRenderState とkmSetVertexRenderStateを呼んでください。 ShadingModeをKM_TEXTUREFLAT,KM_TEXTUREGOURAUDに指定すると、kmProcessVertexRenderStateを呼び出す度に、Kamui1はpTextureSurfaceDescメンバの情報をシステムへ取り込みます。 また、pTextureSurfaceDescメンバにNULLを指定すると、ShadingModeがKM_TEXTUREFLAT,KM_TEXTUREGOURAUDになっていてもKamui1はテクスチャアドレスの取り込みを行いません。テクスチャが未定で、先にほかのパラメータだけセットしたい場合は、pTextureSurfaceDescメンバにNULLを指定してください。

> ModifierInstruction モデファイアボリュームの登録時に、これから登録するポリゴンデータの種類を指定します。以下のいずれかを指定します。

> 値 | 意味
> KM_MODIFIER_INCLUDE_FIRST_POLY | Inclusionモデファイアボリュームの最初のポリゴン
> KM_MODIFIER_EXCLUDE_FIRST_POLY | Exclusionモデファイアボリュームの最初のポリゴン
> KM_MODIFIER_INCLUDE_LAST_POLY | Inclusionモデファイアボリュームの最後のポリゴン
> KM_MODIFIER_EXCLUDE_LAST_POLY | Exclusionモデファイアボリュームの最後のポリゴン
> KM_MODIFIER_NORMAL_POLY | それ以外のポリゴン

> このメンバは、モデファイアボリューム以外では指定する必要はありません。

> なお、このメンバはARC1でのみ有効です。CLX1/2では指定する必要はありません。

### 参照

> kmSetPaletteData() | オンチップパレットデータの設定
> kmSetBackGroundRenderState() | Background Plane のレンダリングパラメータの設定
> kmuConvertStripContext() | KMSTRIPCONTEXT構造体への変換
> kmProcessVertexRenderState() | レンダリングパラメータ(KMVERTEXCONTEXT)の構築
> kmSetModifierRenderState() | レンダリングパラメータ(KMVERTEXCONTEXT)の登録(Param2使用時)
> kmSetVertexRenderState() | レンダリングパラメータ(KMVERTEXCONTEXT)の登録(通常時)

KMVERTEXCONTEXT

COPYRIGHT © NEC Corporation / © SEGA ENTERPRISES, LTD., 1998-2000