Transition to Framebuffer#blit
This commit is contained in:
Binary file not shown.
@@ -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);
|
||||
}
|
||||
|
||||
9
core/assets/shaders/screenspace.vert
Normal file
9
core/assets/shaders/screenspace.vert
Normal file
@@ -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;
|
||||
}
|
||||
@@ -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){
|
||||
|
||||
@@ -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(){
|
||||
|
||||
@@ -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(){
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
org.gradle.daemon=true
|
||||
org.gradle.jvmargs=-Xms256m -Xmx1024m
|
||||
archash=53dae7fe3363a33793daa1d7036cc77f4e0e2797
|
||||
archash=5d845b94754aa9667c60de503624ff2a51df6e64
|
||||
|
||||
Reference in New Issue
Block a user