#ifndef _cg_internal_h #define _cg_internal_h #ifdef __cplusplus extern "C" { #endif //Hardware shader settings #define CGF_OUTPUTFROMH0 0x01 #define CGF_DEPTHREPLACE 0x02 #define CGF_PIXELKILL 0x04 //CgParameterEntry flags //variability #define CGPV_MASK 0x03 #define CGPV_VARYING 0x00 #define CGPV_UNIFORM 0x01 #define CGPV_CONSTANT 0x02 #define CGPV_MIXED 0x03 //direction #define CGPD_MASK 0x0C #define CGPD_IN 0x00 #define CGPD_OUT 0x04 #define CGPD_INOUT 0x08 //is_referenced #define CGPF_REFERENCED 0x10 //is_shared #define CGPF_SHARED 0x20 //is_global #define CGPF_GLOBAL 0x40 //internal parameter #define CGP_INTERNAL 0x80 //type #define CGP_INTRINSIC 0x0000 #define CGP_STRUCTURE 0x100 #define CGP_ARRAY 0x200 #define CGP_TYPE_MASK (CGP_STRUCTURE + CGP_ARRAY) //storage #define CGP_UNROLLED 0x400 #define CGP_UNPACKED 0x800 #define CGP_CONTIGUOUS 0x1000 #define CGP_NORMALIZE 0x2000 // (attrib) if the usual cgGLSetParameterPointer should normalize the attrib #define CGP_RTCREATED 0x4000 // indicates that the parameter was created at runtime //static control flow boolean type #define CGP_SCF_BOOL (CG_TYPE_START_ENUM + 1024) //data types typedef struct _CgParameterTableHeader { unsigned short entryCount; unsigned short resourceTableOffset; unsigned short defaultValueIndexTableOffset; unsigned short defaultValueIndexCount; unsigned short semanticIndexTableOffset; unsigned short semanticIndexCount; } CgParameterTableHeader; typedef struct _CgParameterEntry { unsigned int nameOffset; unsigned short typeIndex; unsigned short flags; } CgParameterEntry; #ifdef MSVC #pragma warning( push ) #pragma warning ( disable : 4200 ) #endif typedef struct _CgParameterArray { unsigned short arrayType; unsigned short dimensionCount; unsigned short dimensions[]; } CgParameterArray; //padded to 4 bytes #ifdef MSVC #pragma warning( pop ) #endif typedef struct _CgParameterStructure { unsigned short memberCount; unsigned short reserved; } CgParameterStructure; typedef struct _CgParameterResource { unsigned short type; unsigned short resource; } CgParameterResource; typedef struct _CgParameterSemantic { unsigned short entryIndex; unsigned short reserved; unsigned int semanticOffset; } CgParameterSemantic; typedef struct _CgParameterDefaultValue { unsigned short entryIndex; unsigned short defaultValueIndex; } CgParameterDefaultValue; typedef struct CgProgramHeader { //28 bytes unsigned short profile; // Vertex / Fragment unsigned short compilerVersion; unsigned int instructionCount; unsigned int attributeInputMask; union { struct { //16 bytes unsigned int instructionSlot; unsigned int registerCount; unsigned int attributeOutputMask; } vertexProgram; struct { //12 bytes unsigned int partialTexType; unsigned short texcoordInputMask; unsigned short texcoord2d; unsigned short texcoordCentroid; unsigned char registerCount; unsigned char flags; //combination of CGF_OUTPUTFROMH0,CGF_DEPTHREPLACE,CGF_PIXELKILL } fragmentProgram; }; } CgProgramHeader; #ifdef __cplusplus } #endif #endif