Gamedev LectureСтатьи

Лекция #21. TES4: Oblivion без прикрас. Технологии рендера [Лектор - Zeux] (5 стр)

Автор:

[22:30] <Zeux> пункт 14
[22:31] <Zeux> здесь рендерятся самые дальние деревья.
[22:31] <Zeux> это - самый технологичный момент сегодняшней лекции!!!
[22:31] <Zeux> здесь рендерится не 1 билборд за кадр!
[22:31] <Zeux> а несколько!!!!!!
[22:31] <Zeux> и есть псевдо-инстансинг на позиции!!!
[22:31] <Zeux> я был в шоке, когда увидел, да.
[22:32] <Zeux> правда, рендерится по 2-4 дерева за DIP
[22:32] <Zeux> но у них разные текстуры, а атласинг они не юзают.

[22:33] <Zeux> вот, пункт 15 - это вода. Эти части воды не видны, потому что куллинг у них... не самый лучший, я уже говорил :)
[22:33] <Zeux> рассмотрим ее позже.

[22:33] <Zeux> пункт 16.
[22:33] <Zeux> небо.
[22:33] <Zeux> небо - это скайдом.
[22:33] <Zeux> сначала рисуется текстура цвета неба - думаю, скаттеринг, но может и артворк, надо смотреть ресурсы
[22:34] <Zeux> на ней же солнце
[22:34] <Zeux> дальше в несколько слоев рисуются облака
[22:34] <Zeux> тоже скайдомом
[22:34] <Zeux> я видел в два слоя
[22:34] <Zeux> может есть и больше
[22:34] <Zeux> облака - точно артворк.

[22:34] <Zeux> пункт 17. еще ландшафт
[22:34] <Zeux> (кошмар, да?)
[22:35] <Zeux> аналогичен пункту 3.

[22:35] <Zeux> пункт 18.
[22:35] <Zeux> трава у них пучками
[22:35] <Zeux> каждый пучок - это штук 20 треугольников, наверное
[22:35] <Zeux> не вертикально расположенных, а под наклоном в разные стороны
[22:35] <Zeux> все это дело колеблется ветром
[22:36] <Zeux> (так же, как деревья)
[22:36] <Zeux> и тут (!!!) тоже есть псевдо-инстансинг
[22:36] <Zeux> в пиксельном шейдере обычное наложение шадоу мапа
[22:36] <Zeux> (кстати, это только если в настройках поставлен параметр "отбрасывать тени на траву")

[22:37] <Zeux> так, я сразу скажу, что в пункте 20 все так же, как в пунктах 18 и 9, а пункт 21 ничем не отличается от hdr-рендеринга в самой первой части

[22:37] <Zeux> ну и про воду давайте
[22:38] <Zeux> в принципе, там обычный Fresnel
[22:38] <Zeux> я честно пытался вникнуть в детали, переписал шейдер в 84 инструкции
[22:38] <Zeux> нифига я не вникнул
[22:38] <Zeux> вкратце скажу.
[22:38] <Zeux> и шейдеры покажу.
[22:38] <Zeux> значит, в VS считается:
[22:39] <Zeux> 1) позиция в object-координатах
[22:39] <Zeux> 2) позиция в world-координатах
[22:39] <Zeux> 3) какая-то магия - если я правильно понял, это плоскости отсечения, но ни разу не уверен
[22:39] <Zeux> 4) текстурные координаты (смещенные)
[22:40] <Zeux> в PS комбинируются выборка из рефлекшн-мапа (построенной на этапах 1-2), нормал мапа (очевидно, выборка из рефлекшен зависима от выборки из нормал, нормал мапу мы сделали на шаге 5)
[22:41] <Zeux> и еще двум картам, назначение которых я не знаю :)
[22:41] <Zeux> плюс ко всему этому применяется fade factor, настраиваются цвета для солнца, для отраженных частей
[22:42] <Zeux> но это все общие слова, хотите конкретики - вот вам шейдеры:
[22:43] <Zeux> http://www.everfall.com/paste/id.php?o7tp1cpe8hso - VS
[22:42] <Zeux> http://www.everfall.com/paste/id.php?leldlck3nd22 - PS

[22:49] <Sark7> и интересно зачем опция про отбрасывание тени на траву, это ж практически бесплатно афаик
[22:49] <Zeux> трава - это много филлрейта
[22:49] <Zeux> а он умножается на стоимость шейдера
[22:49] <Zeux> хотя, может и неважно

[22:50] <Zeux> да, про траву и деревья
[22:50] <Zeux> там один VB
[22:50] <Zeux> в нем много-много раз примитивы
[22:50] <Zeux> (в случае биллбордов - квады, в случае травы - несколько треугольников)

[22:51] <Zeux> ладно, чувствую, пора заканчивать
[22:52] <Zeux> так что быстро - про тени, про блум
[22:52] <Zeux> и про то, за что им платят зарплату :)
[22:52] <Zeux> тени там офигенные, да
[22:52] <Zeux> значит, говорят, сначала были мега-тени
[22:52] <Zeux> я их видел в ролике игроманском, 20 минут геймплея
[22:52] <Zeux> от всего на все, все дела
[22:53] <Zeux> пару дней назад я прочитал, что оно все было, но его заменили на полностью новый подход
[22:53] <Zeux> аха.
[22:53] <Zeux> значит, полностью новый подход такой:
[22:53] <Zeux> - бросают тени только существа (персонажи, монстры, лошади)
[22:53] <Zeux> - на каждое существо - своя shadow map
[22:53] <Zeux> - shadow map - 1024x1024 r32f (радикально, глюки с алиасингом будут не так заметны)
[22:54] <Zeux> рендерится туда все в до фига дипов, как обычно
[22:54] <Zeux> (а фигли, как еще рендерить, если персонаж из 19 кусков состоит?)
[22:54] <Zeux> покажу шейдеры без скиннинга
[22:54] <Zeux> со скиннингом так же
[22:55] <Zeux> http://www.everfall.com/paste/id.php?qa23lm6vpegq
[22:55] <Zeux> т.е. тупо взяли, и вывели глубину, поделенную перспективно, в текстуру
[22:55] <Zeux> собственно, ничего другого там быть и не могло :)
[22:55] <Zeux> накладываются тени отдельным проходом
[22:56] <Zeux> абсолютно обычным проходом, я шейдеры не переписал, найдете в любой статье про шадоумаппинг
[22:56] <Zeux> т.е. вот в интерьере если есть персонаж и он бросает тень -
[22:56] <Zeux> какие-то части интерьера перерендерятся с его шадоумапой
[22:56] <Zeux> что дает нам еще несколько проходов для некоторых частей интерьера, да :)
[22:57] <Zeux> в общем - ничего интересного.

[22:57] <Zeux> 2. блум.
[22:57] <Zeux> для тех, кто не в курсе.
[22:57] <Zeux> в обливионе есть три режима рендеринга, которые ставятся в настройках
[22:57] <Zeux> 1. нифига нету
[22:57] <Zeux> 2. блум
[22:57] <Zeux> 3. хдр
[22:57] <Zeux> режим 3 рассмотрели, режим 1 - рассматривать нечего :)
[22:58] <Zeux> значит, блум - это так:
[22:58] <Zeux> все рендерим в R8G8B8A8 RT размером с экран
[22:58] <Zeux> дальше ее рендерим в текстуру 256х256
[22:58] <Zeux> и за 2 прохода размываем + затемняем
[22:58] <Zeux> каждый проход - 8 лукапов
[22:58] <Zeux> (соседние пиксели)
[22:59] <Zeux> шейдер не переписал, но опять же ничего в нем нет
[22:59] <Zeux> дальше финальный рендер делается как:
[22:59] <Zeux> base * blendW.x + blur * blendW.y
[22:59] <Zeux> base - текстура размером с экран, изначальная
[22:59] <Zeux> blur - разблуренная 256х256
[22:59] <Zeux> blendW - коэффициенты блура
[22:59] <Zeux> зависят от того, били тебя по голове или нет :)
[23:00] <Zeux> визуально не жжот абсолютно
[23:00] <Zeux> но получше обычного рендера, да

[23:00] <Zeux> теперь - о чем забыл сказать.
[23:00] <Zeux> форматы текстур преимущественно DXT, для диффуз текстур - DXT1, для нормал мапов - в основном DXT5
[23:00] <Zeux> причем без всяких там 3Dc
[23:00] <Zeux> и прочих ухищрений
[23:00] <Zeux> качество страдает, да.

[23:02] <Zeux> дальше, некоторые заклинания накладывают эффекты на изображение
[23:02] <Zeux> (night eye, например)
[23:02] <Zeux> это - отдельный проход со спец. шейдером, ясно дело.

[23:03] <Zeux> кроме gui, еще рендерятся на ffp частицы
[23:03] <Zeux> правда, я не уверен насчет заклинаний
[23:03] <Zeux> их очень сложно ловить, т.к. они исчезают
[23:03] <Zeux> но огонь всякий, огонек от свечей
[23:03] <Zeux> это ffp.

[23:04] <Zeux> [23:04] <Cote-Duke> Может уже было, но, сколько используется памяти примерно AGP + VRAM?
[23:04] <Zeux> AGP - 10-16 mb всегда
[23:04] <Zeux> VRAM - ~128 Mb при загрузке (прямо из меню) небольшой indoor-комнаты
[23:04] <Zeux> порядка 200 Mb при загрузке (прямо из меню) аутдор-сцены
[23:05] <Zeux> (карточка 256 mb)

[23:03] <Zeux> ну, в основном все.
[23:04] <Zeux> теперь - в общем как все обстоит
[23:05] <Zeux> ноу-хау в рендере, которые я увидел - принадлежат сторонним компаниям исключительно
[23:05] <Zeux> вернее, даже не ноу-хау
[23:05] <Zeux> а просто забавные штуки
[23:05] <Zeux> это:
[23:05] <Zeux> 1) шейдинг персонажей (facegen)
[23:06] <Zeux> 2) трюки некоторые с деревьями (speedtree)
[23:06] <Zeux> в остальном - очень неэкономное расходование dip-ов
[23:06] <Zeux> в основном, насколько я могу судить, из-за отсутствия вменяемой системы материалов
[23:06] <Zeux> 3-4 пина - и выбирается нормальный шейдер
[23:06] <Zeux> (ровно такой, какой нужен)
[23:06] <Zeux> для интерьера, для ландшафта
[23:06] <Zeux> ну не 3-4, может 5-6
[23:07] <Zeux> еще раз.
[23:07] <Zeux> если вы хотите чего-то на шейдерах, чтобы не демка, а реальное что-то
[23:07] <Zeux> то либо делайте юниформно
[23:07] <Zeux> как в Обливион
[23:07] <Zeux> либо делайте систему материалов.
[23:08] <Zeux> значит, за что им платят деньги
[23:08] <Zeux> как я уже сказал - не знаю :) я не увидел в рендере ничего такого, что претендовало бы на нехтген, или на грамотную реализацию текущих технологий
[23:08] <Zeux> разве что хдр нормален
[23:09] <Zeux> но вот Сарк говорит, что коэффициенты хреновые :)
[23:09] <Zeux> тем не менее - это пример промышленного рендера.
[23:09] <Zeux> и пример рендера игры, которая станет игрой года (я вас уверяю)
[23:10] <Zeux> несмотря на технологии, при правильной поправке конфига картинка хорошая очень
[23:10] <Zeux> но тут, по-моему, в основном заслуга дизайнеров

[23:10] <Zeux> собственно, в завершение хочу сказать - не уподобляйтесь разразботчикам из бесезда
[23:10] <Zeux> не пишите гей-код
[23:11] <Zeux> и молитесь, чтобы фоллаут 3 удался :)

Страницы: 1 2 3 4 5 6 Следующая »

#reverse engineering

20 апреля 2006

Комментарии [28]