diff --git a/src/core/sprites/webgl/SpriteRenderer.js b/src/core/sprites/webgl/SpriteRenderer.js index 8bd7572..f0bb636 100644 --- a/src/core/sprites/webgl/SpriteRenderer.js +++ b/src/core/sprites/webgl/SpriteRenderer.js @@ -288,7 +288,7 @@ } // bind shader.. - this.renderer.bindShader(this.shader); + this.renderer.blendModeManager.setBlendMode( 0 ); /// render the groups.. @@ -319,6 +319,7 @@ */ SpriteRenderer.prototype.start = function () { + this.renderer.bindShader(this.shader); this.vao.bind(); }; diff --git a/src/core/sprites/webgl/SpriteRenderer.js b/src/core/sprites/webgl/SpriteRenderer.js index 8bd7572..f0bb636 100644 --- a/src/core/sprites/webgl/SpriteRenderer.js +++ b/src/core/sprites/webgl/SpriteRenderer.js @@ -288,7 +288,7 @@ } // bind shader.. - this.renderer.bindShader(this.shader); + this.renderer.blendModeManager.setBlendMode( 0 ); /// render the groups.. @@ -319,6 +319,7 @@ */ SpriteRenderer.prototype.start = function () { + this.renderer.bindShader(this.shader); this.vao.bind(); }; diff --git a/src/core/sprites/webgl/generateMultiTextureShader.js b/src/core/sprites/webgl/generateMultiTextureShader.js index c864d37..4134111 100644 --- a/src/core/sprites/webgl/generateMultiTextureShader.js +++ b/src/core/sprites/webgl/generateMultiTextureShader.js @@ -4,13 +4,13 @@ function generateMultiTextureShader(gl, maxTextures) { var vertexSrc = fs.readFileSync(__dirname + '/texture.vert', 'utf8'); - var fragmentSrc = 'precision lowp float;\n\n' + generateSampleSrc(maxTextures) + "\n\n" + fragTemplate + var fragmentSrc = fragTemplate - fragmentSrc = fragmentSrc.replace(/\%\%/gi, '16'); + fragmentSrc = fragmentSrc.replace(/\%\%/gi, maxTextures); + fragmentSrc = fragmentSrc.replace(/\%forloop\%/gi, generateSampleSrc(maxTextures)); var shader = new Shader(gl, vertexSrc, fragmentSrc); - var sampleValues = []; for (var i = 0; i < maxTextures; i++) { sampleValues[i] = i; @@ -24,7 +24,7 @@ function generateSampleSrc(maxTextures) { - var src = 'vec4 getSampleFromArray(sampler2D textures[%%], int ndx, vec2 uv) {\n\nvec4 color;' + var src = '' src += '\n'; src += '\n'; @@ -34,27 +34,29 @@ if(i > 0)src += '\nelse '; if(i < maxTextures-1)src += 'if(ndx == ' + i + ')'; src += '\n{'; - src += '\n\tcolor = texture2D(textures['+i+'], uv);'; + src += '\n\tcolor = texture2D(uSamplers['+i+'], vTextureCoord);'; src += '\n}'; }; src += '\n'; src += '\n'; - src += 'return color;'; - src += '\n}'; return src; } var fragTemplate = [ + 'precision lowp float;', 'varying vec2 vTextureCoord;', 'varying vec4 vColor;', 'varying float vTextureId;', 'uniform sampler2D uSamplers[%%];', 'void main(void){', - 'gl_FragColor = getSampleFromArray(uSamplers, int(vTextureId), vTextureCoord) * vColor;', + 'vec4 color;', + 'int ndx = int(vTextureId);', + '%forloop%', + 'gl_FragColor = color * vColor;', '}' ].join('\n');