From 1f64d468aade39f80c95216288779c91572d9062 Mon Sep 17 00:00:00 2001 From: Maksim Date: Mon, 18 Apr 2016 13:25:46 +0300 Subject: [PATCH 1/4] Update Overlap2dRenderer.java - added the ShaderComponent support; --- .../renderer/systems/render/Overlap2dRenderer.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/com/uwsoft/editor/renderer/systems/render/Overlap2dRenderer.java b/src/com/uwsoft/editor/renderer/systems/render/Overlap2dRenderer.java index 425e98dc..3ebafd98 100644 --- a/src/com/uwsoft/editor/renderer/systems/render/Overlap2dRenderer.java +++ b/src/com/uwsoft/editor/renderer/systems/render/Overlap2dRenderer.java @@ -27,6 +27,7 @@ public class Overlap2dRenderer extends IteratingSystem { private ComponentMapper parentNodeMapper = ComponentMapper.getFor(ParentNodeComponent.class); private ComponentMapper transformMapper = ComponentMapper.getFor(TransformComponent.class); private ComponentMapper mainItemComponentMapper = ComponentMapper.getFor(MainItemComponent.class); + private ComponentMapper shaderComponentComponentMapper = ComponentMapper.getFor(ShaderComponent.class); private DrawableLogicMapper drawableLogicMapper; private RayHandler rayHandler; @@ -79,7 +80,12 @@ private void drawRecursively(Entity rootEntity, float parentAlpha) { //currentComposite = rootEntity; CompositeTransformComponent curCompositeTransformComponent = compositeTransformMapper.get(rootEntity); TransformComponent transform = transformMapper.get(rootEntity); + ShaderComponent shaderComponent = shaderComponentComponentMapper.get(rootEntity); + boolean shaderExist = shaderComponent!=null && shaderComponent.getShader()!=null; + if(shaderExist){ + batch.setShader(shaderComponent.getShader()); + } if (curCompositeTransformComponent.transform || transform.rotation != 0 || transform.scaleX !=1 || transform.scaleY !=1){ MainItemComponent childMainItemComponent = mainItemComponentMapper.get(rootEntity); @@ -95,6 +101,10 @@ private void drawRecursively(Entity rootEntity, float parentAlpha) { drawChildren(rootEntity, batch, curCompositeTransformComponent, parentAlpha); if (curCompositeTransformComponent.transform || transform.rotation != 0 || transform.scaleX !=1 || transform.scaleY !=1) resetTransform(rootEntity, batch); + + if(shaderExist){ + batch.setShader(null); + } } private void drawChildren(Entity rootEntity, Batch batch, CompositeTransformComponent curCompositeTransformComponent, float parentAlpha) { From 3edd99497cea658df2888b1339e6f2eb3cc2bbce Mon Sep 17 00:00:00 2001 From: Maksim Date: Mon, 18 Apr 2016 16:17:51 +0300 Subject: [PATCH 2/4] Update TextureRegionDrawLogic.java - remove shader apply from TextureRegionComponent --- .../render/logic/TexturRegionDrawLogic.java | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/src/com/uwsoft/editor/renderer/systems/render/logic/TexturRegionDrawLogic.java b/src/com/uwsoft/editor/renderer/systems/render/logic/TexturRegionDrawLogic.java index 7e618031..2e56f21c 100644 --- a/src/com/uwsoft/editor/renderer/systems/render/logic/TexturRegionDrawLogic.java +++ b/src/com/uwsoft/editor/renderer/systems/render/logic/TexturRegionDrawLogic.java @@ -35,23 +35,7 @@ public TexturRegionDrawLogic() { public void draw(Batch batch, Entity entity, float parentAlpha) { TextureRegionComponent entityTextureRegionComponent = textureRegionMapper.get(entity); if(shaderComponentMapper.has(entity)){ - ShaderComponent shaderComponent = shaderComponentMapper.get(entity); - if(shaderComponent.getShader() != null) { - batch.setShader(shaderComponent.getShader()); - - batch.getShader().setUniformf("deltaTime", Gdx.graphics.getDeltaTime()); - batch.getShader().setUniformf("time", Overlap2dRenderer.timeRunning); - - GL20 gl = Gdx.gl20; - int error; - if ((error = gl.glGetError()) != GL20.GL_NO_ERROR) { - Gdx.app.log("opengl", "Error: " + error); - Gdx.app.log("opengl", shaderComponent.getShader().getLog()); - //throw new RuntimeException( ": glError " + error); - } - } - } - + if(entityTextureRegionComponent.polygonSprite != null) { drawTiledPolygonSprite(batch, entity); } else { From d46679ee61dbe681ffec022622c430eff4a70649 Mon Sep 17 00:00:00 2001 From: Maksim Date: Mon, 18 Apr 2016 16:20:01 +0300 Subject: [PATCH 3/4] Update TextureRegionDrawLogic.java - remove shader from TextureRegionComponent --- .../renderer/systems/render/logic/TexturRegionDrawLogic.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/com/uwsoft/editor/renderer/systems/render/logic/TexturRegionDrawLogic.java b/src/com/uwsoft/editor/renderer/systems/render/logic/TexturRegionDrawLogic.java index 2e56f21c..5cae96c5 100644 --- a/src/com/uwsoft/editor/renderer/systems/render/logic/TexturRegionDrawLogic.java +++ b/src/com/uwsoft/editor/renderer/systems/render/logic/TexturRegionDrawLogic.java @@ -34,7 +34,6 @@ public TexturRegionDrawLogic() { @Override public void draw(Batch batch, Entity entity, float parentAlpha) { TextureRegionComponent entityTextureRegionComponent = textureRegionMapper.get(entity); - if(shaderComponentMapper.has(entity)){ if(entityTextureRegionComponent.polygonSprite != null) { drawTiledPolygonSprite(batch, entity); From 3168ccc9ccd74f98cd6a62dd7b40e16999a1acf7 Mon Sep 17 00:00:00 2001 From: Maksim Date: Mon, 18 Apr 2016 16:49:44 +0300 Subject: [PATCH 4/4] Update TextureRegionDrawLogic.java - reverse --- .../render/logic/TexturRegionDrawLogic.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/com/uwsoft/editor/renderer/systems/render/logic/TexturRegionDrawLogic.java b/src/com/uwsoft/editor/renderer/systems/render/logic/TexturRegionDrawLogic.java index 5cae96c5..dba43d86 100644 --- a/src/com/uwsoft/editor/renderer/systems/render/logic/TexturRegionDrawLogic.java +++ b/src/com/uwsoft/editor/renderer/systems/render/logic/TexturRegionDrawLogic.java @@ -35,6 +35,24 @@ public TexturRegionDrawLogic() { public void draw(Batch batch, Entity entity, float parentAlpha) { TextureRegionComponent entityTextureRegionComponent = textureRegionMapper.get(entity); + if(shaderComponentMapper.has(entity)){ + ShaderComponent shaderComponent = shaderComponentMapper.get(entity); + if(shaderComponent.getShader() != null) { + batch.setShader(shaderComponent.getShader()); + + batch.getShader().setUniformf("deltaTime", Gdx.graphics.getDeltaTime()); + batch.getShader().setUniformf("time", Overlap2dRenderer.timeRunning); + + GL20 gl = Gdx.gl20; + int error; + if ((error = gl.glGetError()) != GL20.GL_NO_ERROR) { + Gdx.app.log("opengl", "Error: " + error); + Gdx.app.log("opengl", shaderComponent.getShader().getLog()); + //throw new RuntimeException( ": glError " + error); + } + } + } + if(entityTextureRegionComponent.polygonSprite != null) { drawTiledPolygonSprite(batch, entity); } else {