All streams
Search
Write a publication
Pull to refresh
204
0
Леонид @ForhaxeD

Graphics/Rendering engineer

Send message
Вот пример — есть не освещенная комната, на полу которой мы хотим отрендерить SSLR. В итоге получим сияющий в темноте пол. А если бы мы взяли информацию с прошлого кадра, то все освещение склеилось бы.


Мы очевидно говорим о разном, либо вы не понимаете. Как мы можем получить сияющий пол, если Scene RT — не содержит света вообще?

Ладно, попробую объяснить в перспективе алгоритм:

1) рисуем геометрию, строим GBuffer, получаем Color, Normal, Depth
2) строим Light map, используя Deferred Shading.
3) объеденяем Light map с Color map и получаем Scene RT

Теперь все бы ничего, у нас есть красиво освещенная комната, но хочется отражений.

4) запускаем наш SSLR, передавая туда только Scene RT, Normal, Depth и получаем SSLR map
5) размываем SSLR map с учетом веса в альфе канале.
6) объеденяем Scene RT и SSLR map с учетом свойств материала.

И спрашивается, причем тут вообще прошлый кадр? Что не отрендерино? GBuffer на стадии четыре у нас не отрендерен? Причем тут освещение вообще (про HDRR зачем-то написали)? Я правда не понимаю, о чем вы говорите. Я написал статью с рассказом о том, как происходит аппроксимации путем Deferred Rendering — отражений (а конкретно реализация SSLR-алгоритма). Заголовок статьи же не: «делаем AAA-игру за 2 минуты».

Сейчас расчет освещения шагнул значительно в перед.

Основной метод остался тем же, как и пять лет назад. Появились методики Global Illumination и Ambient Occlusion (тот же SSAO, но для удовлетворения вашего аппетита возьмем HBAO).

И да, BRDF это не один шейдер, а целый chain из пост-процессинга.
Так ведь в статье вообще не описано освещение как таковое. Насчет Environment-отражения — где есть эффект Френеля используют RLR (SSLR), где происходит весомый Information Lost — lerp'ят отражения от статической кубмапы.

Я не совсем понимаю, причем тут прошлый HDR (и причем тут вообще идеология HDRR) кадр, если эта методика есть Screen Space post-process и завязанная на информации в уже отрендерином GBuffer (а если еще с DS, то вообще на готовой сцене с Normal и Depth картами). Можно какие-нибудь статьи про то, что вы говорите? Я правда Вас не понимаю.
Я написал как получить это отражение (методику), а для того, что-бы показать результат — вывел: сцена + отражение.
P.S. освещение на сцене максимальное (ambient=1), можно сказать, что оно отсутствует вообще.
Я ведь писал в статье, что любой Screen Space эффект является пост-процессингом? А пост-процессинг выполняется после рендера основной сцены. В этом и прелесть SSLR, что можно создать локальные отражения основываясь на текущем Scene RT. А размывается не вся картинка, а только SSLR RT, которая содержит в себе информацию только об отражении.
HDR в этой статье не описан и даже не затронут, репроекция координат это есть nuv. GetColor(UV).rgb — релеватно tex2D(GBufferColorMap, UV).rgb.
В классическом варианте SSLR берется текущий кадр, а не прошлый, блюр происходит после SSLR-алгоритма.
Да, не сразу заметил. Все верно, Screen Space Local Reflections.
Как человек далеко не далекий от gd, ввод цветового режима / субтитров — не затратная задача.
Мне кажется подобные вопросы решаются голосованием за статью: полезная ли статья или нет. Вот именно ваш комментарий «ни о чем».
Разве говорил? Я почему-то отчетливо запомнил о гравитационном манёвре вокруг черной дыры (sic!) :-)
Да, смущает. В фильме не сверхмассивная черная дыра.
Из-за драмы: «любовь отца к дочке сильнее гравитации около черной дыры»?
А расскажите мне про такую вещь: как получается, что день на одной из планет длится ~72 часа? При всем при этом, орбитальная (радиальная) скорость планеты очень большая (радиальная скорость около черной дыры должна быть большой, иначе неизбежно столкновение) и один год должен быть очень коротким. Вижу единственное объяснение, что скорость вращения планеты вокруг своей оси так же должна быть очень большой и получается некоторый «резонанс», который дает длину дня в ~72 часа: но даже с этим объяснением никакой атмосферы у небесного тела существовать не может.
А причем тут код? Конечный пользователь же не видит этот код. С таким успехом можно идти по улицам Франции и думать, что все утки.
помню читал где-то, что у чёрных дыр (может, сверхмассивных только, а не обычных) плотность материи за горизонтом событий такая же, как у воздуха, или того меньше.


Я точно на хабре/гт сейчас?
Возможны спойлеры.

Ребята, вы серьезно? Вы серьезно считаете, что у этого фильма мощный сюжет и Нолан знает физику?

По сюжету:
— полтергейсты оставляют двоичный код
— сверхсекретная последняя и единственная база NASA недалеко от дома
— привет, Макконахи, давно не видлись! Ты такой клевый пилот, полетишь человечество спасать?
— доча, пока, буду через 30 лет, ты мне жди, ок?
— «любовь — это сила, которая проникает сквозь пространство и время, поэтому летим туда» — заявляет ученный-физик
— существа из пяти измерений открыли нам червоточину и мы летим туда
— все бесполезный балласт, кроме Макконахи и Энн Хэтэуэй
— Мэтт Деймон решил всех обмануть, потому, что хочет домой, к маме
— внутри черной дыры комната дочки
— протагонист вместо того, что-бы просто умереть: возвращается к дочери

По науке:
Гравитация — единственное, что передается через время? Почему же тогда люди будущего дали ему возможность только книжки тыкать? Если он может передавать информацию, то взял бы мелок, написал бы на доске. Вместо жесткой, но более менее правдоподобной фантастики мне показали ЭТО. Зачем приглашать ученого для отрисовки гравитационной линзы, если у вас в сюжете мужик за горизонт событий проваливается и у него от этого только обшивка трещит. Про пять измерений тоже полная фигня, в М-теории не свернутых измерений только 4, да и проекция выглядела бы совсем не так. Зато показали, что в космосе нет звуков, вот так реализм!
Я не придираюсь к реализму, да, это фантастика. Но внутри фантастики должна быть какая-то логика.
А фильм притворяется реалистичным, сыпет терминами из науки, а потом выдает вот такую вот фигню. ФУЛЛ ДРАМА: типа любовь отца к дочке сильнее гравитации черной дыры.

Вообще, могу посоветовать одну хитрость из 2D освещения, где по каким-то причинам нельзя использовать шейдеры:

Разбиваем мир на особые тайлы фиксированного размера (чем меньше, тем менее производительнее и более точнее будет освещение).
Считаем освещенность для каждого тайла, записывая эту освещенность в RT размером с x / tileSizeX, y / tileSizeY. Тени легко можно рассчитать и учитывать при освещении, используя, например, алгоритм Брезенхема или DDA-линии. Далее умножаем цвет RT-сцены на RT-лайткарты (причем благодаря несоответствию размеров последнего с первым — происходит своеобразный Upsampling, при условии линейной фильтрации).и получаются довольное красивое освещение без использования шейдеров. Этот способ хорошо подходит для тайловых игр.

___

В дополнение к методу выше (из статьи) — можно еще делать subtractive-рисование примитивами-треугольниками (правда, от spritebatch отказаться нужно для рисования, но там все просто в совмещении матрицы вида spritebatch'a и нативной матрицы вида) для создания теней.
Отнюдь. Размеры текстур те же самые. И у второй нет спекуляра.
Если использовать «Continuous Collision Detection», то нет. Как раз поле IsBullet у частички взрыва за это отвечает.
Про 2D-шные финты писал тут, тут и тут.
Вообще, да:
Освещение с учетом неровностей — называется Normal Mapping.
Имитация неровностей без изменения геометрии — называется Parallax Mapping (POM — улучшенный Parallax Mapping)
И полное изменение геометрии по карте высот — Displacement Mapping
А процесс тесселяции — аппаратное увлечение числа полигонов на модели.

Information

Rating
Does not participate
Location
Россия
Registered
Activity