【发布时间】:2018-02-08 16:49:58
【问题描述】:
每当我在 THREE.js 中编写自定义着色器时出现错误,控制台都会输出带有已编译 GLSL 代码的漂亮错误消息。它包括我的代码以及 Three.js 自动添加的所有额外行:
问题:
有没有什么办法可以输出编译好的内置材质的vertexShader和fragmentShader?我在我的项目中使用THREE.MeshLambertMaterial,我想阅读编译后的 GLSL 代码以了解它是如何在后台运行的。我知道我可以去图书馆的 \src\renderers\shaders\ShaderLib\meshlambert_frag.glsl 但它有几十个#include 行并且没有三个额外的属性/制服。 js 自动追加。
我尝试在第一次渲染后控制台记录材质的属性,但我找不到编译后的 GLSL 代码:
var firstRender = true;
function update(){
renderer.render(scene, camera);
if(firstRender === true){
// Where in myMaterial is the GLSL code stored?
console.log(myMaterial.program.vertexShader);
firstRender = false;
}
}
【问题讨论】:
标签: javascript three.js glsl webgl