Я пытался использовать шейдер сопоставления нормалей THREE.ShaderUtils.lib["normal"]
, но свет не работает. Само сопоставление нормалей работает, но кажется, что огни бешено перемещаются в странные положения, когда я оглядываюсь или перемещаю камеру. Штатные THREE.MeshPhongMaterial
работают. См. рисунки ниже для иллюстрации проблемы (желтые кружки — фактическое положение огней).
Материал Phong работает должным образом:
Шейдер карты нормалей все ломает — вы можете видеть, что свет больше не излучается из реального положения источников света, а излучается откуда-то случайным образом (эти кажущиеся случайными места света также перемещаются при перемещении области просмотра): < img src="https://i.stack.imgur.com/UiGuY.png" alt="Шейдер карты нормалей ломает вещи">
Часть генерации геометрии взята из примера minecraft (с добавлением geometry.computeTangents()
) и создание материала карты нормалей из пример карты нормалей.
Что может быть причиной такого поведения?