Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Помогите, хочу сделать рендер систему для 1.21.8, уже всё перепробовал, копировал реализацию из GuiRenderer
но почему-то рект всё время либо не рендерит, либо рендерит в мире, пробывал ставить
ORTHOGRAPHIC матрицу проекции перед рендером, но так всё равно ничего не рендерит
Если кто-то уже делал на 1.21.8 рендер систему то поправьте мой код пожалуйста
но почему-то рект всё время либо не рендерит, либо рендерит в мире, пробывал ставить
ORTHOGRAPHIC матрицу проекции перед рендером, но так всё равно ничего не рендерит
Если кто-то уже делал на 1.21.8 рендер систему то поправьте мой код пожалуйста
Rectangle:
package O57.jaypasha.core.main.newRender;
import O57.jaypasha.api.render.pipelines.PipelinesRepository;
import com.mojang.blaze3d.buffers.GpuBuffer;
import com.mojang.blaze3d.pipeline.RenderPipeline;
import com.mojang.blaze3d.systems.ProjectionType;
import com.mojang.blaze3d.systems.RenderPass;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.textures.GpuTextureView;
import com.mojang.blaze3d.vertex.VertexFormat;
import lombok.AccessLevel;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.*;
import net.minecraft.client.util.BufferAllocator;
import net.minecraft.client.util.Window;
import java.util.OptionalInt;
@FieldDefaults(level = AccessLevel.PRIVATE)
public final class Rectangle {
GpuBuffer rectangleBuffer;
final RenderPipeline renderPipeline;
final float x, y, width, height;
private final ProjectionMatrix2 rectProjectionMatrix = new ProjectionMatrix2("rect", 1000.0F, 11000.0F, true);
public Rectangle(float x, float y, float width, float height) {
this.renderPipeline = PipelinesRepository.RECTANGLE;
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.createBuffer();
}
private void createBuffer() {
BufferAllocator allocator = BufferAllocator.method_72201(4 * VertexFormats.POSITION.getVertexSize());
BufferBuilder builder = new BufferBuilder(allocator, VertexFormat.DrawMode.QUADS, VertexFormats.POSITION);
try {
createVertices(builder);
BuiltBuffer built = builder.end();
try {
rectangleBuffer = RenderSystem.getDevice().createBuffer(() -> "Rectangle Buffer", 32, built.getBuffer());
} finally {
built.close();
}
} finally {
allocator.close();
}
}
private void createVertices(VertexConsumer vertexConsumer) {
vertexConsumer.vertex(x, y + height, 0);
vertexConsumer.vertex(x + width, y + height, 0);
vertexConsumer.vertex(x + width, y, 0);
vertexConsumer.vertex(x, y + height, 0);
}
public void render() {
Window window = MinecraftClient.getInstance().getWindow();
RenderSystem.setProjectionMatrix(this.rectProjectionMatrix.set(
(float) window.getFramebufferWidth() / (float) window.getScaleFactor(),
(float) window.getFramebufferHeight() / (float) window.getScaleFactor()), ProjectionType.ORTHOGRAPHIC);
GpuTextureView target = MinecraftClient.getInstance().getFramebuffer().getColorAttachmentView();
RenderSystem.ShapeIndexBuffer indexBuffer = RenderSystem.getSequentialBuffer(VertexFormat.DrawMode.QUADS);
GpuBuffer gpuBuffer = indexBuffer.getIndexBuffer(4);
RenderPass pass = RenderSystem.getDevice().createCommandEncoder().createRenderPass(() -> "rectpass",
target, OptionalInt.empty());
try {
pass.setPipeline(this.renderPipeline);
RenderSystem.bindDefaultUniforms(pass);
pass.setVertexBuffer(0, this.rectangleBuffer);
pass.setIndexBuffer(gpuBuffer, indexBuffer.getIndexType());
pass.drawIndexed(0, 0, 4, 1);
} finally {
pass.close();
}
}
}
fsh shader:
#version 150
out vec4 OutColor;
void main() {
OutColor = vec4(1., .0, .0, 1.);
}
vsh shader:
#version 150
in vec3 Position;
#moj_import <minecraft:dynamictransforms.glsl>
#moj_import <minecraft:projection.glsl>
void main() {
gl_Position = ProjMat * ModelViewMat * vec4(Position, 1.0);
}
pipeline:
@ApiStatus.Internal
public static final RenderPipeline RECTANGLE = RenderPipelines.register(RenderPipeline.builder(RenderPipelines.TRANSFORMS_AND_PROJECTION_SNIPPET)
.withBlend(BlendFunction.TRANSLUCENT)
.withVertexFormat(VertexFormats.POSITION, VertexFormat.DrawMode.QUADS)
.withFragmentShader(Identifier.of("stondof", "core/rect"))
.withVertexShader(Identifier.of("stondof", "core/rect"))
.withLocation(Identifier.of("stondof", "pipeline/rect"))
.build());