В моем приложении у меня проблемы с z-буфером. У меня есть ParticleSystem, в которой точки имеют текстуру, которая будет выглядеть как сферы. Но есть две проблемы, которые я не могу решить одновременно ...Проблема с Z-буфером с BufferGeometry в ParticleSystem
Либо сферы были отсортированы прямо в z-буфере, но не прозрачны или прозрачны, но не отсортированы правильно!
Пожалуйста, взгляните на мой JSfiddle. (на основе this example от mrdoob)
В исходном примере все выглядит хорошо. Но, как вы можете видеть на моей скрипке, текстура не прозрачна, поэтому скрывается части частиц позади нее. Я только изменил с Geometry
на BufferGeometry
, потому что в моем приложении я должен использовать это, чтобы избежать проблем с производительностью. Вы можете переключаться между этими двумя, изменяя мои комментарии в скрипке. И, переключаясь между Geometry
и BufferGeometry
, вы можете видеть, что z-буфер ломается.
Где-то в интернете я нашел это «решение»:
depthWrite : false
, которые я добавил к материалу. Тогда частицы выглядят великолепно, но z-буфер неверен. Это сводит меня с ума ... в любом случае я узнал, что мой тип геометрии - проблема.
Так почему же пример mrdoob не работает с BufferGeometry
? Что я могу сделать, чтобы получить правильные отсортированные и прозрачные частицы в моей системе?
Спасибо! Но теперь текстура имеет артефакты. Не могли бы вы объяснить, что такое 'alphaTest'? И этот трюк, похоже, работает только во время перцептивной камеры. У меня есть вторая, орфографическая камера, для просмотра с высоты птичьего полета в моей системе, и z-buffer по-прежнему не так. Нужно ли мне делать что-нибудь еще для этой камеры? – PanChan
Фрагмент не отображается, если фрагмент альфа меньше, чем 'alphaTest'. Вы должны будете сделать новое сообщение и предоставить живой пример, если у вас возникнут дополнительные проблемы. Говорить, что «есть артефакты» или буфер «неправильный», не является описательным. Я ответил на вопрос, который вы разместили здесь. – WestLangley