我对three.js示例fresnel shader有一个小问题。
'lights:true' - 如果这是'true',那么我会收到以下错误:
Uncaught TypeError: Cannot set property 'value' of undefined
我很无能为力。感谢您的任何建议。
答案 0 :(得分:3)
设置ShaderMaterial.lights = true
时,渲染器会为您填充着色器灯光均匀参数。
但是你必须首先确保你的着色器有必要的灯制服。
THREE.FresnelShader
不使用灯光;它依赖于环境地图。因此,设置lights: true
将无效。
但是如果你想这样做,并且愿意修改着色器,你必须替换
var shader = THREE.FresnelShader;
var uniforms = THREE.UniformsUtils.clone( shader.uniforms );
与
var shader = THREE.FresnelShader;
var uniforms = THREE.UniformsUtils.merge( [
THREE.UniformsLib[ "lights" ],
shader.uniforms
] );
three.js r.59