From d3a575542dc689dede09971628c5e6d125e64d21 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Thu, 12 Oct 2023 19:42:21 -0500 Subject: [PATCH] Improve SSAO class readability --- .../core/render/renderer/LodRenderer.java | 3 +-- .../core/render/renderer/SSAORenderer.java | 10 +++++++- .../renderer/shaders/SSAOApplyShader.java | 8 +++++++ .../render/renderer/shaders/SSAOShader.java | 24 ++++++++++++------- 4 files changed, 34 insertions(+), 11 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java index 318877937..0a689d6c6 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java @@ -386,8 +386,7 @@ public class LodRenderer if (Config.Client.Advanced.Graphics.Ssao.enabled.get()) { profiler.popPush("LOD SSAO"); - SSAOShader.INSTANCE.setProjectionMatrix(projectionMatrix); - SSAORenderer.INSTANCE.render(minecraftGlState, partialTicks); + SSAORenderer.INSTANCE.render(minecraftGlState, projectionMatrix, partialTicks); } profiler.popPush("LOD Fog"); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/SSAORenderer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/SSAORenderer.java index 299fb03f4..0e1e2c3d7 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/SSAORenderer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/SSAORenderer.java @@ -24,10 +24,17 @@ import com.seibel.distanthorizons.core.render.glObject.GLState; import com.seibel.distanthorizons.core.render.renderer.shaders.SSAOApplyShader; import com.seibel.distanthorizons.core.render.renderer.shaders.SSAOShader; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper; +import com.seibel.distanthorizons.coreapi.util.math.Mat4f; import org.lwjgl.opengl.GL32; import java.nio.ByteBuffer; +/** + * Handles adding SSAO via {@link SSAOShader} and {@link SSAOApplyShader}.

+ * + * {@link SSAOShader} - draws the SSAO to a texture.
+ * {@link SSAOApplyShader} - draws the SSAO texture to DH's FrameBuffer.
+ */ public class SSAORenderer { public static SSAORenderer INSTANCE = new SSAORenderer(); @@ -90,7 +97,7 @@ public class SSAORenderer // render // //========// - public void render(GLState primaryState, float partialTicks) + public void render(GLState primaryState, Mat4f projectionMatrix, float partialTicks) { GLState state = new GLState(); @@ -107,6 +114,7 @@ public class SSAORenderer } SSAOShader.INSTANCE.FrameBuffer = this.ssaoFramebuffer; + SSAOShader.INSTANCE.setProjectionMatrix(projectionMatrix); SSAOShader.INSTANCE.render(partialTicks); primaryState.restore(); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/SSAOApplyShader.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/SSAOApplyShader.java index fa8e168b1..f79858c6b 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/SSAOApplyShader.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/SSAOApplyShader.java @@ -22,11 +22,19 @@ package com.seibel.distanthorizons.core.render.renderer.shaders; import com.seibel.distanthorizons.core.config.Config; import com.seibel.distanthorizons.core.render.glObject.shader.ShaderProgram; import com.seibel.distanthorizons.core.render.renderer.LodRenderer; +import com.seibel.distanthorizons.core.render.renderer.SSAORenderer; import com.seibel.distanthorizons.core.render.renderer.ScreenQuad; import com.seibel.distanthorizons.core.util.LodUtil; import com.seibel.distanthorizons.core.util.RenderUtil; import org.lwjgl.opengl.GL32; +/** + * Draws the SSAO texture onto DH's FrameBuffer.

+ * + * See Also:
+ * {@link SSAORenderer} - Parent to this shader.
+ * {@link SSAOShader} - draws the SSAO texture.
+ */ public class SSAOApplyShader extends AbstractShaderRenderer { public static SSAOApplyShader INSTANCE = new SSAOApplyShader(); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/SSAOShader.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/SSAOShader.java index 34e29b699..69d636638 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/SSAOShader.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/SSAOShader.java @@ -22,18 +22,26 @@ package com.seibel.distanthorizons.core.render.renderer.shaders; import com.seibel.distanthorizons.core.config.Config; import com.seibel.distanthorizons.core.render.glObject.shader.ShaderProgram; import com.seibel.distanthorizons.core.render.renderer.LodRenderer; +import com.seibel.distanthorizons.core.render.renderer.SSAORenderer; import com.seibel.distanthorizons.core.render.renderer.ScreenQuad; import com.seibel.distanthorizons.coreapi.util.math.Mat4f; import org.lwjgl.opengl.GL32; +/** + * Draws the SSAO to a texture.

+ * + * See Also:
+ * {@link SSAORenderer} - Parent to this shader.
+ * {@link SSAOApplyShader} - draws the SSAO texture to DH's FrameBuffer.
+ */ public class SSAOShader extends AbstractShaderRenderer { public static SSAOShader INSTANCE = new SSAOShader(); public int FrameBuffer; - private Mat4f perspective; - private Mat4f invertedPerspective; + private Mat4f projection; + private Mat4f invertedProjection; // uniforms public int gProjUniform; @@ -63,20 +71,20 @@ public class SSAOShader extends AbstractShaderRenderer this.gDepthMapUniform = this.shader.getUniformLocation("gDepthMap"); } - public void setProjectionMatrix(Mat4f perspective) + public void setProjectionMatrix(Mat4f projectionMatrix) { - this.perspective = perspective; + this.projection = projectionMatrix; - this.invertedPerspective = new Mat4f(perspective); - this.invertedPerspective.invert(); + this.invertedProjection = new Mat4f(projectionMatrix); + this.invertedProjection.invert(); } @Override protected void onApplyUniforms(float partialTicks) { - this.shader.setUniform(this.gProjUniform, this.perspective); + this.shader.setUniform(this.gProjUniform, this.projection); - this.shader.setUniform(this.gInvProjUniform, this.invertedPerspective); + this.shader.setUniform(this.gInvProjUniform, this.invertedProjection); this.shader.setUniform(this.gSampleCountUniform, Config.Client.Advanced.Graphics.Ssao.sampleCount.get());