Skip to content

Commit 7fdf255

Browse files
committed
More work on 1.21.5
1 parent 07a4ff2 commit 7fdf255

File tree

11 files changed

+166
-35
lines changed

11 files changed

+166
-35
lines changed

src/main/java/btw/lowercase/optiboxes/mixins/MixinFogRenderer.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,32 @@
33
import btw.lowercase.optiboxes.skybox.SkyboxManager;
44
import net.minecraft.client.Camera;
55
import net.minecraft.client.multiplayer.ClientLevel;
6-
import net.minecraft.client.renderer.fog.FogRenderer;
76
import net.minecraft.world.level.Level;
87
import org.joml.Vector4f;
98
import org.spongepowered.asm.mixin.Mixin;
109
import org.spongepowered.asm.mixin.injection.At;
1110
import org.spongepowered.asm.mixin.injection.Inject;
1211
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
1312

14-
@Mixin(FogRenderer.class)
13+
//? >=1.21.6 {
14+
/*@Mixin(net.minecraft.client.renderer.fog.FogRenderer.class)
15+
*///?} else {
16+
@Mixin(net.minecraft.client.renderer.FogRenderer.class)
17+
//?}
1518
public abstract class MixinFogRenderer {
1619
@Inject(method = "computeFogColor", at = @At("HEAD"), cancellable = true)
17-
private void optiboxes$disableNetherFogForSkies(Camera camera, float f, ClientLevel clientLevel, int i, float g, boolean bl, CallbackInfoReturnable<Vector4f> cir) {
20+
private
21+
//? <1.21.6
22+
static
23+
void optiboxes$disableNetherFogForSkies(
24+
Camera camera,
25+
float partialTick,
26+
ClientLevel clientLevel,
27+
int renderDistance,
28+
float darkenWorldAmount,
29+
//? >=1.21.6
30+
/*boolean bl,*/
31+
CallbackInfoReturnable<Vector4f> cir) {
1832
if (SkyboxManager.INSTANCE.isEnabled(clientLevel) && SkyboxManager.INSTANCE.containsEnabled(Level.NETHER)) {
1933
cir.setReturnValue(new Vector4f(1.0F, 1.0F, 1.0F, 0.0F));
2034
}

src/main/java/btw/lowercase/optiboxes/mixins/MixinLevelRenderer.java

Lines changed: 44 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import com.llamalad7.mixinextras.injector.v2.WrapWithCondition;
77
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
88
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
9-
import com.mojang.blaze3d.buffers.GpuBufferSlice;
109
import com.mojang.blaze3d.framegraph.FrameGraphBuilder;
1110
import com.mojang.blaze3d.systems.RenderSystem;
1211
import com.mojang.blaze3d.vertex.PoseStack;
@@ -41,7 +40,16 @@ public abstract class MixinLevelRenderer {
4140
private float optiboxes$tickDelta;
4241

4342
@Inject(method = "addSkyPass", at = @At("HEAD"))
44-
private void optiboxes$getLocals(FrameGraphBuilder frameGraphBuilder, Camera camera, float tickDelta, GpuBufferSlice gpuBufferSlice, CallbackInfo ci) {
43+
private void optiboxes$getLocals(
44+
FrameGraphBuilder frameGraphBuilder,
45+
Camera camera,
46+
float tickDelta,
47+
//? >=1.21.6 {
48+
/*com.mojang.blaze3d.buffers.GpuBufferSlice gpuBufferSlice,
49+
*///?} else {
50+
FogParameters gpuBufferSlice,
51+
//?}
52+
CallbackInfo ci) {
4553
this.optiboxes$tickDelta = tickDelta;
4654
}
4755

@@ -69,8 +77,29 @@ public abstract class MixinLevelRenderer {
6977
}
7078
}
7179

72-
@WrapOperation(method = "method_62215", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/SkyRenderer;renderSunMoonAndStars(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;FIFF)V"))
73-
private void optiboxes$renderSkyboxes(SkyRenderer instance, PoseStack poseStack, MultiBufferSource.BufferSource bufferSource, float timeOfDay, int moonPhases, float rainLevel, float starBrightness, Operation<Void> original) {
80+
@WrapOperation(
81+
method = "method_62215",
82+
at = @At(
83+
value = "INVOKE",
84+
//? >=1.21.6 {
85+
/*target = "Lnet/minecraft/client/renderer/SkyRenderer;renderSunMoonAndStars(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;FIFF)V"
86+
*///?} else {
87+
target = "Lnet/minecraft/client/renderer/SkyRenderer;renderSunMoonAndStars(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;FIFFLnet/minecraft/client/renderer/FogParameters;)V"
88+
//?}
89+
)
90+
)
91+
private void optiboxes$renderSkyboxes(
92+
SkyRenderer instance,
93+
PoseStack poseStack,
94+
MultiBufferSource.BufferSource bufferSource,
95+
float timeOfDay,
96+
int moonPhases,
97+
float rainLevel,
98+
float starBrightness,
99+
//? <1.21.6
100+
FogParameters fog,
101+
Operation<Void> original
102+
) {
74103
if (SkyboxManager.INSTANCE.isEnabled(this.level)) {
75104
List<OptiFineSkybox> activeSkyboxes = SkyboxManager.INSTANCE.getActiveSkyboxes();
76105
Matrix4fStack modelViewStack = RenderSystem.getModelViewStack();
@@ -83,7 +112,17 @@ public abstract class MixinLevelRenderer {
83112
modelViewStack.popMatrix();
84113
}
85114

86-
original.call(instance, poseStack, bufferSource, timeOfDay, moonPhases, rainLevel, starBrightness);
115+
original.call(
116+
instance,
117+
poseStack,
118+
bufferSource,
119+
timeOfDay,
120+
moonPhases,
121+
rainLevel,
122+
starBrightness
123+
//? <1.21.6
124+
, fog
125+
);
87126
}
88127

89128
@WrapWithCondition(method = "method_62215", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;endBatch()V"))

src/main/java/btw/lowercase/optiboxes/mixins/MixinSkyRenderer.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,24 @@ public abstract class MixinSkyRenderer {
2525
return !OptiBoxesClient.getConfig().enabled.isEnabled() || OptiBoxesClient.getConfig().renderSunMoon.isEnabled();
2626
}
2727

28-
@WrapWithCondition(method = "renderSunMoonAndStars", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/SkyRenderer;renderStars(FLcom/mojang/blaze3d/vertex/PoseStack;)V"))
29-
private boolean uniskies$toggleStars(SkyRenderer instance, float starBrightness, PoseStack poseStack) {
28+
@WrapWithCondition(
29+
method = "renderSunMoonAndStars",
30+
at = @At(
31+
value = "INVOKE",
32+
//? >=1.21.6 {
33+
/*target = "Lnet/minecraft/client/renderer/SkyRenderer;renderStars(FLcom/mojang/blaze3d/vertex/PoseStack;)V"
34+
*///?} else {
35+
target = "Lnet/minecraft/client/renderer/SkyRenderer;renderStars(Lnet/minecraft/client/renderer/FogParameters;FLcom/mojang/blaze3d/vertex/PoseStack;)V"
36+
//?}
37+
)
38+
)
39+
private boolean uniskies$toggleStars(
40+
SkyRenderer instance,
41+
//? <1.21.6
42+
net.minecraft.client.renderer.FogParameters fog,
43+
float starBrightness,
44+
PoseStack poseStack
45+
) {
3046
return !OptiBoxesClient.getConfig().enabled.isEnabled() || OptiBoxesClient.getConfig().renderStars.isEnabled();
3147
}
3248
}

src/main/java/btw/lowercase/optiboxes/mixins/RenderPipelinesAccessor.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,16 @@
66
//? >= 1.21.5 {
77
@Mixin(net.minecraft.client.renderer.RenderPipelines.class)
88
public interface RenderPipelinesAccessor {
9-
@Accessor("MATRICES_PROJECTION_SNIPPET")
9+
//? >=1.21.6 {
10+
/*@Accessor("MATRICES_PROJECTION_SNIPPET")
11+
*///?} else {
12+
@Accessor("MATRICES_COLOR_FOG_SNIPPET")
13+
//?}
1014
static com.mojang.blaze3d.pipeline.RenderPipeline.Snippet optiboxes$getMatricesProjectionSnippet() {
1115
return null;
1216
}
1317
}
1418
//?} else {
15-
// public interface RenderPipelinesAccessor {
16-
// }
19+
/*public interface RenderPipelinesAccessor {
20+
}*/
1721
//?}

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

Lines changed: 50 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,12 @@
66
import btw.lowercase.optiboxes.utils.IrisUtil;
77
import btw.lowercase.optiboxes.utils.UVRange;
88
import com.mojang.blaze3d.buffers.GpuBuffer;
9-
import com.mojang.blaze3d.pipeline.BlendFunction;
10-
import com.mojang.blaze3d.pipeline.RenderPipeline;
119
import com.mojang.blaze3d.pipeline.RenderTarget;
1210
import com.mojang.blaze3d.systems.RenderPass;
1311
import com.mojang.blaze3d.systems.RenderSystem;
14-
import com.mojang.blaze3d.textures.GpuTextureView;
1512
import com.mojang.blaze3d.vertex.*;
1613
import net.minecraft.client.Minecraft;
14+
import net.minecraft.client.renderer.texture.AbstractTexture;
1715
import net.minecraft.resources.ResourceLocation;
1816
import net.minecraft.util.Mth;
1917
import net.minecraft.world.level.Level;
@@ -32,7 +30,6 @@ public final class OptiFineSkyRenderer {
3230
private GpuBuffer skyBuffer;
3331
private RenderSystem.AutoStorageIndexBuffer skyBufferIndices;
3432
private int skyBufferIndexCount;
35-
private final Map<ResourceLocation, RenderPipeline> renderPipelineCache = new HashMap<>();
3633

3734
private OptiFineSkyRenderer() {
3835
Minecraft.getInstance().schedule(this::buildSky);
@@ -57,12 +54,22 @@ private void buildSky() {
5754
skyBufferIndices = RenderSystem.getSequentialBuffer(vertexFormatMode);
5855
try (MeshData meshData = builder.buildOrThrow()) {
5956
skyBufferIndexCount = meshData.drawState().indexCount();
60-
skyBuffer = RenderSystem.getDevice().createBuffer(() -> "OptiFine Skybox", GpuBuffer.USAGE_COPY_DST, meshData.vertexBuffer());
57+
skyBuffer = RenderSystem.getDevice().createBuffer(
58+
() -> "OptiFine Skybox",
59+
//? >=1.21.6
60+
/*GpuBuffer.USAGE_COPY_DST,*/
61+
//? =1.21.5
62+
com.mojang.blaze3d.buffers.BufferType.VERTICES, com.mojang.blaze3d.buffers.BufferUsage.STATIC_WRITE,
63+
meshData.vertexBuffer()
64+
);
6165
}
6266
}
6367

64-
public static RenderPipeline getSkyboxPipeline(@Nullable BlendFunction blendFunction) {
65-
RenderPipeline.Builder builder = RenderPipeline.builder(RenderPipelinesAccessor.optiboxes$getMatricesProjectionSnippet());
68+
//? >=1.21.5 {
69+
private final Map<ResourceLocation, com.mojang.blaze3d.pipeline.RenderPipeline> renderPipelineCache = new HashMap<>();
70+
71+
public static com.mojang.blaze3d.pipeline.RenderPipeline getSkyboxPipeline(@Nullable com.mojang.blaze3d.pipeline.BlendFunction blendFunction) {
72+
com.mojang.blaze3d.pipeline.RenderPipeline.Builder builder = com.mojang.blaze3d.pipeline.RenderPipeline.builder(RenderPipelinesAccessor.optiboxes$getMatricesProjectionSnippet());
6673
builder.withLocation(OptiBoxesClient.id("pipeline/custom_skybox"));
6774
builder.withVertexShader(OptiBoxesClient.id("core/custom_skybox"));
6875
builder.withFragmentShader(OptiBoxesClient.id("core/custom_skybox"));
@@ -75,6 +82,7 @@ public static RenderPipeline getSkyboxPipeline(@Nullable BlendFunction blendFunc
7582
builder.withVertexFormat(DefaultVertexFormat.POSITION_TEX, VertexFormat.Mode.QUADS);
7683
return builder.build();
7784
}
85+
//?}
7886

7987
public void renderSkybox(OptiFineSkybox optiFineSkybox, Matrix4fStack modelViewStack, Level level, float tickDelta) {
8088
long dayTime = level.getDayTime();
@@ -103,39 +111,62 @@ public void renderSkyLayer(OptiFineSkyLayer optiFineSkyLayer, Matrix4fStack mode
103111
}
104112

105113
Vector4f shaderColor = optiFineSkyLayer.blend().getShaderColor(finalAlpha);
114+
AbstractTexture skyTexture = Minecraft.getInstance().getTextureManager().getTexture(optiFineSkyLayer.source());
106115

107-
//? >=1.21.5 {
108116
//? >=1.21.6 {
109-
com.mojang.blaze3d.buffers.GpuBufferSlice transforms = btw.lowercase.optiboxes.utils.DynamicTransformsBuilder.of()
117+
/*com.mojang.blaze3d.buffers.GpuBufferSlice transforms = btw.lowercase.optiboxes.utils.DynamicTransformsBuilder.of()
110118
.withModelViewMatrix(modelViewStack)
111119
.withShaderColor(shaderColor)
112120
.build();
113-
//?} else {
114-
/*RenderSystem.setShaderColor(shaderColor.x, shaderColor.y, shaderColor.z, shaderColor.w);
115-
*///?}
121+
*///?} else {
122+
RenderSystem.setShaderColor(shaderColor.x, shaderColor.y, shaderColor.z, shaderColor.w);
123+
//?}
116124

117-
RenderPipeline renderPipeline = this.renderPipelineCache.computeIfAbsent(optiFineSkyLayer.source(), (resourceLocation) -> {
118-
RenderPipeline pipeline = getSkyboxPipeline(optiFineSkyLayer.blend().getBlendFunction().toNative());
125+
//? >=1.21.5 {
126+
com.mojang.blaze3d.pipeline.RenderPipeline renderPipeline = this.renderPipelineCache.computeIfAbsent(optiFineSkyLayer.source(), (resourceLocation) -> {
127+
com.mojang.blaze3d.pipeline.RenderPipeline pipeline = getSkyboxPipeline(optiFineSkyLayer.blend().getBlendFunction().toNative());
119128
IrisUtil.assignPipeline(pipeline, IrisUtil.skyTextured());
120129
return pipeline;
121130
});
122131

123132
RenderTarget renderTarget = Minecraft.getInstance().getMainRenderTarget();
133+
134+
//? >=1.21.6 {
135+
/*com.mojang.blaze3d.textures.GpuTextureView texture = skyTexture.getTextureView();
136+
com.mojang.blaze3d.textures.GpuTextureView colorTexture = renderTarget.getColorTextureView();
137+
com.mojang.blaze3d.textures.GpuTextureView depthTexture = renderTarget.useDepth ? renderTarget.getDepthTextureView() : null;
138+
*///?} else {
139+
com.mojang.blaze3d.textures.GpuTexture texture = skyTexture.getTexture();
140+
com.mojang.blaze3d.textures.GpuTexture colorTexture = renderTarget.getColorTexture();
141+
com.mojang.blaze3d.textures.GpuTexture depthTexture = renderTarget.useDepth ? renderTarget.getDepthTexture() : null;
142+
//?}
143+
124144
GpuBuffer indexBuffer = this.skyBufferIndices.getBuffer(this.skyBufferIndexCount);
125-
GpuTextureView texture = Minecraft.getInstance().getTextureManager().getTexture(optiFineSkyLayer.source()).getTextureView();
126145
try (RenderPass renderPass = RenderSystem.getDevice()
127146
.createCommandEncoder()
128-
.createRenderPass(() -> "Custom Sky Rendering", renderTarget.getColorTextureView(), OptionalInt.empty(), renderTarget.getDepthTextureView(), OptionalDouble.empty())) {
147+
.createRenderPass(
148+
//? >=1.21.6
149+
/*() -> "Custom Sky Rendering",*/
150+
colorTexture,
151+
OptionalInt.empty(),
152+
depthTexture,
153+
OptionalDouble.empty()
154+
)) {
129155
renderPass.setPipeline(renderPipeline);
130156
renderPass.setVertexBuffer(0, this.skyBuffer);
131157
renderPass.setIndexBuffer(indexBuffer, this.skyBufferIndices.type());
132158
//? >=1.21.6 {
133-
RenderSystem.bindDefaultUniforms(renderPass);
159+
/*RenderSystem.bindDefaultUniforms(renderPass);
134160
renderPass.setUniform("DynamicTransforms", transforms);
135-
//?}
161+
*///?}
136162
renderPass.bindSampler("Sampler0", texture);
137-
renderPass.drawIndexed(0, 0, this.skyBufferIndexCount, 1);
163+
//? >=1.21.6 {
164+
/*renderPass.drawIndexed(0, 0, this.skyBufferIndexCount, 1);
165+
*///?} else {
166+
renderPass.drawIndexed(0, this.skyBufferIndexCount);
167+
//?}
138168
}
169+
//?} else {
139170
//?}
140171

141172
modelViewStack.popMatrix();

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public DynamicTransformsBuilder withLineWidth(float lineWidth) {
6060
}
6161

6262
//? >=1.21.6 {
63-
public com.mojang.blaze3d.buffers.GpuBufferSlice build() {
63+
/*public com.mojang.blaze3d.buffers.GpuBufferSlice build() {
6464
return com.mojang.blaze3d.systems.RenderSystem.getDynamicUniforms().writeTransform(
6565
this.modelViewMatrix.orElse(com.mojang.blaze3d.systems.RenderSystem.getModelViewMatrix()),
6666
this.colorModulator.orElse(new Vector4f(1.0F, 1.0F, 1.0F, 1.0F)),
@@ -69,5 +69,5 @@ public com.mojang.blaze3d.buffers.GpuBufferSlice build() {
6969
this.lineWidth.orElse(com.mojang.blaze3d.systems.RenderSystem.getShaderLineWidth())
7070
);
7171
}
72-
//?}
72+
*///?}
7373
}

stonecutter.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ plugins {
55
alias(libs.plugins.publishing)
66
}
77

8-
stonecutter active "1.21.8-fabric" /* [SC] DO NOT EDIT */
8+
stonecutter active "1.21.5-fabric" /* [SC] DO NOT EDIT */
99

1010
stonecutter tasks {
1111
val ordering = Comparator
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#version 150
2+
3+
uniform vec4 ColorModulator;
4+
uniform sampler2D Sampler0;
5+
in vec2 texCoord0;
6+
out vec4 fragColor;
7+
8+
void main() {
9+
vec4 color = texture(Sampler0, texCoord0) * ColorModulator;
10+
if (color.a == 0.0) {
11+
discard;
12+
}
13+
14+
fragColor = color;
15+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#version 150
2+
3+
uniform mat4 ProjMat;
4+
uniform mat4 ModelViewMat;
5+
in vec3 Position;
6+
in vec2 UV0;
7+
out vec2 texCoord0;
8+
9+
void main() {
10+
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
11+
texCoord0 = UV0;
12+
}

src/main/resources/assets/optiboxes/shaders/core/custom_skybox.fsh renamed to versions/1.21.8-fabric/src/main/resources/assets/optiboxes/shaders/core/custom_skybox.fsh

File renamed without changes.

0 commit comments

Comments
 (0)