Как console.log в webgl-шейдерах?

Я пытаюсь понять, как имитировать console.log в шейдерах webgl, которые написаны в GLSL. Легко получить сообщения об ошибках, но я не могу получить, как печатать пользовательские сообщения.

В основном я хочу печатать материал в консоли браузера:

<script id="shader-fs1" type="x-shader/x-fragment">
  void main(void) 
  { 
    //console.log doesn't work here since it GLSL not javascript
    gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); 
  } 
</script>

Любые предложения?

Ответ 2

После компиляции шейдера вы можете сделать что-то вроде:

if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
    alert(gl.getShaderInfoLog(shader));
}

И он покажет вам любые сообщения об ошибках во время компиляции. GLSL не может отправлять данные обратно в программу в любой другой форме, кроме фреймбуфера/текстуры, поэтому вы можете только проверить, что происходит, проверяя цвета вывода. Инспектор WebGL мог бы мне помочь, как указал Майкл, но не так много для шейдеров, но для общей отладки приложений webGL.

Ответ 3

В настоящее время нет известного способа вывода данных из GLSL в WebGL, кроме как через его назначенный результат (цвет экрана/изображения). Если вы этого не сделаете, я предлагаю вам проверить Learning WebGL, а также kick. js может быть вам полезен.