Удаление неиспользуемой переменной приводит к тому, что шейдер ничего не рисует - PullRequest
0 голосов
/ 04 июля 2019

У меня есть простой вершинный и фрагментный шейдер, который работает и что-то рисует. В вершинном шейдере я установил переменную fs_uv, но я не использую ее в фрагментном шейдере. Однако, если я закомментирую эту строку или изменим ее на fs_uv = coord;, шейдер прекратит рисовать. Что вызвало бы это?

Вершинный шейдер:

#version 300 es

precision mediump  float;
precision mediump  int;
precision lowp   sampler2D;
precision lowp   sampler2DArray;

in vec4 uv;

out vec2 fs_uv;
flat out uint draw_id;

uniform mat4 matrix;


void main() {
    vec2 coord = vec2(gl_VertexID >> 1, gl_VertexID & 1);

    fs_uv = uv.xy + coord * uv.zw;

    gl_Position = matrix * vec4(vec2(100.0f) * coord, 0.0f, 1.0f);
}

Фрагмент шейдера:

#version 300 es

precision mediump  float;
precision mediump  int;
precision lowp   sampler2D;
precision lowp   sampler2DArray;

in vec2 fs_uv;

out vec4 color;

void main() {
    color = vec4(1.0f, 0.0f, 0.0f, 1.0f);
}
...