?

Log in

null_ptr's Journal

> recent entries
> calendar
> friends
> My Website
> profile
> previous 20 entries

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 раза, а для того чтобы рисовать полупрозрачные поверхности в отдельные семплы используется буфер трафарета.
С помощью альфа теста и шейдера, который рисует сеточку следующего вида на уровне отдельных пикселей:
grid shader
буфер трафарета заполняется значениями 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.
DeprecatedCollapse )
Crossposted from blog.gamedeff.com

(10 comments | comment on this)

Monday, August 4th, 2008
1:06 am - Путешествую - Хорватия и Италия
Второго августа возвратился домой после недельного отдыха в Хорватии.
Большую часть времени находился в курортном городе Рабац, но также посетил города Пореч, Риека, Пула и Ровинь, остров Црес и на один день съездил в Венецию.

В рот мне ноги, 7Мб картинок!Collapse )

(1 comment | comment on this)

Sunday, July 20th, 2008
2:46 am - DXSDK

(comment on this)

Tuesday, July 15th, 2008
11:44 am - Использование хардварной тесселяции карт АТИ в DX9
Возможно вы слышали, что в ДХ10 видеокартах АТИ, начиная с серии 2*** имеется хардварный тесселятор геометрии. Кто-то, возможно, видел его работу в GPU Mesh Mapper или Render Monkey 1.81. Но до сих пор я не видел информации ни от АМД ни от кого другого по поводу того, как его использовать. Но вчера мне наконец удалось заставить его работать в своём приложении.

Так как же его использовать?Collapse )

(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 - Рендер в демке теней от полупрозрачных объектов.
Несколько человек пожелало, чтобы я написал, как всё сделано в этой демке. Свободное время есть, так что решил их порадовать. И так, пнём дохлую лошадь ещё раз.Collapse )

(9 comments | comment on this)

2:07 am - Интересности в OpenGL драйвере АТИ.
Иногда инетересно просто просмотреть, какие строки текста встречаются среди машинного кода в драйвере. Можно найти разные интересные вещи.

Как например,Collapse )
Впрочем, полностью судить о функциональности по одним только строчкам в драйвере нельзя, и время покажет, что на самом деле работает.

(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;
Собственно :)

(4 comments | comment on this)

Saturday, June 21st, 2008
9:07 pm - Интересности текстурной выборки на картах АТИ.
Довольно давно делал ручную билинейную фильтрацию в шейдере (можно использовать для сглаживания теней). Но в результате получил довольно страшную картину на своей видеокарте ATI 2600XT.
ATI - Where nightmares come to lifeCollapse )

Отписывал это на devrel@ati.com, несколько месяцев молчат, но это вроде типично.
Собираюсь даже купить ATI 4*** и волнуюсь, а исправили ли они там это странное поведение (Добавление(12 июля): нет, не исправили).
А может ну их нафиг? :)

(3 comments | comment on this)

Friday, June 20th, 2008
4:22 pm - Выпускной, Ура!
Наконец-то наступил мой выпускной в школе. 12 лет учёбы в ней теперь позади.

подробнейCollapse )
Скоро будет вторая часть - Выпускной Вечер. Будем праздновать до пяти утра в Юрмале.

Настроение - позитивное.

(3 comments | comment on this)

Thursday, June 19th, 2008
1:14 am - Векторное представление шрифтов на GPU - демка.
По просьбе пары человек написал небольшую демку, показывающую рендер векторного шрифта.

Архив размером 109кб доступен по ссылке.

Перемещать плоскость можно перетягивая её или нажимая стрелки на клавиатуре.
Приближаться и удаляться можно колёсиком мыши или кнопками +/-.
Кнопка "A" включает импровизированный суперсемплинг 8х (восьмикратный рендер с субпиксельными смещениями и адитивным блендингом).
На скорость влияет так же существенно, как и на качество:
Comparison of simple rendering vs SSAA
До кучи в архиве присутствуют исходники, хотя там мало что может заинтересовать.

D3DX не требуется.

На ATI 2600XT в начальной позиции получаю 640\92 fps (no SSAA\SSAA). Если не лень, можете написать ситуацию на своём железе.

(3 comments | comment on this)

Tuesday, June 17th, 2008
1:46 am - Векторное представление шрифтов на GPU.
В голове возникла идея написать рендер текстур, которые содержат в себе не обычную информацию о цвете, а информацию о векторах, по которым можно составить изображение, которое можно увеличивать без потери деталей.
Как это делалосьCollapse )

В разработке помогли некоторые идеи из доки Texel Programs For Random-Access Antialiased Vector Graphics от Hugues Hoppe, Microsoft Research.

(4 comments | comment on this)

Monday, October 22nd, 2007
5:25 pm - Неделя игр
  На компе очень неожиданно начали появляться и отвлекать от домашних проектов новые игры.
Crysis, Portal и другиеCollapse )

(2 comments | comment on this)

> previous 20 entries
> top of page
LiveJournal.com