我正在用 webgl 开发体积渲染应用程序,我要做的最后一件事是创建一个光照模型。我已经准备好了一切,但我无法获得场景中的灯光位置。我以这种方式添加灯光:
var light = new THREE.DirectionalLight(0xFFFFFF, 1);
light.position.set(0.5, 0.5, 0.1).normalize();
camera.add(light);
我将光连接到相机,因为如果我用相机移动,我需要有光静态。问题是,我正在使用 ShaderMaterial(自定义着色器)。我找不到任何代表光位置的统一变量。我已经搜索过,我应该设置:
material.lights = true;
但它导致了错误。
Uncaught TypeError: Cannot set property 'value' of undefined
我试图在顶点着色器中添加常量向量,但我需要乘以逆视图矩阵(如果我是对的)。但是 GLSL 1.0 不支持反函数。我有想法通过制服将逆视图矩阵发送到着色器,但我不知道在哪里可以获得 JS 中场景的视图矩阵。
感谢帮助。我已经尝试了一切:( ...
再见。