Сегодня по работе оптимизировал одну функцию в движке, длиной строк в 20. Всякие if-ы, array compaction, вызов glUniform*()... Беда в том, что эта функция вызывается много тысяч раз (> 50k), и это создаёт нагрузку на CPU и драйвер.
Надо было оптимизировать. Пораскинув мозгами, я вдруг понял, что можно применить принцип "лучше день потерять, зато потом за пять минут долететь". Осознав, что конкретно для этой функции можно сделать precompute данных, что можно реплицировать входные константы в несколько массивов и таким образом избежать "неизбежного" array compaction, что можно не делать switch по типу, а хранить адрес нужной функции, то переписав код функции и сделав рефакторинг уложился в одну строчку - тот самый вызов glUniform*() по адресу с предрассчитанными аргументами.
Ещё одним "открытием" стало то, что program object кэширует свои юниформы, так что данные в них выживают после смены программ. Благодаря этому оказалось возможным сделать проверку на предмет изменения данных и не телипать лишний раз API/драйвер если данные не изменились. Замер показал, что кол-во необходимых вызовов снижается до 5-6k, что при 400 DIP-ах является вполне приемлемым.
пятница, 23 июля 2010 г.
воскресенье, 18 июля 2010 г.
Глянец
Зарплата теперь позволяет мне приобретать такие штучки, на которые раньше я только пускал слюни. Вот и приобрёл для своего рабочего места монитор Samsung XL2370 с "ЭЛ-И-ДИ" подсветкой матрицы, т. к. пялиться в дешёвенькую девятнашку от Dell-a уже нет мочи: старый, маленький, VGA-DVI переходник мылит шрифты, ублюдский макосёвый интерфейс на этом мониторе еле помещается...
Я конечно, понимаю Ubisoft, да и любая другая компания в такой ситуации сэкономит - типа видно что-то, да и ладно! А т. к. крайним в такой ситуации остался именно я (начальству пох - у него бюджет), и пялиться в это "чудо" мне по 8 часов в день пять дней в неделю (четверть жизненного времени), то не долго размышляя, полазил по розетке и выбрал приглянувшийся девайс. Ну какой, какой смысл давить жабу, если крайним остался я сам? Всё равно он будет мой (хоть и на работе), смогу в любое время забрать, если что. Монитор, конечно, вышел дороговатым (барыги накрутили почти до 400$), зато покупаются такие девайсы с прицелом на 3-4 года эксплуатации (да и на глазах, как известно, не экономят). К тому же я хочу приходить на работу с радостью, зная, что там меня ждёт не дождётся кравивая и милая глазам вещь. Да, я таков! :)
Всё, довольно на сегодня.
P. S. Завтра ещё может быть выложу фотки монитора "вживую" и опишу его достоинства и недостатки.
Update
Кое-как нашёл время сфоткать обновку. На экране - заставка по мотивам Матрицы.
Я конечно, понимаю Ubisoft, да и любая другая компания в такой ситуации сэкономит - типа видно что-то, да и ладно! А т. к. крайним в такой ситуации остался именно я (начальству пох - у него бюджет), и пялиться в это "чудо" мне по 8 часов в день пять дней в неделю (четверть жизненного времени), то не долго размышляя, полазил по розетке и выбрал приглянувшийся девайс. Ну какой, какой смысл давить жабу, если крайним остался я сам? Всё равно он будет мой (хоть и на работе), смогу в любое время забрать, если что. Монитор, конечно, вышел дороговатым (барыги накрутили почти до 400$), зато покупаются такие девайсы с прицелом на 3-4 года эксплуатации (да и на глазах, как известно, не экономят). К тому же я хочу приходить на работу с радостью, зная, что там меня ждёт не дождётся кравивая и милая глазам вещь. Да, я таков! :)
Всё, довольно на сегодня.
P. S. Завтра ещё может быть выложу фотки монитора "вживую" и опишу его достоинства и недостатки.
Update
Кое-как нашёл время сфоткать обновку. На экране - заставка по мотивам Матрицы.
четверг, 15 июля 2010 г.
понедельник, 5 июля 2010 г.
No Doubt - Running
Нашёл у No Doubt прекрасную композицию - Running. Очень мило, и можно увидеть редкие кадры - историю No Doubt "в картинках".
Конец истории
Ну вот наконец и я добрался до IMAX-a и посмотрел Toy Story 3.
Что тут сказать - пожалуй, один из самых удачных мультфильмов Pixar, (наравне с великолепными Ratatouille и WALLE), завершивший трилогию Историй Игрушек.
Срежессирован и нарисован мастерски. Не думаю, что большинству зрителей интересны такие тонкости, но замечу, что игрушки Энди в 2010 выглядят точно так же, как и в 1995, что не может не радовать. Зато все усовершенствования RenderMan-а, внедрённые за эти годы, создатели применили в рендеринге окружения - объёмный свет, яркое солнце, сочная зелёная трава, DoF (не очень, кстати, уместный в стерео), и т. п. Больше деталей в людях, больше анимации в действиях, одним словом - мир Toy Story 3 ближе к настоящему, чем таковым был пластиковый мир первой серии, но вот сами игрушки, по задумке кудесников из Pixar, остались неподвластны времени.
Сюжет получился, на мой взгляд, удачным - без провалов и нелепиц, действия плавно перетекают одно в другое, постепенно подводя зрителя к финалу трилогии. Честно говоря, у меня в конце глаза становились влажными, т. к. я понимал, что Pixar показывают - здесь они навсегда прощаются со своими (может быть, самыми любимыми), творениями. Иногда хотелось крикнуть им: "Стойте, нет! Что же вы делаете, так нельзя!!!" Для тех, кто уже посмотрел мультфильм, в комментарии написан спойлер, для остальных же скажу, что всё закончилось в итоге благополучно (а как же иначе, мультик ведь детский).
Для граждан незалежной Украины: украинское озвучивание получилось на редкость хорошим и слух не резало - я даже не замечал, на каком языке ведутся диалоги. Одним словом, к озвучиванию подошли добросовестно. А ставший традиционным короткометражный мультфильм (на этот раз - Day & Night) озвучил... Арсений Яценюк, что лично мне было очень приятно. Уж не знаю, чья это была идея, и кто кому заплатил, но PR вашел удачным :)
Ну вот и всё, конец Истории Игрушек. Вердикт: успех. Если кто-то в детстве увлекался этим мультиком - идти однозначно.
P.S. Пару слов об IMAX. Ходил на этот формат впервые (Blockbuster в Киеве), стерео хорошее, без "призраков", хотя я ожидал немного большего. Сперва есть ощущение плоскости некоторых сцен, но через полчаса сознание приспосабливается и начинает охотнее верить в трёхмерность картинки. Экран как бы "нависает" над сидящими ниже зрителями, иногда кажется, что до него можно дотронуться рукой. Яркость из-за очков падает прилично.
Что тут сказать - пожалуй, один из самых удачных мультфильмов Pixar, (наравне с великолепными Ratatouille и WALLE), завершивший трилогию Историй Игрушек.
Срежессирован и нарисован мастерски. Не думаю, что большинству зрителей интересны такие тонкости, но замечу, что игрушки Энди в 2010 выглядят точно так же, как и в 1995, что не может не радовать. Зато все усовершенствования RenderMan-а, внедрённые за эти годы, создатели применили в рендеринге окружения - объёмный свет, яркое солнце, сочная зелёная трава, DoF (не очень, кстати, уместный в стерео), и т. п. Больше деталей в людях, больше анимации в действиях, одним словом - мир Toy Story 3 ближе к настоящему, чем таковым был пластиковый мир первой серии, но вот сами игрушки, по задумке кудесников из Pixar, остались неподвластны времени.
Сюжет получился, на мой взгляд, удачным - без провалов и нелепиц, действия плавно перетекают одно в другое, постепенно подводя зрителя к финалу трилогии. Честно говоря, у меня в конце глаза становились влажными, т. к. я понимал, что Pixar показывают - здесь они навсегда прощаются со своими (может быть, самыми любимыми), творениями. Иногда хотелось крикнуть им: "Стойте, нет! Что же вы делаете, так нельзя!!!" Для тех, кто уже посмотрел мультфильм, в комментарии написан спойлер, для остальных же скажу, что всё закончилось в итоге благополучно (а как же иначе, мультик ведь детский).
Для граждан незалежной Украины: украинское озвучивание получилось на редкость хорошим и слух не резало - я даже не замечал, на каком языке ведутся диалоги. Одним словом, к озвучиванию подошли добросовестно. А ставший традиционным короткометражный мультфильм (на этот раз - Day & Night) озвучил... Арсений Яценюк, что лично мне было очень приятно. Уж не знаю, чья это была идея, и кто кому заплатил, но PR вашел удачным :)
Ну вот и всё, конец Истории Игрушек. Вердикт: успех. Если кто-то в детстве увлекался этим мультиком - идти однозначно.
P.S. Пару слов об IMAX. Ходил на этот формат впервые (Blockbuster в Киеве), стерео хорошее, без "призраков", хотя я ожидал немного большего. Сперва есть ощущение плоскости некоторых сцен, но через полчаса сознание приспосабливается и начинает охотнее верить в трёхмерность картинки. Экран как бы "нависает" над сидящими ниже зрителями, иногда кажется, что до него можно дотронуться рукой. Яркость из-за очков падает прилично.
среда, 30 июня 2010 г.
GS on 4330
Вчера наваял тестовую реализацию поиска силуэтов в geometry shader (реализация-то у меня и раньше была, но все коды остались далеко дома, пришлось всё делать заново).
Цифры такие:
Primitive_______Faces_____FPS
Sphere__________960______1220
Sphere__________3868_____1013
ChamferBox______4784_____962
Sphere__________16128____548
Т. е. даже для высокополигональных моделей (ну не 100 тысяч полигонов, конечно) low-end HW показывает хорошую скорость. К слову, шейдинг той же сферы вызывает намного более сильное падение числа кадров, нежели увеличение нагрузки на GS.
Думается, hi-end HW сможет без труда обрабатывать в GS до полумиллиона треугольников.
Цифры такие:
Primitive_______Faces_____FPS
Sphere__________960______1220
Sphere__________3868_____1013
ChamferBox______4784_____962
Sphere__________16128____548
Т. е. даже для высокополигональных моделей (ну не 100 тысяч полигонов, конечно) low-end HW показывает хорошую скорость. К слову, шейдинг той же сферы вызывает намного более сильное падение числа кадров, нежели увеличение нагрузки на GS.
Думается, hi-end HW сможет без труда обрабатывать в GS до полумиллиона треугольников.
суббота, 26 июня 2010 г.
Penumbra Construction
Взял свои старые (2008 г) разработки в конструировании пенумбры в GS, переписал и соптимизировал код.
Видео, как это работает для прямоугольного источника света:
Кстати, я как-то возился со своей демкой WALLE (надо выложить архив с ней), и выяснилось, что боттлнеком в ней был вовсе не pixel shader, а geometry shader. Было это на видеокарте Radeon HD 2400, в которой эта стадия тормозила безбожно, так же как и на первых G8x от NVidia. Но из тестов на своей HD 5770 я сделал вывод, что geometry shader стал работать ощутимо быстрее, чем раньше, и теперь его можно относительно безболезненно использовать даже в случае сложной геометрии.
Видео, как это работает для прямоугольного источника света:
Кстати, я как-то возился со своей демкой WALLE (надо выложить архив с ней), и выяснилось, что боттлнеком в ней был вовсе не pixel shader, а geometry shader. Было это на видеокарте Radeon HD 2400, в которой эта стадия тормозила безбожно, так же как и на первых G8x от NVidia. Но из тестов на своей HD 5770 я сделал вывод, что geometry shader стал работать ощутимо быстрее, чем раньше, и теперь его можно относительно безболезненно использовать даже в случае сложной геометрии.
Подписаться на:
Сообщения (Atom)


