From 2a9008f0420b28130ddf384fe08c2cd50d05d674 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 10 Jun 2020 21:07:21 -0400 Subject: [PATCH] Transition to Framebuffer#blit --- core/assets/maps/tarFields.msav | Bin 14385 -> 14257 bytes core/assets/shaders/light.frag | 5 +---- core/assets/shaders/screenspace.vert | 9 +++++++++ core/assets/shaders/shield.frag | 4 ++-- core/assets/shaders/slag.frag | 1 - core/assets/shaders/tar.frag | 1 - core/assets/shaders/water.frag | 1 - core/src/mindustry/core/Renderer.java | 6 +----- core/src/mindustry/graphics/CacheLayer.java | 4 +--- .../src/mindustry/graphics/LightRenderer.java | 4 +--- core/src/mindustry/graphics/Shaders.java | 16 +++++++++------- gradle.properties | 2 +- 12 files changed, 25 insertions(+), 28 deletions(-) create mode 100644 core/assets/shaders/screenspace.vert diff --git a/core/assets/maps/tarFields.msav b/core/assets/maps/tarFields.msav index 41e30e2a61d28812bbb3fde0a03c9fc465bb5b82..e4a99d71bfdfe16027b59f48512b691c06d80352 100644 GIT binary patch literal 14257 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%0D0-IkD& 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 diff --git a/core/assets/shaders/light.frag b/core/assets/shaders/light.frag index ba35623dab..263c7300b7 100644 --- a/core/assets/shaders/light.frag +++ b/core/assets/shaders/light.frag @@ -3,15 +3,12 @@ precision mediump float; precision mediump int; #endif -#define steprad 0.13 - uniform sampler2D u_texture; uniform vec4 u_ambient; -varying vec4 v_color; varying vec2 v_texCoord; void main(){ - vec4 color = texture2D(u_texture, v_texCoord.xy); + vec4 color = texture2D(u_texture, v_texCoord); gl_FragColor = clamp(vec4(mix(u_ambient.rgb, color.rgb, color.a), u_ambient.a - color.a), 0.0, 1.0); } diff --git a/core/assets/shaders/screenspace.vert b/core/assets/shaders/screenspace.vert new file mode 100644 index 0000000000..a7376f44ec --- /dev/null +++ b/core/assets/shaders/screenspace.vert @@ -0,0 +1,9 @@ +attribute vec4 a_position; +attribute vec2 a_texCoord0; + +varying vec2 v_texCoord; + +void main(){ + v_texCoord = a_texCoord0; + gl_Position = a_position; +} diff --git a/core/assets/shaders/shield.frag b/core/assets/shaders/shield.frag index ae3831e5fb..e42997876c 100644 --- a/core/assets/shaders/shield.frag +++ b/core/assets/shaders/shield.frag @@ -14,8 +14,8 @@ uniform vec2 u_texsize; uniform float u_time; uniform float u_dp; uniform vec2 u_offset; +uniform vec4 u_shieldcolor; -varying vec4 v_color; varying vec2 v_texCoord; void main(){ @@ -32,7 +32,7 @@ void main(){ (texture2D(u_texture, T + vec2(0, step) * v).a > 0.0 || texture2D(u_texture, T + vec2(0, -step) * v).a > 0.0 || texture2D(u_texture, T + vec2(step, 0) * v).a > 0.0 || texture2D(u_texture, T + vec2(-step, 0) * v).a > 0.0)){ - gl_FragColor = mix(v_color, vec4(1.0), si); + gl_FragColor = mix(u_shieldcolor, vec4(1.0), si); }else{ if(color.a > 0.0){ diff --git a/core/assets/shaders/slag.frag b/core/assets/shaders/slag.frag index 5b87b982ab..e325c13629 100755 --- a/core/assets/shaders/slag.frag +++ b/core/assets/shaders/slag.frag @@ -15,7 +15,6 @@ uniform vec2 u_campos; uniform vec2 u_resolution; uniform float u_time; -varying vec4 v_color; varying vec2 v_texCoord; void main(){ diff --git a/core/assets/shaders/tar.frag b/core/assets/shaders/tar.frag index 4ca0e7be97..a2454c5e1f 100644 --- a/core/assets/shaders/tar.frag +++ b/core/assets/shaders/tar.frag @@ -12,7 +12,6 @@ uniform vec2 u_campos; uniform vec2 u_resolution; uniform float u_time; -varying vec4 v_color; varying vec2 v_texCoord; void main(){ diff --git a/core/assets/shaders/water.frag b/core/assets/shaders/water.frag index 1d2b67f889..3299c96abd 100644 --- a/core/assets/shaders/water.frag +++ b/core/assets/shaders/water.frag @@ -9,7 +9,6 @@ uniform vec2 u_campos; uniform vec2 u_resolution; uniform float u_time; -varying vec4 v_color; varying vec2 v_texCoord; const float mscl = 40.0; diff --git a/core/src/mindustry/core/Renderer.java b/core/src/mindustry/core/Renderer.java index 612131cf0e..b7ddd6f211 100644 --- a/core/src/mindustry/core/Renderer.java +++ b/core/src/mindustry/core/Renderer.java @@ -238,11 +238,7 @@ public class Renderer implements ApplicationListener{ Draw.drawRange(Layer.shields, 1f, () -> effectBuffer.begin(Color.clear), () -> { effectBuffer.end(); - Draw.shader(Shaders.shield); - Draw.color(Pal.accent); - Draw.rect(effectBuffer); - Draw.color(); - Draw.shader(); + effectBuffer.blit(Shaders.shield); }); } diff --git a/core/src/mindustry/graphics/CacheLayer.java b/core/src/mindustry/graphics/CacheLayer.java index 6363efae98..5807db7490 100644 --- a/core/src/mindustry/graphics/CacheLayer.java +++ b/core/src/mindustry/graphics/CacheLayer.java @@ -79,9 +79,7 @@ public enum CacheLayer{ renderer.blocks.floor.endc(); renderer.effectBuffer.end(); - Draw.shader(shader); - Draw.rect(renderer.effectBuffer); - Draw.shader(); + renderer.effectBuffer.blit(shader); renderer.blocks.floor.beginc(); } diff --git a/core/src/mindustry/graphics/LightRenderer.java b/core/src/mindustry/graphics/LightRenderer.java index a6c0c1c785..b8c93823b4 100644 --- a/core/src/mindustry/graphics/LightRenderer.java +++ b/core/src/mindustry/graphics/LightRenderer.java @@ -195,9 +195,7 @@ public class LightRenderer{ Draw.color(); Shaders.light.ambient.set(state.rules.ambientLight); - Draw.shader(Shaders.light); - Draw.rect(buffer); - Draw.shader(); + buffer.blit(Shaders.light); lights.clear(); } diff --git a/core/src/mindustry/graphics/Shaders.java b/core/src/mindustry/graphics/Shaders.java index 0e46e83d60..9a1d38b912 100644 --- a/core/src/mindustry/graphics/Shaders.java +++ b/core/src/mindustry/graphics/Shaders.java @@ -16,7 +16,7 @@ import static mindustry.Vars.renderer; public class Shaders{ public static BlockBuild blockbuild; - public static @Nullable Shield shield; + public static @Nullable ShieldShader shield; public static UnitBuild build; public static FogShader fog; public static LightShader light; @@ -30,7 +30,7 @@ public class Shaders{ public static void init(){ blockbuild = new BlockBuild(); try{ - shield = new Shield(); + shield = new ShieldShader(); }catch(Throwable t){ //don't load shield shader shield = null; @@ -119,7 +119,7 @@ public class Shaders{ public Color ambient = new Color(0.01f, 0.01f, 0.04f, 0.99f); public LightShader(){ - super("light", "default"); + super("light", "screenspace"); } @Override @@ -175,16 +175,18 @@ public class Shaders{ } } - public static class Shield extends LoadShader{ + public static class ShieldShader extends LoadShader{ + public Color color = Pal.accent.cpy(); - public Shield(){ - super("shield", "default"); + public ShieldShader(){ + super("shield", "screenspace"); } @Override public void apply(){ setUniformf("u_dp", Scl.scl(1f)); setUniformf("u_time", Time.time() / Scl.scl(1f)); + setUniformf("u_shieldcolor", color); setUniformf("u_offset", Core.camera.position.x - Core.camera.width / 2, Core.camera.position.y - Core.camera.height / 2); @@ -196,7 +198,7 @@ public class Shaders{ public static class SurfaceShader extends LoadShader{ public SurfaceShader(String frag){ - super(frag, "default"); + super(frag, "screenspace"); Core.assets.load("sprites/noise.png", Texture.class).loaded = t -> { ((Texture)t).setFilter(TextureFilter.Linear); diff --git a/gradle.properties b/gradle.properties index dff7027b91..89658f07d9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=53dae7fe3363a33793daa1d7036cc77f4e0e2797 +archash=5d845b94754aa9667c60de503624ff2a51df6e64