在片段着色器中使用光的简便方法

时间:2013-12-03 14:57:44

标签: three.js webgl

我有一个Collada对象,我将每个Three.js加载到我的场景中。 现在我想改变模型中的一些顶点位置 顶点着色器,这没问题。 但有了这个,我必须跳过出口的collada材料并采取 ShaderMaterial。 问题是现在我必须计算完整的照明 片段着色器中的场景。 之前,使用collada材料,通过使用定向光和半球光框架计算完整的光照。

所以我的问题是,如果有一个解决方案,我可以保持fragmentShader不受影响,所有的颜色都计算好像我不使用ShaderMaterial。

我尝试使用THREE.ShaderLib并仅传递phong着色器的fragmentShader 和我自己的vertexShader。但是这只给出了两个着色器中没有定义相同变化的错误。

1 个答案:

答案 0 :(得分:1)

不幸的是,你是对的。您必须创建自己的ShaderMaterial,并且合并场景照明将非常繁琐。

如果您的场景照明不是那么重要,您可以在片段着色器中的摄像机位置处摄入一些环境光和一盏灯。

如果您的场景照明很重要,那么您需要设置ShaderMaterial参数lights: true,您将可以访问顶点和片段着色器中的场景灯制服。

three.js r.63