跳转至

提取 WebGL Shader

一键提取 WebGL Shader 的代码,来自 https://github.com/greggman/dump-all-the-shaders/tree/master

(function(global) {
  'use strict';

  function wrap(className) {
    if (!className) {
      return;
    }
    className.prototype.compileShader = (function(origFn) {
      return function(shader) {
        origFn.call(this, shader);
        console.log("---[ shader from JavaScript ] ---\n", this.getShaderSource(shader));
        const ext = this.getExtension('WEBGL_debug_shaders');
        if (ext) {
          console.log("---[ shader passed to GPU driver ] ---\n", ext.getTranslatedShaderSource(shader));
        }
      };
    }(className.prototype.compileShader));
  }

  wrap(global.WebGLRenderingContext);
  wrap(global.WebGL2RenderingContext);
}(this));

在控制台里执行这个代码。当有 Shader 被编译时,就会在控制台输出 Shader 的源代码。