@@ -19,7 +19,7 @@ vgl.uniform = function (type, name) {
1919 'use strict' ;
2020
2121 if ( ! ( this instanceof vgl . uniform ) ) {
22- return new vgl . uniform ( ) ;
22+ return new vgl . uniform ( type , name ) ;
2323 }
2424
2525 this . getTypeNumberOfComponents = function ( type ) {
@@ -102,25 +102,9 @@ vgl.uniform = function (type, name) {
102102 */
103103 /////////////////////////////////////////////////////////////////////////////
104104 this . set = function ( value ) {
105- var i = 0 ;
106- if ( m_dataArray . length === 16 ) {
107- for ( i = 0 ; i < 16 ; i += 1 ) {
108- m_dataArray [ i ] = value [ i ] ;
109- }
110- } else if ( m_dataArray . length === 9 ) {
111- for ( i = 0 ; i < 9 ; i += 1 ) {
112- m_dataArray [ i ] = value [ i ] ;
113- }
114- } else if ( m_dataArray . length === 4 ) {
115- for ( i = 0 ; i < 4 ; i += 1 ) {
116- m_dataArray [ i ] = value [ i ] ;
117- }
118- } else if ( m_dataArray . length === 3 ) {
119- for ( i = 0 ; i < 3 ; i += 1 ) {
120- m_dataArray [ i ] = value [ i ] ;
121- }
122- } else if ( m_dataArray . length === 2 ) {
123- for ( i = 0 ; i < 2 ; i += 1 ) {
105+ var i = 0 , lendata = m_dataArray . length ;
106+ if ( lendata !== 1 ) {
107+ for ( i = 0 ; i < lendata ; i += 1 ) {
124108 m_dataArray [ i ] = value [ i ] ;
125109 }
126110 } else {
@@ -136,10 +120,6 @@ vgl.uniform = function (type, name) {
136120 */
137121 /////////////////////////////////////////////////////////////////////////////
138122 this . callGL = function ( renderState , location ) {
139- if ( this . m_numberElements < 1 ) {
140- return ;
141- }
142-
143123 switch ( m_type ) {
144124 case vgl . GL . BOOL :
145125 case vgl . GL . INT :
@@ -148,12 +128,24 @@ vgl.uniform = function (type, name) {
148128 case vgl . GL . FLOAT :
149129 renderState . m_context . uniform1fv ( location , m_dataArray ) ;
150130 break ;
131+ case vgl . GL . BOOL_VEC2 :
132+ case vgl . GL . INT_VEC2 :
133+ renderState . m_context . uniform2iv ( location , m_dataArray ) ;
134+ break ;
151135 case vgl . GL . FLOAT_VEC2 :
152136 renderState . m_context . uniform2fv ( location , m_dataArray ) ;
153137 break ;
138+ case vgl . GL . BOOL_VEC3 :
139+ case vgl . GL . INT_VEC3 :
140+ renderState . m_context . uniform3iv ( location , m_dataArray ) ;
141+ break ;
154142 case vgl . GL . FLOAT_VEC3 :
155143 renderState . m_context . uniform3fv ( location , m_dataArray ) ;
156144 break ;
145+ case vgl . GL . BOOL_VEC4 :
146+ case vgl . GL . INT_VEC4 :
147+ renderState . m_context . uniform4iv ( location , m_dataArray ) ;
148+ break ;
157149 case vgl . GL . FLOAT_VEC4 :
158150 renderState . m_context . uniform4fv ( location , m_dataArray ) ;
159151 break ;
@@ -179,8 +171,8 @@ vgl.uniform = function (type, name) {
179171 */
180172 /////////////////////////////////////////////////////////////////////////////
181173 this . update = function ( renderState , program ) {
182- renderState = renderState ; /* unused parameter */
183- program = program ; /* unused parameter */
174+ void renderState ; /* unused parameter */
175+ void program ; /* unused parameter */
184176 // Should be implemented by the derived class
185177 } ;
186178
@@ -202,7 +194,7 @@ vgl.modelViewUniform = function (name) {
202194 return new vgl . modelViewUniform ( name ) ;
203195 }
204196
205- if ( name . length === 0 ) {
197+ if ( ! name ) {
206198 name = 'modelViewMatrix' ;
207199 }
208200
@@ -219,7 +211,7 @@ vgl.modelViewUniform = function (name) {
219211 */
220212 /////////////////////////////////////////////////////////////////////////////
221213 this . update = function ( renderState , program ) {
222- program = program ; /* unused parameter */
214+ void program ; /* unused parameter */
223215 this . set ( renderState . m_modelViewMatrix ) ;
224216 } ;
225217
@@ -244,7 +236,7 @@ vgl.modelViewOriginUniform = function (name, origin) {
244236 return new vgl . modelViewOriginUniform ( name , origin ) ;
245237 }
246238
247- if ( name . length === 0 ) {
239+ if ( ! name ) {
248240 name = 'modelViewMatrix' ;
249241 }
250242 origin = origin || [ 0 , 0 , 0 ] ;
@@ -277,18 +269,23 @@ vgl.modelViewOriginUniform = function (name, origin) {
277269 */
278270 /////////////////////////////////////////////////////////////////////////////
279271 this . update = function ( renderState , program ) {
280- program = program ; /* unused parameter */
281- var view = mat4 . create ( ) ;
282- mat4 . translate ( view , renderState . m_modelViewMatrix , m_origin ) ;
272+ void program ; /* unused parameter */
273+ var view = renderState . m_modelViewMatrix ;
283274 if ( renderState . m_modelViewAlignment ) {
275+ /* adjust alignment before origin. Otherwise, a changing origin can
276+ * affect the rounding choice and result in a 1 pixe jitter. */
284277 var align = renderState . m_modelViewAlignment ;
278+ /* Don't modify the orignal matrix. If we are in an environment where
279+ * you can't slice an Float32Array, switch to a regular array */
280+ view = view . slice ? view . slice ( ) : Array . prototype . slice . call ( view ) ;
285281 /* view[12] and view[13] are the x and y offsets. align.round is the
286282 * units-per-pixel, and align.dx and .dy are either 0 or half the size of
287283 * a unit-per-pixel. The alignment guarantees that the texels are
288284 * aligned with screen pixels. */
289285 view [ 12 ] = Math . round ( view [ 12 ] / align . roundx ) * align . roundx + align . dx ;
290286 view [ 13 ] = Math . round ( view [ 13 ] / align . roundy ) * align . roundy + align . dy ;
291287 }
288+ view = mat4 . translate ( mat4 . create ( ) , view , m_origin ) ;
292289 this . set ( view ) ;
293290 } ;
294291
@@ -312,7 +309,7 @@ vgl.projectionUniform = function (name) {
312309 return new vgl . projectionUniform ( name ) ;
313310 }
314311
315- if ( name . length === 0 ) {
312+ if ( ! name ) {
316313 name = 'projectionMatrix' ;
317314 }
318315
@@ -329,7 +326,7 @@ vgl.projectionUniform = function (name) {
329326 */
330327 /////////////////////////////////////////////////////////////////////////////
331328 this . update = function ( renderState , program ) {
332- program = program ; /* unused parameter */
329+ void program ; /* unused parameter */
333330 this . set ( renderState . m_projectionMatrix ) ;
334331 } ;
335332
@@ -354,7 +351,7 @@ vgl.floatUniform = function (name, value) {
354351 return new vgl . floatUniform ( name , value ) ;
355352 }
356353
357- if ( name . length === 0 ) {
354+ if ( ! name ) {
358355 name = 'floatUniform' ;
359356 }
360357
@@ -382,7 +379,7 @@ vgl.normalMatrixUniform = function (name) {
382379 return new vgl . normalMatrixUniform ( name ) ;
383380 }
384381
385- if ( name . length === 0 ) {
382+ if ( ! name ) {
386383 name = 'normalMatrix' ;
387384 }
388385
@@ -399,7 +396,7 @@ vgl.normalMatrixUniform = function (name) {
399396 */
400397 /////////////////////////////////////////////////////////////////////////////
401398 this . update = function ( renderState , program ) {
402- program = program ; /* unused parameter */
399+ void program ; /* unused parameter */
403400 this . set ( renderState . m_normalMatrix ) ;
404401 } ;
405402
0 commit comments