Skip to content

Commit 9ea4079

Browse files
committed
Test fixes
1 parent b8b531c commit 9ea4079

File tree

8 files changed

+61
-6
lines changed

8 files changed

+61
-6
lines changed

src/main/java/net/coderbot/batchedentityrendering/mixin/MixinCompositeRenderType.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ private MixinCompositeRenderType(String name, VertexFormat vertexFormat, VertexF
2727
private void batchedentityrendering$onCompositeInit(String string, VertexFormat vertexFormat, VertexFormat.Mode mode, int i, boolean bl, boolean bl2, CompositeState compositeState, CallbackInfo ci) {
2828
RenderStateShard.TransparencyStateShard transparency = ((CompositeStateAccessor) (Object) compositeState).getTransparency();
2929

30-
if ("water_mask".equals(name)) {
30+
if (name.contains("water_mask")) {
3131
transparencyType = TransparencyType.WATER_MASK;
3232
} else if ("lines".equals(name)) {
3333
transparencyType = TransparencyType.LINES;

src/main/java/net/coderbot/iris/compat/dh/DHCompatInternal.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,9 @@ public void prepareNewPipeline(NewWorldRenderingPipeline pipeline, boolean dhSha
7070
if (pipeline.getDHShadowShader().isPresent() && dhShadowEnabled) {
7171
ProgramSource shadow = pipeline.getDHShadowShader().get();
7272
shadowProgram = IrisLodRenderProgram.createProgram(shadow.getName(), true, shadow, pipeline.getCustomUniforms(), pipeline);
73-
dhShadowFramebuffer = pipeline.createDHFramebufferShadow(shadow);
73+
if (pipeline.hasShadowRenderTargets()) {
74+
dhShadowFramebuffer = pipeline.createDHFramebufferShadow(shadow);
75+
}
7476
shouldOverrideShadow = true;
7577
} else {
7678
shouldOverrideShadow = false;

src/main/java/net/coderbot/iris/gl/buffer/ShaderStorageBufferHolder.java

+6-2
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,17 @@ public void setupBuffers() {
6363
}
6464

6565
for (ShaderStorageBuffer buffer : buffers) {
66-
buffer.bind();
66+
if (buffer != null) {
67+
buffer.bind();
68+
}
6769
}
6870
}
6971

7072
public void destroyBuffers() {
7173
for (ShaderStorageBuffer buffer : buffers) {
72-
buffer.destroy();
74+
if (buffer != null) {
75+
buffer.destroy();
76+
}
7377
}
7478
buffers = null;
7579
destroyed = true;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package net.coderbot.iris.mixin;
2+
3+
import net.coderbot.iris.pipeline.LightningHandler;
4+
import net.minecraft.client.gui.screens.Screen;
5+
import net.minecraft.client.renderer.RenderType;
6+
import net.minecraft.client.renderer.entity.BoatRenderer;
7+
import org.spongepowered.asm.mixin.Mixin;
8+
import org.spongepowered.asm.mixin.injection.At;
9+
import org.spongepowered.asm.mixin.injection.Redirect;
10+
11+
@Mixin(BoatRenderer.class)
12+
public class MixinBoatRender {
13+
@Redirect(method = "render(Lnet/minecraft/world/entity/vehicle/Boat;FFLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;I)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/RenderType;waterMask()Lnet/minecraft/client/renderer/RenderType;"))
14+
private RenderType changeWaterMask() {
15+
16+
return LightningHandler.IRIS_WATERMASK;
17+
}
18+
}

src/main/java/net/coderbot/iris/pipeline/LightningHandler.java

+15
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import net.coderbot.iris.layer.InnerWrappedRenderType;
66
import net.coderbot.iris.layer.LightningRenderStateShard;
77
import net.coderbot.iris.layer.OuterWrappedRenderType;
8+
import net.coderbot.iris.vertices.IrisVertexFormats;
9+
import net.minecraft.client.renderer.RenderStateShard;
810
import net.minecraft.client.renderer.RenderType;
911

1012
public class LightningHandler extends RenderType {
@@ -22,6 +24,19 @@ public class LightningHandler extends RenderType {
2224
.setOutputState(WEATHER_TARGET)
2325
.createCompositeState(false)
2426
), new LightningRenderStateShard());
27+
public static final RenderType IRIS_WATERMASK = RenderType.create(
28+
"iris_water_mask",
29+
DefaultVertexFormat.NEW_ENTITY,
30+
VertexFormat.Mode.QUADS,
31+
1536,
32+
false,
33+
true,
34+
RenderType.CompositeState.builder()
35+
.setShaderState(RenderStateShard.RENDERTYPE_WATER_MASK_SHADER)
36+
.setTextureState(NO_TEXTURE)
37+
.setWriteMaskState(DEPTH_WRITE)
38+
.createCompositeState(false)
39+
);
2540

2641
public LightningHandler(String pRenderType0, VertexFormat pVertexFormat1, VertexFormat.Mode pVertexFormat$Mode2, int pInt3, boolean pBoolean4, boolean pBoolean5, Runnable pRunnable6, Runnable pRunnable7) {
2742
super(pRenderType0, pVertexFormat1, pVertexFormat$Mode2, pInt3, pBoolean4, pBoolean5, pRunnable6, pRunnable7);

src/main/java/net/coderbot/iris/pipeline/newshader/NewWorldRenderingPipeline.java

+7-2
Original file line numberDiff line numberDiff line change
@@ -785,15 +785,15 @@ public void addGbufferOrShadowSamplers(SamplerHolder samplers, ImageHolder image
785785
IrisSamplers.addNoiseSampler(samplerHolder, this.customTextureManager.getNoiseTexture());
786786
IrisSamplers.addCustomImages(samplerHolder, customImages);
787787

788-
if (isShadowPass || IrisSamplers.hasShadowSamplers(samplerHolder)) {
788+
if (IrisSamplers.hasShadowSamplers(samplerHolder)) {
789789
if (!isShadowPass) {
790790
shadowTargetsSupplier.get();
791791
}
792792

793793
IrisSamplers.addShadowSamplers(samplerHolder, Objects.requireNonNull(shadowRenderTargets), null, separateHardwareSamplers);
794794
}
795795

796-
if (isShadowPass || IrisImages.hasShadowImages(images)) {
796+
if ( IrisImages.hasShadowImages(images)) {
797797
// Note: hasShadowSamplers currently queries for shadow images too, so the shadow render targets will be
798798
// created by this point... that's sorta ugly, though.
799799
IrisImages.addShadowColorImages(images, Objects.requireNonNull(shadowRenderTargets), null);
@@ -1304,6 +1304,11 @@ public GlFramebuffer createDHFramebuffer(ProgramSource sources, boolean trans) {
13041304
}
13051305

13061306
public GlFramebuffer createDHFramebufferShadow(ProgramSource sources) {
1307+
13071308
return shadowRenderTargets.createDHFramebuffer(ImmutableSet.of(), new int[]{0, 1});
13081309
}
1310+
1311+
public boolean hasShadowRenderTargets() {
1312+
return shadowRenderTargets != null;
1313+
}
13091314
}

src/main/java/net/coderbot/iris/shaderpack/ShaderProperties.java

+10
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,11 @@ public ShaderProperties(String contents, ShaderPackOptions shaderPackOptions, It
362362
return;
363363
}
364364

365+
if (trueSize < 1) {
366+
// Assume the shader dev intended to disable the buffer
367+
return;
368+
}
369+
365370
bufferObjects.put(trueIndex, new ShaderStorageInfo(trueSize, false, 0, 0));
366371
} else {
367372
// Assume it's a long one
@@ -376,6 +381,11 @@ public ShaderProperties(String contents, ShaderPackOptions shaderPackOptions, It
376381
return;
377382
}
378383

384+
if (trueSize < 1) {
385+
// Assume the shader dev intended to disable the buffer
386+
return;
387+
}
388+
379389
if (trueIndex > 8) {
380390
Iris.logger.fatal("SSBO's cannot use buffer numbers higher than 8, they're reserved!");
381391
return;

src/main/resources/mixins.iris.json

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"LightTextureAccessor",
1212
"ProgramTypeAccessor",
1313
"MixinBlockStateBehavior",
14+
"MixinBoatRender",
1415
"MixinBiome",
1516
"MixinBiomes",
1617
"MixinChainedJsonException",

0 commit comments

Comments
 (0)