In the previous version of Kamui, the KMVERTEXCONTEXT structure was used for the rendering parameter settings. Although Kamui2 permits the use of the KMVERTEXCONTEXT structure for compatibility, Kamui2 also provides the KMSTRIPCONTEXT/KMTWOVOLUMESTRIPCONTEXT structures for faster and more efficient processing. In Kamui2, we strongly recommend using the KMSTRIPCONTEXT/KMTWOVOLUMESTRIPCONTEXT structure. In Kamui2, the rendering parameters that can be set for each vertex (strip) are centralized in the KMSTRIPCONTEXT/KMTWOVOLUMESTRIPCONTEXT structure. Which structure is used depends on the VertexType: - When using VertextType00 to 08, 15 to 17: Use KMSTRIPCONTEXT structure. - When using VertextType09 to 14: Use the KMTWOVOLUMESTRIPCONTEXT structure. Initially, the application allocates the KMSTRIPHEAD structure and the KMSTRIPCONTEXT/KMTWOVOLUMESTRIPCONTEXT structure, and sets the values for the necessary members in the KMSTRIPCONTEXT/KMTWOVOLUMESTRIPCONTEXT structure. Which members are necessary depends on the VertexType that is being used. Next, complete KMSTRIPHEAD with kmGenerateStripHeadXX (00 to 17: VertexType to be used). The kmChangeStripXxxxxx API can be used to change some members in a KMSTRIPHEAD structure that has already been completed. The members that are to be set are indicated below. [KMSTRIPCONTROL] typedef struct _tagKMSTRIPCONTROL { KMLISTTYPE nListType; KMUSERCLIPMODE nUserClipMode; KMSHADOWMODE nShadowMode; KMCOLORTYPE nIntensityMode; KMBOOLEAN bOffset; KMBOOLEAN bGouraud; }KMSTRIPCONTROL,*PKMSTRIPCONTROL; - nListType (corresponding VertexType: 00 to 17) This sets the list type in which the vertex data is to be stored. - In the case of VertexType 00 to 16, select the PolygonType as indicated below. KM_OPAQUE_POLYGON Sets opaque polygon for the ListType. KM_TRANS_POLYGON Sets translucent polygon for the ListType. KM_PUNCHTHROUGH_POLYGON Sets punch-through polygon for the ListType. - In the case of VertexType 17, select the ModifierType as indicated below. KM_OPAQUE_MODIFIER Sets opaque modifier volume for the ListType. KM_TRANS_MODIFIER Sets translucent modifier for the ListType. - nUserClipMode (corresponding VertexType: 00 to 17) This sets the effect of the clipping area set by kmSetUserClipping. KM_USERCLIP_DISABLE Disables user clipping. (User clipping has no effect.) KM_USERCLIP_INSIDE Enables the inside of the specified clipping area. (The outside is clipped.) KM_USERCLIP_OUTSIDE Enables the outside of the specified clipping area. (The inside is clipped.) - nShadowMode (corresponding VertextType: 00 to 08, 15, 16) This sets the effect of kmSetCheapShadowMode. KM_NORMAL_POLYGON CheapShadow has no effect. KM_CHEAPSHADOW_POLYGON CheapShadow has effect. - nIntensityMode (corresponding VertexType: 02, 07, 08, 10, 13, 14) This sets IntensityMode. KM_INTENSITY Sets FaceColor and uses IntensityColor. KM_INTENSITY_PREV_FACE_COL Uses the last FaceColor that was specified in the last Intensity format that was registered. When using this type of polygon, a KM_INTENSITY type polygon must have been used at least once previously within the same scene. - bOffset (compatible VertexType: 03 to 08, 11 to 14, 16) This sets the offset color. When using BUMP mapping, set bOffset to KM_TRUE. KM_TRUE Uses offset color. KM_FALSE Does not use offset color. - bGouraud (compatible VertexType: 00 to 14) This sets the shading mode. When KM_FALSE has been set, the color data for the first and second vertices in the vertex strip become invalid. (The data for the third vertex is valid.) KM_TRUE Uses gouraud shading. KM_FALSE Does not use gouraud shading. [KMOBJECTCONTROL] typedef struct _tagKMOBJECTCONTROL { KMDEPTHMODE nDepthCompare; KMCULLINGMODE nCullingMode; KMBOOLEAN bZWriteDisable; KMBOOLEAN bDCalcControl; KMDWORD dwModifierInstruction; }KMOBJECTCONTROL,*PKMOBJECTCONTROL; - nDepthCompare (compatible VertexType: 00 to 16) This sets the Z value comparison mode. KM_IGNORE KM_LESS KM_EQUAL KM_LESSEQUAL KM_GREATER KM_NOTEQUAL KM_GREATEREQUAL KM_ALWAYS - nCullingMode (corresponding VertexType: 00 to 17) This sets the culling mode. In order to enable culling, it is necessary to execute kmSetCullingRegister in the global settings. If KM_CULLCCW or KM_CULLCW are specified, small polygon culling is also performed simultaneously. KM_NOCULLING No culling is performed. KM_CULLSMALL Performs small polygon culling. KM_CULLCCW Performs culling in the counterclockwise direction. KM_CULLCW Performs culling in the clockwise direction. - bZWriteDisable (corresponding VertexType: 00 to 16) This sets the Z value operation. KM_TRUE Disables Z value updating. KM_FALSE Enables Z value updating. - bDCalcExact (corresponding VertexType: 03 to 08, 11 to 14, 16) This sets the calculation precision for the D parameter that is used in mipmapping. If KM_TRUE is set, D parameter calculations are performed with precision. However, this calculation consumes more time, so the speed of operation may slow down. KM_TRUE Calculates the D parameter with precision. KM_FALSE Does not calculate the D parameter with precision. - ModifierInstruction (corresponding VertexType: 17) When registering a modifier volume, this sets the type of polygon data that is to be registered. KM_MODIFIER_INCLUDE_FIRST_POLY Indicates that the data is for the first polygon of an Inclusion modifier volume. KM_MODIFIER_EXCLUDE_FIRST_POLY Indicates that the data is for the first polygon of an Exclusion modifier volume. KM_MODIFIER_INCLUDE_LAST_POLY Indicates that the data is for the last polygon of an Inclusion modifier volume. KM_MODIFIER_EXCLUDE_LAST_POLY Indicates that the data is for the last polygon of an Exclusion modifier volume. KM_MODIFIER_NORMAL_POLY Indicates that the data is for a polygon that is neither the first nor the last polygon of a modifier volume. [KMIMAGECONTROL] typedef struct _tagKMIMAGECONTROL { KMBLENDINGMODE nSRCBlendingMode; KMBLENDINGMODE nDSTBlendingMode; KMBOOLEAN bSRCSelect; KMBOOLEAN bDSTSelect; KMFOGMODE nFogMode; KMBOOLEAN bColorClamp; KMBOOLEAN bUseAlpha; KMBOOLEAN bIgnoreTextureAlpha; KMFLIPMODE nFlipUV; KMCLAMPMODE nClampUV; KMFILTERMODE nFilterMode; KMBOOLEAN bSuperSampleMode; KMDWORD dwMipmapAdjust; KMTEXTURESHADINGMODE nTextureShadingMode; KMDWORD dwPaletteBank; PKMSURFACEDESC pTextureSurfaceDesc; }KMIMAGECONTROL,*PKMIMAGECONTROL; - nSRCBlendingMode (corresponding VertexType: [When KM_IMAGE_PARAM1 is specified] 00 to 16, [When KM_IMAGE_PARAM2 is specified] 09 to 14) - nDSTBlendingMode (corresponding VertexType: [When KM_IMAGE_PARAM1 is specified] 00 to 16, [When KM_IMAGE_PARAM2 is specified] 09 to 14) This sets the Blending mode. KM_BOTHINVSRCALPHA Uses (1-[alpha]s, 1-[alpha]s, 1-[alpha]s, 1-[alpha]s) as the source blending parameters and ([alpha]s, [alpha]s, [alpha]s, [alpha]s) as the destination blending parameters. When SRCBlendingMode has been set, the DSTBlendingMode is overridden, and vice versa. KM_BOTHSRCALPHA Uses ([alpha]s, [alpha]s, [alpha]s, [alpha]s) as the source blending parameters and (1-[alpha]s, 1-[alpha]s, 1-[alpha]s, 1-[alpha]s) as the destination blending parameters. When SRCBlendingMode has been set, the DSTBlendingMode is overridden, and vice versa. KM_DESTALPHA Uses ([alpha]d, [alpha]d, [alpha]d, [alpha]d) as the blending parameters. KM_DESTCOLOR Uses ([alpha]d, Rd, Gd, Bd) as the blending parameters. KM_INVDESTALPHA Uses (1-[alpha]d, 1-[alpha]d, 1-[alpha]d, 1-[alpha]d) as the blending parameters. KM_INVDESTCOLOR Uses (1-[alpha]d, 1-Rd, 1-Gd, 1-Bd) as the blending parameters. KM_INVSRCALPHA Uses (1-[alpha]s, 1-[alpha]s, 1-[alpha]s, 1-[alpha]s) as the blending parameters. KM_INVSRCCOLOR Uses (1-[alpha]s, 1-Rs, 1-Gs, 1-Bs) as the blending parameters. KM_SRCALPHA Uses ([alpha]s, [alpha]s, [alpha]s, [alpha]s) as the blending parameters. KM_SRCCOLOR Uses ([alpha]s, Rs, Gs, Bs) as the blending parameters. KM_ONE Uses (1, 1, 1, 1) as the blending parameters. KM_ZERO Uses (0, 0, 0, 0) as the blending parameters. Note) ([alpha]s, Rs, Gs, Bs) indicate the source colors, and ([alpha]d, Rd, Gd, Bd) indicate the destination colors. In KMSTRIPCONTEXT for the background plane, set KM_ZERO for DSTBlendingMode. (Refer to the description of kmSetBackGroundRenderState.) - bSRCSel (corresponding VertexType: [When KM_IMAGE_PARAM1 is specified] 00 to 16, [When KM_IMAGE_PARAM2 is specified] 09 to 14) This selects usage for the source color. KM_TRUE Uses the second accumulation buffer as the source color. KM_FALSE Does not use the second accumulation buffer as the source color. - bDSTSel (corresponding VertexType: [When KM_IMAGE_PARAM1 is specified] 00 to 16, [When KM_IMAGE_PARAM2 is specified] 09 to 14) This selects usage for the destination color. KM_TRUE Uses the second accumulation buffer as the destination color. KM_FALSE Does not use the second accumulation buffer as the destination color. - nFogMode (corresponding VertexType: [When KM_IMAGE_PARAM1 is specified] 00 to 16, [When KM_IMAGE_PARAM2 is specified] 09 to 14) This sets the fog mode. KM_FOGTABLE Generates the fog [alpha] value through linear interpolation based on the table data corresponding to the depth value. KM_FOGTABLE_2 Substitutes the polygon color for the fog color, and the polygon [alpha] value for the fog [alpha] value. KM_FOGVERTEX Uses the [alpha] value of OffsetColor as the Fog [alpha] value. Enable OffsetColor when using this setting. If OffsetColor is disabled, this setting has the same effect as KM_NOFOG. KM_NOFOG Does not perform fog processing. - bColorClamp (corresponding VertexType: [When KM_IMAGE_PARAM1 is specified] 00 to 16, [When KM_IMAGE_PARAM2 is specified] 09 to 14) This sets the color clamp. The hardware clamps the pixel color to the clamp value set by kmSetColorClampValue. KM_TRUE Enables the color clamp. KM_FALSE Disables the color clamp. - bUseAlpha (corresponding VertexType: [When KM_IMAGE_PARAM1 is specified] 00 to 16, [When KM_IMAGE_PARAM2 is specified] 09 to 14) This sets vertex [alpha]. Even in the case of TransPolygon, an object does not become translucent if this setting is KM_FALSE. KM_TRUE Enables vertex [alpha]. KM_FALSE Disables vertex [alpha] (opaque). - bIgnoreTextureAlpha (corresponding VertexType: [When KM_IMAGE_PARAM1 is specified] 03 to 08, 11 to 14, 16, [When KM_IMAGE_PARAM2 is specified] 11 to 14) This sets texture [alpha]. If KM_TRUE is specified, the [alpha] bit in texture data is ignored. The hardware ignores transparency information that is included in textures. KM_TRUE Ignores the [alpha] bit within texture data. KM_FALSE Enables the [alpha] bit within texture data. - nFlipUV (corresponding VertexType: [When KM_IMAGE_PARAM1 is specified] 03 to 08, 11 to 14, 16, [When KM_IMAGE_PARAM2 is specified] 11 to 14) This sets texture flipping. KM_NOFLIP No flipping. KM_FLIP_V Flips in the V coordinate direction. KM_FLIP_U Flips in the U coordinate direction. KM_FLIP_UV Flips in the U and V coordinate directions. - nClampUV (corresponding VertexType: [When KM_IMAGE_PARAM1 is specified] 03 to 08, 11 to 14, 16, [When KM_IMAGE_PARAM2 is specified] 11 to 14) This sets texture clamping. When ClampUV is enabled, FlipUV setting becomes invalid. KM_NOCLAMP No clamping. KM_CLAMP_V Clamps in the V coordinate direction. KM_CLAMP_U Clamps in the U coordinate direction. KM_CLAMP_UV Clamps in the U and V coordinate directions. - FilterMode (corresponding VertexType: [When KM_IMAGE_PARAM1 is specified] 03 to 08, 11 to 14, 16, [When KM_IMAGE_PARAM2 is specified] 11 to 14) This sets the texture filter mode. KM_POINT_SAMPLE Uses the point sampling filter. KM_BILINEAR Uses the bilinear filter. KM_TRILINEAR_A Uses the trilinear filter (1st pass). KM_TRILINEAR_B Uses the trilinear filter (2nd and later passes). - bSuperSample (corresponding VertexType: [When KM_IMAGE_PARAM1 is specified] 03 to 08, 11 to 14, 16, [When KM_IMAGE_PARAM2 is specified] 11 to 14) This sets the 4x super sampling filter (anisotoropic filter). Using this setting improves the quality of texture mapping, but at a some loss of performance. KM_TRUE Enables the 4x super sampling filter (anisotoropic filter). KM_FALSE Disables the 4x super sampling filter (anisotoropic filter). - dwMipMapAdjust (corresponding VertexType: [When KM_IMAGE_PARAM1 is specified] 03 to 08, 11 to 14, 16, [When KM_IMAGE_PARAM2 is specified] 11 to 14) This sets the coefficient for calculating the D parameter for mipmap level selection. Normally, set KM_MIPMAP_D_ADJUST_1_00 (D = 1.0). KM_MIPMAP_D_ADJUST_0_25 Sets the coefficient to D = 0.25. KM_MIPMAP_D_ADJUST_0_50 Sets the coefficient to D = 0.50. KM_MIPMAP_D_ADJUST_0_75 Sets the coefficient to D = 0.75. KM_MIPMAP_D_ADJUST_1_00 Sets the coefficient to D = 1.00. KM_MIPMAP_D_ADJUST_1_25 Sets the coefficient to D = 1.25. KM_MIPMAP_D_ADJUST_1_50 Sets the coefficient to D = 1.50. KM_MIPMAP_D_ADJUST_1_75 Sets the coefficient to D = 1.75. KM_MIPMAP_D_ADJUST_2_00 Sets the coefficient to D = 2.00. KM_MIPMAP_D_ADJUST_2_25 Sets the coefficient to D = 2.25. KM_MIPMAP_D_ADJUST_2_50 Sets the coefficient to D = 2.50. KM_MIPMAP_D_ADJUST_2_75 Sets the coefficient to D = 2.75. KM_MIPMAP_D_ADJUST_3_00 Sets the coefficient to D = 3.00. KM_MIPMAP_D_ADJUST_3_25 Sets the coefficient to D = 3.25. KM_MIPMAP_D_ADJUST_3_50 Sets the coefficient to D = 3.50. KM_MIPMAP_D_ADJUST_3_75 Sets the coefficient to D = 3.75. - nTextureShadingMode (corresponding VertexType: [When KM_IMAGE_PARAM1 is specified] 03 to 08, 11 to 14, 16, [When KM_IMAGE_PARAM2 is specified] 11 to 14) This sets the texture blending mode. Specify one of the values shown below. KM_DECAL Adds the offset value to the texture color. Uses the [alpha] value of the texture as is. Pixel Color = TextureRGB + OffsetRGB Pixel [alpha] = Texture [alpha] KM_MODULATE Applies the shading effect color to the texture color. Replaces the texture [alpha] value with the shading color [alpha] value. Pixel Color = ShadingRGB x TextureRGB + OffsetRGB Pixel [alpha] = Texture [alpha] KM_DECAL_ALPHA Blends the shading color with the texture color according to the texture [alpha] value. Pixel Color = (TextureRGB x Textureƒ¿) + {ShadingRGB x (1- Texture [alpha])} + OffsetRGB Pixel [alpha] = Shading [alpha] KM_MODULATE_ALPHA Applies the shading color to the texture color. Applies the shading color [alpha] value to the texture [alpha] value. Pixel Color = (TextureRGB x ShadingRGB) + OffsetRGB Pixel [alpha] = Shading [alpha] x Texture [alpha] - dwPaletteBank (corresponding VertexType: [When KM_IMAGE_PARAM1 is specified] 03 to 08, 11 to 14, 16, [When KM_IMAGE_PARAM2 is specified] 11 to 14) This sets the palette bank number. This value is valid only when a palettized texture has been specified as the texture. If a palettized texture is not used, this value does not need to be set even if a corresponding VertextType is being used. In palettized 4bpp mode, the range of values that can be set is from 0 to 63. In palettized 8bpp mode, the values also range from 0 to 63, but since only the upper two bits of the 6 bits are valid, the four values that can actually be used are 0 (0 to 15), 16 (16 to 31), 32 (32 to 47), and 48 (48 to 63). (For details, refer to kmSetPaletteData.) - pTextureSurfaceDesc (corresponding VertexType: [When KM_IMAGE_PARAM1 is specified] 03 to 08, 11 to 14, 16, [When KM_IMAGE_PARAM2 is specified] 11 to 14) This sets the pointer for the texture surface Surface structure. [KMSTRIPCONTEXT] typedef struct _tagKMSTRIPCONTEXT { KMSTRIPCONTROL StripControl; /* StripControl */ KMOBJECTCONTROL ObjectControl; /* ObjectControl*/ union { struct { KMFLOATCOLOR Face[2]; }intensity; struct { KMPACKEDARGB Base; KMPACKEDARGB Offset; }splite; }type; KMIMAGECONTROL ImageControl[2]; /* ImageControl */ }KMSTRIPCONTEXT,*PKMSTRIPCONTEXT; [KMTWOVOLUMESTRIPCONTEXT] typedef struct _tagKMTWOVOLUMESTRIPCONTEXT { KMINT32 nSize; KMSTRIPCONTROL StripControl; /* StripControl */ KMOBJECTCONTROL ObjectControl; /* ObjectControl*/ union { struct { KMFLOATCOLOR Face[2]; }intensity; struct { KMPACKEDARGB Base; KMPACKEDARGB Offset; }splite; }type; KMIMAGECONTROL ImageControl[2]; /* ImageControl */ }KMTWOVOLUMESTRIPCONTEXT,*PKMTWOVOLUMESTRIPCONTEXT; - Face (corresponding VertexType: see below) This sets FaceColor. Face[KM_INTENSITY_BASE] (corresponding VertexType: 02, 07, 08, 10, 13, 14) Face[KM_INTENSITY_OFFSET] (corresponding VertexType: 07, 08) Face[KM_INTENSITY_BASE_2ND] (corresponding VertexType: 10, 13, 14) - Base (corresponding VertexType: 15, 16) This sets the Sprite BaseColor. - Offset (corresponding VertexType: 16) This sets the Sprite OffsetColor.