Как корректно передать массив матриц во фрагментный шейдер GLSL?

Мне надо передать массив из матриц в основной шейдер для рендеринга конечной картинки (теней). Я пытался передавать матрицы разными способами, но при преобразовании точки получается всегда один и тот-же ответ, (0,0,0). Дело не в настройках матрицах, так как через те-же матрицы корректно рендерятся карты теней. Я пытался гуглить ответ, но в итоге пришёл лишь к процессу обычной передачи массива.

Вот способ передачи, который я нашёл

    int location = GL20.glGetUniformLocation(program, matrix);
FloatBuffer matricesBuffer = BufferUtils.createFloatBuffer(16 * 6);
    for (int i = 0; i < this.matrix.length; i++) this.matrix[i].get(matricesBuffer);
    matricesBuffer.flip();

    GL20.glUniformMatrix4fv(location, false, matricesBuffer);

тест матрицы, который я проводил

uniform mat4 lightMatrix[6];


gl_FragColor = vec4((lightMatrix[3]*vec4(1,1,1,1)).rgb,1);

Вот карта теней. Это 1 из матриц (в примере выше под номером 3, их всего 6), я аналогично проверял все карты теней, всё работает. Тут карта теней натянута на плоскость, и отражена по XZ. Красная точка - источник теней, из которой происходит рендер карт теней.

введите сюда описание изображения


Ответы (0 шт):