Как / где Qt3d присваивает значения шейдеров по умолчанию? - PullRequest
0 голосов
/ 07 июня 2019

В примере Qt Qt 3D Wireframe QML код вершинного шейдера выглядит следующим образом:

#version 330 core

in vec3 vertexPosition;
in vec3 vertexNormal;

out EyeSpaceVertex {
    vec3 position;
    vec3 normal;
} vs_out;

uniform mat4 modelView;
uniform mat3 modelViewNormal;
uniform mat4 mvp;

void main()
{
    vs_out.normal = normalize( modelViewNormal * vertexNormal );
    vs_out.position = vec3( modelView * vec4( vertexPosition, 1.0 ) );

    gl_Position = mvp * vec4( vertexPosition, 1.0 );
}

Ни одна из приведенных выше переменных uniform не инициализируется в исходном коде примера, поэтому они должны получать значения по умолчанию, как описано в документе для ShaderProgram , которая гласит:

Qt3D автоматически заполняет набор униформ по умолчанию, если они встречаются на этапе интроспекции шейдера.

Также приведен список «униформы по умолчанию».

Я попытался найти часть в исходном коде Qt, где этим униформам присвоены значения по умолчанию (которые, я думаю, являются единичными матрицами), но не смог как-то. Есть идеи?

...