Проблема с матрицами рендеринга игры с кастомным OpenGL рендерингом. [1.20.1]

Версия Minecraft
1.20.1
API
Forge
Добрый день, я пытаюсь реализовать кастомный рендеринг с OpenGL внедряясь в основной граф. поток игры без конфликтов для добавления граф. плюшек к своему моду за счет вычислительных шейдеров, но у меня возникла проблема с правильной настройкой матриц проекции, модели, и самого болючего, матрицы вида. С двумя первыми все должно работать правильно, но я не могу правильно настроить матрицу вида, поскольку игра не дает напрямую методы получения матрицы вида, смею предположить, тому есть причина. Я полагаю, что проблема в ней, поскольку при повороте камеры, рендериемый обьект имеет очень странные перемещения по экрану. Вот метод построения матрицы вида:
buildViewMatrix метод:
private static void buildViewMatrix(Camera camera, Matrix4f viewMatrix) {
    viewMatrix.identity();

 float pitch = -camera.getXRot();
 float yaw = -camera.getYRot();

    Vector3f pos = camera.getPosition().toVector3f();

viewMatrix.translate(pos.x, -pos.y, pos.z);

viewMatrix.rotateY((float) Math.toRadians(yaw));
viewMatrix.rotateX((float) Math.toRadians(pitch));
}
; А вот код, где происходит обработка рендеринга:
onRenderLevel метод:
@SubscribeEvent
    public static void onRenderLevel(RenderLevelStageEvent event) {
        if (event.getStage() != RenderLevelStageEvent.Stage.AFTER_PARTICLES) {
            return;
        }

        long currentTime = System.nanoTime();
        float deltaTime = (currentTime - lastFrameTime) / 1_000_000_000.0f;
        lastFrameTime = currentTime;

        particleEngine.update(deltaTime);

        // Получение матриц
        Matrix4f modelMatrix = event.getPoseStack().last().pose();
        Matrix4f viewMatrix = new Matrix4f();
        buildViewMatrix(event.getCamera(), viewMatrix);
        Matrix4f projMatrix = event.getProjectionMatrix();


        //particleEngine.render(viewMatrix, projMatrix);

        particleEngine.renderDebugTriangle(modelMatrix, viewMatrix, projMatrix);
    }
; Вот код вертексного шейдера треугольника, я тестирую матрицы сейчас на треугольнике, важно еще заметить, что вершины расположены на 0 0 0 координатах мира:
Код:
 #version 430 core
 layout(location = 0) in vec3 aPos;
 uniform mat4 uModel;
 uniform mat4 uView;
 uniform mat4 uProj;
 out vec3 color;
 void main() {
     gl_Position = uProj * uView * vec4(aPos, 1.0);
     color = vec3(0.0);
     if (gl_VertexID == 0) color = vec3(1, 0, 0);
     if (gl_VertexID == 1) color = vec3(0, 1, 0);
     if (gl_VertexID == 2) color = vec3(0, 0, 1);
 }
; Я убрал умножение на uModel в конце uView , поскольку из-за треугольника вообще нету. Я лишь надеюсь на то, что кто-то знаком с такой ситуацией как у меня, и сможет поделиться опытом решения, если оно есть.
 
Назад
Сверху