|
|
Friday, December 31st, 2010
| |
8:31 pm - Пока, 2010-ый
|
В этом году больше всего порадовали следующие фильмы: Inception Shutter Island Scott Pilgrim vs. the World
Всех с Новым Годом!
|
|
(comment on this)
|
| Saturday, January 17th, 2009
| |
2:07 pm - Deferred Shading, AA, alpha blending. (demo, DX9)
|
zeux потребовал переписать демку на ДХ9, и подкинул идею для реализации.
Итак, в ДХ9 отдельные семплы из буфера читать нельзя, и поэтому пришлось сделать SSAA. G-Buffer увеличен в 4 раза, а для того чтобы рисовать полупрозрачные поверхности в отдельные семплы используется буфер трафарета. С помощью альфа теста и шейдера, который рисует сеточку следующего вида на уровне отдельных пикселей:
 буфер трафарета заполняется значениями 1 2 4 и 8. Заполнение происходит всего один раз.
Теперь, задавая stencil ref и mask, можно рисовать поверхности в выбранные семплы G-buffer'a.
Объёмное освещение убрал, а то слишком тяжелый шейдер.
В качестве оптимизации используется stencil early-out или early-z (переключается клавишой 'O'). Перед отрисовкой полноэкранного квада с расчётом освещения, исполняется шейдер, который совместно с альфа-тестом маскирует те пиксели, которым нужен расчёт освещения для каждого семпла из блока 2х2. Такую же оптимизацию добавил в ДХ10 демку.
На картах, где не работает stencil early-out (GF6, GF7) нужно переключится на early-z. Для запуска необходима карта GeForce6***+ или RadeonX***+.
Архивчик с исходниками, 341kb


Некоторые результаты: 7600 GS, GT: 2-4fps 8600 GT: 2-55 fps 9600 GT: 10-200 fps
HD 2600: 25-70 fps HD 4850: 110-232 fps
На НВ шейдер с per-sample frequency расчётом выполняется намного дольше, хотя он всего в 4 раза тяжелее. Весьма печально.
Клавиша 'P' - вкл\выкл оптимизацию с early stencil test\early-z. Клавиша 'G' - вкл\выкл отрисовку стёкл, оставив только DS+AA. Клавиша 'O' - переключатся между early-z и early-stencil тестами. (минимальный фпс это никак не повышает)
|
|
(4 comments | comment on this)
|
| Tuesday, January 13th, 2009
| |
5:09 pm - Deferred Shading, AA, alpha blending. (demo, DX10)
|
Играл в GTA4, и не мог не заметить повсеместного использования функции Alpha To Coverage. В последнее время её использовали для создания AA на треугольниках с альфа-тестом1, но в игре никакого сглаживания нету, а фича используется для «плавного» возникновения объектов.
И тут в голову пришла идея сделать deferred shading c полупрозрачными поверхностями и полноэкранным сглаживанием без разложения по слоям, как например в depth peeling2. Для реализации нужно уметь получать значения отдельных семплов multisampled буфера, поэтому, вооружившись DX help и туториалами 01, 02 начал писать демку под DX10.
Первоначальная идея заключалось в том, что заполняя G-buffer, для полупрозрачных поверхностей будем задавать маску (SampleMask) с количеством активных семплов таким, чтобы оно по отношению к общему количеству было приблизительно равно значению прозрачности (для ААх8 возможны 8 значений прозрачности). Сразу возникли проблемы с прозрачными элементами в несколько слоёв. Пришлось руками задавать разные маски семплов. И следить за качеством результата.
В шейдере освещения для каждого семпла считается двустороннее диффузное освещение, блики и добавляется упрощённое объёмное освещение3. Вес каждого семпла – 1/количество. Понял, что можно присваивать каждому семплу разные веса, а именно – рисовать полупрозрачный объект только в один семпл при заполнении G-buffer’а и по особой формуле преобразовывать прозрачность в весовой коэффициент. Проблему order-independent transparency это не решило, но теперь полупрозрачная поверхность могла занять выделенное ей место. Ну и прозрачность больше не ограничена 8 значениями. В результате, владельцам видеокарт с поддержкой DX10 и установленной Vista\Win7 предоставляется демка с исходниками: Архив, 335кб
Кадры:



Демка just for fun и на серьёзный метод не претендует. Памяти на G-buffer огромное количество, нагрузка на GPU отгромная. Проверена на HD 2600 (20fps) и HD 4850 (100fps), NV не удалось достать. Если производительности хватает, в шейдере LightPS можно поставить до 32 источников света.
1 http://developer.download.nvidia.com/SDK/9.5/Samples/samples.html#AntiAliasingWithTransparency 2 http://developer.download.nvidia.com/SDK/10.5/direct3d/samples.html#StencilRoutedKBuffer 3 http://humus.name/index.php?page=Comments&ID=44&start=16
|
|
(7 comments | comment on this)
|
| Tuesday, October 7th, 2008
| |
8:18 pm - Путешествую - Санкт-Петербург
|
На выходные, начиная с пятницы, приехал в этот замечательный город.
В первые два дня посетил различные интересные места в центре города. Обойти всё за такое время, очевидно, невозможно, но это не первая моя поездка, и конечно, не последняя. В воскресенье встретился с zeux'ом, с которым поехали в Петергоф и зачётно провели весь день. А вечером зашли домой, где отведали кролика с картошкой, которого он сам и приготовил (до (предположительно), после). Осталось несколько поводов приехать туда ещё раз.
Фотографии как-то не охото выкладывать, но может быть, добавлю позже.
|
|
(10 comments | comment on this)
|
| Friday, September 12th, 2008
| |
1:23 am - Хардварная тесселяция, пример использования.
|
Про доступность хардварной тесселяции с использованием ДХ9 в картах АТИ, начиная с 2*** я уже писал. И тут заходит ко мне в блог человек, и спрашивает не просто описание, а рабочий пример. Ну, свободного времени было достаточно, так что написал простейший семпл. Рисуются четыре квада, с анимацией вершин в шейдере. Если интересно (и имеется нужное железо), то скачиваем архив размером 15кб и смотрим. зажмите 'W' чтобы включить wireframe. зажмите 'N' чтобы уменьшить уровень тесселяции до минимального (это не отключает тесселяцию полностью, треугольники разбиваются на 6 штук).
Результат в определённый момент может выглядеть так: http://trash.egoengine.com/tessscreen.jpg Картинка по размеру вышла больше архива.
D3DX не нужен, но требуется msvcrt80
|
|
(2 comments | comment on this)
|
| Thursday, August 14th, 2008
| |
12:40 am - Fully Ramblomatic
|
Решил поделиться с общественностью играми с данного сайта.
Обращаю особое внимание на квест с интересным сюжетом и геймплеем, состоящим из чётырёх частей: 1) 5 Days A Stranger - домушник вламывается в, казалось бы, покинутое здание, но обнаруживает себя заключённым в доме неведомой силой совместно с четырьмя незнакомцами. 2) 7 Days A Skeptic - спустя 400 лет, разведывательный космический корабль Мефистофель обнаруживает в космосе кое-что, что следовало оставить в покое. 3) Trilby's Notes - соединяет сюжетные линии двух предыдущих частей. 4) 6 Days A Sacrifice - инспектор Теодор Декабе отправляется в штаб-квартиру религиозного культа, и впоследствии обнаруживает себя впутанным в махинации судьбы.
Игры сложные (в третьей части действия производятся путём набора команд на клавиатуре), но пройти их несомненно стоит. Если зашли в тупик, можно поискать солюшен.
Также следует отметить пару аркадных игр (но не без сюжета!): Trilby: The Art Of Theft - играем за того самого вора из квадрологии квестов. Ураганный геймплей :) 1213 - состоит из трёх эпизодов.
PS. А ещё автор создаёт прикольные видео-ревью различных игр.
|
|
(comment on this)
|
| Tuesday, August 12th, 2008
| |
11:12 pm - OpenGL 3.0 - Fail?
|
11 августа на всеобщее обозрение выложили спецификацию долгожданного OpenGL 3.0, и разочаровали почти всё сообщество пользователей GL.
Всякие мечты о новом API, объектной модели, компиляции шейдеров в бинарный код и переработанном GLSL оказались разбиты. В общем, повторилась ситуация, знакомая нам по OpenGL 2.0. ( Deprecated ) Crossposted from blog.gamedeff.com
|
|
(10 comments | comment on this)
|
| Monday, August 4th, 2008
| |
1:06 am - Путешествую - Хорватия и Италия
|
Второго августа возвратился домой после недельного отдыха в Хорватии. Большую часть времени находился в курортном городе Рабац, но также посетил города Пореч, Риека, Пула и Ровинь, остров Црес и на один день съездил в Венецию.
( В рот мне ноги, 7Мб картинок! )
|
|
(1 comment | comment on this)
|
| Sunday, July 20th, 2008
| |
2:46 am - DXSDK
|
|
| Tuesday, July 15th, 2008
| |
11:44 am - Использование хардварной тесселяции карт АТИ в DX9
|
Возможно вы слышали, что в ДХ10 видеокартах АТИ, начиная с серии 2*** имеется хардварный тесселятор геометрии. Кто-то, возможно, видел его работу в GPU Mesh Mapper или Render Monkey 1.81. Но до сих пор я не видел информации ни от АМД ни от кого другого по поводу того, как его использовать. Но вчера мне наконец удалось заставить его работать в своём приложении.
( Так как же его использовать? )
|
|
(comment on this)
|
| |
12:37 am - Температура ATI 4850
|
В посте про покупку этой карты, жаловался на её температуру.
К счастью, решение нашлось. В Catalyst Control Center снимаем блокировку с ATI OverDrive. Заходим в менеджер профилей, где создаём новый, включаем в одном из табов создание шортката для включения профиля, сохраняем. В папка_пользователя\AppData\Local\ATI\ACE\ находим XML файл с именем нашего профиля. Открываем его в Notepad, ставим FanSpeedAlgorithm - Manual FanSpeedPercentTarget_0 - желаемая скорость от максимальной. Шорткат пихаем с рабочего стола в стартап.
Сперва попробовал 100%, сразу послышалось, как включился и заработал реактивный двигатель. Так что в прошлом сообщении я немного соврал про бесшумность, просто он никогда до 100% не доходил (может до 50% только). Поставил 60%, шумок небольшой есть, но мне всёравно, я за компом в наушниках. Зато температура в Idle упала с 78 до 51, а при долгой нагрузке на максимум, поднимается до 75 вместо прежних 86.
Чувствую себя теперь спокойней :)
|
|
(4 comments | comment on this)
|
| Saturday, July 12th, 2008
| |
10:56 pm - Рендер в демке теней от полупрозрачных объектов.
|
|
| |
2:07 am - Интересности в OpenGL драйвере АТИ.
|
Иногда инетересно просто просмотреть, какие строки текста встречаются среди машинного кода в драйвере. Можно найти разные интересные вещи.
( Как например, ) Впрочем, полностью судить о функциональности по одним только строчкам в драйвере нельзя, и время покажет, что на самом деле работает.
|
|
(comment on this)
|
| Wednesday, June 25th, 2008
| |
6:16 pm - ATI Radeon 4850
|
Решил порадовать себя, и сегодня приобрёл недопродукт (с) shtirlic404 ATI HD4850. Просто нормальные продукты от NVidia стоят в пару-тройку раз дороже, а тратить такие средства очень не хочется.
Видюха стоила 220$, что совсем немного превысило рекомендованную цену. Она несколько длиннее моей, теперь уже старой ATI 2600XT. Пришлось снять кулер с оперативной памяти, благо он там висел скорее для красоты (закрытой чёрной крышкой :), чем для исполнения основной функции. Волновался, что мой БП на 500W не потянет данную карту, но в мануале нашёл, что требуется всего 450W, что сразу разрядило нервную обстановку.
Неприятно удивила температура чипа. 75 градусов в 2Д, это как-то больше 45 у 2600ХТ. Пишут что это нормально. Ещё пишут, что это для того, чтобы кулер не шумел. Я бы с радостью выставил руками максимальные обороты, на которых кулер всё равно не слышно, а видеокарта не так греется, но в Control Center такого контроля не дают. Утилиты вроде RivaTuner'a и ATI Tray Tools пока не поддерживают новое семейство. Так что минус.
Работает видеокарта быстро. Особенно в сравнении с 2600XT :). В общем, отношение цена/качество отличное.
|
|
(1 comment | comment on this)
|
| Tuesday, June 24th, 2008
| |
12:17 am - ++age;
|
|
| Saturday, June 21st, 2008
| |
9:07 pm - Интересности текстурной выборки на картах АТИ.
|
Довольно давно делал ручную билинейную фильтрацию в шейдере (можно использовать для сглаживания теней). Но в результате получил довольно страшную картину на своей видеокарте ATI 2600XT. ( ATI - Where nightmares come to life )
Отписывал это на devrel@ati.com, несколько месяцев молчат, но это вроде типично. Собираюсь даже купить ATI 4*** и волнуюсь, а исправили ли они там это странное поведение (Добавление(12 июля): нет, не исправили). А может ну их нафиг? :)
|
|
(3 comments | comment on this)
|
| Friday, June 20th, 2008
| |
4:22 pm - Выпускной, Ура!
|
Наконец-то наступил мой выпускной в школе. 12 лет учёбы в ней теперь позади.
( подробней ) Скоро будет вторая часть - Выпускной Вечер. Будем праздновать до пяти утра в Юрмале.
Настроение - позитивное.
|
|
(3 comments | comment on this)
|
| Thursday, June 19th, 2008
| |
1:14 am - Векторное представление шрифтов на GPU - демка.
|
По просьбе пары человек написал небольшую демку, показывающую рендер векторного шрифта.
Архив размером 109кб доступен по ссылке.
Перемещать плоскость можно перетягивая её или нажимая стрелки на клавиатуре. Приближаться и удаляться можно колёсиком мыши или кнопками +/-. Кнопка "A" включает импровизированный суперсемплинг 8х (восьмикратный рендер с субпиксельными смещениями и адитивным блендингом). На скорость влияет так же существенно, как и на качество:
 До кучи в архиве присутствуют исходники, хотя там мало что может заинтересовать.
D3DX не требуется.
На ATI 2600XT в начальной позиции получаю 640\92 fps (no SSAA\SSAA). Если не лень, можете написать ситуацию на своём железе.
|
|
(3 comments | comment on this)
|
| Tuesday, June 17th, 2008
| |
1:46 am - Векторное представление шрифтов на GPU.
|
В голове возникла идея написать рендер текстур, которые содержат в себе не обычную информацию о цвете, а информацию о векторах, по которым можно составить изображение, которое можно увеличивать без потери деталей. ( Как это делалось )
В разработке помогли некоторые идеи из доки Texel Programs For Random-Access Antialiased Vector Graphics от Hugues Hoppe, Microsoft Research.
|
|
(4 comments | comment on this)
|
| Monday, October 22nd, 2007
| |
5:25 pm - Неделя игр
|
|
|
|
|
|