Nintendo OpenGL: Difference between revisions

Smea (talk | contribs)
Neobrain (talk | contribs)
 
(28 intermediate revisions by 5 users not shown)
Line 1: Line 1:
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.
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.
Some of the information on this page is specific to Steeldiver : Sub Wars. The reason for this is that it's a fairly graphics-heavy game that's available on the eShop for '''free''', so it seems like a good target for a community REing effort.


== Description ==
== 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 glUniformXX. See below for the full list.
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 glUniformXX. See below for the full list.


== Shader program structure ==
== Shader program structure ==


When uniform values are set, they are attached to the current shader program and stored into the corresponding shader program structure.
When uniform values are set (in shm_uniformfv/shm_uniformiv), they are attached to the current shader program and stored into the corresponding shader program structure. They are later written to the GPU command buffer in __shv_validateShaderValidator or equivalent.


Shader program struct :
Shader program struct :
Line 38: Line 39:
| 0x04
| 0x04
| Number of program-specific uniforms
| Number of program-specific uniforms
|-
| 0x414
| 0x04
| Pointer to vertex shader struct
|-
|-
| 0x64C
| 0x64C
Line 101: Line 106:
| 0x04
| 0x04
| dmp_FragmentLightSource[k].distanceAttenuationScale (float)
| dmp_FragmentLightSource[k].distanceAttenuationScale (float)
|}
vertex/geometry shader struct:
{| class="wikitable" border="1"
! Offset
!  Size
!  Description
|-
| 0x0
| 0x4
| Pointer to shader code data
|-
| 0x4
| 0x4
| Size of shader code (in words)
|-
| 0x8
| 0x4
| Pointer to shader opdesc data
|-
| 0xC
| 0x4
| Size of shader opdescs (in words)
|}
|}


Line 109: Line 137:
2. Take note of its ID and type !
2. Take note of its ID and type !


3. Depending on whether its a float or not, go through the gigantic switches in shm_uniformfv or shm_uniformiv (non-float) based on the ID of your uniform
3. Depending on whether its a float or not, go through the gigantic switches in shm_uniformfv or shm_uniformiv (non-float) based on the ID of your uniform (in the case of '''steeldiver: sub wars''' you can now just go directly to the handler as it's listed in the table below)


4. Once you find the piece of code specific to your uniform, take note of how the values passed to shm_uniformfv/shm_uniformiv are written to the shader object
4. Once you find the piece of code specific to your uniform, take note of how the values passed to shm_uniformfv/shm_uniformiv are written to the shader object
Line 123: Line 151:
!  Type
!  Type
!  Name
!  Name
!  Handler address (Steeldiver : Sub Wars)
!  Shader Program struct offset
!  GPU Register
|-  
|-  
| 0x0
| 0x0
| GL_BOOL
| GL_BOOL
| dmp_Texture[0].perspectiveShadow
| dmp_Texture[0].perspectiveShadow
| 0x0012A504
| ?
| 0x008B bit0 (0 = enable??)
|-  
|-  
| 0x1
| 0x1
| GL_FLOAT
| GL_FLOAT
| dmp_Texture[0].shadowZBias
| dmp_Texture[0].shadowZBias
| 0x00155584
| 0xE44
| ?
|-  
|-  
| 0x2
| 0x2
| GL_FLOAT
| GL_FLOAT
| dmp_Texture[0].shadowZScale
| dmp_Texture[0].shadowZScale
| 0x001556A0
| 0xE48
| ?
|-  
|-  
| 0x3
| 0x3
| GL_INT
| GL_INT
| dmp_Texture[0].samplerType
| dmp_Texture[0].samplerType
| 0x0012A5D0
| ?
| ?
|-  
|-  
| 0x4
| 0x4
| GL_INT
| GL_INT
| dmp_Texture[1].samplerType
| dmp_Texture[1].samplerType
| 0x0012A6F8
| ?
| ?
|-  
|-  
| 0x5
| 0x5
| GL_INT
| GL_INT
| dmp_Texture[2].samplerType
| dmp_Texture[2].samplerType
| 0x0012A774
| ?
| ?
|-  
|-  
| 0x6
| 0x6
| GL_INT
| GL_INT
| dmp_Texture[3].samplerType
| dmp_Texture[3].samplerType
| 0x0012A7F0
| ?
| 0x0080 bit10 (?)
|-  
|-  
| 0x7
| 0x7
| GL_INT
| GL_INT
| dmp_Texture[2].texcoord
| dmp_Texture[2].texcoord
| 0x0012A8B4
| ?
| 0x0080 bit13 (1 = use texcoords from texture unit 1)
|-  
|-  
| 0x8
| 0x8
| GL_INT
| GL_INT
| dmp_Texture[3].texcoord
| dmp_Texture[3].texcoord
| 0x0012A97C
| ?
| 0x0080 bit8-9 (0-2 = use texcoords from texture unit 0-2 resp., 3 = forbidden?)
|-  
|-  
| 0x9
| 0x9
| GL_INT
| GL_INT
| dmp_Texture[3].ptRgbMap
| dmp_Texture[3].ptRgbMap
| 0x0012AA54
| ?
| 0x00A8 bit6-9
|-  
|-  
| 0xA
| 0xA
| GL_INT
| GL_INT
| dmp_Texture[3].ptAlphaMap
| dmp_Texture[3].ptAlphaMap
| 0x0012AB94
| ?
| 0x00A8 bit10-13
|-  
|-  
| 0xB
| 0xB
| GL_BOOL
| GL_BOOL
| dmp_Texture[3].ptAlphaSeparate
| dmp_Texture[3].ptAlphaSeparate
| 0x0012ACD4
| ?
| 0x00A8 bit14
|-  
|-  
| 0xC
| 0xC
| GL_INT
| GL_INT
| dmp_Texture[3].ptClampU
| dmp_Texture[3].ptClampU
| 0x0012ADB8
| ?
| 0x00A8 bit0-2
|-  
|-  
| 0xD
| 0xD
| GL_INT
| GL_INT
| dmp_Texture[3].ptClampV
| dmp_Texture[3].ptClampV
| 0x0012AEC0
| ?
| 0x00A8 bit3-5
|-  
|-  
| 0xE
| 0xE
| GL_INT
| GL_INT
| dmp_Texture[3].ptShiftU
| dmp_Texture[3].ptShiftU
| 0x0012AFD0
| ?
| 0x00A8 bit16-17
|-  
|-  
| 0xF
| 0xF
| GL_INT
| GL_INT
| dmp_Texture[3].ptShiftV
| dmp_Texture[3].ptShiftV
| 0x0012B0A0
| ?
| 0x00A8 bit18-19
|-  
|-  
| 0x10
| 0x10
| GL_INT
| GL_INT
| dmp_Texture[3].ptMinFilter
| dmp_Texture[3].ptMinFilter
| 0x0012B168
| ?
| 0x00AC bit0-2
|-  
|-  
| 0x11
| 0x11
| GL_INT
| GL_INT
| dmp_Texture[3].ptTexWidth
| dmp_Texture[3].ptTexWidth
| 0x0012B270
| ?
| 0x00AC bit11-18
|-  
|-  
| 0x12
| 0x12
| GL_INT
| GL_INT
| dmp_Texture[3].ptTexOffset
| dmp_Texture[3].ptTexOffset
| 0x0012B334
| ?
| 0x00AD bit0-7
|-  
|-  
| 0x13
| 0x13
| GL_FLOAT
| GL_FLOAT
| dmp_Texture[3].ptTexBias
| dmp_Texture[3].ptTexBias
| 0x001556B4
| 0xE10
| 0x00A8 bit20-27
|-  
|-  
| 0x14
| 0x14
| GL_BOOL
| GL_BOOL
| dmp_Texture[3].ptNoiseEnable
| dmp_Texture[3].ptNoiseEnable
| 0x0012B3E0
| ?
| 0x00A8 bit15
|-  
|-  
| 0x15
| 0x15
| GL_FLOAT_VEC3
| GL_FLOAT_VEC3
| dmp_Texture[3].ptNoiseU
| dmp_Texture[3].ptNoiseU
| 0x00155878
| 0xE14
| 0x00A9, 0x00AB
|-  
|-  
| 0x16
| 0x16
| GL_FLOAT_VEC3
| GL_FLOAT_VEC3
| dmp_Texture[3].ptNoiseV
| dmp_Texture[3].ptNoiseV
| 0x00155A7C
| 0xE20
| 0x00AA, 0x00AB
|-  
|-  
| 0x17
| 0x17
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_Texture[3].ptSamplerRgbMap
| dmp_Texture[3].ptSamplerRgbMap
| 0x0012B4B0
| 0xDF0
| ?
|-  
|-  
| 0x18
| 0x18
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_Texture[3].ptSamplerAlphaMap
| dmp_Texture[3].ptSamplerAlphaMap
| 0x0012B4F4
| 0xDF4
| ?
|-  
|-  
| 0x19
| 0x19
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_Texture[3].ptSamplerNoiseMap
| dmp_Texture[3].ptSamplerNoiseMap
| 0x0012B540
| 0xDF8
| ?
|-  
|-  
| 0x1A
| 0x1A
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_Texture[3].ptSamplerR
| dmp_Texture[3].ptSamplerR
| 0x0012B58C
| 0xDFC
| ?
|-  
|-  
| 0x1B
| 0x1B
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_Texture[3].ptSamplerG
| dmp_Texture[3].ptSamplerG
| 0x0012B5D8
| 0xE00
| ?
|-  
|-  
| 0x1C
| 0x1C
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_Texture[3].ptSamplerB
| dmp_Texture[3].ptSamplerB
| 0x0012B624
| 0xE04
| ?
|-  
|-  
| 0x1D
| 0x1D
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_Texture[3].ptSamplerA
| dmp_Texture[3].ptSamplerA
| 0x0012B670
| 0xE08
| ?
|-  
|-  
| 0x1E
| 0x1E
| GL_INT
| GL_INT
| dmp_FragOperation.mode
| dmp_FragOperation.mode
| 0x0012B6BC
| 0xE38
| ?
|-  
|-  
| 0x1F
| 0x1F
| GL_FLOAT
| GL_FLOAT
| dmp_FragOperation.penumbraScale
| dmp_FragOperation.penumbraScale
| 0x00155C98
| 0xE40
| ?
|-  
|-  
| 0x20
| 0x20
| GL_FLOAT
| GL_FLOAT
| dmp_FragOperation.penumbraBias
| dmp_FragOperation.penumbraBias
| 0x00155D8C
| 0xE3C
| ?
|-  
|-  
| 0x21
| 0x21
| GL_FLOAT
| GL_FLOAT
| dmp_FragOperation.wScale
| dmp_FragOperation.wScale
| 0x00155E9C
| 0xE4C
| ?
|-  
|-  
| 0x22
| 0x22
| GL_BOOL
| GL_BOOL
| dmp_FragOperation.enableClippingPlane
| dmp_FragOperation.enableClippingPlane
| 0x0012EAEC
| 0x568
| 0x0047 bit0
|-  
|-  
| 0x23
| 0x23
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragOperation.clippingPlane
| dmp_FragOperation.clippingPlane
| 0x00159474
| 0xE50
| ?
|-  
|-  
| 0x24
| 0x24
| GL_BOOL
| GL_BOOL
| dmp_FragOperation.enableAlphaTest
| dmp_FragOperation.enableAlphaTest
| 0x0012EBAC
| 0x64C
| ?
|-  
|-  
| 0x25
| 0x25
| GL_INT
| GL_INT
| dmp_FragOperation.alphaTestFunc
| dmp_FragOperation.alphaTestFunc
| 0x0012EC64
| 0x64C
| ?
|-  
|-  
| 0x26
| 0x26
| GL_FLOAT
| GL_FLOAT
| dmp_FragOperation.alphaRefValue
| dmp_FragOperation.alphaRefValue
| 0x0015971C
| 0x64C ?
| ?
|-  
|-  
| 0x27
| 0x27
| GL_FLOAT_VEC3
| GL_FLOAT_VEC3
| dmp_Gas.lightXY
| dmp_Gas.lightXY
| 0x001560EC
| 0xE84
| 0x0120 (vec[0] -> bit0-7, vec[1] -> bit8-15, vec[2] -> bit16-23)
|-  
|-  
| 0x28
| 0x28
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_Gas.lightZ
| dmp_Gas.lightZ
| 0x00156268
| 0xE90
| 0x0121 (vec[0] -> bit0-7, vec[1] -> bit8-15, vec[2] -> bit16-23), 0x0122 (vec[3] -> bit 0-7)
|-  
|-  
| 0x29
| 0x29
| GL_FLOAT
| GL_FLOAT
| dmp_Gas.deltaZ
| dmp_Gas.deltaZ
| 0x001564D4
| 0xEA0
| 0x0126 bit0-23
|-  
|-  
| 0x2A
| 0x2A
| GL_FLOAT
| GL_FLOAT
| dmp_Gas.accMax
| dmp_Gas.accMax
| 0x001565C0
| 0xEA4
| 0x00E5
|-  
|-  
| 0x2B
| 0x2B
| GL_BOOL
| GL_BOOL
| dmp_Gas.autoAcc
| dmp_Gas.autoAcc
| 0x0012B790
| 0xE74
| ?
|-  
|-  
| 0x2C
| 0x2C
| GL_FLOAT
| GL_FLOAT
| dmp_Gas.attenuation
| dmp_Gas.attenuation
| 0x00156684
| 0xEA8
| 0x00E4
|-  
|-  
| 0x2D
| 0x2D
| GL_INT
| GL_INT
| dmp_Gas.colorLutInput
| dmp_Gas.colorLutInput
| 0x0012B7A4
| 0x640
| 0x0122 bit8 (0x6060/0x6061 -> 0/1)
|-  
|-  
| 0x2E
| 0x2E
| GL_INT
| GL_INT
| dmp_Gas.shadingDensitySrc
| dmp_Gas.shadingDensitySrc
| 0x0012B854
| 0x624
| 0x00E0 bit3 (0x605E/0x605F -> 0/1)
|-  
|-  
| 0x2F
| 0x2F
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_Gas.samplerTR
| dmp_Gas.samplerTR
| 0x0012B910
| 0xE78
| ?
|-  
|-  
| 0x30
| 0x30
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_Gas.samplerTG
| dmp_Gas.samplerTG
| 0x0012B95C
| 0xE7C
| ?
|-  
|-  
| 0x31
| 0x31
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_Gas.samplerTB
| dmp_Gas.samplerTB
| 0x0012B9A8
| 0xE80
| ?
|-  
|-  
| 0x32
| 0x32
| GL_BOOL
| GL_BOOL
| dmp_FragmentLighting.enabled
| dmp_FragmentLighting.enabled
| 0x0012B9F4
| 0x590
| 0x00A8 bit0, 0x01C6 (0 = enabled)
|-  
|-  
| 0x33
| 0x33
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLighting.ambient
| dmp_FragmentLighting.ambient
| 0x00156744
| 0xA10
| 0x01C0?
|-  
|-  
| 0x34
| 0x34
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentMaterial.emission
| dmp_FragmentMaterial.emission
| 0x00156E1C
| 0xDE0
| 0x01C0?
|-  
|-  
| 0x35
| 0x35
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentMaterial.ambient
| dmp_FragmentMaterial.ambient
| 0x0015696C
| 0xDA0
| 0x01C0
|-  
|-  
| 0x36
| 0x36
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentMaterial.diffuse
| dmp_FragmentMaterial.diffuse
| 0x00157048
| 0xDB0
| ?
|-  
|-  
| 0x37
| 0x37
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentMaterial.specular0
| dmp_FragmentMaterial.specular0
| 0x001572E0
| 0xDC0
| ?
|-  
|-  
| 0x38
| 0x38
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentMaterial.specular1
| dmp_FragmentMaterial.specular1
| 0x0015756C
| 0xDD0
| ?
|-  
|-  
| 0x39
| 0x39
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[0].enabled
| dmp_FragmentLightSource[0].enabled
| 0x0012BD24
| 0xA20+0*0x70+0x00
| 0x01C5
|-  
|-  
| 0x3A
| 0x3A
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[1].enabled
| dmp_FragmentLightSource[1].enabled
| 0x0012BD24
| 0xA20+1*0x70+0x00
| 0x01C5
|-  
|-  
| 0x3B
| 0x3B
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[2].enabled
| dmp_FragmentLightSource[2].enabled
| 0x0012BD24
| 0xA20+2*0x70+0x00
| 0x01C5
|-  
|-  
| 0x3C
| 0x3C
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[3].enabled
| dmp_FragmentLightSource[3].enabled
| 0x0012BD24
| 0xA20+3*0x70+0x00
| 0x01C5
|-  
|-  
| 0x3D
| 0x3D
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[4].enabled
| dmp_FragmentLightSource[4].enabled
| 0x0012BD24
| 0xA20+4*0x70+0x00
| 0x01C5
|-  
|-  
| 0x3E
| 0x3E
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[5].enabled
| dmp_FragmentLightSource[5].enabled
| 0x0012BD24
| 0xA20+5*0x70+0x00
| 0x01C5
|-  
|-  
| 0x3F
| 0x3F
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[6].enabled
| dmp_FragmentLightSource[6].enabled
| 0x0012BD24
| 0xA20+6*0x70+0x00
| 0x01C5
|-  
|-  
| 0x40
| 0x40
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[7].enabled
| dmp_FragmentLightSource[7].enabled
| 0x0012BD24
| 0xA20+7*0x70+0x00
| 0x01C5
|-  
|-  
| 0x41
| 0x41
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[0].ambient
| dmp_FragmentLightSource[0].ambient
| 0x001579CC
| 0xA20+0*0x70+0x04
| 0x0143
|-  
|-  
| 0x42
| 0x42
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[1].ambient
| dmp_FragmentLightSource[1].ambient
| 0x001579CC
| 0xA20+1*0x70+0x04
| 0x0153
|-  
|-  
| 0x43
| 0x43
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[2].ambient
| dmp_FragmentLightSource[2].ambient
| 0x001579CC
| 0xA20+2*0x70+0x04
| 0x0163
|-  
|-  
| 0x44
| 0x44
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[3].ambient
| dmp_FragmentLightSource[3].ambient
| 0x001579CC
| 0xA20+3*0x70+0x04
| 0x0173
|-  
|-  
| 0x45
| 0x45
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[4].ambient
| dmp_FragmentLightSource[4].ambient
| 0x001579CC
| 0xA20+4*0x70+0x04
| 0x0183
|-  
|-  
| 0x46
| 0x46
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[5].ambient
| dmp_FragmentLightSource[5].ambient
| 0x001579CC
| 0xA20+5*0x70+0x04
| 0x0193
|-  
|-  
| 0x47
| 0x47
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[6].ambient
| dmp_FragmentLightSource[6].ambient
| 0x001579CC
| 0xA20+6*0x70+0x04
| 0x01A3
|-  
|-  
| 0x48
| 0x48
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[7].ambient
| dmp_FragmentLightSource[7].ambient
| 0x001579CC
| 0xA20+7*0x70+0x04
| 0x01B3
|-  
|-  
| 0x49
| 0x49
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[0].diffuse
| dmp_FragmentLightSource[0].diffuse
| 0x00157C10
| 0xA20+0*0x70+0x14
| 0x0142
|-  
|-  
| 0x4A
| 0x4A
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[1].diffuse
| dmp_FragmentLightSource[1].diffuse
| 0x00157C10
| 0xA20+1*0x70+0x14
| 0x0152
|-  
|-  
| 0x4B
| 0x4B
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[2].diffuse
| dmp_FragmentLightSource[2].diffuse
| 0x00157C10
| 0xA20+2*0x70+0x14
| 0x0162
|-  
|-  
| 0x4C
| 0x4C
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[3].diffuse
| dmp_FragmentLightSource[3].diffuse
| 0x00157C10
| 0xA20+3*0x70+0x14
| 0x0172
|-  
|-  
| 0x4D
| 0x4D
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[4].diffuse
| dmp_FragmentLightSource[4].diffuse
| 0x00157C10
| 0xA20+4*0x70+0x14
| 0x0182
|-  
|-  
| 0x4E
| 0x4E
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[5].diffuse
| dmp_FragmentLightSource[5].diffuse
| 0x00157C10
| 0xA20+5*0x70+0x14
| 0x0192
|-  
|-  
| 0x4F
| 0x4F
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[6].diffuse
| dmp_FragmentLightSource[6].diffuse
| 0x00157C10
| 0xA20+6*0x70+0x14
| 0x01A2
|-  
|-  
| 0x50
| 0x50
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[7].diffuse
| dmp_FragmentLightSource[7].diffuse
| 0x00157C10
| 0xA20+7*0x70+0x14
| 0x01B2
|-  
|-  
| 0x51
| 0x51
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[0].specular0
| dmp_FragmentLightSource[0].specular0
| 0x00157E5C
| 0xA20+0*0x70+0x24
| 0x01C8 ?
|-  
|-  
| 0x52
| 0x52
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[1].specular0
| dmp_FragmentLightSource[1].specular0
| 0x00157E5C
| 0xA20+1*0x70+0x24
| 0x01C8 ?
|-  
|-  
| 0x53
| 0x53
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[2].specular0
| dmp_FragmentLightSource[2].specular0
| 0x00157E5C
| 0xA20+2*0x70+0x24
| 0x01C8 ?
|-  
|-  
| 0x54
| 0x54
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[3].specular0
| dmp_FragmentLightSource[3].specular0
| 0x00157E5C
| 0xA20+3*0x70+0x24
| 0x01C8 ?
|-  
|-  
| 0x55
| 0x55
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[4].specular0
| dmp_FragmentLightSource[4].specular0
| 0x00157E5C
| 0xA20+4*0x70+0x24
| 0x01C8 ?
|-  
|-  
| 0x56
| 0x56
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[5].specular0
| dmp_FragmentLightSource[5].specular0
| 0x00157E5C
| 0xA20+5*0x70+0x24
| 0x01C8 ?
|-  
|-  
| 0x57
| 0x57
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[6].specular0
| dmp_FragmentLightSource[6].specular0
| 0x00157E5C
| 0xA20+6*0x70+0x24
| 0x01C8 ?
|-  
|-  
| 0x58
| 0x58
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[7].specular0
| dmp_FragmentLightSource[7].specular0
| 0x00157E5C
| 0xA20+7*0x70+0x24
| 0x01C8 ?
|-  
|-  
| 0x59
| 0x59
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[0].specular1
| dmp_FragmentLightSource[0].specular1
| 0x001580B4
| 0xA20+0*0x70+0x34
| 0x01C8 ?
|-  
|-  
| 0x5A
| 0x5A
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[1].specular1
| dmp_FragmentLightSource[1].specular1
| 0x001580B4
| 0xA20+1*0x70+0x34
| 0x01C8 ?
|-  
|-  
| 0x5B
| 0x5B
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[2].specular1
| dmp_FragmentLightSource[2].specular1
| 0x001580B4
| 0xA20+2*0x70+0x34
| 0x01C8 ?
|-  
|-  
| 0x5C
| 0x5C
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[3].specular1
| dmp_FragmentLightSource[3].specular1
| 0x001580B4
| 0xA20+3*0x70+0x34
| 0x01C8 ?
|-  
|-  
| 0x5D
| 0x5D
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[4].specular1
| dmp_FragmentLightSource[4].specular1
| 0x001580B4
| 0xA20+4*0x70+0x34
| 0x01C8 ?
|-  
|-  
| 0x5E
| 0x5E
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[5].specular1
| dmp_FragmentLightSource[5].specular1
| 0x001580B4
| 0xA20+5*0x70+0x34
| 0x01C8 ?
|-  
|-  
| 0x5F
| 0x5F
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[6].specular1
| dmp_FragmentLightSource[6].specular1
| 0x001580B4
| 0xA20+6*0x70+0x34
| 0x01C8 ?
|-  
|-  
| 0x60
| 0x60
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[7].specular1
| dmp_FragmentLightSource[7].specular1
| 0x001580B4
| 0xA20+7*0x70+0x34
| 0x01C8 ?
|-  
|-  
| 0x61
| 0x61
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[0].position
| dmp_FragmentLightSource[0].position
| 0x001584B0
| 0xA20+0*0x70+0x44
| 0x01C8 ?
|-  
|-  
| 0x62
| 0x62
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[1].position
| dmp_FragmentLightSource[1].position
| 0x001584B0
| 0xA20+1*0x70+0x44
| 0x01C8 ?
|-  
|-  
| 0x63
| 0x63
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[2].position
| dmp_FragmentLightSource[2].position
| 0x001584B0
| 0xA20+2*0x70+0x44
| 0x01C8 ?
|-  
|-  
| 0x64
| 0x64
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[3].position
| dmp_FragmentLightSource[3].position
| 0x001584B0
| 0xA20+3*0x70+0x44
| 0x01C8 ?
|-  
|-  
| 0x65
| 0x65
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[4].position
| dmp_FragmentLightSource[4].position
| 0x001584B0
| 0xA20+4*0x70+0x44
| 0x01C8 ?
|-  
|-  
| 0x66
| 0x66
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[5].position
| dmp_FragmentLightSource[5].position
| 0x001584B0
| 0xA20+5*0x70+0x44
| 0x01C8 ?
|-  
|-  
| 0x67
| 0x67
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[6].position
| dmp_FragmentLightSource[6].position
| 0x001584B0
| 0xA20+6*0x70+0x44
| 0x01C8 ?
|-  
|-  
| 0x68
| 0x68
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_FragmentLightSource[7].position
| dmp_FragmentLightSource[7].position
| 0x001584B0
| 0xA20+7*0x70+0x44
| 0x01C8 ?
|-  
|-  
| 0x69
| 0x69
| GL_FLOAT_VEC3
| GL_FLOAT_VEC3
| dmp_FragmentLightSource[0].spotDirection
| dmp_FragmentLightSource[0].spotDirection
| 0x001587E4
| 0xA20+0*0x70+0x54
| 0x01C8 ?
|-  
|-  
| 0x6A
| 0x6A
| GL_FLOAT_VEC3
| GL_FLOAT_VEC3
| dmp_FragmentLightSource[1].spotDirection
| dmp_FragmentLightSource[1].spotDirection
| 0x001587E4
| 0xA20+1*0x70+0x54
| 0x01C8 ?
|-  
|-  
| 0x6B
| 0x6B
| GL_FLOAT_VEC3
| GL_FLOAT_VEC3
| dmp_FragmentLightSource[2].spotDirection
| dmp_FragmentLightSource[2].spotDirection
| 0x001587E4
| 0xA20+2*0x70+0x54
| 0x01C8 ?
|-  
|-  
| 0x6C
| 0x6C
| GL_FLOAT_VEC3
| GL_FLOAT_VEC3
| dmp_FragmentLightSource[3].spotDirection
| dmp_FragmentLightSource[3].spotDirection
| 0x001587E4
| 0xA20+3*0x70+0x54
| 0x01C8 ?
|-  
|-  
| 0x6D
| 0x6D
| GL_FLOAT_VEC3
| GL_FLOAT_VEC3
| dmp_FragmentLightSource[4].spotDirection
| dmp_FragmentLightSource[4].spotDirection
| 0x001587E4
| 0xA20+4*0x70+0x54
| 0x01C8 ?
|-  
|-  
| 0x6E
| 0x6E
| GL_FLOAT_VEC3
| GL_FLOAT_VEC3
| dmp_FragmentLightSource[5].spotDirection
| dmp_FragmentLightSource[5].spotDirection
| 0x001587E4
| 0xA20+5*0x70+0x54
| 0x01C8 ?
|-  
|-  
| 0x6F
| 0x6F
| GL_FLOAT_VEC3
| GL_FLOAT_VEC3
| dmp_FragmentLightSource[6].spotDirection
| dmp_FragmentLightSource[6].spotDirection
| 0x001587E4
| 0xA20+6*0x70+0x54
| 0x01C8 ?
|-  
|-  
| 0x70
| 0x70
| GL_FLOAT_VEC3
| GL_FLOAT_VEC3
| dmp_FragmentLightSource[7].spotDirection
| dmp_FragmentLightSource[7].spotDirection
| 0x001587E4
| 0xA20+7*0x70+0x54
| 0x01C8 ?
|-  
|-  
| 0x71
| 0x71
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[0].shadowed
| dmp_FragmentLightSource[0].shadowed
| 0x0012C20C
| 0x7C0
| 0x01C8 ?
|-  
|-  
| 0x72
| 0x72
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[1].shadowed
| dmp_FragmentLightSource[1].shadowed
| 0x0012C20C
| 0x7C0
| 0x01C8 ?
|-  
|-  
| 0x73
| 0x73
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[2].shadowed
| dmp_FragmentLightSource[2].shadowed
| 0x0012C20C
| 0x7C0
| 0x01C8 ?
|-  
|-  
| 0x74
| 0x74
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[3].shadowed
| dmp_FragmentLightSource[3].shadowed
| 0x0012C20C
| 0x7C0
| 0x01C8 ?
|-  
|-  
| 0x75
| 0x75
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[4].shadowed
| dmp_FragmentLightSource[4].shadowed
| 0x0012C20C
| 0x7C0
| 0x01C8 ?
|-  
|-  
| 0x76
| 0x76
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[5].shadowed
| dmp_FragmentLightSource[5].shadowed
| 0x0012C20C
| 0x7C0
| 0x01C8 ?
|-  
|-  
| 0x77
| 0x77
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[6].shadowed
| dmp_FragmentLightSource[6].shadowed
| 0x0012C20C
| 0x7C0
| 0x01C8 ?
|-  
|-  
| 0x78
| 0x78
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[7].shadowed
| dmp_FragmentLightSource[7].shadowed
| 0x0012C20C
| 0x7C0
| 0x01C8 ?
|-  
|-  
| 0x79
| 0x79
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[0].geomFactor0
| dmp_FragmentLightSource[0].geomFactor0
| 0x0012C018
| 0x7D8
| 0x0149 bit2
|-  
|-  
| 0x7A
| 0x7A
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[1].geomFactor0
| dmp_FragmentLightSource[1].geomFactor0
| 0x0012C018
| 0x7D8
| 0x0159 bit2
|-  
|-  
| 0x7B
| 0x7B
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[2].geomFactor0
| dmp_FragmentLightSource[2].geomFactor0
| 0x0012C018
| 0x7D8
| 0x0169 bit2
|-  
|-  
| 0x7C
| 0x7C
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[3].geomFactor0
| dmp_FragmentLightSource[3].geomFactor0
| 0x0012C018
| 0x7D8
| 0x0179 bit2
|-  
|-  
| 0x7D
| 0x7D
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[4].geomFactor0
| dmp_FragmentLightSource[4].geomFactor0
| 0x0012C018
| 0x7D8
| 0x0189 bit2
|-  
|-  
| 0x7E
| 0x7E
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[5].geomFactor0
| dmp_FragmentLightSource[5].geomFactor0
| 0x0012C018
| 0x7D8
| 0x0199 bit2
|-  
|-  
| 0x7F
| 0x7F
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[6].geomFactor0
| dmp_FragmentLightSource[6].geomFactor0
| 0x0012C018
| 0x7D8
| 0x01A9 bit2
|-  
|-  
| 0x80
| 0x80
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[7].geomFactor0
| dmp_FragmentLightSource[7].geomFactor0
| 0x0012C018
| 0x7D8
| 0x01B9 bit2
|-  
|-  
| 0x81
| 0x81
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[0].geomFactor1
| dmp_FragmentLightSource[0].geomFactor1
| 0x0012C114
| 0x7D8
| 0x0149 bit3
|-  
|-  
| 0x82
| 0x82
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[1].geomFactor1
| dmp_FragmentLightSource[1].geomFactor1
| 0x0012C114
| 0x7D8
| 0x0159 bit3
|-  
|-  
| 0x83
| 0x83
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[2].geomFactor1
| dmp_FragmentLightSource[2].geomFactor1
| 0x0012C114
| 0x7D8
| 0x0169 bit3
|-  
|-  
| 0x84
| 0x84
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[3].geomFactor1
| dmp_FragmentLightSource[3].geomFactor1
| 0x0012C114
| 0x7D8
| 0x0179 bit3
|-  
|-  
| 0x85
| 0x85
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[4].geomFactor1
| dmp_FragmentLightSource[4].geomFactor1
| 0x0012C114
| 0x7D8
| 0x0189 bit3
|-  
|-  
| 0x86
| 0x86
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[5].geomFactor1
| dmp_FragmentLightSource[5].geomFactor1
| 0x0012C114
| 0x7D8
| 0x0199 bit3
|-  
|-  
| 0x87
| 0x87
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[6].geomFactor1
| dmp_FragmentLightSource[6].geomFactor1
| 0x0012C114
| 0x7D8
| 0x01A9 bit3
|-  
|-  
| 0x88
| 0x88
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[7].geomFactor1
| dmp_FragmentLightSource[7].geomFactor1
| 0x0012C114
| 0x7D8
| 0x01B9 bit3
|-  
|-  
| 0x89
| 0x89
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[0].twoSideDiffuse
| dmp_FragmentLightSource[0].twoSideDiffuse
| 0x0012BF10
| 0x7D8
| 0x0149 bit1
|-  
|-  
| 0x8A
| 0x8A
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[1].twoSideDiffuse
| dmp_FragmentLightSource[1].twoSideDiffuse
| 0x0012BF10
| 0x7D8
| 0x0159 bit1
|-  
|-  
| 0x8B
| 0x8B
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[2].twoSideDiffuse
| dmp_FragmentLightSource[2].twoSideDiffuse
| 0x0012BF10
| 0x7D8
| 0x0169 bit1
|-  
|-  
| 0x8C
| 0x8C
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[3].twoSideDiffuse
| dmp_FragmentLightSource[3].twoSideDiffuse
| 0x0012BF10
| 0x7D8
| 0x0179 bit1
|-  
|-  
| 0x8D
| 0x8D
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[4].twoSideDiffuse
| dmp_FragmentLightSource[4].twoSideDiffuse
| 0x0012BF10
| 0x7D8
| 0x0189 bit1
|-  
|-  
| 0x8E
| 0x8E
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[5].twoSideDiffuse
| dmp_FragmentLightSource[5].twoSideDiffuse
| 0x0012BF10
| 0x7D8
| 0x0199 bit1
|-  
|-  
| 0x8F
| 0x8F
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[6].twoSideDiffuse
| dmp_FragmentLightSource[6].twoSideDiffuse
| 0x0012BF10
| 0x7D8
| 0x01A9 bit1
|-  
|-  
| 0x90
| 0x90
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[7].twoSideDiffuse
| dmp_FragmentLightSource[7].twoSideDiffuse
| 0x0012BF10
| 0x7D8
| 0x01B9 bit1
|-  
|-  
| 0x91
| 0x91
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentLightSource[0].samplerSP
| dmp_FragmentLightSource[0].samplerSP
| 0x0012C31C
| 0xA20+0*0x70+0x60
| 0x01C8 ?
|-  
|-  
| 0x92
| 0x92
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentLightSource[1].samplerSP
| dmp_FragmentLightSource[1].samplerSP
| 0x0012C31C
| 0xA20+1*0x70+0x60
| 0x01C8 ?
|-  
|-  
| 0x93
| 0x93
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentLightSource[2].samplerSP
| dmp_FragmentLightSource[2].samplerSP
| 0x0012C31C
| 0xA20+2*0x70+0x60
| 0x01C8 ?
|-  
|-  
| 0x94
| 0x94
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentLightSource[3].samplerSP
| dmp_FragmentLightSource[3].samplerSP
| 0x0012C31C
| 0xA20+3*0x70+0x60
| 0x01C8 ?
|-  
|-  
| 0x95
| 0x95
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentLightSource[4].samplerSP
| dmp_FragmentLightSource[4].samplerSP
| 0x0012C31C
| 0xA20+4*0x70+0x60
| 0x01C8 ?
|-  
|-  
| 0x96
| 0x96
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentLightSource[5].samplerSP
| dmp_FragmentLightSource[5].samplerSP
| 0x0012C31C
| 0xA20+5*0x70+0x60
| 0x01C8 ?
|-  
|-  
| 0x97
| 0x97
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentLightSource[6].samplerSP
| dmp_FragmentLightSource[6].samplerSP
| 0x0012C31C
| 0xA20+6*0x70+0x60
| 0x01C8 ?
|-  
|-  
| 0x98
| 0x98
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentLightSource[7].samplerSP
| dmp_FragmentLightSource[7].samplerSP
| 0x0012C31C
| 0xA20+7*0x70+0x60
| 0x01C8 ?
|-  
|-  
| 0x99
| 0x99
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[0].spotEnabled
| dmp_FragmentLightSource[0].spotEnabled
| 0x0012C380
| ?
| 0x01C4 bit3 (1 = disable?)
|-  
|-  
| 0x9A
| 0x9A
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[1].spotEnabled
| dmp_FragmentLightSource[1].spotEnabled
| 0x0012C380
| ?
| 0x01C4 bit4 (1 = disable?)
|-  
|-  
| 0x9B
| 0x9B
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[2].spotEnabled
| dmp_FragmentLightSource[2].spotEnabled
| 0x0012C380
| ?
| 0x01C4 bit5 (1 = disable?)
|-  
|-  
| 0x9C
| 0x9C
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[3].spotEnabled
| dmp_FragmentLightSource[3].spotEnabled
| 0x0012C380
| ?
| 0x01C4 bit6 (1 = disable?)
|-  
|-  
| 0x9D
| 0x9D
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[4].spotEnabled
| dmp_FragmentLightSource[4].spotEnabled
| 0x0012C380
| ?
| 0x01C4 bit7 (1 = disable?)
|-  
|-  
| 0x9E
| 0x9E
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[5].spotEnabled
| dmp_FragmentLightSource[5].spotEnabled
| 0x0012C380
| ?
| 0x01C4 bit8 (1 = disable?)
|-  
|-  
| 0x9F
| 0x9F
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[6].spotEnabled
| dmp_FragmentLightSource[6].spotEnabled
| 0x0012C380
| ?
| 0x01C4 bit9 (1 = disable?)
|-  
|-  
| 0xA0
| 0xA0
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[7].spotEnabled
| dmp_FragmentLightSource[7].spotEnabled
| 0x0012C380
| ?
| 0x01C4 bit10 (1 = disable?)
|-  
|-  
| 0xA1
| 0xA1
| GL_FLOAT
| GL_FLOAT
| dmp_FragmentLightSource[0].distanceAttenuationBias
| dmp_FragmentLightSource[0].distanceAttenuationBias
| 0x00158AE8
| 0xA20+0*0x70+0x64
| 0x01C8 ?
|-  
|-  
| 0xA2
| 0xA2
| GL_FLOAT
| GL_FLOAT
| dmp_FragmentLightSource[1].distanceAttenuationBias
| dmp_FragmentLightSource[1].distanceAttenuationBias
| 0x00158AE8
| 0xA20+1*0x70+0x64
| 0x01C8 ?
|-  
|-  
| 0xA3
| 0xA3
| GL_FLOAT
| GL_FLOAT
| dmp_FragmentLightSource[2].distanceAttenuationBias
| dmp_FragmentLightSource[2].distanceAttenuationBias
| 0x00158AE8
| 0xA20+2*0x70+0x64
| 0x01C8 ?
|-  
|-  
| 0xA4
| 0xA4
| GL_FLOAT
| GL_FLOAT
| dmp_FragmentLightSource[3].distanceAttenuationBias
| dmp_FragmentLightSource[3].distanceAttenuationBias
| 0x00158AE8
| 0xA20+3*0x70+0x64
| 0x01C8 ?
|-  
|-  
| 0xA5
| 0xA5
| GL_FLOAT
| GL_FLOAT
| dmp_FragmentLightSource[4].distanceAttenuationBias
| dmp_FragmentLightSource[4].distanceAttenuationBias
| 0x00158AE8
| 0xA20+4*0x70+0x64
| 0x01C8 ?
|-  
|-  
| 0xA6
| 0xA6
| GL_FLOAT
| GL_FLOAT
| dmp_FragmentLightSource[5].distanceAttenuationBias
| dmp_FragmentLightSource[5].distanceAttenuationBias
| 0x00158AE8
| 0xA20+5*0x70+0x64
| 0x01C8 ?
|-  
|-  
| 0xA7
| 0xA7
| GL_FLOAT
| GL_FLOAT
| dmp_FragmentLightSource[6].distanceAttenuationBias
| dmp_FragmentLightSource[6].distanceAttenuationBias
| 0x00158AE8
| 0xA20+6*0x70+0x64
| 0x01C8 ?
|-  
|-  
| 0xA8
| 0xA8
| GL_FLOAT
| GL_FLOAT
| dmp_FragmentLightSource[7].distanceAttenuationBias
| dmp_FragmentLightSource[7].distanceAttenuationBias
| 0x00158AE8
| 0xA20+7*0x70+0x64
| 0x01C8 ?
|-  
|-  
| 0xA9
| 0xA9
| GL_FLOAT
| GL_FLOAT
| dmp_FragmentLightSource[0].distanceAttenuationScale
| dmp_FragmentLightSource[0].distanceAttenuationScale
| 0x00158C44
| 0xA20+0*0x70+0x68
| 0x01C8 ?
|-  
|-  
| 0xAA
| 0xAA
| GL_FLOAT
| GL_FLOAT
| dmp_FragmentLightSource[1].distanceAttenuationScale
| dmp_FragmentLightSource[1].distanceAttenuationScale
| 0x00158C44
| 0xA20+1*0x70+0x68
| 0x01C8 ?
|-  
|-  
| 0xAB
| 0xAB
| GL_FLOAT
| GL_FLOAT
| dmp_FragmentLightSource[2].distanceAttenuationScale
| dmp_FragmentLightSource[2].distanceAttenuationScale
| 0x00158C44
| 0xA20+2*0x70+0x68
| 0x01C8 ?
|-  
|-  
| 0xAC
| 0xAC
| GL_FLOAT
| GL_FLOAT
| dmp_FragmentLightSource[3].distanceAttenuationScale
| dmp_FragmentLightSource[3].distanceAttenuationScale
| 0x00158C44
| 0xA20+3*0x70+0x68
| 0x01C8 ?
|-  
|-  
| 0xAD
| 0xAD
| GL_FLOAT
| GL_FLOAT
| dmp_FragmentLightSource[4].distanceAttenuationScale
| dmp_FragmentLightSource[4].distanceAttenuationScale
| 0x00158C44
| 0xA20+4*0x70+0x68
| 0x01C8 ?
|-  
|-  
| 0xAE
| 0xAE
| GL_FLOAT
| GL_FLOAT
| dmp_FragmentLightSource[5].distanceAttenuationScale
| dmp_FragmentLightSource[5].distanceAttenuationScale
| 0x00158C44
| 0xA20+5*0x70+0x68
| 0x01C8 ?
|-  
|-  
| 0xAF
| 0xAF
| GL_FLOAT
| GL_FLOAT
| dmp_FragmentLightSource[6].distanceAttenuationScale
| dmp_FragmentLightSource[6].distanceAttenuationScale
| 0x00158C44
| 0xA20+6*0x70+0x68
| 0x01C8 ?
|-  
|-  
| 0xB0
| 0xB0
| GL_FLOAT
| GL_FLOAT
| dmp_FragmentLightSource[7].distanceAttenuationScale
| dmp_FragmentLightSource[7].distanceAttenuationScale
| 0x00158C44
| 0xA20+7*0x70+0x68
| 0x01C8 ?
|-  
|-  
| 0xB1
| 0xB1
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[0].distanceAttenuationEnabled
| dmp_FragmentLightSource[0].distanceAttenuationEnabled
| 0x0012C4A0
| ?
| 0x01C8 ?
|-  
|-  
| 0xB2
| 0xB2
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[1].distanceAttenuationEnabled
| dmp_FragmentLightSource[1].distanceAttenuationEnabled
| 0x0012C4A0
| ?
| 0x01C8 ?
|-  
|-  
| 0xB3
| 0xB3
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[2].distanceAttenuationEnabled
| dmp_FragmentLightSource[2].distanceAttenuationEnabled
| 0x0012C4A0
| ?
| 0x01C8 ?
|-  
|-  
| 0xB4
| 0xB4
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[3].distanceAttenuationEnabled
| dmp_FragmentLightSource[3].distanceAttenuationEnabled
| 0x0012C4A0
| ?
| 0x01C8 ?
|-  
|-  
| 0xB5
| 0xB5
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[4].distanceAttenuationEnabled
| dmp_FragmentLightSource[4].distanceAttenuationEnabled
| 0x0012C4A0
| ?
| 0x01C8 ?
|-  
|-  
| 0xB6
| 0xB6
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[5].distanceAttenuationEnabled
| dmp_FragmentLightSource[5].distanceAttenuationEnabled
| 0x0012C4A0
| ?
| 0x01C8 ?
|-  
|-  
| 0xB7
| 0xB7
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[6].distanceAttenuationEnabled
| dmp_FragmentLightSource[6].distanceAttenuationEnabled
| 0x0012C4A0
| ?
| 0x01C8 ?
|-  
|-  
| 0xB8
| 0xB8
| GL_BOOL
| GL_BOOL
| dmp_FragmentLightSource[7].distanceAttenuationEnabled
| dmp_FragmentLightSource[7].distanceAttenuationEnabled
| 0x0012C4A0
| ?
| 0x01C8 ?
|-  
|-  
| 0xB9
| 0xB9
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentLightSource[0].samplerDA
| dmp_FragmentLightSource[0].samplerDA
| 0x0012C578
| 0xA20+0*0x70+0x6C
| 0x01C8 ?
|-  
|-  
| 0xBA
| 0xBA
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentLightSource[1].samplerDA
| dmp_FragmentLightSource[1].samplerDA
| 0x0012C578
| 0xA20+1*0x70+0x6C
| 0x01C8 ?
|-  
|-  
| 0xBB
| 0xBB
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentLightSource[2].samplerDA
| dmp_FragmentLightSource[2].samplerDA
| 0x0012C578
| 0xA20+2*0x70+0x6C
| 0x01C8 ?
|-  
|-  
| 0xBC
| 0xBC
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentLightSource[3].samplerDA
| dmp_FragmentLightSource[3].samplerDA
| 0x0012C578
| 0xA20+3*0x70+0x6C
| 0x01C8 ?
|-  
|-  
| 0xBD
| 0xBD
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentLightSource[4].samplerDA
| dmp_FragmentLightSource[4].samplerDA
| 0x0012C578
| 0xA20+4*0x70+0x6C
| 0x01C8 ?
|-  
|-  
| 0xBE
| 0xBE
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentLightSource[5].samplerDA
| dmp_FragmentLightSource[5].samplerDA
| 0x0012C578
| 0xA20+5*0x70+0x6C
| 0x01C8 ?
|-  
|-  
| 0xBF
| 0xBF
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentLightSource[6].samplerDA
| dmp_FragmentLightSource[6].samplerDA
| 0x0012C578
| 0xA20+6*0x70+0x6C
| 0x01C8 ?
|-  
|-  
| 0xC0
| 0xC0
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentLightSource[7].samplerDA
| dmp_FragmentLightSource[7].samplerDA
| 0x0012C578
| 0xA20+7*0x70+0x6C
| 0x01C8 ?
|-  
|-  
| 0xC1
| 0xC1
| GL_BOOL
| GL_BOOL
| dmp_LightEnv.absLutInputD0
| dmp_LightEnv.absLutInputD0
| 0x0012C5D8
| ?
| 0x01D0 bit12 (1 = disable?)
|-  
|-  
| 0xC2
| 0xC2
| GL_BOOL
| GL_BOOL
| dmp_LightEnv.absLutInputD1
| dmp_LightEnv.absLutInputD1
| 0x0012C5D8
| ?
| 0x01D0 bit13 (1 = disable?)
|-  
|-  
| 0xC3
| 0xC3
| GL_BOOL
| GL_BOOL
| dmp_LightEnv.absLutInputSP
| dmp_LightEnv.absLutInputSP
| 0x0012C5D8
| ?
| 0x01D0 bit14 (1 = disable?)
|-  
|-  
| 0xC4
| 0xC4
| GL_BOOL
| GL_BOOL
| dmp_LightEnv.absLutInputFR
| dmp_LightEnv.absLutInputFR
| 0x0012C5D8
| ?
| 0x01D0 bit15 (1 = disable?)
|-  
|-  
| 0xC5
| 0xC5
| GL_BOOL
| GL_BOOL
| dmp_LightEnv.absLutInputRB
| dmp_LightEnv.absLutInputRB
| 0x0012C5D8
| ?
| 0x01D0 bit16 (1 = disable?)
|-  
|-  
| 0xC6
| 0xC6
| GL_BOOL
| GL_BOOL
| dmp_LightEnv.absLutInputRG
| dmp_LightEnv.absLutInputRG
| 0x0012C5D8
| ?
| 0x01D0 bit17 (1 = disable?)
|-  
|-  
| 0xC7
| 0xC7
| GL_BOOL
| GL_BOOL
| dmp_LightEnv.absLutInputRR
| dmp_LightEnv.absLutInputRR
| 0x0012C5D8
| ?
| 0x01D0 bit18 (1 = disable?)
|-  
|-  
| 0xC8
| 0xC8
| GL_INT
| GL_INT
| dmp_LightEnv.lutInputD0
| dmp_LightEnv.lutInputD0
| 0x0012C6E8
| ?
| 0x01D1 bit0-2
|-  
|-  
| 0xC9
| 0xC9
| GL_INT
| GL_INT
| dmp_LightEnv.lutInputD1
| dmp_LightEnv.lutInputD1
| 0x0012C6E8
| ?
| 0x01D1 bit4-6
|-  
|-  
| 0xCA
| 0xCA
| GL_INT
| GL_INT
| dmp_LightEnv.lutInputSP
| dmp_LightEnv.lutInputSP
| 0x0012C6E8
| ?
| 0x01D1 bit8-10
|-  
|-  
| 0xCB
| 0xCB
| GL_INT
| GL_INT
| dmp_LightEnv.lutInputFR
| dmp_LightEnv.lutInputFR
| 0x0012C6E8
| ?
| 0x01D1 bit12-14
|-  
|-  
| 0xCC
| 0xCC
| GL_INT
| GL_INT
| dmp_LightEnv.lutInputRB
| dmp_LightEnv.lutInputRB
| 0x0012C6E8
| ?
| 0x01D1 bit16-18
|-  
|-  
| 0xCD
| 0xCD
| GL_INT
| GL_INT
| dmp_LightEnv.lutInputRG
| dmp_LightEnv.lutInputRG
| 0x0012C6E8
| ?
| 0x01D1 bit20-22
|-  
|-  
| 0xCE
| 0xCE
| GL_INT
| GL_INT
| dmp_LightEnv.lutInputRR
| dmp_LightEnv.lutInputRR
| 0x0012C6E8
| ?
| 0x01D1 bit24-26
|-  
|-  
| 0xCF
| 0xCF
| GL_FLOAT
| GL_FLOAT
| dmp_LightEnv.lutScaleD0
| dmp_LightEnv.lutScaleD0
| 0x00155404
| ?
| 0x01D2 bit0-3
|-  
|-  
| 0xD0
| 0xD0
| GL_FLOAT
| GL_FLOAT
| dmp_LightEnv.lutScaleD1
| dmp_LightEnv.lutScaleD1
| 0x00155404
| ?
| 0x01D2 bit4-7
|-  
|-  
| 0xD1
| 0xD1
| GL_FLOAT
| GL_FLOAT
| dmp_LightEnv.lutScaleSP
| dmp_LightEnv.lutScaleSP
| 0x00155404
| ?
| 0x01D2 bit8-11
|-  
|-  
| 0xD2
| 0xD2
| GL_FLOAT
| GL_FLOAT
| dmp_LightEnv.lutScaleFR
| dmp_LightEnv.lutScaleFR
| 0x00155404
| ?
| 0x01D2 bit12-15
|-  
|-  
| 0xD3
| 0xD3
| GL_FLOAT
| GL_FLOAT
| dmp_LightEnv.lutScaleRB
| dmp_LightEnv.lutScaleRB
| 0x00155404
| ?
|0x01D2 bit16-19
|-  
|-  
| 0xD4
| 0xD4
| GL_FLOAT
| GL_FLOAT
| dmp_LightEnv.lutScaleRG
| dmp_LightEnv.lutScaleRG
| 0x00155404
| ?
| 0x01D2 bit20-23
|-  
|-  
| 0xD5
| 0xD5
| GL_FLOAT
| GL_FLOAT
| dmp_LightEnv.lutScaleRR
| dmp_LightEnv.lutScaleRR
| 0x00155404
| ?
| 0x01D2 bit24-27
|-  
|-  
| 0xD6
| 0xD6
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentMaterial.samplerD0
| dmp_FragmentMaterial.samplerD0
| 0x0012C7D0
| ?
| ?
|-  
|-  
| 0xD7
| 0xD7
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentMaterial.samplerD1
| dmp_FragmentMaterial.samplerD1
| 0x0012C7D0
| ?
| ?
|-  
|-  
| 0xD8
| 0xD8
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentMaterial.samplerFR
| dmp_FragmentMaterial.samplerFR
| 0x0012C7D0
| ?
| ?
|-  
|-  
| 0xD9
| 0xD9
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentMaterial.samplerRB
| dmp_FragmentMaterial.samplerRB
| 0x0012C7D0
| ?
| ?
|-  
|-  
| 0xDA
| 0xDA
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentMaterial.samplerRG
| dmp_FragmentMaterial.samplerRG
| 0x0012C7D0
| ?
| ?
|-  
|-  
| 0xDB
| 0xDB
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_FragmentMaterial.samplerRR
| dmp_FragmentMaterial.samplerRR
| 0x0012C7D0
| ?
| ?
|-  
|-  
| 0xDC
| 0xDC
| GL_INT
| GL_INT
| dmp_LightEnv.shadowSelector
| dmp_LightEnv.shadowSelector
| 0x0012CE44
| ?
| 0x01C3 bit24-25
|-  
|-  
| 0xDD
| 0xDD
| GL_INT
| GL_INT
| dmp_LightEnv.bumpSelector
| dmp_LightEnv.bumpSelector
| 0x0012CD88
| ?
| 0x01C3 bit22-23
|-  
|-  
| 0xDE
| 0xDE
| GL_INT
| GL_INT
| dmp_LightEnv.bumpMode
| dmp_LightEnv.bumpMode
| 0x0012D4B4
| ?
| ?
|-  
|-  
| 0xDF
| 0xDF
| GL_BOOL
| GL_BOOL
| dmp_LightEnv.bumpRenorm
| dmp_LightEnv.bumpRenorm
| 0x0012D8A0
| ?
| ?
|-  
|-  
| 0xE0
| 0xE0
| GL_INT
| GL_INT
| dmp_LightEnv.config
| dmp_LightEnv.config
| 0x0012D5E4
| ?
| ?
|-  
|-  
| 0xE1
| 0xE1
| GL_BOOL
| GL_BOOL
| dmp_LightEnv.invertShadow
| dmp_LightEnv.invertShadow
| 0x0012CF04
| ?
| ?
|-  
|-  
| 0xE2
| 0xE2
| GL_BOOL
| GL_BOOL
| dmp_LightEnv.shadowPrimary
| dmp_LightEnv.shadowPrimary
| 0x0012CFD4
| ?
| ?
|-  
|-  
| 0xE3
| 0xE3
| GL_BOOL
| GL_BOOL
| dmp_LightEnv.shadowSecondary
| dmp_LightEnv.shadowSecondary
| 0x0012D1B8
| ?
| ?
|-  
|-  
| 0xE4
| 0xE4
| GL_BOOL
| GL_BOOL
| dmp_LightEnv.shadowAlpha
| dmp_LightEnv.shadowAlpha
| 0x0012D350
| ?
| ?
|-  
|-  
| 0xE5
| 0xE5
| GL_INT
| GL_INT
| dmp_LightEnv.fresnelSelector
| dmp_LightEnv.fresnelSelector
| 0x0012D720
| ?
| ?
|-  
|-  
| 0xE6
| 0xE6
| GL_BOOL
| GL_BOOL
| dmp_LightEnv.clampHighlights
| dmp_LightEnv.clampHighlights
| 0x0012D9B0
| ?
| ?
|-  
|-  
| 0xE7
| 0xE7
| GL_BOOL
| GL_BOOL
| dmp_LightEnv.lutEnabledD0
| dmp_LightEnv.lutEnabledD0
| 0x0012DA80
| ?
| ?
|-  
|-  
| 0xE8
| 0xE8
| GL_BOOL
| GL_BOOL
| dmp_LightEnv.lutEnabledD1
| dmp_LightEnv.lutEnabledD1
| 0x0012DB58
| ?
| ?
|-  
|-  
| 0xE9
| 0xE9
| GL_BOOL
| GL_BOOL
| dmp_LightEnv.lutEnabledRefl
| dmp_LightEnv.lutEnabledRefl
| 0x0012C83C
| ?
| ?
|-  
|-  
| 0xEA
| 0xEA
| GL_INT
| GL_INT
| dmp_TexEnv[0].combineRgb
| dmp_TexEnv[0].combineRgb
| 0x0012DC2C
| ?
| 0xC2
|-  
|-  
| 0xEB
| 0xEB
| GL_INT
| GL_INT
| dmp_TexEnv[1].combineRgb
| dmp_TexEnv[1].combineRgb
| 0x0012DC2C
| ?
| 0xCA
|-  
|-  
| 0xEC
| 0xEC
| GL_INT
| GL_INT
| dmp_TexEnv[2].combineRgb
| dmp_TexEnv[2].combineRgb
| 0x0012DC2C
| ?
| 0xD2
|-  
|-  
| 0xED
| 0xED
| GL_INT
| GL_INT
| dmp_TexEnv[3].combineRgb
| dmp_TexEnv[3].combineRgb
| 0x0012DC2C
| ?
| 0xDA
|-  
|-  
| 0xEE
| 0xEE
| GL_INT
| GL_INT
| dmp_TexEnv[4].combineRgb
| dmp_TexEnv[4].combineRgb
| 0x0012DC2C
| ?
| 0xF2
|-  
|-  
| 0xEF
| 0xEF
| GL_INT
| GL_INT
| dmp_TexEnv[5].combineRgb
| dmp_TexEnv[5].combineRgb
| 0x0012DC2C
| ?
| 0xFA
|-  
|-  
| 0xF0
| 0xF0
| GL_INT
| GL_INT
| dmp_TexEnv[0].combineAlpha
| dmp_TexEnv[0].combineAlpha
| 0x0012DD9C
| ?
| 0xC2
|-  
|-  
| 0xF1
| 0xF1
| GL_INT
| GL_INT
| dmp_TexEnv[1].combineAlpha
| dmp_TexEnv[1].combineAlpha
| 0x0012DD9C
| ?
| 0xCA
|-  
|-  
| 0xF2
| 0xF2
| GL_INT
| GL_INT
| dmp_TexEnv[2].combineAlpha
| dmp_TexEnv[2].combineAlpha
| 0x0012DD9C
| ?
| 0xD2
|-  
|-  
| 0xF3
| 0xF3
| GL_INT
| GL_INT
| dmp_TexEnv[3].combineAlpha
| dmp_TexEnv[3].combineAlpha
| 0x0012DD9C
| ?
| 0xDA
|-  
|-  
| 0xF4
| 0xF4
| GL_INT
| GL_INT
| dmp_TexEnv[4].combineAlpha
| dmp_TexEnv[4].combineAlpha
| 0x0012DD9C
| ?
| 0xF2
|-  
|-  
| 0xF5
| 0xF5
| GL_INT
| GL_INT
| dmp_TexEnv[5].combineAlpha
| dmp_TexEnv[5].combineAlpha
| 0x0012DD9C
| ?
| 0xFA
|-  
|-  
| 0xF6
| 0xF6
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[0].srcRgb
| dmp_TexEnv[0].srcRgb
| 0x0012DF08
| ?
| 0xC0
|-  
|-  
| 0xF7
| 0xF7
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[1].srcRgb
| dmp_TexEnv[1].srcRgb
| 0x0012DF08
| ?
| 0xC8
|-  
|-  
| 0xF8
| 0xF8
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[2].srcRgb
| dmp_TexEnv[2].srcRgb
| 0x0012DF08
| ?
| 0xD0
|-  
|-  
| 0xF9
| 0xF9
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[3].srcRgb
| dmp_TexEnv[3].srcRgb
| 0x0012DF08
| ?
| 0xD8
|-  
|-  
| 0xFA
| 0xFA
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[4].srcRgb
| dmp_TexEnv[4].srcRgb
| 0x0012DF08
| ?
| 0xF0
|-  
|-  
| 0xFB
| 0xFB
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[5].srcRgb
| dmp_TexEnv[5].srcRgb
| 0x0012DF08
| ?
| 0xF8
|-  
|-  
| 0xFC
| 0xFC
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[0].srcAlpha
| dmp_TexEnv[0].srcAlpha
| 0x0012E0FC
| ?
| 0xC0
|-  
|-  
| 0xFD
| 0xFD
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[1].srcAlpha
| dmp_TexEnv[1].srcAlpha
| 0x0012E0FC
| ?
| 0xC8
|-  
|-  
| 0xFE
| 0xFE
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[2].srcAlpha
| dmp_TexEnv[2].srcAlpha
| 0x0012E0FC
| ?
| 0xD0
|-  
|-  
| 0xFF
| 0xFF
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[3].srcAlpha
| dmp_TexEnv[3].srcAlpha
| 0x0012E0FC
| ?
| 0xD8
|-  
|-  
| 0x100
| 0x100
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[4].srcAlpha
| dmp_TexEnv[4].srcAlpha
| 0x0012E0FC
| ?
| 0xF0
|-  
|-  
| 0x101
| 0x101
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[5].srcAlpha
| dmp_TexEnv[5].srcAlpha
| 0x0012E0FC
| ?
| 0xF8
|-  
|-  
| 0x102
| 0x102
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[0].operandRgb
| dmp_TexEnv[0].operandRgb
| 0x0012E2F0
| ?
| 0xC1
|-  
|-  
| 0x103
| 0x103
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[1].operandRgb
| dmp_TexEnv[1].operandRgb
| 0x0012E2F0
| ?
| 0xC9
|-  
|-  
| 0x104
| 0x104
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[2].operandRgb
| dmp_TexEnv[2].operandRgb
| 0x0012E2F0
| ?
| 0xD1
|-  
|-  
| 0x105
| 0x105
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[3].operandRgb
| dmp_TexEnv[3].operandRgb
| 0x0012E2F0
| ?
| 0xD9
|-  
|-  
| 0x106
| 0x106
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[4].operandRgb
| dmp_TexEnv[4].operandRgb
| 0x0012E2F0
| ?
| 0xF1
|-  
|-  
| 0x107
| 0x107
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[5].operandRgb
| dmp_TexEnv[5].operandRgb
| 0x0012E2F0
| ?
| 0xF9
|-  
|-  
| 0x108
| 0x108
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[0].operandAlpha
| dmp_TexEnv[0].operandAlpha
| 0x0012E51C
| ?
| 0xC1
|-  
|-  
| 0x109
| 0x109
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[1].operandAlpha
| dmp_TexEnv[1].operandAlpha
| 0x0012E51C
| ?
| 0xC9
|-  
|-  
| 0x10A
| 0x10A
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[2].operandAlpha
| dmp_TexEnv[2].operandAlpha
| 0x0012E51C
| ?
| 0xD1
|-  
|-  
| 0x10B
| 0x10B
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[3].operandAlpha
| dmp_TexEnv[3].operandAlpha
| 0x0012E51C
| ?
| 0xD9
|-  
|-  
| 0x10C
| 0x10C
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[4].operandAlpha
| dmp_TexEnv[4].operandAlpha
| 0x0012E51C
| ?
| 0xF1
|-  
|-  
| 0x10D
| 0x10D
| GL_INT_VEC3
| GL_INT_VEC3
| dmp_TexEnv[5].operandAlpha
| dmp_TexEnv[5].operandAlpha
| 0x0012E51C
| ?
| 0xF9
|-  
|-  
| 0x10E
| 0x10E
| GL_FLOAT
| GL_FLOAT
| dmp_TexEnv[0].scaleRgb
| dmp_TexEnv[0].scaleRgb
| 0x00155464
| ?
| ?
|-  
|-  
| 0x10F
| 0x10F
| GL_FLOAT
| GL_FLOAT
| dmp_TexEnv[1].scaleRgb
| dmp_TexEnv[1].scaleRgb
| 0x00155464
| ?
| ?
|-  
|-  
| 0x110
| 0x110
| GL_FLOAT
| GL_FLOAT
| dmp_TexEnv[2].scaleRgb
| dmp_TexEnv[2].scaleRgb
| 0x00155464
| ?
| ?
|-  
|-  
| 0x111
| 0x111
| GL_FLOAT
| GL_FLOAT
| dmp_TexEnv[3].scaleRgb
| dmp_TexEnv[3].scaleRgb
| 0x00155464
| ?
| ?
|-  
|-  
| 0x112
| 0x112
| GL_FLOAT
| GL_FLOAT
| dmp_TexEnv[4].scaleRgb
| dmp_TexEnv[4].scaleRgb
| 0x00155464
| ?
| ?
|-  
|-  
| 0x113
| 0x113
| GL_FLOAT
| GL_FLOAT
| dmp_TexEnv[5].scaleRgb
| dmp_TexEnv[5].scaleRgb
| 0x00155464
| ?
| ?
|-  
|-  
| 0x114
| 0x114
| GL_FLOAT
| GL_FLOAT
| dmp_TexEnv[0].scaleAlpha
| dmp_TexEnv[0].scaleAlpha
| 0x00158EDC
| ?
| ?
|-  
|-  
| 0x115
| 0x115
| GL_FLOAT
| GL_FLOAT
| dmp_TexEnv[1].scaleAlpha
| dmp_TexEnv[1].scaleAlpha
| 0x00158EDC
| ?
| ?
|-  
|-  
| 0x116
| 0x116
| GL_FLOAT
| GL_FLOAT
| dmp_TexEnv[2].scaleAlpha
| dmp_TexEnv[2].scaleAlpha
| 0x00158EDC
| ?
| ?
|-  
|-  
| 0x117
| 0x117
| GL_FLOAT
| GL_FLOAT
| dmp_TexEnv[3].scaleAlpha
| dmp_TexEnv[3].scaleAlpha
| 0x00158EDC
| ?
| ?
|-  
|-  
| 0x118
| 0x118
| GL_FLOAT
| GL_FLOAT
| dmp_TexEnv[4].scaleAlpha
| dmp_TexEnv[4].scaleAlpha
| 0x00158EDC
| ?
| ?
|-  
|-  
| 0x119
| 0x119
| GL_FLOAT
| GL_FLOAT
| dmp_TexEnv[5].scaleAlpha
| dmp_TexEnv[5].scaleAlpha
| 0x00158EDC
| ?
| ?
|-  
|-  
| 0x11A
| 0x11A
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_TexEnv[0].constRgba
| dmp_TexEnv[0].constRgba
| 0x00158FF4
| ?
| 0xC3
|-  
|-  
| 0x11B
| 0x11B
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_TexEnv[1].constRgba
| dmp_TexEnv[1].constRgba
| 0x00158FF4
| ?
| 0xCB
|-  
|-  
| 0x11C
| 0x11C
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_TexEnv[2].constRgba
| dmp_TexEnv[2].constRgba
| 0x00158FF4
| ?
| 0xD3
|-  
|-  
| 0x11D
| 0x11D
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_TexEnv[3].constRgba
| dmp_TexEnv[3].constRgba
| 0x00158FF4
| ?
| 0xDB
|-  
|-  
| 0x11E
| 0x11E
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_TexEnv[4].constRgba
| dmp_TexEnv[4].constRgba
| 0x00158FF4
| ?
| 0xF3
|-  
|-  
| 0x11F
| 0x11F
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_TexEnv[5].constRgba
| dmp_TexEnv[5].constRgba
| 0x00158FF4
| ?
| 0xFB
|-  
|-  
| 0x120
| 0x120
| GL_FLOAT_VEC4
| GL_FLOAT_VEC4
| dmp_TexEnv[0].bufferColor
| dmp_TexEnv[0].bufferColor
| 0x001591C0
| ?
| ?
|-  
|-  
| 0x121
| 0x121
| GL_INT_VEC2
| GL_INT_VEC2
| dmp_TexEnv[1].bufferInput
| dmp_TexEnv[1].bufferInput
| 0x0012E6D0
| ?
| ?
|-  
|-  
| 0x122
| 0x122
| GL_INT_VEC2
| GL_INT_VEC2
| dmp_TexEnv[2].bufferInput
| dmp_TexEnv[2].bufferInput
| 0x0012E6D0
| ?
| ?
|-  
|-  
| 0x123
| 0x123
| GL_INT_VEC2
| GL_INT_VEC2
| dmp_TexEnv[3].bufferInput
| dmp_TexEnv[3].bufferInput
| 0x0012E6D0
| ?
| ?
|-  
|-  
| 0x124
| 0x124
| GL_INT_VEC2
| GL_INT_VEC2
| dmp_TexEnv[4].bufferInput
| dmp_TexEnv[4].bufferInput
| 0x0012E6D0
| ?
| ?
|-  
|-  
| 0x125
| 0x125
| GL_INT
| GL_INT
| dmp_Fog.mode
| dmp_Fog.mode
| 0x0012E7F8
| ?
| 0x00E0 bit0-2 (5 -> fog (0x0B60), 7 -> gas (0x6050))
|-  
|-  
| 0x126
| 0x126
| GL_FLOAT_VEC3
| GL_FLOAT_VEC3
| dmp_Fog.color
| dmp_Fog.color
| 0x00159338
| ?
| ?
|-  
|-  
| 0x127
| 0x127
| GL_BOOL
| GL_BOOL
| dmp_Fog.zFlip
| dmp_Fog.zFlip
| 0x0012E9DC
| ?
| 0x00E0 bit16
|-  
|-  
| 0x128
| 0x128
| GL_SAMPLER_1D
| GL_SAMPLER_1D
| dmp_Fog.sampler
| dmp_Fog.sampler
| 0x0012EAA4
| ?
| ?
|}
On steeldiver's uniform handlers : R1 is a pointer to the current shader program object, R12 is a pointer to the data the uniform is being set to.
== Other Symbols ==
The list above is not exhaustive. A number of other strings specific to Nintendo's rendering framework have been found. Below is a table listing those strings including the location they were found in.
{| class="wikitable" border="1"
! Name
!  Context
!  Occurrence
|-
| dmp_Point.viewport.xy
| Name of a shader uniform
| CTRAging's romfs:/gpu/GasCessna/shader.shbin
|-
| dmp_Point.distanceAttenuation
| Name of a shader uniform
| CTRAging's romfs:/gpu/GasCessna/shader.shbin
|-
| dmp_Point.Position
| Name of a shader uniform
| CTRAging's romfs:/gpu/GasCessna/shader.shbin
|-
| dmp_Point.PointSize
| Name of a shader uniform
| CTRAging's romfs:/gpu/GasCessna/shader.shbin
|}
|}