@@ -29,38 +29,58 @@ PIXI.StripShader = function(gl)
2929 */
3030 this . program = null ;
3131
32- var gl = this . gl ;
33- this . MAX_TEXTURES = gl . getParameter ( gl . MAX_TEXTURE_IMAGE_UNITS ) ;
34- var dynamicIfs = '\tif (vTextureIndex == 0.0) gl_FragColor = texture2D(uSamplerArray[0], vTextureCoord);\n'
35- for ( var index = 1 ; index < this . MAX_TEXTURES ; ++ index )
36- {
37- dynamicIfs += '\telse if (vTextureIndex == ' +
38- index + '.0) gl_FragColor = texture2D(uSamplerArray[' +
39- index + '], vTextureCoord) ;\n'
32+ if ( PIXI . _enableMultiTextureToggle ) {
33+ var gl = this . gl ;
34+ this . MAX_TEXTURES = gl . getParameter ( gl . MAX_TEXTURE_IMAGE_UNITS ) ;
35+ var dynamicIfs = '\tif (vTextureIndex == 0.0) gl_FragColor = texture2D(uSamplerArray[0], vTextureCoord);\n'
36+ for ( var index = 1 ; index < this . MAX_TEXTURES ; ++ index )
37+ {
38+ dynamicIfs += '\telse if (vTextureIndex == ' +
39+ index + '.0) gl_FragColor = texture2D(uSamplerArray[' +
40+ index + '], vTextureCoord) ;\n'
41+ }
42+
43+
44+ /**
45+ * The fragment shader.
46+ * @property fragmentSrc
47+ * @type Array
48+ */
49+ this . fragmentSrc = [
50+ '//StripShader Fragment Shader.' ,
51+ 'precision mediump float;' ,
52+ 'varying vec2 vTextureCoord;' ,
53+ 'varying float vTextureIndex;' ,
54+ // 'varying float vColor;',
55+ 'uniform float alpha;' ,
56+ 'uniform sampler2D uSamplerArray[' + this . MAX_TEXTURES + '];' ,
57+ 'const vec4 PINK = vec4(1.0, 0.0, 1.0, 1.0);' ,
58+ 'const vec4 GREEN = vec4(0.0, 1.0, 0.0, 1.0);' ,
59+ 'void main(void) {' ,
60+ dynamicIfs ,
61+ 'else gl_FragColor = PINK;' ,
62+ '}'
63+ ] ;
64+ } else {
65+ /**
66+ * The fragment shader.
67+ * @property fragmentSrc
68+ * @type Array
69+ */
70+ this . fragmentSrc = [
71+ '//StripShader Fragment Shader.' ,
72+ 'precision mediump float;' ,
73+ 'varying vec2 vTextureCoord;' ,
74+ 'varying float vTextureIndex;' ,
75+ // 'varying float vColor;',
76+ 'uniform float alpha;' ,
77+ 'uniform sampler2D uSampler;' ,
78+ 'void main(void) {' ,
79+ ' gl_FragColor = texture2D(uSampler, vTextureCoord);' ,
80+ '}'
81+ ] ;
4082 }
4183
42-
43- /**
44- * The fragment shader.
45- * @property fragmentSrc
46- * @type Array
47- */
48- this . fragmentSrc = [
49- '//StripShader Fragment Shader.' ,
50- 'precision mediump float;' ,
51- 'varying vec2 vTextureCoord;' ,
52- 'varying float vTextureIndex;' ,
53- // 'varying float vColor;',
54- 'uniform float alpha;' ,
55- 'uniform sampler2D uSamplerArray[' + this . MAX_TEXTURES + '];' ,
56- 'const vec4 PINK = vec4(1.0, 0.0, 1.0, 1.0);' ,
57- 'const vec4 GREEN = vec4(0.0, 1.0, 0.0, 1.0);' ,
58- 'void main(void) {' ,
59- dynamicIfs ,
60- 'else gl_FragColor = PINK;' ,
61- '}'
62- ] ;
63-
6484 /**
6585 * The vertex shader.
6686 * @property vertexSrc
@@ -107,23 +127,27 @@ PIXI.StripShader.prototype.init = function()
107127 gl . useProgram ( program ) ;
108128
109129 // get and store the uniforms for the shader
110- // get and store the uniforms for the shader
111- this . uSampler = gl . getUniformLocation ( program , 'uSamplerArray[0]' ) ;
112-
113- var indices = [ ] ;
114- // HACK: we bind an empty texture to avoid WebGL warning spam.
115- var tempTexture = gl . createTexture ( ) ;
116- gl . activeTexture ( gl . TEXTURE0 ) ;
117- gl . bindTexture ( gl . TEXTURE_2D , tempTexture ) ;
118- gl . texImage2D ( gl . TEXTURE_2D , 0 , gl . RGB , 1 , 1 , 0 , gl . RGB , gl . UNSIGNED_BYTE , null ) ;
119- for ( var i = 0 ; i < this . MAX_TEXTURES ; ++ i ) {
120- gl . activeTexture ( gl . TEXTURE0 + i ) ;
121- gl . bindTexture ( gl . TEXTURE_2D , tempTexture ) ;
122- indices . push ( i ) ;
123- }
124- gl . activeTexture ( gl . TEXTURE0 ) ;
125- gl . uniform1iv ( this . uSampler , indices ) ;
130+ this . uSampler = PIXI . _enableMultiTextureToggle ?
131+ gl . getUniformLocation ( program , 'uSamplerArray[0]' ) :
132+ gl . getUniformLocation ( program , 'uSampler' ) ;
126133
134+
135+ if ( PIXI . _enableMultiTextureToggle ) {
136+ var indices = [ ] ;
137+ // HACK: we bind an empty texture to avoid WebGL warning spam.
138+ var tempTexture = gl . createTexture ( ) ;
139+ gl . activeTexture ( gl . TEXTURE0 ) ;
140+ gl . bindTexture ( gl . TEXTURE_2D , tempTexture ) ;
141+ gl . texImage2D ( gl . TEXTURE_2D , 0 , gl . RGB , 1 , 1 , 0 , gl . RGB , gl . UNSIGNED_BYTE , null ) ;
142+ for ( var i = 0 ; i < this . MAX_TEXTURES ; ++ i ) {
143+ gl . activeTexture ( gl . TEXTURE0 + i ) ;
144+ gl . bindTexture ( gl . TEXTURE_2D , tempTexture ) ;
145+ indices . push ( i ) ;
146+ }
147+ gl . activeTexture ( gl . TEXTURE0 ) ;
148+ gl . uniform1iv ( this . uSampler , indices ) ;
149+ }
150+
127151 this . projectionVector = gl . getUniformLocation ( program , 'projectionVector' ) ;
128152 this . offsetVector = gl . getUniformLocation ( program , 'offsetVector' ) ;
129153 this . colorAttribute = gl . getAttribLocation ( program , 'aColor' ) ;
0 commit comments