This commit is contained in:
Anuken
2019-04-02 15:52:44 -04:00
parent 37999e0870
commit 67a12eecad
27 changed files with 106 additions and 8 deletions

View File

@@ -139,6 +139,7 @@ public class BlockRenderer{
shadowEvents.clear();
Draw.proj(camera.projection());
renderer.pixelator.rebind();
}
float ww = world.width() * tilesize, wh = world.height() * tilesize;

View File

@@ -43,7 +43,7 @@ public enum CacheLayer{
}
void beginShader(){
if(!Core.settings.getBool("animatedwater")) return;
if(!Core.settings.getBool("animatedwater") || renderer.pixelator.enabled()) return;
renderer.blocks.floor.endc();
renderer.shieldBuffer.begin();
@@ -52,7 +52,7 @@ public enum CacheLayer{
}
void endShader(Shader shader){
if(!Core.settings.getBool("animatedwater")) return;
if(!Core.settings.getBool("animatedwater") || renderer.pixelator.enabled()) return;
renderer.blocks.floor.endc();
renderer.shieldBuffer.end();

View File

@@ -0,0 +1,48 @@
package io.anuke.mindustry.graphics;
import io.anuke.arc.Core;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.glutils.FrameBuffer;
import io.anuke.arc.util.Disposable;
import static io.anuke.mindustry.Vars.*;
public class Pixelator implements Disposable{
private FrameBuffer buffer = new FrameBuffer(2, 2);
public void drawPixelate(){
float px = Core.camera.position.x, py = Core.camera.position.y;
Core.camera.position.set((int)px, (int)py + (Core.graphics.getHeight() % 2 == 0 ? 0 : 0.5f));
int w = (int)(Core.camera.width);
int h = (int)(Core.camera.height);
if(buffer.getWidth() != w || buffer.getHeight() != h){
buffer.resize(w, h);
}
Draw.flush();
buffer.begin();
renderer.draw();
Draw.flush();
buffer.end();
Draw.rect(Draw.wrap(buffer.getTexture()), Core.camera.position.x, Core.camera.position.y, Core.camera.width, -Core.camera.height);
Core.camera.position.set(px, py);
}
public void rebind(){
if(enabled()){
buffer.begin();
}
}
public boolean enabled(){
return Core.settings.getBool("pixelate");
}
@Override
public void dispose(){
buffer.dispose();
}
}