Skip to content

Commit

Permalink
Fix sodium compat
Browse files Browse the repository at this point in the history
  • Loading branch information
juancarloscp52 committed Aug 11, 2024
1 parent 1835e7f commit 23d0dbf
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ public final class BedrockSunGlareShading {
private ShaderState shaderState = ShaderState.UNSPECIFIED;
private float skyAttenuation;
private float sunAngleDiff;
private float sunRadiusDelta;
private final Vector3f sunVector3f;
private final MinecraftClient client;

Expand Down Expand Up @@ -241,6 +242,24 @@ public void updateAngleDiff() {
this.sunAngleDiff = Math.clamp(clampMin, clampMax, (Math.safeAcos(cameraVec3f.dot(this.sunVector3f)) - 0.15f) * 2.f + sunSetRiseFactor);
}

public void updateSunRadiusDelta(float tickDelta){
if(MinecraftClient.getInstance().world == null)
return;

final float rainGradient = MinecraftClient.getInstance().world.getRainGradient(tickDelta);
if (MathHelper.approximatelyEquals(rainGradient, 1f) || !this.shouldApplyShading()) {
this.sunRadiusDelta = 1f;
return;
}

this.updateAngleDiff();
this.sunRadiusDelta = this.getSunAngleDiff() + rainGradient;
}

public float getSunRadiusDelta() {
return this.sunRadiusDelta;
}

public float getSunAngleDiff() {
return this.sunAngleDiff;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,11 @@ public abstract class ClientWorldMixin {

return original.multiply(multiplierRed, multiplierGreen, multiplierBlue);
}

@ModifyReturnValue(method = "getCloudsColor", at = @At("RETURN"))
private Vec3d bedrockify$modifyCloudsColor(Vec3d original) {
BedrockSunGlareShading sunGlareShading = BedrockifyClient.getInstance().bedrockSunGlareShading;
return original.multiply(MathHelper.clampedLerp(0.8d, 1.0d, sunGlareShading.getSunRadiusDelta()));
}

}
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
package me.juancarloscp52.bedrockify.mixin.client.features.bedrockShading.sunGlare;

import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import me.juancarloscp52.bedrockify.client.BedrockifyClient;
import me.juancarloscp52.bedrockify.client.features.bedrockShading.BedrockSunGlareShading;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.Camera;
import net.minecraft.client.render.WorldRenderer;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
import org.joml.Matrix4f;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
Expand All @@ -22,8 +20,6 @@ public abstract class WorldRendererMixin {
@Shadow
private @Final MinecraftClient client;

@Unique
private float sunRadiusDelta = 1f;
@Unique
private static final String RENDER_SKY_METHOD_SIGNATURE = "renderSky(Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;FLnet/minecraft/client/render/Camera;ZLjava/lang/Runnable;)V";

Expand All @@ -43,16 +39,8 @@ public abstract class WorldRendererMixin {
if (this.client.world == null) {
return;
}

final BedrockSunGlareShading sunGlareShading = BedrockifyClient.getInstance().bedrockSunGlareShading;
final float rainGradient = this.client.world.getRainGradient(tickDelta);
if (MathHelper.approximatelyEquals(rainGradient, 1f) || !sunGlareShading.shouldApplyShading()) {
this.sunRadiusDelta = 1f;
return;
}

sunGlareShading.updateAngleDiff();
this.sunRadiusDelta = sunGlareShading.getSunAngleDiff() + rainGradient;
sunGlareShading.updateSunRadiusDelta(tickDelta);
}

/**
Expand All @@ -61,24 +49,21 @@ public abstract class WorldRendererMixin {
*/
@ModifyConstant(method = RENDER_SKY_METHOD_SIGNATURE, constant = @Constant(floatValue = 30.0f, ordinal = 0))
private float bedrockify$modifySunRadius(float original) {
if (!BedrockifyClient.getInstance().bedrockSunGlareShading.shouldApplyShading() || this.sunRadiusDelta >= 1f) {
BedrockSunGlareShading sunGlareShading = BedrockifyClient.getInstance().bedrockSunGlareShading;
if (!sunGlareShading.shouldApplyShading() || sunGlareShading.getSunRadiusDelta() >= 1f) {
return original;
}

return MathHelper.clampedLerp(original * 1.3f, original, this.sunRadiusDelta);
return MathHelper.clampedLerp(original * 1.3f, original, sunGlareShading.getSunRadiusDelta());
}


@ModifyArgs(method = "renderSky", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;setShaderColor(FFFF)V", ordinal = 2))
private void bedrockify$modifySunIntensity(Args args){
float value = MathHelper.clampedLerp(2.0f, 1.0f, this.sunRadiusDelta);
BedrockSunGlareShading sunGlareShading = BedrockifyClient.getInstance().bedrockSunGlareShading;
float value = MathHelper.clampedLerp(2.0f, 1.0f, sunGlareShading.getSunRadiusDelta());
args.set(0,value);
args.set(1,value);
args.set(2,value);
}

@ModifyExpressionValue(method = "renderClouds", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/world/ClientWorld;getCloudsColor(F)Lnet/minecraft/util/math/Vec3d;"))
private Vec3d bedrockify$darkenClouds(Vec3d original){
return original.multiply(MathHelper.clampedLerp(0.8d, 1.0d, this.sunRadiusDelta));
}
}

0 comments on commit 23d0dbf

Please sign in to comment.