use init render events
This commit is contained in:
+4
-4
@@ -106,13 +106,13 @@ public class SSAORenderer
|
||||
this.createFramebuffer(width, height);
|
||||
}
|
||||
|
||||
ScreenQuad.INSTANCE.bind();
|
||||
|
||||
SSAOShader.INSTANCE.render(partialTicks, ssaoFramebuffer);
|
||||
SSAOShader.INSTANCE.ssaoFramebuffer = this.ssaoFramebuffer;
|
||||
SSAOShader.INSTANCE.render(partialTicks);
|
||||
|
||||
primaryState.RestoreFrameBuffer();
|
||||
|
||||
SSAOApplyShader.INSTANCE.render(partialTicks, ssaoTexture);
|
||||
SSAOApplyShader.INSTANCE.ssaoTexture = this.ssaoTexture;
|
||||
SSAOApplyShader.INSTANCE.render(partialTicks);
|
||||
|
||||
state.restore();
|
||||
}
|
||||
|
||||
@@ -67,16 +67,13 @@ public class ScreenQuad
|
||||
this.createBuffer();
|
||||
}
|
||||
|
||||
public void bind()
|
||||
public void render()
|
||||
{
|
||||
this.init();
|
||||
|
||||
this.va.bind();
|
||||
this.va.bindBufferToAllBindingPoint(this.boxBuffer.getId());
|
||||
}
|
||||
|
||||
public void render()
|
||||
{
|
||||
|
||||
GL32.glDrawArrays(GL32.GL_TRIANGLES, 0, 6);
|
||||
}
|
||||
|
||||
|
||||
+22
-1
@@ -37,12 +37,33 @@ public abstract class AbstractShaderRenderer
|
||||
|
||||
public void init()
|
||||
{
|
||||
//if (init) return false;
|
||||
if (this.init) return;
|
||||
this.init = true;
|
||||
|
||||
this.onInit();
|
||||
}
|
||||
|
||||
public void render(float partialTicks)
|
||||
{
|
||||
this.init();
|
||||
|
||||
this.shader.bind();
|
||||
|
||||
this.onApplyUniforms(partialTicks);
|
||||
|
||||
this.onRender();
|
||||
|
||||
this.shader.unbind();
|
||||
}
|
||||
|
||||
public void free()
|
||||
{
|
||||
this.shader.free();
|
||||
}
|
||||
|
||||
protected void onInit() {}
|
||||
|
||||
protected void onApplyUniforms(float partialTicks) {}
|
||||
|
||||
protected void onRender() {}
|
||||
}
|
||||
|
||||
+6
-15
@@ -30,11 +30,8 @@ public class DarkShader extends AbstractShaderRenderer
|
||||
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
public void onInit()
|
||||
{
|
||||
if (this.init) return;
|
||||
super.init();
|
||||
|
||||
this.shader = new ShaderProgram(
|
||||
"shaders/normal.vert",
|
||||
"shaders/test/dark.frag",
|
||||
@@ -42,17 +39,17 @@ public class DarkShader extends AbstractShaderRenderer
|
||||
new String[]{"vPosition", "color"});
|
||||
}
|
||||
|
||||
void setShaderUniforms()
|
||||
@Override
|
||||
protected void onApplyUniforms(float partialTicks)
|
||||
{
|
||||
GL32.glActiveTexture(GL32.GL_TEXTURE0);
|
||||
GL32.glBindTexture(GL32.GL_TEXTURE_2D, MC_RENDER.getDepthTextureId());
|
||||
}
|
||||
|
||||
public void render()
|
||||
@Override
|
||||
protected void onRender()
|
||||
{
|
||||
GLState state = new GLState();
|
||||
|
||||
this.init();
|
||||
|
||||
int width = MC_RENDER.getTargetFrameBufferViewportWidth();
|
||||
int height = MC_RENDER.getTargetFrameBufferViewportHeight();
|
||||
@@ -60,15 +57,9 @@ public class DarkShader extends AbstractShaderRenderer
|
||||
GL32.glViewport(0, 0, width, height);
|
||||
GL32.glDisable(GL32.GL_DEPTH_TEST);
|
||||
GL32.glDisable(GL32.GL_SCISSOR_TEST);
|
||||
|
||||
shader.bind();
|
||||
|
||||
this.setShaderUniforms();
|
||||
|
||||
ScreenQuad.INSTANCE.bind();
|
||||
|
||||
GL32.glEnable(GL32.GL_BLEND);
|
||||
GL32.glBlendFunc(GL32.GL_SRC_ALPHA, GL32.GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
ScreenQuad.INSTANCE.render();
|
||||
|
||||
state.restore();
|
||||
|
||||
+7
-17
@@ -63,11 +63,8 @@ public class FogShader extends AbstractShaderRenderer
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
public void onInit()
|
||||
{
|
||||
if (this.init) return;
|
||||
super.init();
|
||||
|
||||
this.shader = new ShaderProgram(
|
||||
// TODO rename normal.vert to something like "postProcess.vert"
|
||||
() -> Shader.loadFile("shaders/normal.vert", false, new StringBuilder()).toString(),
|
||||
@@ -92,8 +89,8 @@ public class FogShader extends AbstractShaderRenderer
|
||||
this.nearFogLengthUniform = this.shader.tryGetUniformLocation("nearFogLength");
|
||||
}
|
||||
|
||||
//@Override
|
||||
void setShaderUniforms(float partialTicks)
|
||||
@Override
|
||||
protected void onApplyUniforms(float partialTicks)
|
||||
{
|
||||
this.shader.bind();
|
||||
|
||||
@@ -152,30 +149,23 @@ public class FogShader extends AbstractShaderRenderer
|
||||
this.shader.unbind();
|
||||
}
|
||||
|
||||
public void render(float partialTicks)
|
||||
@Override
|
||||
protected void onRender()
|
||||
{
|
||||
GLState state = new GLState();
|
||||
|
||||
this.init();
|
||||
|
||||
int width = MC_RENDER.getTargetFrameBufferViewportWidth();
|
||||
int height = MC_RENDER.getTargetFrameBufferViewportHeight();
|
||||
|
||||
GL32.glViewport(0, 0, width, height);
|
||||
GL32.glDisable(GL32.GL_DEPTH_TEST);
|
||||
GL32.glDisable(GL32.GL_SCISSOR_TEST);
|
||||
|
||||
shader.bind();
|
||||
|
||||
this.setShaderUniforms(partialTicks);
|
||||
|
||||
ScreenQuad.INSTANCE.bind();
|
||||
GL32.glEnable(GL32.GL_BLEND);
|
||||
GL32.glBlendFunc(GL32.GL_SRC_ALPHA, GL32.GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
GL32.glActiveTexture(GL32.GL_TEXTURE0);
|
||||
GL32.glBindTexture(GL32.GL_TEXTURE_2D, MC_RENDER.getDepthTextureId());
|
||||
|
||||
GL32.glEnable(GL32.GL_BLEND);
|
||||
GL32.glBlendFunc(GL32.GL_SRC_ALPHA, GL32.GL_ONE_MINUS_SRC_ALPHA);
|
||||
ScreenQuad.INSTANCE.render();
|
||||
|
||||
state.restore();
|
||||
|
||||
+8
-13
@@ -30,6 +30,7 @@ public class SSAOApplyShader extends AbstractShaderRenderer
|
||||
{
|
||||
public static SSAOApplyShader INSTANCE = new SSAOApplyShader();
|
||||
|
||||
public int ssaoTexture;
|
||||
|
||||
// apply uniforms
|
||||
private final ApplyShaderUniforms applyShaderUniforms = new ApplyShaderUniforms();
|
||||
@@ -46,11 +47,8 @@ public class SSAOApplyShader extends AbstractShaderRenderer
|
||||
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
public void onInit()
|
||||
{
|
||||
if (this.init) return;
|
||||
super.init();
|
||||
|
||||
this.shader = new ShaderProgram(
|
||||
"shaders/normal.vert",
|
||||
"shaders/ssao/apply.frag",
|
||||
@@ -66,14 +64,15 @@ public class SSAOApplyShader extends AbstractShaderRenderer
|
||||
this.applyShaderUniforms.gFarUniform = this.shader.tryGetUniformLocation("gFar");
|
||||
}
|
||||
|
||||
private void setShaderUniforms(float partialTicks, int ssaoTexture)
|
||||
@Override
|
||||
protected void onApplyUniforms(float partialTicks)
|
||||
{
|
||||
GL32.glActiveTexture(GL32.GL_TEXTURE0);
|
||||
GL32.glBindTexture(GL32.GL_TEXTURE_2D, MC_RENDER.getDepthTextureId());
|
||||
GL32.glUniform1i(this.applyShaderUniforms.gDepthMapUniform, 0);
|
||||
|
||||
GL32.glActiveTexture(GL32.GL_TEXTURE1);
|
||||
GL32.glBindTexture(GL32.GL_TEXTURE_2D, ssaoTexture);
|
||||
GL32.glBindTexture(GL32.GL_TEXTURE_2D, this.ssaoTexture);
|
||||
GL32.glUniform1i(this.applyShaderUniforms.gSSAOMapUniform, 1);
|
||||
|
||||
int blurRadius = Config.Client.Advanced.Graphics.Ssao.blurRadius.get();
|
||||
@@ -99,18 +98,14 @@ public class SSAOApplyShader extends AbstractShaderRenderer
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//========//
|
||||
// render //
|
||||
//========//
|
||||
|
||||
public void render(float partialTicks, int ssaoTexture)
|
||||
@Override
|
||||
protected void onRender()
|
||||
{
|
||||
this.init();
|
||||
|
||||
this.shader.bind();
|
||||
|
||||
setShaderUniforms(partialTicks, ssaoTexture);
|
||||
|
||||
GL32.glEnable(GL32.GL_BLEND);
|
||||
GL32.glBlendEquation(GL32.GL_FUNC_ADD);
|
||||
GL32.glBlendFuncSeparate(GL32.GL_ZERO, GL32.GL_SRC_ALPHA, GL32.GL_ZERO, GL32.GL_ONE);
|
||||
|
||||
+8
-16
@@ -31,6 +31,7 @@ public class SSAOShader extends AbstractShaderRenderer
|
||||
{
|
||||
public static SSAOShader INSTANCE = new SSAOShader();
|
||||
|
||||
public int ssaoFramebuffer;
|
||||
|
||||
// uniforms
|
||||
private final SsaoShaderUniforms ssaoShaderUniforms = new SsaoShaderUniforms();
|
||||
@@ -46,14 +47,11 @@ public class SSAOShader extends AbstractShaderRenderer
|
||||
public int gBiasUniform;
|
||||
public int gDepthMapUniform;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
public void onInit()
|
||||
{
|
||||
if (this.init) return;
|
||||
super.init();
|
||||
|
||||
this.shader = new ShaderProgram("shaders/normal.vert", "shaders/ssao/ao.frag",
|
||||
"fragColor", new String[]{"vPosition"});
|
||||
|
||||
@@ -68,7 +66,8 @@ public class SSAOShader extends AbstractShaderRenderer
|
||||
this.ssaoShaderUniforms.gDepthMapUniform = this.shader.getUniformLocation("gDepthMap");
|
||||
}
|
||||
|
||||
void setShaderUniforms(float partialTicks)
|
||||
@Override
|
||||
protected void onApplyUniforms(float partialTicks)
|
||||
{
|
||||
int width = MC_RENDER.getTargetFrameBufferViewportWidth();
|
||||
int height = MC_RENDER.getTargetFrameBufferViewportHeight();
|
||||
@@ -113,25 +112,18 @@ public class SSAOShader extends AbstractShaderRenderer
|
||||
// render //
|
||||
//========//
|
||||
|
||||
public void render(float partialTicks, int ssaoFramebuffer)
|
||||
@Override
|
||||
protected void onRender()
|
||||
{
|
||||
this.init();
|
||||
|
||||
int width = MC_RENDER.getTargetFrameBufferViewportWidth();
|
||||
int height = MC_RENDER.getTargetFrameBufferViewportHeight();
|
||||
|
||||
this.shader.bind();
|
||||
|
||||
setShaderUniforms(partialTicks);
|
||||
|
||||
GL32.glBindFramebuffer(GL32.GL_FRAMEBUFFER, ssaoFramebuffer);
|
||||
GL32.glBindFramebuffer(GL32.GL_FRAMEBUFFER, this.ssaoFramebuffer);
|
||||
GL32.glViewport(0, 0, width, height);
|
||||
GL32.glDisable(GL32.GL_SCISSOR_TEST);
|
||||
GL32.glDisable(GL32.GL_DEPTH_TEST);
|
||||
GL32.glDisable(GL32.GL_BLEND);
|
||||
|
||||
ScreenQuad.INSTANCE.render();
|
||||
|
||||
shader.unbind();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,10 +28,6 @@ vec3 quantize(vec3 val, int stepSize) {
|
||||
return floor(val * stepSize) / stepSize;
|
||||
}
|
||||
|
||||
vec3 RgbToLinear(const in vec3 color) {
|
||||
return pow(color, vec3(2.2));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Fragment Shader
|
||||
@@ -44,9 +40,6 @@ void main()
|
||||
{
|
||||
fragColor = vertexColor;
|
||||
|
||||
// WARN: DEBUG TEST!
|
||||
//fragColor.rgb = RgbToLinear(fragColor.rgb) * 3.0;
|
||||
|
||||
// TODO: Move into its own function instead of in an if statement
|
||||
if (noiseEnabled) {
|
||||
vec3 vertexNormal = normalize(cross(dFdy(vPos.xyz), dFdx(vPos.xyz)));
|
||||
|
||||
Reference in New Issue
Block a user