Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / С чего начать подкатывание к рейтрейсингу?

С чего начать подкатывание к рейтрейсингу?

Advanced: Тема повышенной сложности или важная.
Страницы: 1 2 3 4 5 Следующая »
Great V.Постоялецwww14 июня 201816:15#0
Рейтрейсинг как идея мне не сильно нравиться. Но может быть это потому, что я о нем ничего не знаю?
С одной стороны у меня планы на генерацию карт освещения прямо в движке, с другой - не хочется отставать от жизни, как это уже случалось ранее. Попробую совместить приятное с полезным.
С чего посоветуете начать изучение субжа?
ZabПостоялецwww14 июня 201816:22#1
Great V.
> С чего посоветуете начать изучение субжа?
С того, что дождаться пока под него появятся акселераторы ;)
Чисто на софтверном рендере ведь заранее обречен на проигрыш видеокарточкам, насколько бы нерационально эти видеокарточки не действовали. А действуют они не рационально, в условиях очень сложных сцен, когда количество фасеток больше, чем количество пикселей на экране.
Great V.Постоялецwww14 июня 201816:28#2
Zab
> С того, что дождаться пока под него появятся акселераторы
Я не хочу рендер в реальном времени на рейтрейсинге. С этим и классические подходы справляются.
Мне он нужен:
1. В образовательных целях
2. Для световых карт
ZabПостоялецwww14 июня 201817:25#3
Тогда начни с геометрической оптики, если в ней что-то еще осталось для тебя неизвестное. По верхам, без высшей математики, с ней легко ознакомиться в одном из томов "Элементарного учебника физики" Ландсберга. Не спутай с отдельной монографией по оптике того же автора, там все сложнее изложено.
}:+()___ [Smile]Постоялецwww14 июня 201817:32#4
На мой взгляд, "по верхам" рейтрейсинг сделать нельзя.
Для сколь-нибудь нормального требуется свободно оперировать многомерными интегралами.
Т. е. начинать стоит именно с высшей математики, а оптика там достаточно тривиальная.
ZabПостоялецwww14 июня 201817:38#5
}:+()___ [Smile]
"По верхам" можно сориентироваться каких знаний не хватает.
В любом случае, только геометрической оптики не хватит для рейтрейсинга. Там нем диффузного освещения в чистом виде, к примеру. Интегрировать многое придется, конечно же, но без геометрической оптики интегрировать будет нечего.
равенПостоялецwww14 июня 201819:30#6
С Калорифера разумеется
Mr FПостоялецwww14 июня 201820:30#7
Скопирую свой ответ из соседней темы - начни с чего-нибудь из этого:
https://developer.nvidia.com/optix
https://gpuopen.com/gaming-product/radeon-rays/
https://blogs.msdn.microsoft.com/directx/tag/dxr/

В этих либах авторы драйверов и сидящие с ними умники уже решили проблему пересечения лучей с треугольниками на гпу. Остальное пишешь сам, и это чистый фан. Оперировать многомерными инегралами не умею, и вообще высшую математику не учил, но если раньше шейдеры писал и с векторной математикой в контексте графики знаком, то будет достаточно интуитивно.

Правка: 14 июня 2018 20:30

elviras9tУдалёнwww16 июня 201812:23#8
Приближаемся к Bleeding Edge... (кстати, к прошедшей новости про Google Translate, нашел один гриф в этом слове).
Текущий статус: Indev
https://github.com/world8th/vRt

Из Google Translate:

All all all all all all all all all all all all all all all all all all all all all all all all all all all all

Правка: 16 июня 2018 12:29

Great V.Постоялецwww17 июня 201815:28#9
Zab
> Тогда начни с геометрической оптики, если в ней что-то еще осталось для тебя
> неизвестное.
Окей...
А есть какие-то примеры или туториалы по самописным рейтрейсерам? Статьи на хабре?
Вот чтобы не начинать с чистой теории и физики, а увидеть примеры, подходы, как люди живут в конце концов. Чтобы сложилось первое впечатление с чем имею дело.

Mr F
> Скопирую свой ответ из соседней темы - начни с чего-нибудь из этого:
Зачем мне готовые либы сейчас? Я в идее хочу разобрать.
Тем более, мне риалтайм не особо то и нужен.

Правка: 17 июня 2018 15:29

Mr FПостоялецwww17 июня 201816:10#10
Great V.
Эти либы реализуют лишь быстрое пересечение луча с треугольниками на гпу. Optix, например, строит BVH дерево из них для этого.
Тебе предстоит такая же задача - построить из трианглов какое-либо дерево (bvh, bsp, kd-tree, octree...) и топать лучом по нему.
Всё что касается освещения далее хоть с либами, хоть без - пишешь сам (просто с либами результат перед глазами быстрее предстанет, ну или ты тоже на гпу сделаешь).
У этого чела хорошие статьи имхо:
http://iquilezles.org/www/articles/simplegpurt/simplegpurt.htm
http://iquilezles.org/www/articles/simplepathtracing/simplepathtracing.htm

Правка: 17 июня 2018 16:11

ZabПостоялецwww17 июня 201816:26#11
Great V.
> как люди живут в конце концов
Не живут люди. Рейтресинг далек от массового применения в современном мире. В офлайновых рендерах типа максового он конечно есть, но таких продуктов считанные  десятки, может быть даже всего два десятка. Не встречал инструкций как его писать, видимо сии инструкции не востребованы. Есть только общий академический подход, ближе к философии. Схема, на применение которой нет ресурсов у современного компа.
Тут бродила какая-то демка игры, где рейтрейсинг в реальном времени, как утверждалось. Не помню как называется. Но ни исходников, ни статей, как оно все запрограммировано, не было.

Много раз порывался реализовывать. Казалось, вот-вот - и настанет время рейтресинга. Сцены то усложняются. Рендер проецированием фасеток, ставший сейчас классическим и поддерживаемый видеокартами, был хорошо когда сцены были простыми, фасеток мало, эффектов прозрачности минимум. Рейтрейсинг получает все больше преимуществ в сложных сценах, но этих преимуществ все еще не достаточно чтобы хотя бы приблизиться по производительности к классическому рендеру. Хотя бы минимальные требования к изображению удовлетворить, но и это никак.
Если бы видеоакселераторы не развились, жили бы мы сейчас чисто на софтверном рендере, рейтрейсинг давно бы уже использовали.

Правка: 17 июня 2018 16:34

gamedevforПостоялецwww18 июня 20180:42#12
Zab
> на софтверном рендере, рейтрейсинг давно бы уже использовали.

Каким образом?

ZabПостоялецwww18 июня 20181:14#13
gamedevfor
> Каким образом?
Если грубо, то примерно так...
Для рейтрейснга тебе надо пустить лучи из камеры сквозь углы всех пикселей на экране, найти элементы сцены, в которые они уткнутся. Возможно построить хранение сцены таким образом, чтобы это производилось относительно быстро. Объем вычислений пропорционален числу пикселей на экране.
Для классического рендера мы проецируем углы всех фасеток на экран и уже в 2D намазываем какое то изображение на эту фасетку. Объем вычислений пропорционален количеству фасеток в сцене.

Сцены усложняются, уже нет былого преимущества от 2D заполнения фасетки.
У рейтресинга получаются еще и естественные лоды.
И эффекты с прозрачностью требуют гораздо меньше извратов, многие вещи можно делать физично.

DelfigamerПостоялецwww18 июня 20181:20#14
Zab
> фасетки
ФАСЕТКА
1. ж.
    1) Скошенная боковая грань чего-л.
    2) Грань отшлифованного камня.
2. ж.
    Отдельный глазок сложного глаза членистоногих.

лолшто

А, я понял, это ты так классно "грань" перевёл.

Правка: 18 июня 2018 1:22

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

/ Форум / Программирование игр / Графика

2001—2018 © GameDev.ru — Разработка игр