Skip to content

Commit 1f2f69b

Browse files
committed
Work on 1.21.5 support
1 parent 72e50b7 commit 1f2f69b

File tree

5 files changed

+78
-30
lines changed

5 files changed

+78
-30
lines changed
Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
package btw.lowercase.optiboxes.mixins;
22

3-
import com.mojang.blaze3d.pipeline.RenderPipeline;
4-
import net.minecraft.client.renderer.RenderPipelines;
53
import org.spongepowered.asm.mixin.Mixin;
64
import org.spongepowered.asm.mixin.gen.Accessor;
75

8-
@Mixin(RenderPipelines.class)
6+
//? >= 1.21.5 {
7+
@Mixin(net.minecraft.client.renderer.RenderPipelines.class)
98
public interface RenderPipelinesAccessor {
109
@Accessor("MATRICES_PROJECTION_SNIPPET")
11-
static RenderPipeline.Snippet optiboxes$getMatricesProjectionSnippet() {
10+
static com.mojang.blaze3d.pipeline.RenderPipeline.Snippet optiboxes$getMatricesProjectionSnippet() {
1211
return null;
1312
}
1413
}
14+
//? else {
15+
// public interface RenderPipelinesAccessor {
16+
// }
17+
//? }

src/main/java/btw/lowercase/optiboxes/skybox/OptiFineSkyRenderer.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import btw.lowercase.optiboxes.utils.IrisUtil;
88
import btw.lowercase.optiboxes.utils.UVRange;
99
import com.mojang.blaze3d.buffers.GpuBuffer;
10-
import com.mojang.blaze3d.buffers.GpuBufferSlice;
1110
import com.mojang.blaze3d.pipeline.BlendFunction;
1211
import com.mojang.blaze3d.pipeline.RenderPipeline;
1312
import com.mojang.blaze3d.pipeline.RenderTarget;
@@ -20,11 +19,9 @@
2019
import net.minecraft.util.Mth;
2120
import net.minecraft.world.level.Level;
2221
import org.jetbrains.annotations.Nullable;
23-
import org.joml.AxisAngle4f;
24-
import org.joml.Matrix4f;
25-
import org.joml.Matrix4fStack;
26-
import org.joml.Quaternionf;
22+
import org.joml.*;
2723

24+
import java.lang.Math;
2825
import java.util.HashMap;
2926
import java.util.Map;
3027
import java.util.OptionalDouble;
@@ -106,13 +103,20 @@ public void renderSkyLayer(OptiFineSkyLayer optiFineSkyLayer, Matrix4fStack mode
106103
modelViewStack.rotate(new Quaternionf(new AxisAngle4f(this.getAngle(level, skyAngle, optiFineSkyLayer.speed()), optiFineSkyLayer.axis())));
107104
}
108105

109-
GpuBufferSlice transforms = DynamicTransformsBuilder.of()
106+
Vector4f shaderColor = optiFineSkyLayer.blend().getShaderColor(finalAlpha);
107+
108+
//? >=1.21.5 {
109+
//? >=1.21.6 {
110+
com.mojang.blaze3d.buffers.GpuBufferSlice transforms = DynamicTransformsBuilder.of()
110111
.withModelViewMatrix(modelViewStack)
111-
.withShaderColor(optiFineSkyLayer.blend().getShaderColor(finalAlpha))
112+
.withShaderColor(shaderColor)
112113
.build();
114+
//? else {
115+
// RenderSystem.setShaderColor(shaderColor.x, shaderColor.y, shaderColor.z, shaderColor.w);
116+
//? }
113117

114118
RenderPipeline renderPipeline = this.renderPipelineCache.computeIfAbsent(optiFineSkyLayer.source(), (resourceLocation) -> {
115-
RenderPipeline pipeline = getSkyboxPipeline(optiFineSkyLayer.blend().getBlendFunction());
119+
RenderPipeline pipeline = getSkyboxPipeline(optiFineSkyLayer.blend().getBlendFunction().toNative());
116120
IrisUtil.assignPipeline(pipeline, IrisUtil.skyTextured());
117121
return pipeline;
118122
});
@@ -126,11 +130,14 @@ public void renderSkyLayer(OptiFineSkyLayer optiFineSkyLayer, Matrix4fStack mode
126130
renderPass.setPipeline(renderPipeline);
127131
renderPass.setVertexBuffer(0, this.skyBuffer);
128132
renderPass.setIndexBuffer(indexBuffer, this.skyBufferIndices.type());
133+
//? >=1.21.6 {
129134
RenderSystem.bindDefaultUniforms(renderPass);
130135
renderPass.setUniform("DynamicTransforms", transforms);
136+
//? }
131137
renderPass.bindSampler("Sampler0", texture);
132138
renderPass.drawIndexed(0, 0, this.skyBufferIndexCount, 1);
133139
}
140+
//? }
134141

135142
modelViewStack.popMatrix();
136143
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package btw.lowercase.optiboxes.utils;
2+
3+
import org.lwjgl.opengl.GL11;
4+
5+
public record BlendFunction(int srcFactor, int dstFactor) {
6+
//? >=1.21.5 {
7+
public com.mojang.blaze3d.pipeline.BlendFunction toNative() {
8+
// TODO: Improve
9+
return new com.mojang.blaze3d.pipeline.BlendFunction(
10+
switch (this.srcFactor) {
11+
case GL11.GL_SRC_COLOR -> com.mojang.blaze3d.platform.SourceFactor.SRC_COLOR;
12+
case GL11.GL_SRC_ALPHA -> com.mojang.blaze3d.platform.SourceFactor.SRC_ALPHA;
13+
case GL11.GL_DST_COLOR -> com.mojang.blaze3d.platform.SourceFactor.DST_COLOR;
14+
case GL11.GL_DST_ALPHA -> com.mojang.blaze3d.platform.SourceFactor.DST_ALPHA;
15+
case GL11.GL_ONE_MINUS_SRC_COLOR -> com.mojang.blaze3d.platform.SourceFactor.ONE_MINUS_SRC_COLOR;
16+
case GL11.GL_ONE_MINUS_SRC_ALPHA -> com.mojang.blaze3d.platform.SourceFactor.ONE_MINUS_SRC_ALPHA;
17+
case GL11.GL_ONE_MINUS_DST_COLOR -> com.mojang.blaze3d.platform.SourceFactor.ONE_MINUS_DST_COLOR;
18+
case GL11.GL_ONE_MINUS_DST_ALPHA -> com.mojang.blaze3d.platform.SourceFactor.ONE_MINUS_DST_ALPHA;
19+
case GL11.GL_ONE -> com.mojang.blaze3d.platform.SourceFactor.ONE;
20+
case GL11.GL_ZERO -> com.mojang.blaze3d.platform.SourceFactor.ZERO;
21+
case GL11.GL_SRC_ALPHA_SATURATE -> com.mojang.blaze3d.platform.SourceFactor.SRC_ALPHA_SATURATE;
22+
default -> throw new RuntimeException("Unknown blend src factor " + this.srcFactor);
23+
},
24+
switch (this.dstFactor) {
25+
case GL11.GL_SRC_COLOR -> com.mojang.blaze3d.platform.DestFactor.SRC_COLOR;
26+
case GL11.GL_SRC_ALPHA -> com.mojang.blaze3d.platform.DestFactor.SRC_ALPHA;
27+
case GL11.GL_DST_COLOR -> com.mojang.blaze3d.platform.DestFactor.DST_COLOR;
28+
case GL11.GL_DST_ALPHA -> com.mojang.blaze3d.platform.DestFactor.DST_ALPHA;
29+
case GL11.GL_ONE_MINUS_SRC_COLOR -> com.mojang.blaze3d.platform.DestFactor.ONE_MINUS_SRC_COLOR;
30+
case GL11.GL_ONE_MINUS_SRC_ALPHA -> com.mojang.blaze3d.platform.DestFactor.ONE_MINUS_SRC_ALPHA;
31+
case GL11.GL_ONE_MINUS_DST_COLOR -> com.mojang.blaze3d.platform.DestFactor.ONE_MINUS_DST_COLOR;
32+
case GL11.GL_ONE_MINUS_DST_ALPHA -> com.mojang.blaze3d.platform.DestFactor.ONE_MINUS_DST_ALPHA;
33+
case GL11.GL_ONE -> com.mojang.blaze3d.platform.DestFactor.ONE;
34+
case GL11.GL_ZERO -> com.mojang.blaze3d.platform.DestFactor.ZERO;
35+
default -> throw new RuntimeException("Unknown blend dest factor " + this.dstFactor);
36+
});
37+
}
38+
//?}
39+
}

src/main/java/btw/lowercase/optiboxes/utils/DynamicTransformsBuilder.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package btw.lowercase.optiboxes.utils;
22

3-
import com.mojang.blaze3d.buffers.GpuBufferSlice;
4-
import com.mojang.blaze3d.systems.RenderSystem;
53
import net.minecraft.util.ARGB;
64
import org.joml.Matrix4f;
75
import org.joml.Vector3f;
@@ -61,13 +59,15 @@ public DynamicTransformsBuilder withLineWidth(float lineWidth) {
6159
return this;
6260
}
6361

64-
public GpuBufferSlice build() {
65-
return RenderSystem.getDynamicUniforms().writeTransform(
66-
this.modelViewMatrix.orElse(RenderSystem.getModelViewMatrix()),
62+
//? >=1.21.6 {
63+
public com.mojang.blaze3d.buffers.GpuBufferSlice build() {
64+
return com.mojang.blaze3d.systems.RenderSystem.getDynamicUniforms().writeTransform(
65+
this.modelViewMatrix.orElse(com.mojang.blaze3d.systems.RenderSystem.getModelViewMatrix()),
6766
this.colorModulator.orElse(new Vector4f(1.0F, 1.0F, 1.0F, 1.0F)),
6867
this.modelOffset.orElse(new Vector3f()),
69-
this.textureMatrix.orElse(RenderSystem.getTextureMatrix()),
70-
this.lineWidth.orElse(RenderSystem.getShaderLineWidth())
68+
this.textureMatrix.orElse(com.mojang.blaze3d.systems.RenderSystem.getTextureMatrix()),
69+
this.lineWidth.orElse(com.mojang.blaze3d.systems.RenderSystem.getShaderLineWidth())
7170
);
7271
}
72+
//? }
7373
}

src/main/java/btw/lowercase/optiboxes/utils/components/Blend.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
11
package btw.lowercase.optiboxes.utils.components;
22

3-
import com.mojang.blaze3d.pipeline.BlendFunction;
4-
import com.mojang.blaze3d.platform.DestFactor;
5-
import com.mojang.blaze3d.platform.SourceFactor;
3+
import btw.lowercase.optiboxes.utils.BlendFunction;
64
import com.mojang.serialization.Codec;
75
import org.joml.Vector4f;
6+
import org.lwjgl.opengl.GL11;
87

98
import java.util.Arrays;
109
import java.util.function.Function;
1110

1211
public enum Blend {
13-
ALPHA(alpha -> new Vector4f(1.0F, 1.0F, 1.0F, alpha), new BlendFunction(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA)),
14-
ADD(alpha -> new Vector4f(1.0F, 1.0F, 1.0F, alpha), new BlendFunction(SourceFactor.SRC_ALPHA, DestFactor.ONE)),
15-
SUBTRACT(alpha -> new Vector4f(alpha, alpha, alpha, 1.0F), new BlendFunction(SourceFactor.ONE_MINUS_DST_COLOR, DestFactor.ZERO)),
16-
MULTIPLY(alpha -> new Vector4f(alpha, alpha, alpha, alpha), new BlendFunction(SourceFactor.DST_COLOR, DestFactor.ONE_MINUS_SRC_ALPHA)),
17-
DODGE(alpha -> new Vector4f(alpha, alpha, alpha, 1.0F), new BlendFunction(SourceFactor.ONE, DestFactor.ONE)),
18-
BURN(alpha -> new Vector4f(alpha, alpha, alpha, 1.0F), new BlendFunction(SourceFactor.ZERO, DestFactor.ONE_MINUS_SRC_COLOR)),
19-
SCREEN(alpha -> new Vector4f(alpha, alpha, alpha, 1.0F), new BlendFunction(SourceFactor.ONE, DestFactor.ONE_MINUS_SRC_COLOR)),
20-
OVERLAY(alpha -> new Vector4f(alpha, alpha, alpha, 1.0F), new BlendFunction(SourceFactor.DST_COLOR, DestFactor.SRC_COLOR)),
12+
ALPHA(alpha -> new Vector4f(1.0F, 1.0F, 1.0F, alpha), new BlendFunction(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA)),
13+
ADD(alpha -> new Vector4f(1.0F, 1.0F, 1.0F, alpha), new BlendFunction(GL11.GL_SRC_ALPHA, GL11.GL_ONE)),
14+
SUBTRACT(alpha -> new Vector4f(alpha, alpha, alpha, 1.0F), new BlendFunction(GL11.GL_ONE_MINUS_DST_COLOR, GL11.GL_ZERO)),
15+
MULTIPLY(alpha -> new Vector4f(alpha, alpha, alpha, alpha), new BlendFunction(GL11.GL_DST_COLOR, GL11.GL_ONE_MINUS_SRC_ALPHA)),
16+
DODGE(alpha -> new Vector4f(alpha, alpha, alpha, 1.0F), new BlendFunction(GL11.GL_ONE, GL11.GL_ONE)),
17+
BURN(alpha -> new Vector4f(alpha, alpha, alpha, 1.0F), new BlendFunction(GL11.GL_ZERO, GL11.GL_ONE_MINUS_SRC_COLOR)),
18+
SCREEN(alpha -> new Vector4f(alpha, alpha, alpha, 1.0F), new BlendFunction(GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_COLOR)),
19+
OVERLAY(alpha -> new Vector4f(alpha, alpha, alpha, 1.0F), new BlendFunction(GL11.GL_DST_COLOR, GL11.GL_SRC_COLOR)),
2120
REPLACE(alpha -> new Vector4f(1.0F, 1.0F, 1.0F, alpha), null);
2221

2322
public static final Codec<Blend> CODEC = Codec.STRING.xmap(Blend::byName, Blend::toString);

0 commit comments

Comments
 (0)