Разбитые огни с шейдером карты нормалей

Я пытался использовать шейдер сопоставления нормалей THREE.ShaderUtils.lib["normal"], но свет не работает. Само сопоставление нормалей работает, но кажется, что огни бешено перемещаются в странные положения, когда я оглядываюсь или перемещаю камеру. Штатные THREE.MeshPhongMaterial работают. См. рисунки ниже для иллюстрации проблемы (желтые кружки — фактическое положение огней).

Материал Phong работает должным образом: Материал Phong работает должным образом

Шейдер карты нормалей все ломает — вы можете видеть, что свет больше не излучается из реального положения источников света, а излучается откуда-то случайным образом (эти кажущиеся случайными места света также перемещаются при перемещении области просмотра): < img src="https://i.stack.imgur.com/UiGuY.png" alt="Шейдер карты нормалей ломает вещи">

Часть генерации геометрии взята из примера minecraft (с добавлением geometry.computeTangents()) и создание материала карты нормалей из пример карты нормалей.

Что может быть причиной такого поведения?


person Tapio    schedule 29.08.2012    source источник


Ответы (1)


Первоначально я работал над этой проблемой, используя версию r51dev, в которой есть карты нормалей в материале phong, но, похоже, ветка dev также исправила исходный шейдер карты нормалей, скорее всего, с помощью этот коммит.

person Tapio    schedule 13.09.2012