Skip to content

Commit

Permalink
Fix issue #50
Browse files Browse the repository at this point in the history
(cherry picked from commit 73174f6)
  • Loading branch information
Qendolin committed Sep 30, 2023
1 parent 362edcc commit e08dc6a
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 7 deletions.
14 changes: 9 additions & 5 deletions src/main/java/com/qendolin/betterclouds/clouds/Renderer.java
Original file line number Diff line number Diff line change
Expand Up @@ -78,23 +78,23 @@ private int scaledFramebufferHeight() {
return (int) (Main.getConfig().preset().upscaleResolutionFactor * client.getFramebuffer().textureHeight);
}

public boolean prepare(MatrixStack matrices, Matrix4f projMat, int ticks, float tickDelta, Vector3d cam) {
public PrepareResult prepare(MatrixStack matrices, Matrix4f projMat, int ticks, float tickDelta, Vector3d cam) {
assert RenderSystem.isOnRenderThread();
client.getProfiler().swap("render_setup");
Config config = Main.getConfig();

if (res.failedToLoadCritical()) {
Debug.trace.ifPresent(snapshot -> snapshot.recordEvent("prepare failed: critical resource not loaded"));
return false;
return PrepareResult.FALLBACK;
}
if (!config.irisSupport && IrisCompat.IS_LOADED && IrisCompat.isShadersEnabled()) {
Debug.trace.ifPresent(snapshot -> snapshot.recordEvent("prepare failed: iris support disabled"));
return false;
return PrepareResult.FALLBACK;
}

// Rendering clouds when underwater was making them very visible in unloaded chunks
if (client.gameRenderer.getCamera().getSubmersionType() != CameraSubmersionType.NONE) {
return false;
return PrepareResult.NO_RENDER;
}

DimensionEffects effects = world.getDimensionEffects();
Expand Down Expand Up @@ -148,7 +148,7 @@ public boolean prepare(MatrixStack matrices, Matrix4f projMat, int ticks, float
// TODO: don't do this dynamically
defaultFbo = glGetInteger(GL_DRAW_FRAMEBUFFER_BINDING);

return true;
return PrepareResult.RENDER;
}

// Don't forget to push / pop matrix stack outside
Expand Down Expand Up @@ -457,4 +457,8 @@ private float smoothstep(float x, float e0, float e1) {
public void close() {
res.close();
}

public enum PrepareResult {
RENDER, NO_RENDER, FALLBACK
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -116,12 +116,15 @@ private void renderClouds(MatrixStack matrices, Matrix4f projMat, float tickDelt

matrices.push();
try {
if (cloudRenderer.prepare(matrices, projMat, ticks, tickDelta, cam)) {
Renderer.PrepareResult prepareResult = cloudRenderer.prepare(matrices, projMat, ticks, tickDelta, cam);
if (prepareResult == Renderer.PrepareResult.RENDER) {
ci.cancel();
Debug.trace.ifPresent(Debug.DebugTrace::recordFrame);
cloudRenderer.render(ticks, tickDelta, cam, frustumPos, frustum);
} else if(prepareResult == Renderer.PrepareResult.NO_RENDER) {
ci.cancel();
} else {
Debug.trace.ifPresent(snapshot -> snapshot.recordEvent("renderer prepare returned false"));
Debug.trace.ifPresent(snapshot -> snapshot.recordEvent("renderer prepare returned " + prepareResult.name()));
}
} catch (Exception e) {
Telemetry.INSTANCE.sendUnhandledException(e);
Expand Down

0 comments on commit e08dc6a

Please sign in to comment.