Skip to content

Commit d6d5c09

Browse files
committed
The Shader Game Object now supports being able to use a Render Texture as a sampler2D texture on the shader. Fix phaserjs#5423
1 parent 15a6f50 commit d6d5c09

2 files changed

Lines changed: 13 additions & 9 deletions

File tree

src/gameobjects/shader/Shader.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -728,6 +728,12 @@ var Shader = new Class({
728728
if (textureManager.exists(textureKey))
729729
{
730730
var frame = textureManager.getFrame(textureKey);
731+
732+
if (frame.glTexture && frame.glTexture.isRenderTexture)
733+
{
734+
return this.setSampler2DBuffer(uniformKey, frame.glTexture, frame.width, frame.height, textureIndex, textureData);
735+
}
736+
731737
var uniform = this.uniforms[uniformKey];
732738
var source = frame.source;
733739

@@ -908,7 +914,7 @@ var Shader = new Class({
908914

909915
var data = uniform.textureData;
910916

911-
if (data)
917+
if (data && !uniform.value.isRenderTexture)
912918
{
913919
// https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texImage2D
914920

@@ -1017,7 +1023,7 @@ var Shader = new Class({
10171023
}
10181024
else if (uniform.type === 'sampler2D')
10191025
{
1020-
gl.activeTexture(gl['TEXTURE' + textureCount]);
1026+
gl.activeTexture(gl.TEXTURE0 + textureCount);
10211027

10221028
gl.bindTexture(gl.TEXTURE_2D, value);
10231029

src/renderer/webgl/PipelineManager.js

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -967,11 +967,6 @@ var PipelineManager = new Class({
967967
pipeline = this.previous;
968968
}
969969

970-
if (!pipeline)
971-
{
972-
return;
973-
}
974-
975970
var renderer = this.renderer;
976971
var gl = renderer.gl;
977972

@@ -995,9 +990,12 @@ var PipelineManager = new Class({
995990

996991
renderer.setBlendMode(0, true);
997992

998-
this.current = pipeline;
993+
if (pipeline)
994+
{
995+
this.current = pipeline;
999996

1000-
pipeline.rebind();
997+
pipeline.rebind();
998+
}
1001999

10021000
renderer.resetTextures();
10031001
},

0 commit comments

Comments
 (0)