2

我对 three.js 示例菲涅耳着色器有一个小问题。

'lights : true' - 如果这是'true',那么我会收到以下错误:

Uncaught TypeError: Cannot set property 'value' of undefined 

我一无所知。感谢您的任何建议。

4

1 回答 1

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

] );

三.js r.59

于 2013-08-04T17:44:02.733 回答