From a023c4fbac73b9e768f3fb8aad604a3bbb34ff74 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 14 Mar 2018 14:13:06 -0400 Subject: [PATCH] Fixed positions jumping with shader zoom-out --- core/assets/shaders/lava.fragment | 15 ++++++++----- core/assets/shaders/oil.fragment | 4 ++-- core/assets/shaders/water.fragment | 2 +- core/assets/version.properties | 4 ++-- .../io/anuke/mindustry/graphics/Shaders.java | 14 +++++++----- .../anuke/mindustry/world/blocks/Blocks.java | 22 ------------------- 6 files changed, 22 insertions(+), 39 deletions(-) diff --git a/core/assets/shaders/lava.fragment b/core/assets/shaders/lava.fragment index 6350085201..d7f3b3235e 100644 --- a/core/assets/shaders/lava.fragment +++ b/core/assets/shaders/lava.fragment @@ -1,5 +1,5 @@ #ifdef GL_ES -precision mediump float; +precision highp float; precision mediump int; #endif @@ -72,14 +72,17 @@ void main() { color = old; } - float n1 = snoise(coords / 20.0 + vec2(time) / 250.0); - float n2 = snoise((coords + vec2(632.0)) / 9.0 + vec2(0.0, -time) / 220.0); + const float bs = 1.0; - float r = (n1 + n2) / 2.0; + float n1 = snoise(coords / (20.0 * bs) + vec2(time) / 250.0); + float n2 = snoise((coords + vec2(632.0)) / (9.0 * bs) + vec2(0.0, -time) / 220.0); + float n3 = snoise((coords + vec2(2233.0)) / (15.0 * bs) + vec2(time, 0.0) / 290.0); - if(r < -0.6){ + float r = (n1 + n2 + n3) / 3.0; + + if(r < -0.5){ color = s2; - }else if(r < -0.2 && r > -0.6){ + }else if(r < -0.2){ color = s1; } } diff --git a/core/assets/shaders/oil.fragment b/core/assets/shaders/oil.fragment index 06a86a8a67..a1077bb9f1 100644 --- a/core/assets/shaders/oil.fragment +++ b/core/assets/shaders/oil.fragment @@ -1,5 +1,5 @@ #ifdef GL_ES -precision mediump float; +precision highp float; precision mediump int; #endif @@ -77,7 +77,7 @@ void main() { float r = (n1 + n2) / 2.0; if(r < -0.3 && r > -0.6){ - color *= 1.3; + color *= 1.4; color.a = 1.0; } } diff --git a/core/assets/shaders/water.fragment b/core/assets/shaders/water.fragment index 4005d580ac..5b9759f6f7 100644 --- a/core/assets/shaders/water.fragment +++ b/core/assets/shaders/water.fragment @@ -1,5 +1,5 @@ #ifdef GL_ES -precision mediump float; +precision highp float; precision mediump int; #endif diff --git a/core/assets/version.properties b/core/assets/version.properties index a06a6e8b59..78d196f785 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Wed Mar 14 12:49:40 EDT 2018 +#Wed Mar 14 14:12:06 EDT 2018 version=release -androidBuildCode=491 +androidBuildCode=496 name=Mindustry code=3.4 build=custom build diff --git a/core/src/io/anuke/mindustry/graphics/Shaders.java b/core/src/io/anuke/mindustry/graphics/Shaders.java index 70c14b534f..5a2d7abf83 100644 --- a/core/src/io/anuke/mindustry/graphics/Shaders.java +++ b/core/src/io/anuke/mindustry/graphics/Shaders.java @@ -5,7 +5,6 @@ import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.FloatArray; import io.anuke.ucore.core.Core; -import io.anuke.ucore.core.Settings; import io.anuke.ucore.core.Timers; import io.anuke.ucore.graphics.Shader; import io.anuke.ucore.scene.ui.layout.Unit; @@ -46,7 +45,6 @@ public class Shaders{ @Override public void apply(){ - float scale = Settings.getBool("pixelate") ? 1 : Core.cameraScale / Core.camera.zoom; float scaling = Core.cameraScale / 4f / Core.camera.zoom; if(hits.size > 0){ shader.setUniform3fv("u_hits[0]", hits.items, 0, Math.min(hits.size, MAX_HITS)); @@ -56,9 +54,11 @@ public class Shaders{ shader.setUniformf("u_color", color); shader.setUniformf("u_time", Timers.time() / Unit.dp.scl(1f)); shader.setUniformf("u_scaling", scaling); - shader.setUniformf("u_offset", vec.set(Core.camera.position.x, Core.camera.position.y)); - shader.setUniformf("u_texsize", vec.set(region.getTexture().getWidth() / scale, - region.getTexture().getHeight() / scale)); + shader.setUniformf("u_offset", + Core.camera.position.x - Core.camera.viewportWidth/2 * Core.camera.zoom, + Core.camera.position.y - Core.camera.viewportHeight/2 * Core.camera.zoom); + shader.setUniformf("u_texsize", Gdx.graphics.getWidth() / Core.cameraScale * Core.camera.zoom, + Gdx.graphics.getHeight() / Core.cameraScale * Core.camera.zoom); } } @@ -70,7 +70,9 @@ public class Shaders{ @Override public void apply(){ - shader.setUniformf("camerapos", Core.camera.position.x + Core.camera.zoom, Core.camera.position.y); + shader.setUniformf("camerapos", + Core.camera.position.x - Core.camera.viewportWidth/2 * Core.camera.zoom, + Core.camera.position.y - Core.camera.viewportHeight/2 * Core.camera.zoom); shader.setUniformf("screensize", Gdx.graphics.getWidth() / Core.cameraScale * Core.camera.zoom, Gdx.graphics.getHeight() / Core.cameraScale * Core.camera.zoom); shader.setUniformf("time", Timers.time()); diff --git a/core/src/io/anuke/mindustry/world/blocks/Blocks.java b/core/src/io/anuke/mindustry/world/blocks/Blocks.java index bfe41af920..d748934b1d 100644 --- a/core/src/io/anuke/mindustry/world/blocks/Blocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/Blocks.java @@ -1,16 +1,12 @@ package io.anuke.mindustry.world.blocks; import io.anuke.mindustry.graphics.DrawLayer; -import io.anuke.mindustry.graphics.Fx; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.resource.ItemStack; import io.anuke.mindustry.resource.Liquid; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.types.*; -import io.anuke.ucore.core.Effects; -import io.anuke.ucore.core.Timers; -import io.anuke.ucore.util.Mathf; public class Blocks{ public static final Block @@ -51,17 +47,6 @@ public class Blocks{ liquid = true; drawLayer = DrawLayer.lava; } - - @Override - public void update(Tile tile){ - if(Mathf.chance(0.001 * Timers.delta())){ - Effects.effect(Fx.lava, tile.worldx() + Mathf.range(5f), tile.worldy() + Mathf.range(5f)); - } - - if(Mathf.chance(0.002 * Timers.delta())){ - Effects.effect(Fx.lavabubble, tile.worldx() + Mathf.range(3f), tile.worldy() + Mathf.range(3f)); - } - } }, oil = new Floor("oil"){ @@ -72,13 +57,6 @@ public class Blocks{ liquid = true; drawLayer = DrawLayer.oil; } - - @Override - public void update(Tile tile){ - if(Mathf.chance(0.0022 * Timers.delta())){ - Effects.effect(Fx.oilbubble, tile.worldx() + Mathf.range(2f), tile.worldy() + Mathf.range(2f)); - } - } }, stone = new Floor("stone"){{