1 /*---------------------------------------------------------------------------*
2   Project:  NintendoWare
3   File:     gfx_ShaderUniforms.cpp
4 
5   Copyright (C)2009-2011 Nintendo/HAL Laboratory, Inc.  All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain proprietary
8   information of Nintendo and/or its licensed developers and are protected by
9   national and international copyright laws. They may not be disclosed to third
10   parties or copied or duplicated in any form, in whole or in part, without the
11   prior written consent of Nintendo.
12 
13   The content herein is highly confidential and should be handled accordingly.
14 
15   $Revision: 31311 $
16  *---------------------------------------------------------------------------*/
17 #include "precompiled.h"
18 
19 #include <nw/gfx/gfx_ShaderProgram.h>
20 #include <nw/gfx/gfx_ShaderUniforms.h>
21 
22 namespace nw
23 {
24 namespace gfx
25 {
26 
27 #if defined(NW_GFX_PROGRAM_OBJECT_ENABLED)
28 
29 void
BuildUniformLocations(GLuint programObject)30 ShaderUniformLocation::BuildUniformLocations(GLuint programObject)
31 {
32     m_UniformLocations.reserve(SHADER_UNIFORM_COUNT);
33     m_UniformLocations.push_back(glGetUniformLocation(programObject, "ProjMtx"));
34     m_UniformLocations.push_back(glGetUniformLocation(programObject, "ViewMtx"));
35     m_UniformLocations.push_back(glGetUniformLocation(programObject, "WrldMtx"));
36     m_UniformLocations.push_back(glGetUniformLocation(programObject, "NormMtx"));
37     m_UniformLocations.push_back(glGetUniformLocation(programObject, "PosOffs"));
38     m_UniformLocations.push_back(glGetUniformLocation(programObject, "IrScale"));
39     m_UniformLocations.push_back(glGetUniformLocation(programObject, "TexcMap"));
40     m_UniformLocations.push_back(glGetUniformLocation(programObject, "TexMtx0"));
41     m_UniformLocations.push_back(glGetUniformLocation(programObject, "TexMtx1"));
42     m_UniformLocations.push_back(glGetUniformLocation(programObject, "TexMtx2"));
43     m_UniformLocations.push_back(glGetUniformLocation(programObject, "TexTran"));
44     m_UniformLocations.push_back(glGetUniformLocation(programObject, "MatAmbi"));
45     m_UniformLocations.push_back(glGetUniformLocation(programObject, "MatDiff"));
46     m_UniformLocations.push_back(glGetUniformLocation(programObject, "HslGCol"));
47     m_UniformLocations.push_back(glGetUniformLocation(programObject, "HslSCol"));
48     m_UniformLocations.push_back(glGetUniformLocation(programObject, "HslSDir"));
49     m_UniformLocations.push_back(glGetUniformLocation(programObject, "UnivReg"));
50     m_UniformLocations.push_back(glGetUniformLocation(programObject, "IsSmoSk"));
51     m_UniformLocations.push_back(glGetUniformLocation(programObject, "IsRgdSk"));
52     m_UniformLocations.push_back(glGetUniformLocation(programObject, "IsHemiL"));
53     m_UniformLocations.push_back(glGetUniformLocation(programObject, "IsHemiO"));
54     m_UniformLocations.push_back(glGetUniformLocation(programObject, "IsVertA"));
55     m_UniformLocations.push_back(glGetUniformLocation(programObject, "IsBoneW"));
56     m_UniformLocations.push_back(glGetUniformLocation(programObject, "UvMap0"));
57     m_UniformLocations.push_back(glGetUniformLocation(programObject, "UvMap1"));
58     m_UniformLocations.push_back(glGetUniformLocation(programObject, "UvMap2"));
59     m_UniformLocations.push_back(glGetUniformLocation(programObject, "IsVertL"));
60     m_UniformLocations.push_back(glGetUniformLocation(programObject, "IsTex1"));
61     m_UniformLocations.push_back(glGetUniformLocation(programObject, "IsTex2"));
62     m_UniformLocations.push_back(glGetUniformLocation(programObject, "IsQuate"));
63     m_UniformLocations.push_back(glGetUniformLocation(programObject, "LightCt"));
64     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[0].combineRgb"));
65     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[1].combineRgb"));
66     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[2].combineRgb"));
67     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[3].combineRgb"));
68     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[4].combineRgb"));
69     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[5].combineRgb"));
70     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[0].combineAlpha"));
71     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[1].combineAlpha"));
72     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[2].combineAlpha"));
73     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[3].combineAlpha"));
74     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[4].combineAlpha"));
75     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[5].combineAlpha"));
76     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[0].srcRgb"));
77     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[1].srcRgb"));
78     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[2].srcRgb"));
79     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[3].srcRgb"));
80     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[4].srcRgb"));
81     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[5].srcRgb"));
82     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[0].srcAlpha"));
83     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[1].srcAlpha"));
84     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[2].srcAlpha"));
85     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[3].srcAlpha"));
86     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[4].srcAlpha"));
87     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[5].srcAlpha"));
88     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[0].operandRgb"));
89     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[1].operandRgb"));
90     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[2].operandRgb"));
91     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[3].operandRgb"));
92     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[4].operandRgb"));
93     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[5].operandRgb"));
94     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[0].operandAlpha"));
95     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[1].operandAlpha"));
96     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[2].operandAlpha"));
97     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[3].operandAlpha"));
98     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[4].operandAlpha"));
99     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[5].operandAlpha"));
100     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[1].bufferInput"));
101     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[2].bufferInput"));
102     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[3].bufferInput"));
103     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[4].bufferInput"));
104     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[0].scaleRgb"));
105     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[1].scaleRgb"));
106     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[2].scaleRgb"));
107     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[3].scaleRgb"));
108     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[4].scaleRgb"));
109     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[5].scaleRgb"));
110     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[0].scaleAlpha"));
111     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[1].scaleAlpha"));
112     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[2].scaleAlpha"));
113     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[3].scaleAlpha"));
114     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[4].scaleAlpha"));
115     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[5].scaleAlpha"));
116     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[0].constRgba"));
117     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[1].constRgba"));
118     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[2].constRgba"));
119     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[3].constRgba"));
120     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[4].constRgba"));
121     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[5].constRgba"));
122     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_TexEnv[0].bufferColor"));
123     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLighting.enabled"));
124     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLighting.ambient"));
125     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentMaterial.samplerD0"));
126     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentMaterial.samplerD1"));
127     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentMaterial.samplerRR"));
128     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentMaterial.samplerRG"));
129     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentMaterial.samplerRB"));
130     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentMaterial.samplerSP"));
131     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentMaterial.samplerFR"));
132     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentMaterial.emission"));
133     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentMaterial.ambient"));
134     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentMaterial.diffuse"));
135     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentMaterial.specular0"));
136     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentMaterial.specular1"));
137     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[0].enabled"));
138     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[1].enabled"));
139     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[2].enabled"));
140     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[3].enabled"));
141     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[4].enabled"));
142     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[5].enabled"));
143     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[6].enabled"));
144     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[7].enabled"));
145     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[0].ambient"));
146     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[1].ambient"));
147     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[2].ambient"));
148     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[3].ambient"));
149     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[4].ambient"));
150     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[5].ambient"));
151     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[6].ambient"));
152     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[7].ambient"));
153     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[0].diffuse"));
154     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[1].diffuse"));
155     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[2].diffuse"));
156     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[3].diffuse"));
157     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[4].diffuse"));
158     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[5].diffuse"));
159     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[6].diffuse"));
160     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[7].diffuse"));
161     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[0].specular0"));
162     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[1].specular0"));
163     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[2].specular0"));
164     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[3].specular0"));
165     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[4].specular0"));
166     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[5].specular0"));
167     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[6].specular0"));
168     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[7].specular0"));
169     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[0].specular1"));
170     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[1].specular1"));
171     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[2].specular1"));
172     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[3].specular1"));
173     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[4].specular1"));
174     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[5].specular1"));
175     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[6].specular1"));
176     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[7].specular1"));
177     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[0].position"));
178     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[1].position"));
179     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[2].position"));
180     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[3].position"));
181     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[4].position"));
182     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[5].position"));
183     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[6].position"));
184     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[7].position"));
185     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[0].spotDirection"));
186     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[1].spotDirection"));
187     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[2].spotDirection"));
188     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[3].spotDirection"));
189     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[4].spotDirection"));
190     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[5].spotDirection"));
191     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[6].spotDirection"));
192     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[7].spotDirection"));
193     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[0].shadowed"));
194     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[1].shadowed"));
195     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[2].shadowed"));
196     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[3].shadowed"));
197     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[4].shadowed"));
198     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[5].shadowed"));
199     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[6].shadowed"));
200     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[7].shadowed"));
201     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[0].geomFactor0"));
202     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[1].geomFactor0"));
203     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[2].geomFactor0"));
204     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[3].geomFactor0"));
205     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[4].geomFactor0"));
206     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[5].geomFactor0"));
207     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[6].geomFactor0"));
208     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[7].geomFactor0"));
209     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[0].geomFactor1"));
210     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[1].geomFactor1"));
211     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[2].geomFactor1"));
212     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[3].geomFactor1"));
213     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[4].geomFactor1"));
214     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[5].geomFactor1"));
215     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[6].geomFactor1"));
216     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[7].geomFactor1"));
217     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[0].twoSideDiffuse"));
218     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[1].twoSideDiffuse"));
219     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[2].twoSideDiffuse"));
220     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[3].twoSideDiffuse"));
221     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[4].twoSideDiffuse"));
222     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[5].twoSideDiffuse"));
223     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[6].twoSideDiffuse"));
224     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[7].twoSideDiffuse"));
225     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[0].spotEnabled"));
226     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[1].spotEnabled"));
227     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[2].spotEnabled"));
228     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[3].spotEnabled"));
229     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[4].spotEnabled"));
230     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[5].spotEnabled"));
231     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[6].spotEnabled"));
232     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[7].spotEnabled"));
233     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[0].distanceAttenuationEnabled"));
234     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[1].distanceAttenuationEnabled"));
235     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[2].distanceAttenuationEnabled"));
236     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[3].distanceAttenuationEnabled"));
237     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[4].distanceAttenuationEnabled"));
238     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[5].distanceAttenuationEnabled"));
239     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[6].distanceAttenuationEnabled"));
240     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[7].distanceAttenuationEnabled"));
241     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[0].distanceAttenuationBias"));
242     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[1].distanceAttenuationBias"));
243     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[2].distanceAttenuationBias"));
244     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[3].distanceAttenuationBias"));
245     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[4].distanceAttenuationBias"));
246     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[5].distanceAttenuationBias"));
247     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[6].distanceAttenuationBias"));
248     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[7].distanceAttenuationBias"));
249     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[0].distanceAttenuationScale"));
250     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[1].distanceAttenuationScale"));
251     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[2].distanceAttenuationScale"));
252     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[3].distanceAttenuationScale"));
253     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[4].distanceAttenuationScale"));
254     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[5].distanceAttenuationScale"));
255     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[6].distanceAttenuationScale"));
256     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[7].distanceAttenuationScale"));
257     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[0].samplerSP"));
258     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[1].samplerSP"));
259     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[2].samplerSP"));
260     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[3].samplerSP"));
261     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[4].samplerSP"));
262     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[5].samplerSP"));
263     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[6].samplerSP"));
264     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[7].samplerSP"));
265     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[0].samplerDA"));
266     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[1].samplerDA"));
267     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[2].samplerDA"));
268     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[3].samplerDA"));
269     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[4].samplerDA"));
270     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[5].samplerDA"));
271     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[6].samplerDA"));
272     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragmentLightSource[7].samplerDA"));
273     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.absLutInputD0"));
274     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.absLutInputD1"));
275     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.absLutInputRR"));
276     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.absLutInputRG"));
277     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.absLutInputRB"));
278     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.absLutInputSP"));
279     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.absLutInputFR"));
280     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.lutInputD0"));
281     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.lutInputD1"));
282     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.lutInputRR"));
283     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.lutInputRG"));
284     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.lutInputRB"));
285     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.lutInputSP"));
286     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.lutInputFR"));
287     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.lutScaleD0"));
288     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.lutScaleD1"));
289     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.lutScaleRR"));
290     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.lutScaleRG"));
291     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.lutScaleRB"));
292     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.lutScaleSP"));
293     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.lutScaleFR"));
294     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.shadowSelector"));
295     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.bumpSelector"));
296     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.bumpMode"));
297     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.bumpRenorm"));
298     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.config"));
299     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.invertShadow"));
300     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.shadowPrimary"));
301     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.shadowSecondary"));
302     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.shadowAlpha"));
303     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.fresnelSelector"));
304     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.clampHighlights"));
305     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.lutEnabledSP"));
306     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.lutEnabledD0"));
307     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.lutEnabledD1"));
308     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_LightEnv.lutEnabledRefl"));
309     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[0].perspectiveShadow"));
310     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[0].shadowZScale"));
311     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[0].shadowZBias"));
312     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[0].samplerType"));
313     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[1].samplerType"));
314     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[2].samplerType"));
315     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].samplerType"));
316     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[2].texcoord"));
317     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].texcoord"));
318     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].ptRgbMap"));
319     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].ptAlphaMap"));
320     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].ptAlphaSeparate"));
321     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].ptClampU"));
322     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].ptClampV"));
323     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].ptShiftU"));
324     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].ptShiftV"));
325     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].ptMinFilter"));
326     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].ptTexWidth"));
327     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].ptTexOffset"));
328     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].ptTexBias"));
329     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].ptNoiseEnable"));
330     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].ptNoiseU"));
331     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].ptNoiseV"));
332     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].ptSamplerRgbMap"));
333     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].ptSamplerAlphaMap"));
334     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].ptSamplerNoiseMap"));
335     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].ptSamplerR"));
336     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].ptSamplerG"));
337     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].ptSamplerB"));
338     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Texture[3].ptSamplerA"));
339     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Gas.lightXY"));
340     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Gas.lightZ"));
341     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Gas.deltaZ"));
342     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Gas.autoAcc"));
343     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Gas.accMax"));
344     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Gas.shadingDensitySrc"));
345     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Gas.colorLutInput"));
346     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Gas.samplerTR"));
347     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Gas.samplerTG"));
348     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Gas.samplerTB"));
349     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Gas.attenuation"));
350     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Fog.mode"));
351     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Fog.color"));
352     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Fog.zFlip"));
353     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Fog.sampler"));
354     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragOperation.enableClippingPlane"));
355     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragOperation.clippingPlane"));
356     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragOperation.enableAlphaTest"));
357     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragOperation.alphaRefValue"));
358     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragOperation.alphaTestFunc"));
359     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragOperation.mode"));
360     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragOperation.wScale"));
361     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragOperation.penumbraScale"));
362     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_FragOperation.penumbraBias"));
363     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Point.viewport"));
364     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Point.distanceAttenuation"));
365     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Line.width"));
366     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Silhouette.width"));
367     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Silhouette.scaleByW"));
368     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Silhouette.color"));
369     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Silhouette.frontFaceCCW"));
370     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Silhouette.acceptEmptyTriangles"));
371     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Silhouette.openEdgeColor"));
372     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Silhouette.openEdgeWidth"));
373     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Silhouette.openEdgeDepthBias"));
374     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Silhouette.openEdgeWidthScaleByW"));
375     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Silhouette.openEdgeDepthBiasScaleByW"));
376     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Subdivision.level"));
377     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_Subdivision.fragmentLightingEnabled"));
378     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_PartSys.color"));
379     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_PartSys.aspect"));
380     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_PartSys.time"));
381     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_PartSys.speed"));
382     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_PartSys.countMax"));
383     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_PartSys.randSeed"));
384     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_PartSys.randomCore"));
385     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_PartSys.distanceAttenuation"));
386     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_PartSys.viewport"));
387     m_UniformLocations.push_back(glGetUniformLocation(programObject, "dmp_PartSys.pointSize"));
388 }
389 
390 //----------------------------------------
ShaderUniformLocation(os::IAllocator * allocator)391 ShaderUniformLocation::ShaderUniformLocation(os::IAllocator* allocator)
392  : GfxObject(allocator)
393 {
394 }
395 
396 //----------------------------------------
397 ShaderUniformLocation*
Create(os::IAllocator * allocator)398 ShaderUniformLocation::Create(os::IAllocator* allocator)
399 {
400     void* memory = allocator->Alloc(sizeof(ShaderUniformLocation));
401     NW_NULL_ASSERT(memory);
402 
403     return new(memory) ShaderUniformLocation(allocator);
404 }
405 
406 #endif
407 
408 } // namespace gfx
409 } // namespace nw
410