minecraft-src/com/mojang/blaze3d/resource/RenderTargetDescriptor.java
2025-07-04 03:45:38 +03:00

35 lines
1.3 KiB
Java

package com.mojang.blaze3d.resource;
import com.mojang.blaze3d.pipeline.RenderTarget;
import com.mojang.blaze3d.pipeline.TextureTarget;
import com.mojang.blaze3d.systems.RenderSystem;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@Environment(EnvType.CLIENT)
public record RenderTargetDescriptor(int width, int height, boolean useDepth, int clearColor) implements ResourceDescriptor<RenderTarget> {
public RenderTarget allocate() {
return new TextureTarget(null, this.width, this.height, this.useDepth);
}
public void prepare(RenderTarget renderTarget) {
if (this.useDepth) {
RenderSystem.getDevice()
.createCommandEncoder()
.clearColorAndDepthTextures(renderTarget.getColorTexture(), this.clearColor, renderTarget.getDepthTexture(), 1.0);
} else {
RenderSystem.getDevice().createCommandEncoder().clearColorTexture(renderTarget.getColorTexture(), this.clearColor);
}
}
public void free(RenderTarget renderTarget) {
renderTarget.destroyBuffers();
}
@Override
public boolean canUsePhysicalResource(ResourceDescriptor<?> descriptor) {
return !(descriptor instanceof RenderTargetDescriptor renderTargetDescriptor)
? false
: this.width == renderTargetDescriptor.width && this.height == renderTargetDescriptor.height && this.useDepth == renderTargetDescriptor.useDepth;
}
}