Skip to content

Commit 8236dba

Browse files
committed
more fixes
1 parent c7e8c87 commit 8236dba

File tree

4 files changed

+49
-7
lines changed

4 files changed

+49
-7
lines changed

common/src/main/java/net/irisshaders/iris/gl/IrisRenderSystem.java

+3
Original file line numberDiff line numberDiff line change
@@ -586,6 +586,9 @@ public void drawBuffers(int framebuffer, int[] buffers) {
586586

587587
@Override
588588
public int getTexParameteri(int texture, int target, int pname) {
589+
if (Screen.hasAltDown()) {
590+
return ARBDirectStateAccess.glGetTextureParameteri(texture, pname);
591+
}
589592
bindTextureForSetup(target, texture);
590593
return GL32C.glGetTexParameteri(target, pname);
591594
}

common/src/main/java/net/irisshaders/iris/mixin/texture/MixinAbstractTexture.java

+39-1
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,59 @@
22

33
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
44
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
5+
import com.mojang.blaze3d.platform.GlStateManager;
6+
import com.mojang.blaze3d.systems.RenderSystem;
7+
import net.irisshaders.iris.mixinterface.AbstractTextureExtended;
58
import net.irisshaders.iris.pbr.TextureTracker;
69
import net.minecraft.client.renderer.texture.AbstractTexture;
10+
import org.lwjgl.opengl.GL11;
711
import org.spongepowered.asm.mixin.Mixin;
812
import org.spongepowered.asm.mixin.Shadow;
913
import org.spongepowered.asm.mixin.injection.At;
1014

1115
@Mixin(AbstractTexture.class)
12-
public class MixinAbstractTexture {
16+
public abstract class MixinAbstractTexture implements AbstractTextureExtended {
1317
@Shadow
1418
protected int id;
1519

20+
@Shadow
21+
public abstract void bind();
22+
23+
@Shadow
24+
private int minFilter;
25+
26+
@Shadow
27+
private int magFilter;
28+
1629
@WrapOperation(method = "getId()I", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/TextureUtil;generateTextureId()I", remap = false))
1730
private int iris$afterGenerateId(Operation<Integer> original) {
1831
int id = original.call();
1932
TextureTracker.INSTANCE.trackTexture(id, (AbstractTexture) (Object) this);
2033
return id;
2134
}
35+
36+
@Override
37+
public void setNearestFilter() {
38+
RenderSystem.assertOnRenderThreadOrInit();
39+
int min;
40+
int mag;
41+
boolean mipmap = minFilter >= 0x2700;
42+
min = mipmap ? GL11.GL_NEAREST_MIPMAP_NEAREST : GL11.GL_NEAREST;
43+
mag = GL11.GL_NEAREST;
44+
45+
boolean bl3 = this.minFilter != min;
46+
boolean bl4 = this.magFilter != mag;
47+
if (bl4 || bl3) {
48+
this.bind();
49+
if (bl3) {
50+
GlStateManager._texParameter(3553, 10241, min);
51+
this.minFilter = min;
52+
}
53+
54+
if (bl4) {
55+
GlStateManager._texParameter(3553, 10240, mag);
56+
this.magFilter = mag;
57+
}
58+
}
59+
}
2260
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package net.irisshaders.iris.mixinterface;
2+
3+
public interface AbstractTextureExtended {
4+
void setNearestFilter();
5+
}

common/src/main/java/net/irisshaders/iris/pbr/format/TextureFormat.java

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package net.irisshaders.iris.pbr.format;
22

33
import net.irisshaders.iris.gl.IrisRenderSystem;
4+
import net.irisshaders.iris.mixinterface.AbstractTextureExtended;
45
import net.irisshaders.iris.pbr.mipmap.CustomMipmapGenerator;
56
import net.irisshaders.iris.pbr.texture.PBRType;
67
import net.minecraft.client.renderer.texture.AbstractTexture;
@@ -46,12 +47,7 @@ default List<String> getDefines() {
4647

4748
default void setupTextureParameters(PBRType pbrType, AbstractTexture texture) {
4849
if (!canInterpolateValues(pbrType)) {
49-
int minFilter = IrisRenderSystem.getTexParameteri(texture.getId(), GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER);
50-
// Non-mipped filters begin at 0x2600 whereas mipped filters begin at 0x2700,
51-
// so this bit mask can be used to check if the filter is mipped or not
52-
boolean mipmap = minFilter >= 0x2700;
53-
IrisRenderSystem.texParameteri(texture.getId(), GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, mipmap ? GL11.GL_NEAREST_MIPMAP_NEAREST : GL11.GL_NEAREST);
54-
IrisRenderSystem.texParameteri(texture.getId(), GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
50+
((AbstractTextureExtended) texture).setNearestFilter();
5551
}
5652
}
5753

0 commit comments

Comments
 (0)