что такое мягкие частицы в играх

Мягкие частицы (Soft Particles).

Одной из хорошо распиаренных возможностей DX10 являются так называемые мягкие частицы (soft particles). Однако на самом деле для реализации этого эффекта вполне достаточно поддержки SM3 и и они великолепно делаются на OpenGL (не требуя при этом мелкомягкой и убогой ви$ты).

Рассмотрим что же именно подразумевается под «мягкими» частицами и в чем заключается их отличие от традиционных частиц.

Рис 1. Артефакты, возникающие при использовании традиционных частиц.

Это связано с тем, что частицы представлена одним полигоном, в то время как частицы обычно соответствуют не плоским фигурам, а объемными.

Рис 2. Сцена с рис. 1, но с использованием мягких частиц.

Рис 3. Отличие мягкой частицы от обычной.

В идеальном случае при выводе такой частицы нам необходимо определить длину части луча (соответствующего текущему фрагменту), целиком лежащей внутри видимой части объема частицы.

При этом возможны два случая.

1. Луч «протыкает» объемную частицу насквозь и просто берем прозрачность из текстуры (рис 4.a).

2. Внутри шара находятся непрозрачные объекты, выведенные ранее. Тогда нам нужен отрезок от точки входа в частицу до ближайшего пересечения луча с объектами сцен, лежащими внутри объемной частицы. В этом случае отношение длины этого отрезка к заданной толщине частицы задает увеличение прозрачности частицы (рис 4.b).

Таким образом, в тем местах, где billboad уходит за объекты сцены происходит плавное «пропадание» частицы (вместо резкого скачка).

Для того, чтобы можно было понять протыкает ли луч насквозь такую объемную частицу или нет, нам достаточно прочесть значение из z-буфера, соответствующее данному фрагменту, и сравнить его с текущей глубиной частицы с учетом заранее заданной толщины частицы.

Поскольку полупрозрачные объекты, в том числе и частицы, всегда выводят после вывода непрозрачных, то можно после вывода всех непрозрачных объектов скопировать буфер глубины в текстуру и при выводе мягких частиц читать из нее значения глубины.

Это удобно еще и потому, что во многих случаях для повышения быстродействия сначала осуществляется рендеринг всей сцены только в буфер глубины (подобный прием был использован Дж. Кармаком еще в Doom III).

Ниже приводится соответствующий фрагментный шейдер и скриншот, полученный при его использовании.

Ниже приводится полный исходный код на С++, использованный для рендеринга сцены с рис. 2 и 5.

По этой ссылке можно скачать весь исходный код к этой статье. Также доступны для скачивания откомпилированные версии для M$ Windows и Linux.

Copyright © Alexey V. Boreskov 2003-2008

Источник

Технологии графики в современных играх, часть 1: Новомодные свистелки-перделки

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

Вступление

Ты вступление не читаешь. Тебе оно не интересно.
Мне тоже не интересно описывать, что я за хрен с горы и нафига тут вылез. Но надо.
Короче, крути вниз.

Всем привет.
Наблюдая в недавнем стриме по MATRIX: Path of Neo за тем, как Вася с Максом рассуждают на тему LOD’ов, я понял одну интересную вещь: в современных играх меню с настройками графики представляет собой что-то совершенно непотребное. Оно либо жутко кастрировано, либо открывает для пользователя такую простыню непонятных слов, в которой и чёрт ногу сломит.
что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

Ладно, я — сам работаю в игрострое. Так что мне-то понятно, какая настройка за что отвечает. Но порой тоже не без трудностей. А вот простых игроков, наверное, при чтении всех этих названий одолевает тихий ужас.
Причём, мир не стоит на месте, и новые графические «фичи» появляются каждый год, а то и месяц. Недавно — вон, свет увидел TressFX.

Так что дальше будет только больше, и без посторонней помощи разобраться во всём этом техническом безобразии в скором времени уже просто не получится.
Разработчики игр упрощают это дело, как могут, по максимуму убирая из меню всё лишнее. Вот только беда в том, что это вовсе не «лишнее», и надобность той или иной технологии зависит от того, насколько мощное у игрока железо.
В консолях это самое железо известно заранее, и игроделы могут просто сами подобрать оптимальные параметры, скрыв их от глаз игроков. Но вот сделать такое для ПК — в принципе невозможно.

Тем временем, меню всё разрастается и разрастается…
Не удивлюсь, если через пару лет в сингле какого-нибудь ААА-шутера в туториал добявят объяснение графических настроек. А пока — я постараюсь помочь всем интересующимся сориентироваться во всём этом многообразии.

Сразу извиняюсь за возможно «не такой» формат повествования.
Вообще, это далеко не первый мой рассказ на подобную тему. Но обычно подобные темы я обсуждаю с другими такими же «CG-гиками» (коллегами по цеху). А вот в блогах на SG — я пишу впервые. Так что местами могу «не попасть» в то, как тут принято.
Постараюсь не разводить нудятину и осветить тему без излишних технических подробностей. Так что надеюсь обойти стороной всякие вертексные/пиксельные шейдеры, шейдерные модели, graphics pipeline и т.п. Но если что — ссаными тряпками прошу не закидывать.
Как говорится, «это мой первый пост, не судите строго».

Итак, ближе к делу. Рассказ о технологиях пойдёт в порядке их «свежести». А начнём с…

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

AMD TressFX

Эта технология — просто идеальный пример одного тренда, который прослеживается в игровой индустрии испокон веков. Суть его вот в чём: игровая индустрия сама по себе не придумывает практически никаких технологий.
Просто время идёт, мощности железа растут. И со временем, пускай и с какими-то упрощениями, становится возможным делать в реалтайме то, что раньше было доступно только в «тяжёлом» рендере… ну, то есть, в том, что геймеры именуют «CGI-роликами».
Иными словами, практически все технологии, появившиеся в играх — всего лишь упрощённое заимствование того, что уже давным-давно широко используется в кино и изучено вдоль и поперёк.

Собственно, что такое TressFX? А очень просто: это всего лишь готовый кусок программного кода от AMD, с помощью которого можно считать волосы на видеокарте.
Вообще 3D-шники умеют делать волосы уже много-много лет. Ты их не раз видел во всяких 3D-мультиках.
что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

Просто раньше это делалось на проце и требовало этих самых процов дофига. Естественно, ни о каком реалтайме — и речи быть не могло.
Поэтому в играх причёски в любом случае делались такими полигональными «лоскутками», на которых волосы были просто текстурой.
что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играхчто такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играхчто такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх
Предыдущие картинки взяты из легендарного в среде 3D-шников making-of’а модели «Varga» от Paul Tosca.
В самом making-of’е картинок ещё больше, и есть gif’ки, позволяющие посмотреть модельку со всех сторон.

А теперь гигагерцы выросли, видюхи растолстели. И игровые программисты могут просто взять этот готовый TressFX и воткнуть его в игру: волосы будут считаться в реалтайме на GPU. Считай, ничего делать не надо: покрутил пару параметров, настроил длину — и очередная пара косичек готова.

Причём, на видеокарте считается не только то, как эти волосы выглядят, но и их физика. То есть, как движется каждый волосок.
В будущем это даст гораздо большую реалистичность стрижек у персонажей: они будут выглядеть, прям как настоящие. Но пока что видюхи попросту не настолько сильные, чтоб держать в кадре хотя бы две таких причёски.
Ну то есть даже на топовом Радеоне на расчёт одной такой шевелюры уходит столько же ресурсов, сколько на всю остальную сцену. В результате — игра тормозит, а волосы глючат (и выглядят хуже, чем сделанные по старинке). Что недавно вышедшая Лара наглядно продемонстрировала.
Так что на сегодняшний момент TressFX нужна не столько игрокам, сколько разработчикам. Это банально проще: не париться с созданием геометрии и текстур, а считать волосы по физике, «в лоб».

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

GPU Particles (частицы на видюхе)

Всё очень просто: видеокарта лучше справляется с задачами, которые легко распараллелить.
Ну то есть, считать много всего однотипного — это к видюхе. Считать что-то одно сложное — это к процу.

В DirectX 11 появилась такая штука (DirectCompute), которая позволяет разработчикам игр самостоятельно считать на GPU практически что угодно.
Естественно, благодаря этому те вещи, которые сами по себе хорошо параллелятся — первым же делом и были перенесены с проца на видюху. Что позволило увеличить детализацию этих «вещей» в несколько раз.

Ярчайший пример — системы частиц. У нас в кадре есть дофига маленьких-маленьких объектов. Вроде песчинок, снежинок, капель воды… Так вот. Раньше мы их считали на проце, поэтому приходилось исхитряться. Например, рисуя вместо одной частицы текстуру, где их 100.
А теперь — мы их считаем на видюхе, так что можем делать это по-честному. Вместе со всей физикой. Это позволяет нам ворочать в кадре буквально миллионами частиц, создавая просто ошеломительные эффекты.
что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играхчто такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх
Интерактивное онлайн-демо с адским числом частиц прямо в браузере (требуется DX11 + нужно установить Unity Web Player)

Некоторые считают, что GPU-частицы, как и другие новомодные фичи — исключительно прерогатива DX11. На самом деле — современный OpenGL может всё то же самое, а местами — даже больше. В чём легко убедиться, погуглив на ютубе.
Так что. Тот факт, что современные игры выпускаются с упором на DirectX — это даже не какой-то заговор Мелко-Мягких, а банальная инерция игроделов.
С технической точки зрения ничто не мешало уже FarCry 3 или Crysis 3 работать не на DirectX, а на OpenGL. А он, вообще-то, кросс-платформенный. То есть, разработчики один раз пишут шейдер, который одинаково отработает и на Windows, и на MacOS, и на Linux.
А учитывая, какие операционки используются на PS4 и грядущем Steam Machines — улавливаешь мысль? Очень скоро произойдёт…
Ну да ладно, это уже совсем другая история.
что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

Voxel Cone Tracing

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

Tesselation

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

Что это нам даёт? Ну, вообще-то, сама по себе тесселяция ничего не даёт. Но зато, если её комбинировать с другими технологиями — можно сделать тот самый «ГРАФОН. 111», на который фапают графодрочеры.

В самом простом случае — да, можно добавить к тесселяции другую технологию (vector displacement), которая по специальной текстуре рельефа «выдавит» точки на тесселированом объекте. Это позволит добавить, собственно, рельеф, сделав прям-таки фотореалистично детализированный уровень. что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх
Но ведь двигать точки на поверхности можно не только по заранее сделанной фиксированной текстуре. Вместо текстуры величину смещения можно получать по какому-нибудь хитрому алгоритму. То есть прямо во время игры, при отрисовке каждого кадра для каждой точки вычисляется, куда её сместить… хм, не совсем понятно, наверное?
Давай так. Вот у текстуры — есть разрешение. Рано или поздно, когда ты приблизишься — увидишь пиксели. А у алгоритма разрешения нет. То есть, приближать/отдалять можно сколько угодно, не теряя при этом ни детализации, ни производительности. Таким способом (он называется procedural displacement) можно из одной плоскости… выдавливать целые ландшафты. И сколь близко бы ты на него ни смотрел — он всегда будет очень детализированным.

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

Можешь прикинуть такие масштабы в новом Масс Эффекте?

Или такой пример. Представь, что при замерзании твоего персонажа на нём прямо по форме тела вырастают сосульки. Не внезапно появляются изниоткуда, а именно вырастают. Причём разработчикам для этого достаточно всего лишь 1 раз сделать материал с этим алгоритмом, и потом можно его применять вообще на любой объект.
На любой. То есть, целые уровни можно замораживать, просто накинув на все объекты этот материал.

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

И алгоритм для смещения может быть любым. Например, он может учитывать текущее время и благодаря этому заставлять этот рельеф двигаться. Ну допустим, у персонажа прямо будет видно, как пульсирует вена.
В общем, тесселяция напару с процедурным дисплейсментом открывает для разработчиков прям-таки безграничный арсенал выразительных средств.

Кроме того, использование тесселяции позволяет вообще отказаться от технологии LOD (Level of Detail), о которой я упоминал в начале. Проще говоря, разработчики за те же деньги смогут сделать больше объектов на уровне. То есть, не только сами объекты при близком разглядывании будут более детализированными, но и уровни в целом будут более разнообразными. Но это только если делать игру исключительно с расчётом на DX11 и соответствующее железо.

Так что если твой комп тянет тесселяцию — лучше по умолчанию её включать. Игра так будет не только более красивой, но и работать может быстрее.

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

Realtime Ambient Occlusion

High Definition Ambient Occlusion — AO высокого разрешения.
Реализация от AMD. Картинка натуральнее, чем с HBAO. Что лично меня как поклонника AMD/ATI — радует.
Но вот со скоростью — те же непонятки. На видюхах от AMD — быстрее, чем HBAO, но медленне, чем SSAO. На видюхах от нвидии — бывает по-разному. В том числе бывает, что HDAO быстрее, чем «родной» HBAO.

В общем, обычно HDAO/HBAO — медленнее и качественнее, чем SSAO. Качество картинки в любом случае улучшается так: SSAO — HBAO — HBAO+ — HDAO (хотя лично я считаю, что первые два надо поменять местами). Но вот какой вариант быстрее — проще самому попробовать в игре.

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

Как-то так. На сегодняшний день — это все технологии, которые я могу причислить к относительно новым.
Пока что практически ни одна из них не используется широко. Но именно их существование подталкивает игровую индустрию вперёд. Разработчики игр видят те возможности, которые открывают эти новомодные «фичи». Но они вынуждены ориентироваться на среднестатистическое железо, поэтому пока не спешат внедрять всё и сразу.
Игроки же потихоньку это самое железо обновляют, приближая тот момент, когда все эти технологии станут «стандартным набором» и тем самым спровоцируют появление новых.
В общем, как всегда: поживём — увидим.

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

Bonus: DirectX 11 vs OpenGL 4

Многие годы DirectX царственно восседал на троне неоспоримого лидер а по графическим прибамбасам. Чем Microsoft и жила. В эпоху Windows XP «играть в игры» было практически синонимом «пользоваться Windows». Да что уж там, ситуация сохраняется по сей день. Когда говорят «ПК», то по умолчанию подразумевается Windows 7 со встроенным в неё DirectX’ом.
На консолях есть свои графические библиотеки — но на то они и консоли. А на ПК безраздельно правит DirectX…

Однако в последнее время эта его «безраздельность» нехило так пошатнулась. Дело в том, что, действительно, OpenGL всегда не дотягивал до возможностей DirectX, из-за чего игроделы выбирали последнего. OGL всегда «как бы мог» всё то же самое, но со скрежетом. Всегда проигрывал по скорости. Всегда «не дотаягивал» по качеству итоговой картинки или количеству параметров.
Всегда.
До релиза OpenGL 4.

С его появлением в индустрии, можно сказать, пройдена точка невозврата. Если сравнивать DX11 и OGL 4 — то выясняется, что в конкретно этих двух версиях уже начинает лидировать OpenGL. Не с диким отрывом, нет. Потихоньку-помаленьку… вот тут рендерится быстрее, вот там возможностей больше, вот здесь код чище.
Но в сумме набирается, что сегодняшний OGL не только не уступает по возможностям перед DirectX, но в чём-то даже превосходит. Об этом я вскользь упоминал в разделе про GPU-партиклы. Но решил на этом остановиться поподробнее.
Ведь, пробежавшись взглядом по статье, я заметил, что все описанные в ней технологии, кроме TressFX, есть параллельно и на DX, и на OGL. А аналог TressFX в принципе можно сделать и на нынешнем OGL.

Относительно недавно даже появился специальный игровой движок — Unigine. Его, как говорится, «killing feature», на которую упирают создатели — это то, что он обеспечивает совершенно идентичную картинку на всех платформах. На Windows он использует DirectX, на остальных — OpenGL.
Собственно, та самая демка, которая демонстрирует прелести тесселяции, которую все видели — она сделана на Unigine:
что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

С появлением движка Unigine — на ютубе стали вылазить сравнительные сплит-скрин бенчмарки одной и той же сцены на DX и на OGL. И, глядя на них, начинаешь замечать едва видимые, но отличия. Вот тут свет считается точнее, вот там расфокус размывается правильнее, вот здесь тесселяция плотнее, а линзовые эффекты физически корректнее.
А потом выясняется, что на некоторых конфигурациях OGL ещё и быстрее.
В общем, все и так поняли, что я хочу сказать. Оставлю свои эмоции в стороне и просто предоставлю одно из таких видео:

Источник

Мягкие частицы

Народ, хелп) уже все перерыл, почитал, ну как почитал, что-то понял а что-то ваше не как))

Вообщем создал шейдер частицы и передаю в шейдер текстуру глубины, глубина имеет градацию от 0 до 1.

И вот дальше тупик, не вникаю что нужно делать дальше, нашел статейку http://developer.download.nvidia.com/whitepapers/2007/SDK10/SoftP… ticles_hi.pdf 6 страница.

Не понимаю что значит значение Input, как я понял мне теперь нужно получить Z пикселя и по какой-то формуле вычесть разницу из текстуры глубины, но не вник как это делать)

Нашел еще такой код на сайте http://steps3d.narod.ru/tutorials/soft-particles-tutorial.html, но он без каких либо объяснений 🙁

Так и не разобрался в этом коде, особенно что такое gl_TexCoord [1] и pos, буду очень благодарен за помощь)

хотя нет, я поспешил, там текстура глубины используется для цвета

можно ещё засмушстепить, чтоб гранича была помягче

Battle Angel Alita
Увы у меня не юнити, а самопис на html5)

Нашел еще один код вроде как с пояснениями

Вот только не пойму что такое particleDepth, если я правильно понял то это дистанция пикселя до камеры, но что-то не работает, вроде по логики (sceneDepth *= MAXDEPTH) нужно дистанцию передавать, но чет не пашет.

Mira
Попробую поиграться, если врублюсь в этом коде, так как я не владею этим языком)

Нужно нарисовать частицу с градацией альфы от центра к краям, формат png смотрится нормально, а лучше dds там float градацию можно замутить. Ну и менять в шейдере в зависимости от удаленности от камеры.

>у меня не юнити, а самопис на html5)
Не всё же чужой код копировать. Пример из юнити очень наглядный и простой для понимания, чтоб разобраться и написать своё.

zeleniy5
> Нужно нарисовать частицу с градацией альфы от центра к краям
Ммм, не понял) у меня есть уже текстура для частицы http://dt-byte.ru/fc16cbb4.png нужно только теперь края мягче сделать, но пока не получается

Battle Angel Alita
Ну как-бы да, если шаришь в коде)) вот только я не шарю, к примеру что такое (i.projPos.z) и что такое (_InvFade )?

korner
k = (1.0f-(дистанция от камеры до частицы)/(дистанция видимости))
ну и k это множитель альфы в частице

Примерно таким образом в bioshock терминаторы светят, получается мягко и красиво.

korner
Просто в шейдер подкидвай положение и нормаль камеры, делай проекцию точки на плоскость и находи дистанцию между точкой и партиклом, можно наверно не прожектить это делается в шейдере.

korner Depth текстура для декалей ну или теней нужна, а у тебя партиклы.

zeleniy5
Она много для чего нужна)
Для скринспейс эффектов например

Что-то я ваше уже запутался, что куда зачем))

Вообщем юзаю библеотеку Three.js и там есть рендер сцены в глубину, тобишь renderTarget в текстуру и на выходе получаю типа этого

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

Все как начитал в статьях, нужна эта текстура, но вот дальше я не вкуриваю что нужно делать, нужно по формуле saturate((Zscene – Zparticle) * scale)

И вот такой вот вопрос, как просчитать глубину? библиотека то большая и я не знаю как она там глубину просчитывает, есть какая-то форму по которой она может просчитать?)

Источник

Что такое мягкие частицы в сталкере

Прежде всего разберемся с настройками игры, которые помогают нам существенно увеличить FPS (количество кадров в секунду) без заметного снижения качества картинки.

Сразу оговоримся, что значит слабое, среднее и сильное влияние на производительность:

Параметры r1_* (для режима DirectX 8)

Вкл./Выкл. свет от вашего фонарика. Не рекомендую его выключать, а то ночью слишком страшно будет 🙂

Возможно, это влияет на дальность освещения вашим фонариком.

Установка числа источников света. Не сильно влияет на качество графики и на ФПС.

Регулирует основной Уровень Детализации (LOD), чем выше величина, тем больше детализация и видимость объектов на расстоянии, но за счет легкого падения FPS.

Установка подобна предыдущей, но управляет детализацией некоторых объектов на карте. Снова, чем выше значение, тем меньше ФПС.

Управляет чёткостью текстур на расстоянии. При уменьшении значения текстуры будут более чёткие, но за это придется платить незначительным падением ФПС. Повышение параметра сделает текстуры размытыми, но может чуть-чуть поднять ФПС.

Параметры r2_* (для режима DirectX 9)

Эта опция включает т.н. псевдосглаживание. Это не является настоящим антиальясингом, а просто немного размазывает картинку на экране. Если у вас ЖК монитор, вы можете получить похожий эффект нахаляву, поставив разрешение экрана чуть меньше родного 🙂 При его включении немного падает ФПС. Если включить эту опцию в DX10-режиме, это может привести к появлению артефактов.

Регулирует величину псевдосглаживания. Чем выше значение, тем сильнее размытие. Значение 0.300 даёт разумную величину размытия.

Эта опция регулирует расстояние, на котором действует псевдосглаживание. Вы можете сами подобрать удобное вам значение, но их увеличение не обязательно означает прирост качества. Например, значение r2_aa_break 0.000000,1.000000,0.000000 даст чёткие закрытые помещения и размытые открытые пространства.

Этот параметр нужен для более точного управления псевдосглаживающим эффектом. Чем выше значения, тем сильнее смазывание.

При включении опции частично будет использоваться DX8 освещение. Вроде бы, производительность должна подняться, но на деле может быть наоборот…

Эта фича регулирует величину постфильтра Depth of Field. Но всё же, лучше менять значения рассмотренных ниже опций r2_dof_*.

Эта настройка управляет расстоянием, на котором включается DoF. Это не относится к временному повышению DoF (при перезарядке оружия), а действует постоянно. Понижение опции с значения 600 по-умолчанию увеличит размытость картинки.

Чем ниже значение этой величины (по дефолту 1.4), тем меньшая часть вашего поля зрения будет «в фокусе». Это будет особенно заметно при изменении значений r2_dof_far и r2_dof_near.

Эта опция регулирует общий уровень DoF. При установке 0, DoF не будет заметен вообще, а более высокие числа повышают его уровень.

Уровень DoF применительно к небу. По умолчанию 30, и чем выше оно, тем более размытое небо.

Вкл/выкл более реалистичный метод освещения «Global Illumination», при котором свет может отражаться с поверхностей и освещать другие поверхности. Включение этой опции сильно бьёт по производительности. Опция не работает в двух режимах «Улучшенное полное динамическое освещение».

Настройка расстояния действия Global Illumination.

Настройка глубины теней.

Опция регулирует уровень Global Illumination. Значения должны быть кратны 8.

Регулирует отражающий эффект поверхностей.

Чем больше значение этого параметра, сильнее блестят глянцевые поверхности.

Эта опция включает усиленную форму Bloom’a, но не заменяет HDR Bloom’ом. При включении картинка будет слишком яркой и смазанной, на ФПС почти не влияет. Вам не нужно включать эту опцию, чтобы использовать другие параметры r2_ls_bloom_*.

Управляет уровнем размытия Bloom’a, чем больше величина, тем сильнее засветка от источников света.

Регулирует яркость Bloom’a, чем больше значение, тем менее яркость Bloom’a, использующегося вместе с HDR. В результате, при значении 1, картинка будет как на DX8. Можете попробовать значение 0.350, чтобы блум был более красивым.

Регулятор дальности вида источников света. Низкие значения увеличивают глубину и границу источника, повышение параметра может практически полностью удалить источники света. Оптимально значение по умолчанию.

Аналогичная предыдущей установка.

Настройка качества теней.

Регулирует смазывание при движении. Отлично смотрится со значением 0.1, причём это не влияет на ФПС. Чтобы активировать это, недостаточно изменить параметр в конфиг-файле, нужно запустить игру с параметром –mblur. Открываете свойства ярлыка игры, и в пути к запускающему экзешнику дописываете –mblur через пробел. Получится примерно так: «D/Supergames/STALKER/XR_3DA.exe» –mblur. Опция не работает в двух режимах «Улучшенное полное динамическое освещение».

Вкл./выкл. Parallax Mapping

Эта опция должна управлять Parallax Mapping’ом, но никаких визуальных изменений не наблюдается.

Настройка дистанции освещения.

Регулирует Уровень Детализации (LOD) для мира игры, чем выше величина, тем больше детализация и видимость объектов на расстоянии, но за счет легкого падения FPS.

Опция подобна предыдущей, но управляет детализацией объектов.

Вкл/выкл Солнце как источник света. Если выкл, деревья и дома не будут отбрасывать тени. Если опция включена, можно поиграться с параметрами r2_sun_depth_*

Эти параметры регулируют r2_sun, если оно включено. Это управление уровнем детализации теней и границей солнечного света и теневых областей. Оптимальны значения по умолчанию.

Контролирует качество солнечного света на близких к игроку поверхностях.

Контролирует качество солнечного света на далёких от игрока поверхностях.

Определяет яркость Солнца, с величинами ниже нуля выключает Солнце :).

Регулирует яркость предметов, которые освещены Солнцем.

Регулирует общую яркость всех предметов.

Определяет, насколько чёткими будут текстуры на расстоянии. При уменьшении значения текстуры будут более чёткие, но за это придется платить незначительным падением ФПС. Повышение параметра сделает текстуры размытыми, но может чуть-чуть поднять ФПС. Не работает в DX10-режиме.

Вкл/выкл Tone Mapping. Включение сделает HDR более качественным без падения производительности. Следующие опции r2_tonemap_* позволяют его настраивать.

Опция указывает время адаптации зрения к изменению уровня освещения.

Эта установка регулирует Tone Mapping’а в темных областях. Чем выше эта установка, тем темнее HDR.

Эта установка имеет наиболее сильное влияние на HDR, и если её поднять, эффект HDR будет более богатый. Например, попробуйте величину 1.2, чтобы HDR в С.Т.А.Л.К.Е.Р.е выглядел, как в Oblivion’е.

Экспериментальная опция, включение непротестированных шейдеров. Скорее всего, приведёт к снижению производительности или артефактам.

Вкл./выкл. мягкие частицы.

Вкл./выкл. мягкую воду.

r2_ssao st_opt_high [off,high]

r2_sun_quality st_opt_high [low,high]

r2_sun_shafts st_opt_high [off,high]

Солнечные лучи, сильно влияют на ФПС. Поэтому их можно выключить, ФПС хорошо поднимется, а качество упадёт несильно.

Параметры r3_* (для режима DirectX 10)

Эта фича контролирует расстояние, на котором видны мокрые поверхности. Значение по умолчанию 30, чем оно выше, тем дальше видны мокрые поверхности.

Эта фича контролирует расстояние, на котором видны мокрые поверхности рядом с игроком. Значение по умолчанию 10, чем оно выше, тем менее детализированы близкие к игроку мокрые поверхности.

Настройка разрешения карт мокрых поверхностей. Изначально стоит 256, если его повысить, качество этих поверхностей возрастёт, но FPS уменьшится.

Вкл./выкл. специальную оптимизацию рендеринга под DX10. Включение может поднять FPS, но вызвать некоторые артефакты, а может и не вызвать 🙂

Это управление сглаживанием в DX10-режиме. Для сохранения изменений необходим перезапуск игры.

Параметры для всех режимов

Настройка сглаживания. Чтобы работало в DX10, вместе с этой опцией нужно включить r3_msa.

Настройка анизотропной фильтрации.

Настройка расстояния, на котором видны высокодетализированные текстуры. Чем выше значение, тем дальше их видно.

Время жизни таких эффектов, как следы от пуль, кровь и т.п. Выше значение – дольше они будут оставаться.

Уровень детализации объектов. Большие значения соответствуют лучшей детализации.

Уровень детализации травы. Большие значения соответствуют лучшей детализации.

Когда включено, на экране будет показана всякая техническая статистика, в т.ч. число кадров в секунду – FPS.

Вкл/выкл аппаратное ускорение звука.

Настраивает, сколько оперативной памяти используется для кэширования звуков, чтобы предотвратить заедания. При этом используется в два раза больше памяти, то есть, если вы поставите 16, будет использовано 32 МБ. Желательно ставить максимальное значение (32), чтобы предотвратить подгрузки звука во время игры.

Опция определяет число одновременных источников звука, повышение отрицательно влияет на производительность при слабой (читай-встроенной) звуковой карте. На слабых звуковухах лучше ограничиться значением 24.

Настройка разрешения экрана, здесь можно выставить разрешение, которого нет в меню игры.

Вкл\выкл тени от объектов, освещаемых фонарями.

По умолчанию, когда вы жмёте Вперёд, игрок бежит, если эту опцию выключить, он будет идти шагом.

Уровень детализации удалённых текстур. Чем ниже значение, тем лучше текстуры.

Вертикальная синхронизация. Рекомендую отключить это.

Настройка дальности видимости.

Рендеринг частиц

Код шейдера, который используется для отрисовки частиц находится в файле SoftDiffuseColoredShader.js. Давайте разберемся как он устроен.

Основная идея поиска пересечения геометрий частицы и сцены состоит в сравнении значения текущей глубины фрагмента с сохраненным значением из карты глубины.

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

Сравнение различных значений коэффициента “мягкости” частиц:

Рендеринг

Что такое мягкие частицы в сталкере

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

Для пистолетов обязательно апгрейдим величину магазина, точность и скорострельность. Для прицельной стрельбы на ближних и средних дистанциях точность и скорострельность имеют важное значение, иначе наша пистолетная стрельба будет малоэффективна.

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

Для дробовиков такие параметры как настильность и удобность совершенно не нужны, их оставляем сразу. Тем более для дроби не нужна точность, ведь дробовик как раз нужен нам из-за его огромного разлёта дроби при выстреле, чтобы уверенно поражать группы целей. Поэтому в дробовиках улучшаем ёмкость магазина, отдачу и скорострельность. Скорострельность особо важна, потому что у дробовиков она низкая.

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

Для снайперских винтовок приоритетом в апгрейдах будут настильность и точность, это важные параметры для стрельбы на большом расстоянии. Если винтовка стреляет одиночными выстрелами, то отдачу можно вообще не улучшать. Для автоматической стрельбы очередями нужно поработать и над уменьшением отдачи. Также очень поможет улучшение темпа стрельбы, ведь снайперки обычно стреляют медленно.

Что такое мягкие частицы в сталкере

что такое мягкие частицы в играх. Смотреть фото что такое мягкие частицы в играх. Смотреть картинку что такое мягкие частицы в играх. Картинка про что такое мягкие частицы в играх. Фото что такое мягкие частицы в играх

Качество текстур: Максимум
Детализация объектов (LOD): Максимум
Значения MIP-текстур: Максимум
Фильтрация текстур: Максимум
Сглаживание: 4x
SMAA: Высоко
Детальный рельеф
Steep parallax
Тесселяция

Дальность освещения: 0.5
Качество теней: Максимум
Тень от игрока
Интенсивность блеска: 2.5
Тень от солнца
Качество солнца: Высоко
Режим солнечных лучей: Screen Space
Качество солнечных лучей: Высоко
Основная интенсивность лучей: 0.5
Базовая интенсивность лучей: 0.5
Режим SSAO: HBAO
Качество SSAO: Высоко
Объемный свет

Мягкая вода
Мягкие частицы
Глубина резкости
Размытие движений
Величина размытия движений: Минимум
Намокание поверхностей
Объемный дым

Мягкие частицы

Так что такое эти мягкие частицы? Вы можете помнить что во многих старых играх (времен Quake 3 и CS 1.6) эффекты дыма и взрывов имели очень четкие плоские границы на пересечении частиц с другой геометрией. Все современные игры уже не имеют подобных артефактов благодаря использованию мягких частиц — то есть частиц с размытыми, “мягкими” краями вокруг прилегающих объектов.

Оптимизация отрисовки спрайтов

В этой сцене мелкие пылинки отрисовываются как точечные спрайты (примитивы типа GL_POINTS). Этот режим удобен тем что он автоматически создает готовую квадратную геометрию частицы с текстурными координатами. Однако, они имеют и недостатки, которые делают их использование неуместным для крупных частиц клубов тумана. Прежде всего, они отсекаются плоскостями отсечения матрицы камеры по координатам центра спрайта. Это приводит к тому что они резко исчезают из вида на краях экрана. Также, квадратная форма спрайта не очень оптимальна для фрагментного шейдера так как он вызывается и в тех местах где текстура частиц пустая, что вызывает заметную излишнюю перерисовку. Мы используем оптимизированную форму частицы — с обрезанными краями в тех местах где текстура полностью прозрачна:

Мягкие частицы в WebGL и OpenGL ES

Системы частиц это одни из самых простых способов сделать 3D сцену визуально богаче. В одном из наших Android приложений 3D Buddha Live Wallpaper достаточно простая сцена, которой было бы неплохо добавить чуть больше деталей. И когда мы думали как добавить разнообразия изображению то самым очевидным решением заполнить пустое пространство вокруг статуи Будды стало добавление клубов дыма или тумана. Благодаря использованию мягких частиц мы достигли довольно хорошего результата. В этой статье мы детально опишем реализацию мягких частиц на чистом WebGL / OpenGL ES без использования сторонних библиотек и готовых 3D-движков.

Разница между старым и обновленным приложением даже превзошла наши ожидания. Простенькие частицы дыма существенно улучшили сцену, сделали ее богаче и полнее. Клубы дыма это и дополнительные детали за которые “цепляется глаз”, а также способ сделать переход между основными объектами и фоном более плавным:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *