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