Three.js SSAO на гладкой сетке дает плоские результаты - PullRequest
0 голосов
/ 02 ноября 2018

Я использую Three.js r97, и в моей сцене у меня есть сетка, использующая BufferGeometry с допустимыми нормалями. Когда я устанавливаю material.flatShading = false, я вижу гладкую сетку, но когда я применяю постобработку SSAO к этой сетке (https://threejs.org/examples/webgl_postprocessing_ssao.html),), я могу видеть треугольники сетки, как если бы это был оригинальный материал flatShading, установленный в true. Мне не хватает параметра, который можно установить (на материале глубины или в самом шейдере SSAO), чтобы SSAO не показывал исходные треугольники сетки, но был гладким? Глубина В материале, используемом SSAOPass, по умолчанию flatShading = false, но не похоже имеет значение в этом случае. Пожалуйста, смотрите изображения ниже. Был бы рад предоставить больше деталей, если это необходимо, поскольку я застрял в этом вопросе уже несколько дней, и на данный момент даже не уверен, что это можно сделать, за исключением того, что сделать треугольники SSAO менее тонкими, играя с параметрами radius, aoClamp и lumInfluence .

Сетка - плоское затенение (material.flatShading = true): enter image description here

Сетка - плавное затенение (material.flatShading = false): enter image description here

Сетка - плавное затенение + SSAO: enter image description here

1 Ответ

0 голосов
/ 05 ноября 2018

Хорошо, для всех, кто интересуется этим - похоже, что SSAO в Три была сломана с r75:

https://github.com/mrdoob/three.js/issues/8576

...