@@ -566,7 +566,8 @@ namespace IW3
566566 GFXS_BLEND_INVDESTALPHA = 0x8 ,
567567 GFXS_BLEND_DESTCOLOR = 0x9 ,
568568 GFXS_BLEND_INVDESTCOLOR = 0xA ,
569- GFXS_BLEND_MASK = 0xF ,
569+
570+ GFXS_BLEND_COUNT
570571 };
571572
572573 enum GfxBlendOp
@@ -577,7 +578,40 @@ namespace IW3
577578 GFXS_BLENDOP_REVSUBTRACT = 0x3 ,
578579 GFXS_BLENDOP_MIN = 0x4 ,
579580 GFXS_BLENDOP_MAX = 0x5 ,
580- GFXS_BLENDOP_MASK = 0x7 ,
581+
582+ GFXS_BLENDOP_COUNT
583+ };
584+
585+ enum GfxAlphaTest_e
586+ {
587+ GFXS_ALPHA_TEST_GT_0 = 1 ,
588+ GFXS_ALPHA_TEST_LT_128 = 2 ,
589+ GFXS_ALPHA_TEST_GE_128 = 3 ,
590+
591+ GFXS_ALPHA_TEST_COUNT
592+ };
593+
594+ enum GfxCullFace_e
595+ {
596+ GFXS_CULL_NONE = 1 ,
597+ GFXS_CULL_BACK = 2 ,
598+ GFXS_CULL_FRONT = 3 ,
599+ };
600+
601+ enum GfxDepthTest_e
602+ {
603+ GFXS_DEPTHTEST_ALWAYS = 0 ,
604+ GFXS_DEPTHTEST_LESS = 1 ,
605+ GFXS_DEPTHTEST_EQUAL = 2 ,
606+ GFXS_DEPTHTEST_LESSEQUAL = 3
607+ };
608+
609+ enum GfxPolygonOffset_e
610+ {
611+ GFXS_POLYGON_OFFSET_0 = 0 ,
612+ GFXS_POLYGON_OFFSET_1 = 1 ,
613+ GFXS_POLYGON_OFFSET_2 = 2 ,
614+ GFXS_POLYGON_OFFSET_SHADOWMAP = 3
581615 };
582616
583617 enum GfxStencilOp
@@ -589,10 +623,19 @@ namespace IW3
589623 GFXS_STENCILOP_DECRSAT = 0x4 ,
590624 GFXS_STENCILOP_INVERT = 0x5 ,
591625 GFXS_STENCILOP_INCR = 0x6 ,
592- GFXS_STENCILOP_DECR = 0x7 ,
626+ GFXS_STENCILOP_DECR = 0x7
627+ };
593628
594- GFXS_STENCILOP_COUNT,
595- GFXS_STENCILOP_MASK = 0x7
629+ enum GfxStencilFunc
630+ {
631+ GFXS_STENCILFUNC_NEVER = 0x0 ,
632+ GFXS_STENCILFUNC_LESS = 0x1 ,
633+ GFXS_STENCILFUNC_EQUAL = 0x2 ,
634+ GFXS_STENCILFUNC_LESSEQUAL = 0x3 ,
635+ GFXS_STENCILFUNC_GREATER = 0x4 ,
636+ GFXS_STENCILFUNC_NOTEQUAL = 0x5 ,
637+ GFXS_STENCILFUNC_GREATEREQUAL = 0x6 ,
638+ GFXS_STENCILFUNC_ALWAYS = 0x7
596639 };
597640
598641 enum GfxStateBitsEnum : unsigned int
@@ -613,10 +656,10 @@ namespace IW3
613656 GFXS0_ATEST_GE_128 = 0x3000 ,
614657 GFXS0_ATEST_MASK = 0x3000 ,
615658
616- GFXS0_CULL_SHIFT = 0xE ,
617659 GFXS0_CULL_NONE = 0x4000 ,
618660 GFXS0_CULL_BACK = 0x8000 ,
619661 GFXS0_CULL_FRONT = 0xC000 ,
662+ GFXS0_CULL_SHIFT = 0xE ,
620663 GFXS0_CULL_MASK = 0xC000 ,
621664
622665 GFXS0_SRCBLEND_ALPHA_SHIFT = 0x10 ,
@@ -638,18 +681,18 @@ namespace IW3
638681 GFXS1_DEPTHWRITE = 0x1 ,
639682
640683 GFXS1_DEPTHTEST_DISABLE = 0x2 ,
641- GFXS1_DEPTHTEST_SHIFT = 0x2 ,
642684 GFXS1_DEPTHTEST_ALWAYS = 0x0 ,
643685 GFXS1_DEPTHTEST_LESS = 0x4 ,
644686 GFXS1_DEPTHTEST_EQUAL = 0x8 ,
645687 GFXS1_DEPTHTEST_LESSEQUAL = 0xC ,
688+ GFXS1_DEPTHTEST_SHIFT = 0x2 ,
646689 GFXS1_DEPTHTEST_MASK = 0xC ,
647690
648- GFXS1_POLYGON_OFFSET_SHIFT = 0x4 ,
649691 GFXS1_POLYGON_OFFSET_0 = 0x0 ,
650692 GFXS1_POLYGON_OFFSET_1 = 0x10 ,
651693 GFXS1_POLYGON_OFFSET_2 = 0x20 ,
652694 GFXS1_POLYGON_OFFSET_SHADOWMAP = 0x30 ,
695+ GFXS1_POLYGON_OFFSET_SHIFT = 0x4 ,
653696 GFXS1_POLYGON_OFFSET_MASK = 0x30 ,
654697
655698 GFXS1_STENCIL_FRONT_ENABLE = 0x40 ,
@@ -672,16 +715,61 @@ namespace IW3
672715 GFXS1_STENCILOP_FRONTBACK_MASK = 0x1FF1FF00 ,
673716 };
674717
718+ struct GfxStateBitsLoadBitsStructured
719+ {
720+ // Byte 0
721+ unsigned int srcBlendRgb : 4 ; // 0-3
722+ unsigned int dstBlendRgb : 4 ; // 4-7
723+ unsigned int blendOpRgb : 3 ; // 8-10
724+ unsigned int alphaTestDisabled : 1 ; // 11
725+ unsigned int alphaTest : 2 ; // 12-13
726+ unsigned int cullFace : 2 ; // 14-15
727+ unsigned int srcBlendAlpha : 4 ; // 16-19
728+ unsigned int dstBlendAlpha : 4 ; // 20-23
729+ unsigned int blendOpAlpha : 3 ; // 24-26
730+ unsigned int colorWriteRgb : 1 ; // 27
731+ unsigned int colorWriteAlpha : 1 ; // 28
732+ unsigned int unused1 : 2 ; // 29-30
733+ unsigned int polymodeLine : 1 ; // 31
734+
735+ // Byte 1
736+ unsigned int depthWrite : 1 ; // 0
737+ unsigned int depthTestDisabled : 1 ; // 1
738+ unsigned int depthTest : 2 ; // 2-3
739+ unsigned int polygonOffset : 2 ; // 4-5
740+ unsigned int stencilFrontEnabled : 1 ; // 6
741+ unsigned int stencilBackEnabled : 1 ; // 7
742+ unsigned int stencilFrontPass : 3 ; // 8-10
743+ unsigned int stencilFrontFail : 3 ; // 11-13
744+ unsigned int stencilFrontZFail : 3 ; // 14-16
745+ unsigned int stencilFrontFunc : 3 ; // 17-19
746+ unsigned int stencilBackPass : 3 ; // 20-22
747+ unsigned int stencilBackFail : 3 ; // 23-25
748+ unsigned int stencilBackZFail : 3 ; // 26-28
749+ unsigned int stencilBackFunc : 3 ; // 29-31
750+ };
751+
752+ union GfxStateBitsLoadBits
753+ {
754+ unsigned int raw[2 ];
755+ GfxStateBitsLoadBitsStructured structured;
756+ };
757+
758+ #ifndef __zonecodegenerator
759+ static_assert (sizeof (GfxStateBitsLoadBits) == 8);
760+ static_assert (sizeof (GfxStateBitsLoadBitsStructured) == 8);
761+ #endif
762+
675763 struct GfxStateBits
676764 {
677- unsigned int loadBits[ 2 ] ;
765+ GfxStateBitsLoadBits loadBits;
678766 };
679767
680768 struct type_align (16 ) MaterialConstantDef
681769 {
682770 unsigned int nameHash;
683771 char name[12 ];
684- float literal[ 4 ] ;
772+ vec4_t literal;
685773 };
686774
687775 struct complex_s
@@ -718,6 +806,26 @@ namespace IW3
718806 water_t * water;
719807 };
720808
809+ enum TextureFilter
810+ {
811+ TEXTURE_FILTER_DISABLED = 0x0 ,
812+ TEXTURE_FILTER_NEAREST = 0x1 ,
813+ TEXTURE_FILTER_LINEAR = 0x2 ,
814+ TEXTURE_FILTER_ANISO2X = 0x3 ,
815+ TEXTURE_FILTER_ANISO4X = 0x4 ,
816+
817+ TEXTURE_FILTER_COUNT
818+ };
819+
820+ enum SamplerStateBitsMipMap_e
821+ {
822+ SAMPLER_MIPMAP_ENUM_DISABLED,
823+ SAMPLER_MIPMAP_ENUM_NEAREST,
824+ SAMPLER_MIPMAP_ENUM_LINEAR,
825+
826+ SAMPLER_MIPMAP_ENUM_COUNT
827+ };
828+
721829 enum SamplerStateBits_e
722830 {
723831 SAMPLER_FILTER_SHIFT = 0x0 ,
@@ -743,13 +851,26 @@ namespace IW3
743851 SAMPLER_CLAMP_MASK = 0xE0 ,
744852 };
745853
854+ struct MaterialTextureDefSamplerState
855+ {
856+ unsigned char filter : 3 ;
857+ unsigned char mipMap : 2 ;
858+ unsigned char clampU : 1 ;
859+ unsigned char clampV : 1 ;
860+ unsigned char clampW : 1 ;
861+ };
862+
863+ #ifndef __zonecodegenerator
864+ static_assert (sizeof (MaterialTextureDefSamplerState) == 1u);
865+ #endif
866+
746867 struct MaterialTextureDef
747868 {
748869 unsigned int nameHash;
749870 char nameStart;
750871 char nameEnd;
751- unsigned char samplerState; // SamplerStateBits_e
752- unsigned char semantic; // TextureSemantic
872+ MaterialTextureDefSamplerState samplerState; // SamplerStateBits_e
873+ unsigned char semantic; // TextureSemantic
753874 MaterialTextureDefInfo u;
754875 };
755876
@@ -842,8 +963,9 @@ namespace IW3
842963 CAMERA_REGION_LIT = 0x0 ,
843964 CAMERA_REGION_DECAL = 0x1 ,
844965 CAMERA_REGION_EMISSIVE = 0x2 ,
845- CAMERA_REGION_COUNT = 0x3 ,
846- CAMERA_REGION_NONE = 0x3 ,
966+
967+ CAMERA_REGION_COUNT,
968+ CAMERA_REGION_NONE = CAMERA_REGION_COUNT,
847969 };
848970
849971 enum MaterialStateFlags
0 commit comments