diff --git a/core/assets/maps/tarFields.msav b/core/assets/maps/tarFields.msav index 41e30e2a61..e4a99d71bf 100644 Binary files a/core/assets/maps/tarFields.msav and b/core/assets/maps/tarFields.msav differ 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