minecraft-src/net/minecraft/client/renderer/chunk/ChunkSectionLayer.java
2025-09-18 12:27:44 +00:00

75 lines
2.5 KiB
Java

package net.minecraft.client.renderer.chunk;
import com.mojang.blaze3d.pipeline.RenderPipeline;
import com.mojang.blaze3d.pipeline.RenderTarget;
import com.mojang.blaze3d.textures.GpuTextureView;
import java.util.Locale;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderPipelines;
import net.minecraft.client.renderer.texture.AbstractTexture;
import net.minecraft.client.renderer.texture.TextureAtlas;
import net.minecraft.client.renderer.texture.TextureManager;
@Environment(EnvType.CLIENT)
public enum ChunkSectionLayer {
SOLID(RenderPipelines.SOLID, 4194304, true, false),
CUTOUT_MIPPED(RenderPipelines.CUTOUT_MIPPED, 4194304, true, false),
CUTOUT(RenderPipelines.CUTOUT, 786432, false, false),
TRANSLUCENT(RenderPipelines.TRANSLUCENT, 786432, true, true),
TRIPWIRE(RenderPipelines.TRIPWIRE, 1536, true, true);
private final RenderPipeline pipeline;
private final int bufferSize;
private final boolean useMipmaps;
private final boolean sortOnUpload;
private final String label;
private ChunkSectionLayer(final RenderPipeline pipeline, final int bufferSize, final boolean useMipmaps, final boolean sortOnUpload) {
this.pipeline = pipeline;
this.bufferSize = bufferSize;
this.useMipmaps = useMipmaps;
this.sortOnUpload = sortOnUpload;
this.label = this.toString().toLowerCase(Locale.ROOT);
}
public RenderPipeline pipeline() {
return this.pipeline;
}
public int bufferSize() {
return this.bufferSize;
}
public String label() {
return this.label;
}
public boolean sortOnUpload() {
return this.sortOnUpload;
}
public GpuTextureView textureView() {
TextureManager textureManager = Minecraft.getInstance().getTextureManager();
AbstractTexture abstractTexture = textureManager.getTexture(TextureAtlas.LOCATION_BLOCKS);
abstractTexture.setUseMipmaps(this.useMipmaps);
return abstractTexture.getTextureView();
}
public RenderTarget outputTarget() {
Minecraft minecraft = Minecraft.getInstance();
switch (this) {
case TRANSLUCENT: {
RenderTarget renderTarget = minecraft.levelRenderer.getTranslucentTarget();
return renderTarget != null ? renderTarget : minecraft.getMainRenderTarget();
}
case TRIPWIRE: {
RenderTarget renderTarget = minecraft.levelRenderer.getWeatherTarget();
return renderTarget != null ? renderTarget : minecraft.getMainRenderTarget();
}
default:
return minecraft.getMainRenderTarget();
}
}
}