Войти
Gamedev LectureСтатьи

Лекция #32. R.E.N.D.E.R. (7 стр)

Автор:

[23:07] <vshabanov> запоздавший вопрос по ландшафту: а нафиг 4 текстуры в шейдере мешать, одну сгенерить никак
[23:07] <Zeux> vshabanov, память
[23:08] <Zeux> vshabanov, т.е. сплаттинг тем и ценен
[23:08] <Zeux> что экономит память.
[23:08] <Zeux> я поясню, я момент этот пропустил
[23:08] <vshabanov> так одна текстура -- это меньше памяти
[23:08] <Zeux> т.к. думал, что ясно
[23:08] <Zeux> те текстуры слоев
[23:08] <Zeux> они очень сильно тайлятся.
[23:09] <Zeux> т.е. детализация цвета и нормалей получается хорошая
[23:09] <Zeux> маленькая детализация - только на маску
[23:09] <Zeux> но там пофиг
[23:09] <vshabanov> теперь понял
[23:09] <Zeux> т.е. с такой же детализацией без сплаттинга было бы гораздо больше памяти :)
[23:10] <vshabanov> ну да. я что-то про тайлинг не подумал

[23:08] <Joric> в каком порядке фичи включаются на low-medium-high quality?
[23:10] <Zeux> Joric
[23:10] <Zeux> не знаю.
[23:10] <Zeux> %)
[23:10] <ShTiRLiC> Лектор допускает пробелы!
[23:10] <Zeux> зато честно в них сознается
[23:11] <Zeux> не знаю, надо смотреть. Меня, как я уже сказал, интересовал вопрос high quality исключительно

[23:11] <WhiteWind> Я так понял, что там вообще нет Dynamic Branching?
[23:11] <Zeux> WhiteWind, вроде как совсем нет, если и есть - то по мелочи.

[23:12] <vshabanov> а на 8800 бранчинг по прежнему дикий тормоз?
[23:12] <Zeux> не могу сказать, не тестировал.
[23:13] <Zeux> думаю, что нет.
[23:13] <Zeux> однако, сталкер не делался с расчетом на 8800 :)

[23:13] <WhiteWind> А было бы быстрее, если бы источники света рендерились не по одному, а за один проход с циклом в шейдере?
[23:14] <Zeux> если поддерживается fp16 blend - думаю, не было бы
[23:14] <Zeux> если не поддерживается - вполне могло.

[23:16] <Zeux> Во-первых, то, что я забыл сказать (интересная вещь)
[23:17] <Zeux> при расчетах, для которых нужна та самая текстура 1х1
[23:17] <Zeux> с tone mapping коэффициентом
[23:17] <Zeux> если поддерживается VTF
[23:17] <Zeux> она читается в вершинном шейдере
[23:17] <Zeux> и передается в пиксельный значение.
[23:17] <Zeux> чтобы избавиться от лишней выборки

[23:17] <Zeux> Во-вторых, то, что я забыл сказать.
[23:17] <Zeux> небо и облака.
[23:18] <Zeux> небо и облака рендерятся отдельно (не в G-buffer), сразу в те 2 текстуры
[23:18] <Zeux> с результатом tone mapping и с HDR 8x
[23:18] <Zeux> небо - 2 текстуры (кубмапы, дневное-ночное), интерполяция между ними
[23:18] <Zeux> и tone mapping
[23:18] <Zeux> облака - 2 текстуры облаков, семпл по разным координатам
[23:18] <Zeux> (они скроллятся)
[23:19] <Zeux> умножение на константный цвет
[23:19] <Zeux> и tone mapping

[23:19] <Zeux> и наконец, бонус.
[23:19] <Zeux> Про бонус уже было сказано - это много источников света за меньшую цену, чем могло бы быть.
[23:19] <Zeux> в сталкере есть экспериментальный режим
[23:19] <Zeux> который это использует.
[23:19] <Zeux> Это эмуляция GI (global illumination)
[23:20] <Zeux> я оптику совсем не знаю, но тем не менее скажу
[23:20] <Zeux> в общем-то, суть global illumination такая - есть источник
[23:20] <Zeux> лучи, идущие от него - первичные лучи
[23:20] <Zeux> когда они падают на объект
[23:20] <Zeux> то то место, куда они упали - освещается
[23:20] <Zeux> это то, что мы привыкли рисовать
[23:20] <Zeux> dot(N, L) и т.д.
[23:21] <Zeux> но этот луч света отражается от поверхности
[23:21] <Zeux> рассеивается
[23:21] <Zeux> и получается много других лучей.
[23:21] <Zeux> они слабее, но они есть
[23:21] <Zeux> это вторичные лучи
[23:21] <Zeux> они падают еще на какие-то объекты, и т.д.
[23:21] <Zeux> так вот, в сталкере сделана попытка проэмулировать этот процесс в реалтайме.
[23:21] <Zeux> для каждого источника света
[23:22] <Zeux> на CPU пускается набор лучей в случайных направлениях
[23:22] <Zeux> для каждого ищется пересечение с уровнем
[23:22] <Zeux> туда ставится специальный источник
[23:22] <Zeux> во-первых, источник не совсем точечный
[23:23] <Zeux> но и не совсем направленный - что-то вроде спотлайта в общем
[23:23] <Zeux> во-вторых, у него меньше интенсивность
[23:23] <Zeux> дальше процесс можно повторить уже для новых источников
[23:23] <Zeux> получив еще набор
[23:23] <Zeux> и т.д.
[23:23] <Zeux> дальше, когда закончилось кол-во итераций (фиксированное)
[23:23] <Zeux> то из этих дополнительно сгенеренных источников мы выбираем сколько-то с макс. интенсивностью
[23:24] <Zeux> остальные удаляем
[23:24] <Zeux> и освещаяем сцену новым набором.
[23:24] <Zeux> не забываем для сгенеренных отключить тени
[23:24] <Zeux> ну и еще у тех источников нет спекуляра
[23:25] <Zeux> и они не зависят от материала
[23:25] <Zeux> т.е. при их отрисовке не производится выборка из той 3д текстуры
[23:25] <Zeux> это оптимизация.

[23:25] <ShTiRLiC> Сколько при этом получается FPS?
[23:25] <Zeux> Падение FPS у меня - от 70 до 16 в индоре.
[23:25] <Zeux> Это не 30, но уже близко.
[23:25] <Zeux> и это на максимальной детализации, в достаточно высоком разрешении :)

[23:25] <ShTiRLiC> Просто интересно, может, удалось бы и спекулары и тени сделать от вторичных
[23:26] <ShTiRLiC> Видимо, не в этом году
[23:26] <Zeux> тени - мешают.
[23:26] <Zeux> сначала там были тени
[23:26] <Zeux> их отрубили и из эстетических соображений тоже
[23:26] <ShTiRLiC> Слишком мягкие?
[23:26] <ShTiRLiC> %)
[23:26] <Zeux> нет, они там просто есть.
[23:26] <Zeux> это мешает
[23:27] <Zeux> сбивает с толку :)

[23:27] <Zeux> замечу
[23:27] <Zeux> что в финале это отключено
[23:27] <Zeux> под это тупо не настроен арт
[23:27] <Zeux> все получается пересвеченное
[23:27] <Zeux> по очевидным причинам.
[23:27] <Zeux> включить можно в консоли, r2_gi on
[23:27] <Zeux> в аутдоре эффект не виден, тоже очевидно почему

[23:28] <Zeux> и последнее
[23:28] <Zeux> я забыл картинку про тени показать.
[23:28] <Zeux> с убранной фильтрацией почти полностью (только хардварный PCF остался)
[23:28] <Zeux> http://zeux.info/pub/temp/stalker_shadows.jpg
[23:29] <ShTiRLiC> А што на этой картинке такого?
[23:30] <Zeux> тут просто была информация про попиксельные тени, я ее проверял.
[23:31] <ShTiRLiC> А на самом деле там што?
[23:31] <Zeux> то, что на экране, очевидно
[23:31] <Zeux> попиксельные - это в смысле качества
[23:31] <ShTiRLiC> А на экране што?
[23:31] <ShTiRLiC> Тени как тени
[23:31] <ShTiRLiC> Неплохие такие
[23:31] <_ShaMan_> Зеух показал тени от деревьев без фильтрации

[23:32] <kas> там гдето больше 3-4 лампочек юзается?
[23:32] <kas> на модельках в игре
[23:32] <Zeux> 5 лампочек на пиксель в среднем в индоре

[23:34] <vshabanov> сколько времени ушло на то, чтобы так разобраться в рендере сталкера?
[23:34] <Zeux> мало
[23:34] <Zeux> 4 полных дня наверное
[23:35] <Zeux> с обливионом было дольше :)

[23:36] <Zeux> я обращаю внимание на всякий случай
[23:36] <Zeux> в аутдоре ценность GI - нулевая фактически
[23:36] <Zeux> там основной вклад - это окружение
[23:36] <Zeux> которое сделано и в сталкере, и которое делается очень дешево :)
[23:36] <paladinrus> может это ценность касательно сталкеровского алгоритма?
[23:36] <Zeux> это ценность вообще GI
[23:37] <Zeux> потому что в индоре
[23:37] <Zeux> отраженные лучи улетают в стенки
[23:37] <Zeux> а в аутдоре - преимущественно в небо.
[23:37] <Zeux> т.е. понятно, в пещерах, домах и прочее (внутри) - видно будет

[23:37] <WhiteWind|> Есть у меня одна мысль, и я её думаю. Все видели Dynamic Ambient Occlusion?
[23:39] <Zeux> WhiteWind|, видели когда-то
[23:40] <WhiteWind|> Zeux, Дык это половина пути реальной модели освещения.
[23:40] <Zeux> AO опять же не совсем про то :)
[23:40] <Zeux> GI оно per light, а AO - per model
[23:40] <Zeux> хотя конечно AO - это тоже GI
[23:40] <Zeux> и в сталкере AO есть
[23:40] <Zeux> просто не на динамике.
[23:41] <Zeux> AO главное от источников не зависит, поэтому не так интересно

Страницы: 1 2 3 4 5 6 7

#GSC, #render, #reverse engineering, #S.T.A.L.K.E.R.

10 мая 2007 (Обновление: 17 сен. 2009)