Three.js: Fresnel Shader - Lights: настоящая проблема

У меня есть небольшая проблема с примерным шейдером fresnel three.js.

'lights: true' - если это 'true', я получаю следующую ошибку:

Uncaught TypeError: Cannot set property 'value' of undefined 

Я невежественен. Спасибо за любые предложения.

1 ответ

Решение

Когда вы установите 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

Другие вопросы по тегам