GLSL: когда завершается / возвращается фрагментный шейдер - PullRequest
0 голосов
/ 01 мая 2018

Предположим, у нас есть следующий фрагментный шейдер:

varying vec2 vUv; // uv coordinates
varying float vTexture; // texture index in array of textures

uniform sampler2D textures[2]; // number of textures

void main() {
  int textureIndex = int(floor(vTexture)); // convert texture index to int for equality checks

  if (textureIndex == 0) {
    gl_FragColor = texture2D(textures[0], vUv);
  }

  if (textureIndex == 1) {
    gl_FragColor = texture2D(textures[1], vUv);
  } 
}

Если заданное значение, поступающее через этот шейдер, имеет textureIndex = 0, будет ли это значение проверять секунду, если оно обусловлено, или установление gl_FragColor вызовет функцию main() для возврата или выхода? Есть ли способ заставить фрагментный шейдер выйти или вернуться в заданную точку?

1 Ответ

0 голосов
/ 01 мая 2018

Новый ответ (специфично для вопроса)

void main() {
  int textureIndex = int(floor(vTexture)); // convert texture index to int for equality checks

  if (textureIndex == 0) {
    gl_FragColor = texture2D(textures[0], vUv);
  }

  if (textureIndex == 1) {
    gl_FragColor = texture2D(textures[1], vUv);
  } 

  // <--- HERE (ONCE IT RUNS THE CODE ABOVE, IT REACHES THE "END" AND EXITS)

}
...