17,941 bytes added
, 20:16, 10 November 2014
This page's goal is to describe parts of Nintendo's OpenGL implementation for the 3DS as we reverse engineer it to better understand how to use the PICA200.
== Description ==
The PICA200 is an opengl ES 1.1 compliant GPU manufactured by DMP. It comes loaded with a number of extensions that make it similar to an openGL ES 2.0 compliant GPU (ability to run programmable vertex/geometry shaders, for instance). Because of this, Nintendo wrapped GPU access into an openGL ES 2.0 implementation with some limitations. As the fragment stage of the pipeline is non-programmable, Nintendo instead gives developers the ability to configure a number of fragment-related values through glGetUniformLocation and glSetUniform. See below for the full list.
== Fragment "uniform" list ==
{| class="wikitable" border="1"
! Uniform ID
! Type
! Name
|-
| 0x0
| GL_BOOL
| dmp_Texture[0].perspectiveShadow
|-
| 0x1
| GL_FLOAT
| dmp_Texture[0].shadowZBias
|-
| 0x2
| GL_FLOAT
| dmp_Texture[0].shadowZScale
|-
| 0x3
| GL_INT
| dmp_Texture[0].samplerType
|-
| 0x4
| GL_INT
| dmp_Texture[1].samplerType
|-
| 0x5
| GL_INT
| dmp_Texture[2].samplerType
|-
| 0x6
| GL_INT
| dmp_Texture[3].samplerType
|-
| 0x7
| GL_INT
| dmp_Texture[2].texcoord
|-
| 0x8
| GL_INT
| dmp_Texture[3].texcoord
|-
| 0x9
| GL_INT
| dmp_Texture[3].ptRgbMap
|-
| 0xA
| GL_INT
| dmp_Texture[3].ptAlphaMap
|-
| 0xB
| GL_BOOL
| dmp_Texture[3].ptAlphaSeparate
|-
| 0xC
| GL_INT
| dmp_Texture[3].ptClampU
|-
| 0xD
| GL_INT
| dmp_Texture[3].ptClampV
|-
| 0xE
| GL_INT
| dmp_Texture[3].ptShiftU
|-
| 0xF
| GL_INT
| dmp_Texture[3].ptShiftV
|-
| 0x10
| GL_INT
| dmp_Texture[3].ptMinFilter
|-
| 0x11
| GL_INT
| dmp_Texture[3].ptTexWidth
|-
| 0x12
| GL_INT
| dmp_Texture[3].ptTexOffset
|-
| 0x13
| GL_FLOAT
| dmp_Texture[3].ptTexBias
|-
| 0x14
| GL_BOOL
| dmp_Texture[3].ptNoiseEnable
|-
| 0x15
| GL_FLOAT_VEC3
| dmp_Texture[3].ptNoiseU
|-
| 0x16
| GL_FLOAT_VEC3
| dmp_Texture[3].ptNoiseV
|-
| 0x17
| GL_SAMPLER_1D
| dmp_Texture[3].ptSamplerRgbMap
|-
| 0x18
| GL_SAMPLER_1D
| dmp_Texture[3].ptSamplerAlphaMap
|-
| 0x19
| GL_SAMPLER_1D
| dmp_Texture[3].ptSamplerNoiseMap
|-
| 0x1A
| GL_SAMPLER_1D
| dmp_Texture[3].ptSamplerR
|-
| 0x1B
| GL_SAMPLER_1D
| dmp_Texture[3].ptSamplerG
|-
| 0x1C
| GL_SAMPLER_1D
| dmp_Texture[3].ptSamplerB
|-
| 0x1D
| GL_SAMPLER_1D
| dmp_Texture[3].ptSamplerA
|-
| 0x1E
| GL_INT
| dmp_FragOperation.mode
|-
| 0x1F
| GL_FLOAT
| dmp_FragOperation.penumbraScale
|-
| 0x20
| GL_FLOAT
| dmp_FragOperation.penumbraBias
|-
| 0x21
| GL_FLOAT
| dmp_FragOperation.wScale
|-
| 0x22
| GL_BOOL
| dmp_FragOperation.enableClippingPlane
|-
| 0x23
| GL_FLOAT_VEC4
| dmp_FragOperation.clippingPlane
|-
| 0x24
| GL_BOOL
| dmp_FragOperation.enableAlphaTest
|-
| 0x25
| GL_INT
| dmp_FragOperation.alphaTestFunc
|-
| 0x26
| GL_FLOAT
| dmp_FragOperation.alphaRefValue
|-
| 0x27
| GL_FLOAT_VEC3
| dmp_Gas.lightXY
|-
| 0x28
| GL_FLOAT_VEC4
| dmp_Gas.lightZ
|-
| 0x29
| GL_FLOAT
| dmp_Gas.deltaZ
|-
| 0x2A
| GL_FLOAT
| dmp_Gas.accMax
|-
| 0x2B
| GL_BOOL
| dmp_Gas.autoAcc
|-
| 0x2C
| GL_FLOAT
| dmp_Gas.attenuation
|-
| 0x2D
| GL_INT
| dmp_Gas.colorLutInput
|-
| 0x2E
| GL_INT
| dmp_Gas.shadingDensitySrc
|-
| 0x2F
| GL_SAMPLER_1D
| dmp_Gas.samplerTR
|-
| 0x30
| GL_SAMPLER_1D
| dmp_Gas.samplerTG
|-
| 0x31
| GL_SAMPLER_1D
| dmp_Gas.samplerTB
|-
| 0x32
| GL_BOOL
| dmp_FragmentLighting.enabled
|-
| 0x33
| GL_FLOAT_VEC4
| dmp_FragmentLighting.ambient
|-
| 0x34
| GL_FLOAT_VEC4
| dmp_FragmentMaterial.emission
|-
| 0x35
| GL_FLOAT_VEC4
| dmp_FragmentMaterial.ambient
|-
| 0x36
| GL_FLOAT_VEC4
| dmp_FragmentMaterial.diffuse
|-
| 0x37
| GL_FLOAT_VEC4
| dmp_FragmentMaterial.specular0
|-
| 0x38
| GL_FLOAT_VEC4
| dmp_FragmentMaterial.specular1
|-
| 0x39
| GL_BOOL
| dmp_FragmentLightSource[0].enabled
|-
| 0x3A
| GL_BOOL
| dmp_FragmentLightSource[1].enabled
|-
| 0x3B
| GL_BOOL
| dmp_FragmentLightSource[2].enabled
|-
| 0x3C
| GL_BOOL
| dmp_FragmentLightSource[3].enabled
|-
| 0x3D
| GL_BOOL
| dmp_FragmentLightSource[4].enabled
|-
| 0x3E
| GL_BOOL
| dmp_FragmentLightSource[5].enabled
|-
| 0x3F
| GL_BOOL
| dmp_FragmentLightSource[6].enabled
|-
| 0x40
| GL_BOOL
| dmp_FragmentLightSource[7].enabled
|-
| 0x41
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[0].ambient
|-
| 0x42
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[1].ambient
|-
| 0x43
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[2].ambient
|-
| 0x44
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[3].ambient
|-
| 0x45
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[4].ambient
|-
| 0x46
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[5].ambient
|-
| 0x47
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[6].ambient
|-
| 0x48
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[7].ambient
|-
| 0x49
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[0].diffuse
|-
| 0x4A
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[1].diffuse
|-
| 0x4B
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[2].diffuse
|-
| 0x4C
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[3].diffuse
|-
| 0x4D
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[4].diffuse
|-
| 0x4E
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[5].diffuse
|-
| 0x4F
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[6].diffuse
|-
| 0x50
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[7].diffuse
|-
| 0x51
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[0].specular0
|-
| 0x52
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[1].specular0
|-
| 0x53
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[2].specular0
|-
| 0x54
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[3].specular0
|-
| 0x55
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[4].specular0
|-
| 0x56
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[5].specular0
|-
| 0x57
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[6].specular0
|-
| 0x58
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[7].specular0
|-
| 0x59
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[0].specular1
|-
| 0x5A
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[1].specular1
|-
| 0x5B
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[2].specular1
|-
| 0x5C
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[3].specular1
|-
| 0x5D
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[4].specular1
|-
| 0x5E
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[5].specular1
|-
| 0x5F
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[6].specular1
|-
| 0x60
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[7].specular1
|-
| 0x61
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[0].position
|-
| 0x62
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[1].position
|-
| 0x63
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[2].position
|-
| 0x64
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[3].position
|-
| 0x65
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[4].position
|-
| 0x66
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[5].position
|-
| 0x67
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[6].position
|-
| 0x68
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[7].position
|-
| 0x69
| GL_FLOAT_VEC3
| dmp_FragmentLightSource[0].spotDirection
|-
| 0x6A
| GL_FLOAT_VEC3
| dmp_FragmentLightSource[1].spotDirection
|-
| 0x6B
| GL_FLOAT_VEC3
| dmp_FragmentLightSource[2].spotDirection
|-
| 0x6C
| GL_FLOAT_VEC3
| dmp_FragmentLightSource[3].spotDirection
|-
| 0x6D
| GL_FLOAT_VEC3
| dmp_FragmentLightSource[4].spotDirection
|-
| 0x6E
| GL_FLOAT_VEC3
| dmp_FragmentLightSource[5].spotDirection
|-
| 0x6F
| GL_FLOAT_VEC3
| dmp_FragmentLightSource[6].spotDirection
|-
| 0x70
| GL_FLOAT_VEC3
| dmp_FragmentLightSource[7].spotDirection
|-
| 0x71
| GL_BOOL
| dmp_FragmentLightSource[0].shadowed
|-
| 0x72
| GL_BOOL
| dmp_FragmentLightSource[1].shadowed
|-
| 0x73
| GL_BOOL
| dmp_FragmentLightSource[2].shadowed
|-
| 0x74
| GL_BOOL
| dmp_FragmentLightSource[3].shadowed
|-
| 0x75
| GL_BOOL
| dmp_FragmentLightSource[4].shadowed
|-
| 0x76
| GL_BOOL
| dmp_FragmentLightSource[5].shadowed
|-
| 0x77
| GL_BOOL
| dmp_FragmentLightSource[6].shadowed
|-
| 0x78
| GL_BOOL
| dmp_FragmentLightSource[7].shadowed
|-
| 0x79
| GL_BOOL
| dmp_FragmentLightSource[0].geomFactor0
|-
| 0x7A
| GL_BOOL
| dmp_FragmentLightSource[1].geomFactor0
|-
| 0x7B
| GL_BOOL
| dmp_FragmentLightSource[2].geomFactor0
|-
| 0x7C
| GL_BOOL
| dmp_FragmentLightSource[3].geomFactor0
|-
| 0x7D
| GL_BOOL
| dmp_FragmentLightSource[4].geomFactor0
|-
| 0x7E
| GL_BOOL
| dmp_FragmentLightSource[5].geomFactor0
|-
| 0x7F
| GL_BOOL
| dmp_FragmentLightSource[6].geomFactor0
|-
| 0x80
| GL_BOOL
| dmp_FragmentLightSource[7].geomFactor0
|-
| 0x81
| GL_BOOL
| dmp_FragmentLightSource[0].geomFactor1
|-
| 0x82
| GL_BOOL
| dmp_FragmentLightSource[1].geomFactor1
|-
| 0x83
| GL_BOOL
| dmp_FragmentLightSource[2].geomFactor1
|-
| 0x84
| GL_BOOL
| dmp_FragmentLightSource[3].geomFactor1
|-
| 0x85
| GL_BOOL
| dmp_FragmentLightSource[4].geomFactor1
|-
| 0x86
| GL_BOOL
| dmp_FragmentLightSource[5].geomFactor1
|-
| 0x87
| GL_BOOL
| dmp_FragmentLightSource[6].geomFactor1
|-
| 0x88
| GL_BOOL
| dmp_FragmentLightSource[7].geomFactor1
|-
| 0x89
| GL_BOOL
| dmp_FragmentLightSource[0].twoSideDiffuse
|-
| 0x8A
| GL_BOOL
| dmp_FragmentLightSource[1].twoSideDiffuse
|-
| 0x8B
| GL_BOOL
| dmp_FragmentLightSource[2].twoSideDiffuse
|-
| 0x8C
| GL_BOOL
| dmp_FragmentLightSource[3].twoSideDiffuse
|-
| 0x8D
| GL_BOOL
| dmp_FragmentLightSource[4].twoSideDiffuse
|-
| 0x8E
| GL_BOOL
| dmp_FragmentLightSource[5].twoSideDiffuse
|-
| 0x8F
| GL_BOOL
| dmp_FragmentLightSource[6].twoSideDiffuse
|-
| 0x90
| GL_BOOL
| dmp_FragmentLightSource[7].twoSideDiffuse
|-
| 0x91
| GL_SAMPLER_1D
| dmp_FragmentLightSource[0].samplerSP
|-
| 0x92
| GL_SAMPLER_1D
| dmp_FragmentLightSource[1].samplerSP
|-
| 0x93
| GL_SAMPLER_1D
| dmp_FragmentLightSource[2].samplerSP
|-
| 0x94
| GL_SAMPLER_1D
| dmp_FragmentLightSource[3].samplerSP
|-
| 0x95
| GL_SAMPLER_1D
| dmp_FragmentLightSource[4].samplerSP
|-
| 0x96
| GL_SAMPLER_1D
| dmp_FragmentLightSource[5].samplerSP
|-
| 0x97
| GL_SAMPLER_1D
| dmp_FragmentLightSource[6].samplerSP
|-
| 0x98
| GL_SAMPLER_1D
| dmp_FragmentLightSource[7].samplerSP
|-
| 0x99
| GL_BOOL
| dmp_FragmentLightSource[0].spotEnabled
|-
| 0x9A
| GL_BOOL
| dmp_FragmentLightSource[1].spotEnabled
|-
| 0x9B
| GL_BOOL
| dmp_FragmentLightSource[2].spotEnabled
|-
| 0x9C
| GL_BOOL
| dmp_FragmentLightSource[3].spotEnabled
|-
| 0x9D
| GL_BOOL
| dmp_FragmentLightSource[4].spotEnabled
|-
| 0x9E
| GL_BOOL
| dmp_FragmentLightSource[5].spotEnabled
|-
| 0x9F
| GL_BOOL
| dmp_FragmentLightSource[6].spotEnabled
|-
| 0xA0
| GL_BOOL
| dmp_FragmentLightSource[7].spotEnabled
|-
| 0xA1
| GL_FLOAT
| dmp_FragmentLightSource[0].distanceAttenuationBias
|-
| 0xA2
| GL_FLOAT
| dmp_FragmentLightSource[1].distanceAttenuationBias
|-
| 0xA3
| GL_FLOAT
| dmp_FragmentLightSource[2].distanceAttenuationBias
|-
| 0xA4
| GL_FLOAT
| dmp_FragmentLightSource[3].distanceAttenuationBias
|-
| 0xA5
| GL_FLOAT
| dmp_FragmentLightSource[4].distanceAttenuationBias
|-
| 0xA6
| GL_FLOAT
| dmp_FragmentLightSource[5].distanceAttenuationBias
|-
| 0xA7
| GL_FLOAT
| dmp_FragmentLightSource[6].distanceAttenuationBias
|-
| 0xA8
| GL_FLOAT
| dmp_FragmentLightSource[7].distanceAttenuationBias
|-
| 0xA9
| GL_FLOAT
| dmp_FragmentLightSource[0].distanceAttenuationScale
|-
| 0xAA
| GL_FLOAT
| dmp_FragmentLightSource[1].distanceAttenuationScale
|-
| 0xAB
| GL_FLOAT
| dmp_FragmentLightSource[2].distanceAttenuationScale
|-
| 0xAC
| GL_FLOAT
| dmp_FragmentLightSource[3].distanceAttenuationScale
|-
| 0xAD
| GL_FLOAT
| dmp_FragmentLightSource[4].distanceAttenuationScale
|-
| 0xAE
| GL_FLOAT
| dmp_FragmentLightSource[5].distanceAttenuationScale
|-
| 0xAF
| GL_FLOAT
| dmp_FragmentLightSource[6].distanceAttenuationScale
|-
| 0xB0
| GL_FLOAT
| dmp_FragmentLightSource[7].distanceAttenuationScale
|-
| 0xB1
| GL_BOOL
| dmp_FragmentLightSource[0].distanceAttenuationEnabled
|-
| 0xB2
| GL_BOOL
| dmp_FragmentLightSource[1].distanceAttenuationEnabled
|-
| 0xB3
| GL_BOOL
| dmp_FragmentLightSource[2].distanceAttenuationEnabled
|-
| 0xB4
| GL_BOOL
| dmp_FragmentLightSource[3].distanceAttenuationEnabled
|-
| 0xB5
| GL_BOOL
| dmp_FragmentLightSource[4].distanceAttenuationEnabled
|-
| 0xB6
| GL_BOOL
| dmp_FragmentLightSource[5].distanceAttenuationEnabled
|-
| 0xB7
| GL_BOOL
| dmp_FragmentLightSource[6].distanceAttenuationEnabled
|-
| 0xB8
| GL_BOOL
| dmp_FragmentLightSource[7].distanceAttenuationEnabled
|-
| 0xB9
| GL_SAMPLER_1D
| dmp_FragmentLightSource[0].samplerDA
|-
| 0xBA
| GL_SAMPLER_1D
| dmp_FragmentLightSource[1].samplerDA
|-
| 0xBB
| GL_SAMPLER_1D
| dmp_FragmentLightSource[2].samplerDA
|-
| 0xBC
| GL_SAMPLER_1D
| dmp_FragmentLightSource[3].samplerDA
|-
| 0xBD
| GL_SAMPLER_1D
| dmp_FragmentLightSource[4].samplerDA
|-
| 0xBE
| GL_SAMPLER_1D
| dmp_FragmentLightSource[5].samplerDA
|-
| 0xBF
| GL_SAMPLER_1D
| dmp_FragmentLightSource[6].samplerDA
|-
| 0xC0
| GL_SAMPLER_1D
| dmp_FragmentLightSource[7].samplerDA
|-
| 0xC1
| GL_BOOL
| dmp_LightEnv.absLutInputD0
|-
| 0xC2
| GL_BOOL
| dmp_LightEnv.absLutInputD1
|-
| 0xC3
| GL_BOOL
| dmp_LightEnv.absLutInputSP
|-
| 0xC4
| GL_BOOL
| dmp_LightEnv.absLutInputFR
|-
| 0xC5
| GL_BOOL
| dmp_LightEnv.absLutInputRB
|-
| 0xC6
| GL_BOOL
| dmp_LightEnv.absLutInputRG
|-
| 0xC7
| GL_BOOL
| dmp_LightEnv.absLutInputRR
|-
| 0xC8
| GL_INT
| dmp_LightEnv.lutInputD0
|-
| 0xC9
| GL_INT
| dmp_LightEnv.lutInputD1
|-
| 0xCA
| GL_INT
| dmp_LightEnv.lutInputSP
|-
| 0xCB
| GL_INT
| dmp_LightEnv.lutInputFR
|-
| 0xCC
| GL_INT
| dmp_LightEnv.lutInputRB
|-
| 0xCD
| GL_INT
| dmp_LightEnv.lutInputRG
|-
| 0xCE
| GL_INT
| dmp_LightEnv.lutInputRR
|-
| 0xCF
| GL_FLOAT
| dmp_LightEnv.lutScaleD0
|-
| 0xD0
| GL_FLOAT
| dmp_LightEnv.lutScaleD1
|-
| 0xD1
| GL_FLOAT
| dmp_LightEnv.lutScaleSP
|-
| 0xD2
| GL_FLOAT
| dmp_LightEnv.lutScaleFR
|-
| 0xD3
| GL_FLOAT
| dmp_LightEnv.lutScaleRB
|-
| 0xD4
| GL_FLOAT
| dmp_LightEnv.lutScaleRG
|-
| 0xD5
| GL_FLOAT
| dmp_LightEnv.lutScaleRR
|-
| 0xD6
| GL_SAMPLER_1D
| dmp_FragmentMaterial.samplerD0
|-
| 0xD7
| GL_SAMPLER_1D
| dmp_FragmentMaterial.samplerD1
|-
| 0xD8
| GL_SAMPLER_1D
| dmp_FragmentMaterial.samplerFR
|-
| 0xD9
| GL_SAMPLER_1D
| dmp_FragmentMaterial.samplerRB
|-
| 0xDA
| GL_SAMPLER_1D
| dmp_FragmentMaterial.samplerRG
|-
| 0xDB
| GL_SAMPLER_1D
| dmp_FragmentMaterial.samplerRR
|-
| 0xDC
| GL_INT
| dmp_LightEnv.shadowSelector
|-
| 0xDD
| GL_INT
| dmp_LightEnv.bumpSelector
|-
| 0xDE
| GL_INT
| dmp_LightEnv.bumpMode
|-
| 0xDF
| GL_BOOL
| dmp_LightEnv.bumpRenorm
|-
| 0xE0
| GL_INT
| dmp_LightEnv.config
|-
| 0xE1
| GL_BOOL
| dmp_LightEnv.invertShadow
|-
| 0xE2
| GL_BOOL
| dmp_LightEnv.shadowPrimary
|-
| 0xE3
| GL_BOOL
| dmp_LightEnv.shadowSecondary
|-
| 0xE4
| GL_BOOL
| dmp_LightEnv.shadowAlpha
|-
| 0xE5
| GL_INT
| dmp_LightEnv.fresnelSelector
|-
| 0xE6
| GL_BOOL
| dmp_LightEnv.clampHighlights
|-
| 0xE7
| GL_BOOL
| dmp_LightEnv.lutEnabledD0
|-
| 0xE8
| GL_BOOL
| dmp_LightEnv.lutEnabledD1
|-
| 0xE9
| GL_BOOL
| dmp_LightEnv.lutEnabledRefl
|-
| 0xEA
| GL_INT
| dmp_TexEnv[0].combineRgb
|-
| 0xEB
| GL_INT
| dmp_TexEnv[1].combineRgb
|-
| 0xEC
| GL_INT
| dmp_TexEnv[2].combineRgb
|-
| 0xED
| GL_INT
| dmp_TexEnv[3].combineRgb
|-
| 0xEE
| GL_INT
| dmp_TexEnv[4].combineRgb
|-
| 0xEF
| GL_INT
| dmp_TexEnv[5].combineRgb
|-
| 0xF0
| GL_INT
| dmp_TexEnv[0].combineAlpha
|-
| 0xF1
| GL_INT
| dmp_TexEnv[1].combineAlpha
|-
| 0xF2
| GL_INT
| dmp_TexEnv[2].combineAlpha
|-
| 0xF3
| GL_INT
| dmp_TexEnv[3].combineAlpha
|-
| 0xF4
| GL_INT
| dmp_TexEnv[4].combineAlpha
|-
| 0xF5
| GL_INT
| dmp_TexEnv[5].combineAlpha
|-
| 0xF6
| GL_INT_VEC3
| dmp_TexEnv[0].srcRgb
|-
| 0xF7
| GL_INT_VEC3
| dmp_TexEnv[1].srcRgb
|-
| 0xF8
| GL_INT_VEC3
| dmp_TexEnv[2].srcRgb
|-
| 0xF9
| GL_INT_VEC3
| dmp_TexEnv[3].srcRgb
|-
| 0xFA
| GL_INT_VEC3
| dmp_TexEnv[4].srcRgb
|-
| 0xFB
| GL_INT_VEC3
| dmp_TexEnv[5].srcRgb
|-
| 0xFC
| GL_INT_VEC3
| dmp_TexEnv[0].srcAlpha
|-
| 0xFD
| GL_INT_VEC3
| dmp_TexEnv[1].srcAlpha
|-
| 0xFE
| GL_INT_VEC3
| dmp_TexEnv[2].srcAlpha
|-
| 0xFF
| GL_INT_VEC3
| dmp_TexEnv[3].srcAlpha
|-
| 0x100
| GL_INT_VEC3
| dmp_TexEnv[4].srcAlpha
|-
| 0x101
| GL_INT_VEC3
| dmp_TexEnv[5].srcAlpha
|-
| 0x102
| GL_INT_VEC3
| dmp_TexEnv[0].operandRgb
|-
| 0x103
| GL_INT_VEC3
| dmp_TexEnv[1].operandRgb
|-
| 0x104
| GL_INT_VEC3
| dmp_TexEnv[2].operandRgb
|-
| 0x105
| GL_INT_VEC3
| dmp_TexEnv[3].operandRgb
|-
| 0x106
| GL_INT_VEC3
| dmp_TexEnv[4].operandRgb
|-
| 0x107
| GL_INT_VEC3
| dmp_TexEnv[5].operandRgb
|-
| 0x108
| GL_INT_VEC3
| dmp_TexEnv[0].operandAlpha
|-
| 0x109
| GL_INT_VEC3
| dmp_TexEnv[1].operandAlpha
|-
| 0x10A
| GL_INT_VEC3
| dmp_TexEnv[2].operandAlpha
|-
| 0x10B
| GL_INT_VEC3
| dmp_TexEnv[3].operandAlpha
|-
| 0x10C
| GL_INT_VEC3
| dmp_TexEnv[4].operandAlpha
|-
| 0x10D
| GL_INT_VEC3
| dmp_TexEnv[5].operandAlpha
|-
| 0x10E
| GL_FLOAT
| dmp_TexEnv[0].scaleRgb
|-
| 0x10F
| GL_FLOAT
| dmp_TexEnv[1].scaleRgb
|-
| 0x110
| GL_FLOAT
| dmp_TexEnv[2].scaleRgb
|-
| 0x111
| GL_FLOAT
| dmp_TexEnv[3].scaleRgb
|-
| 0x112
| GL_FLOAT
| dmp_TexEnv[4].scaleRgb
|-
| 0x113
| GL_FLOAT
| dmp_TexEnv[5].scaleRgb
|-
| 0x114
| GL_FLOAT
| dmp_TexEnv[0].scaleAlpha
|-
| 0x115
| GL_FLOAT
| dmp_TexEnv[1].scaleAlpha
|-
| 0x116
| GL_FLOAT
| dmp_TexEnv[2].scaleAlpha
|-
| 0x117
| GL_FLOAT
| dmp_TexEnv[3].scaleAlpha
|-
| 0x118
| GL_FLOAT
| dmp_TexEnv[4].scaleAlpha
|-
| 0x119
| GL_FLOAT
| dmp_TexEnv[5].scaleAlpha
|-
| 0x11A
| GL_FLOAT_VEC4
| dmp_TexEnv[0].constRgba
|-
| 0x11B
| GL_FLOAT_VEC4
| dmp_TexEnv[1].constRgba
|-
| 0x11C
| GL_FLOAT_VEC4
| dmp_TexEnv[2].constRgba
|-
| 0x11D
| GL_FLOAT_VEC4
| dmp_TexEnv[3].constRgba
|-
| 0x11E
| GL_FLOAT_VEC4
| dmp_TexEnv[4].constRgba
|-
| 0x11F
| GL_FLOAT_VEC4
| dmp_TexEnv[5].constRgba
|-
| 0x120
| GL_FLOAT_VEC4
| dmp_TexEnv[0].bufferColor
|-
| 0x121
| GL_INT_VEC2
| dmp_TexEnv[1].bufferInput
|-
| 0x122
| GL_INT_VEC2
| dmp_TexEnv[2].bufferInput
|-
| 0x123
| GL_INT_VEC2
| dmp_TexEnv[3].bufferInput
|-
| 0x124
| GL_INT_VEC2
| dmp_TexEnv[4].bufferInput
|-
| 0x125
| GL_INT
| dmp_Fog.mode
|-
| 0x126
| GL_FLOAT_VEC3
| dmp_Fog.color
|-
| 0x127
| GL_BOOL
| dmp_Fog.zFlip
|-
| 0x128
| GL_SAMPLER_1D
| dmp_Fog.sampler
|}