Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / СНЕГ

СНЕГ

LMНовичокwww8 фев. 200317:06#0
Привет! Есть вопрос: где можно посмотреть реализации снега в играх, или кто знает и как делает?
Дело в том, что если все сделать на партиклах, скажем 1000 снежинок - думаю получиться неоправданная трата перфоманса на такой простой эффект, так ли это:)?
Вот и хочу сделать скажем всего меньше сотни (или скока будет оптимальнее?) партиклов для самых ближних снежинок, а весь задний план (1000 и более) срендить так: делаю полигон (как он тамназывается... чтоб смотрел всегда в камеру) и на него наложить мою реал тайм отренденную текстуру снега(пересчитывать ее каждый кадр естессно, но т.к алгоритм вывода простых падающих точек прост, то будет ли такая связка --- мало партиклов и текстура на заднем фоне --- лучше, чем все сделать на партиклах????)
Спась заранее за все ответы!
ZПостоялецwww8 фев. 200317:28#1
1000 ето и не так уж много если подумать... :)
просто попробуй и посмотри - у нас партиклъ страдали от филлрейта, а не от количества (3к их бъло), и когда текстуру сделали в 4 раза меньше fps стало больше... Так что внимательно с етими штуками - там альфатест и т.д. обязательно включи, не заморачивайся их сортировать по z-у и т.д.
В UT2003 скажем снег очень редок - важное еффект.
А как ето сделать? Ну я знаю вот такое - делаешь куб, в котором создаешь один раз партиклъ, потом их симулируешь внутри. При отображении просто прибавляешь позицию камеръ к каждому партиклу (но зацъкленнъю, т.е. mod CubeSize), и все. Таким образом если партиклъ только ползут вниз и покачиваются в сторонъ (нет ветра) то можно даже в квадтри их запихать для куллинга.
Потом - если надо чтобъ в закрътъе помещения они не попадали, надо колизию запускать для каждого партикла - НО, ето надо сделать только один раз - запустить луч в землю, найти где ударился и ето запомнить... Даже если партикл покачивается (sinus какой-то), ето не проблем.
Вот если надо ветер, то тогда будет туго колижну, очень туго. :)
raskolnikovНовичокwww8 фев. 200318:58#2
Zemedelec
Делать колижн для каждого партикла???
LM
Если у тебя партикл систем, то лучше проверяй по её баундинг боксу.

|            |  частицы - не попадают
|            |
|______|
                |----- крыша

Страдает точность, зато скорость в n-раз больше.
Так сделано в Soldier Of Fortune 2, в ней ошибки не заметны.

ZПостоялецwww8 фев. 200319:01#3
raskolnikov
Да, и как я сказал однаждъ.
LMНовичокwww8 фев. 200320:03#4
2Zemedelec
Я прально понял что число партиклов мало влияет на скорость ренда??? Но.. типа... все таки подумать над оптимизацией надо... нарно все ж таки нерендить дальние партиклы,а нарисовать точку на текстуре с альфа будет пошустрее... А про колижн - а если объект движется? Тут что то мне подсказывает придется уже не один раз запускать луч(( , т.е полноценным коллижном пахнет  =>  число партиклов существенный параметр!

2raskolnikov
угу, так собсно и задумано=))

LMНовичокwww8 фев. 200320:09#5
Колижн для точки (снежинки) на текстуре будет даже чуть попроще... у точки 3 коорд, x,y - коорд текстуры переведенные в World Coord. + z самого полигона, на кот рисуем снег
Еще можно добавить несколько таких полигонов со снегом в разных Z (скажем Z=100, Z=300, Z=500 и тд), да впрочем для "дальнего" снега артифактов разных должно быть поменьше...
IronPeterПостоялецwww8 фев. 200323:51#6
А вот еще какая штука. Делаем немного частиц (редкий снег). А потом рисуем несколько смещенных копий. Никто не догадается, что каждая снежинка присутствует в нескольких экземплярах. Тут можно такой мягкий blend закрутить от расстояния (и вдали не рисовать ничего)- так что весь снег падает вблизи, а когда мы движемся, то это зона падения перемещается.

/ Форум / Программирование игр / Графика

Тема в архиве.

2001—2018 © GameDev.ru — Разработка игр