![]() |
Ответ: Советы по оптимизации
Офигеть, ты мне раскрыл глаза на Z буффер. Это оказывается мощная штука!
На примере травы сделал тест, и оказалось что без альфы производительность возрастает в 3 РАЗА!! 1000 примитихных мешей с альфой скинули фпс до 40, в то время как 3000 таких же без альфы скинули до 45. Цитата:
Ну траву без альфы я без проблем сделаю, но если надо сделать кустаники и т.п. что без альфы не обойтись. Цитата:
|
Ответ: Советы по оптимизации
Цитата:
вкратце: ты рисуешь много объектов друг на друге, по идее каждый пиксель каждого объекта на экране должен быть нарисован - выходит что ты можешь отрисовать дофига пикселей впустую, которые потом закроются другими. у збуфера есть оптимизация - если рисуемый пиксель объекта дальше по глубине чем то что уже в нём нарисовано, то не надо его рисовать и прогонять его шейдер. поэтому если ты отсортируешь объекты от ближних к дальним, все загороженные пиксели им будут откинуты. ксорс вряд ли их сортирует (а может и сортирует), но даже при хаотичном порядке объектов часть пикселей всё же откинется. если ты юзаешь альфатест/клип/дискард, то видюхе придётся все равно все шейдеры всех пикселей прогонять, чтобы узнать где альфа, как минимум нужно текстуры с этой альфой прочитать. ну и если ты используешь альфаблендинг (альфу с полупрозрачностью), то движку необходимо рисовать объекты от дальних к ближним, так же как если бы ты клал полупрозрачные слои друг на друга в фотошопе - тут из принципа нельзя ничего откинуть, и это самое жестокое по производительности. на твоём месте я бы склеивал в рантайме массивы травы сразу по дофига пучков в цельный меш и не лодил бы никак по сути (точнее просто вырубал видимость их совсем вдалеке). зато так будет один объект/меш/сюрфейс - один вызов отрисовки для видюхи вместо тысячи, это может заметно повлиять на скорость. |
Ответ: Советы по оптимизации
Цитата:
Я к чему распинаюсь, у меня карта загружается с обычного рисунка 64х64 пикселя террайном, где 60% поверхности под водой )), и в принципе это для первого уровня должно хватить) Ну максимум я пока расчитываю карту 256х256, с 70% суши, и 30% растительностью, это примерно 20К мешей, с автофейдом максимум 70-80 будет рендериться допустим 7к мешей. Реально ли обойтись без сложностей? |
Ответ: Советы по оптимизации
а еще в хорсе есть инстансинг!
|
Ответ: Советы по оптимизации
По пути еще другой вопросик )
Как ты относишься к тому чтобы обрабатывать всё по фреймам - т.е. frame=frame+1 if frame>10 then frame=1 If (frame mod 10)=1 then часть операций 1 endif If (frame mod 10)=2 then часть операций 2 endif Если не заметно глазу конечно, ели заметно допустим каждый 2-й 3-й кадр. Как такой вариант? |
Ответ: Советы по оптимизации
Да Holydel, я пробывал его, не почуствовал особого прироста производительности.. Может руки опять же не оттуда )
|
Ответ: Советы по оптимизации
Цитата:
Цитата:
|
Ответ: Советы по оптимизации
Цитата:
|
Ответ: Советы по оптимизации
Не цепляйся к словам! ))
Не, если честно, должна быть очень полезной такая оптимизация, вот представь, допустим 1000 экземпляром разного типа, с десятком полей, и тебе надо будет не каждый проход их проверять, а например в первый кадр проверил траву, 2-й кадр деревья и т.д. Посадки фпс по процу точно не будет |
Ответ: Советы по оптимизации
Ну, в общем понаступав на пару десятков граблей я пришел к выводу, что в блитце самой большой проблемой является большое количество ентитей. Особенно я это понял когда 300-400 рисованных облачков с альфой начало хавать фпс.
Начал разбираться с синглсёрфом. с 10000 мешей начал снижаться фпс, и то не из-за рендера, а из-за большого списка. Сделал перемещение x,y,z, поворот y, а вот поворот х работоет коряво. Если есть у кого рабочий вариант, покажите плиз. выглядит код так Код:
Global mesh=xCreateMesh() |
Ответ: Советы по оптимизации
ржачна. мне нравится. ты только предупреждай, чтобы люди больные эпилепсией это не смотрели.
|
Ответ: Советы по оптимизации
Че вы наезжаете?! Здесь сосредоточено 10000 мешиков. У меня на игровом буке фпс было 50 (и то тормозит не из-за рендера, а из-за того что надо пройти по 10к записей за каждый проход), правда в начале пока не сдвинешь камеру лагает сильно, не понятно с чем связано.
Подскажите как поворачивать вертексы по оси Х, у меня в примере должны крутиться, а они только слегка наклоняются |
Ответ: Советы по оптимизации
Блин, да суть то не в том как выглядит, а как работает )
|
Ответ: Советы по оптимизации
на самом деле нормально работает. шустро.
просто медия слабовата. а в том примере, где 5 лямов - Эти 5 лямов были лишь со слов автора. Хотя выглядело куда круче, да. посчитаем: 1 - пропускная скорость шинф PCI-E 16x на процессорах с архитектурой SandyBridge составляет 5GB/s. или 5 368 709 120 бит в секунду. кажется много, но это всего лишь 671 088 640 байт в секунду. На один спрайт нужно два триса. это 6 вершин. на каждую вершину нужно 12 байт на позицию, 8 байт на текстурные координаты. я опустил нормали и цвет, но может они в блице и не используются. хз. итого 120 байт на трис, на 5 000 000 спрайтов нужно соответственно 600 000 000 байт. итого такая сцена с отправкой каждый кадр всех вершин на гпу по шине будет работать со скоростью чуть более одного фпс. а так-как у автора было значительно быстрее, значит за этими цифрами пряталась какая-лиюо хитрость. Или данные обновлялись не все, или было 5 000 000 травинок по сотне на каждый спрайт, или еще что-то. |
Ответ: Советы по оптимизации
Я тоже ее видел. Я согласен что она выглядит круто.
Я не согласен с приводимыми автором цифрами. Ибо они противоречат теоретическим пределам современного железа. |
Часовой пояс GMT +4, время: 02:33. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot