Pixel Science
480 subscribers
136 photos
53 videos
2 files
106 links
пишем о ресёрчах по Комьютерной Графике, нейронному Рендеру и ИИ

и про их влияния на индустрию конечно же, с инсайдами из личного ресёрча и карьеры

автор: @Mishok43, mishok43.com, PhD студент в IVD KIT, ex Eagle Dynamics
Download Telegram
Channel created
Channel name was changed to «Pixels Science»
Channel photo updated
Вышла папира от азиатских коллег, где ребята исследовали нейронный паф гайдинг, но через von Mises-Fisher (гауссианы). Посылали на Сигграф ещё в прошлом году, но тогда не прошло.

Паф гайдинг - это когда мы пытаемся направлять пути света в паф трейсинге так, чтобы они шли туда, откуда в итоге приходит больше излучения. Это делается для того, чтобы Monte Carlo сходился быстрее и было меньше шума.

Проблема: нам по сути нужно запоминать radiance field и уметь из него семплировать, что приводит к проблеме выбора базиса для распределения.

Рассматривают на примере оффлайн рендера, из-за ряда технических ограничений, но предлагают онлайн алгоритм обучения распределений.
👍1
Одна из главных фишек заключается в том, что они полагаются на анизотропные гауссианы (могут быть вытянутыми), что позволяет лучше аппроксимировать падающий поток света довольно эффективно и понять, куда же нам следующий лучик кидать.
На самом деле я уже 2,5 года назад попробовал реализовать такую же тему вместе с коллегами из МГУ, но сразу в рамках реал-тайм паф гайдинга для Falcor. Что меня и привело далее к стажировке в Intel (не реализовалась из-за ожидания визы) и PhD в KIT. Полезно порой кодить "простые" гипотезы 😊

Мы сделали всё то же самое, только с изотропными гауссианами, но уже в реал-тайм.
🔥3
Проблема - шумы и то, что гауссианы это unordered set. Какая-то MLP из-за spectral bias будет неплохо предсказывать эти гауссианы, если поставить очень низкий learning rate... А если же мы хотим быстрой сходимости, подключив там instant-ngp (high-frequency learnable encodings/embeddings) и обойдя тем самым spectral bias, то у нас всё ломалось 😔😔😔.

Гауссианы разъезжались в край и ничего не сходилось(((
Также была (да и всё еще частично есть) проблема в том, что эти нейронки надо вызывать в отдельном кернеле, что убивало идею эффективного megakernel паф трейсинга.

Но так или иначе схема рабочая, как показывают авторы этой статьи, но только если мы в оффлайне и можем позволить себе медленную сходимость и wavefront path-tracing (не megakernel, почему он медленный). Но точно не стабильную из-за шумов, и жаль, что эту проблему они не разрешили.
проблему инженерную с megakernel имхо можно разрешить и мы сейчас похожим занимаемся... но вот с обучением нестабильным, как у меня так и у моих коллег а также одного дипломника которого я ввёл, пока ничего не получилось из "простого" и красивого

пишите если будут идеи 👌
Вышла интересная статья на основе Generalized Triangle Strip для реал тайм декомпрессии meshlet-ов. Много логичных инженерных оптимизаций и стоящими за ними меш-шейдеров с активным использованием бинарных wave instructions.

В реальности ребята добиваются 3-4х компрессии. И в отличие от конкурентных работ типа Nanite в UE5, они генерят итоговые треугольники на лету без кэширования в глобальную память.
К сожалению, авторы не прикладывают сравнения с конкурентными работами и лишь демонстрируют насколько каждая из оптимизаций влияет на время рендера/изначальный объем мешей

Но на то это и JCGT, а не сиграфф/еврографикс. Там требования по научности радикально выше
Жертвы по скорости рендера и в правду адекватные, если забыть про Reuse Packing. Имхо и его имплементация радикально сложнее из-за префикс сама, и экономия по памяти копеешная, и перф снижает сильно (в особенности на видеокартах зелёных 😁. ну может поленились норм имплементировать/нет нужных инструкций)
как же меня порой удивляют студенты, и это бакалавр. сам поднял множество тех вопросов, которые обычно задают на собесах граф. прогерам 😊

надо ловить таких и сразу брать чтоб с со статьями помогали))))

p.s да тут будет изредка немного около преподавания самого Computer Graphics
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Transforming a Non-Differentiable Rasterizer into a Differentiable One with Stochastic Gradient Estimation


Ребята из Интела предложили оригинальную комбинацию Stochastic Gradient Descent с инженерным подходом к определению того, какие конкретно параметры сцены реально влияют на значение каждого пикселя, для оценки градиентов

Таким образом можно легко сделать большинство рендер-движков дифференцируемыми, что они и показали на примере Unity
Добились высокого перформанса, даже обойдя nvDiffRast по производительности, ценою ограничений:
- не работает с трассировкой путей, вторичными градиентами (тени, отражения)
- многократное рассеивание света для PBRного объемного рендера тоже минус
- обучение нейронок внутри рендера также отваливается

но всё равно оч круто для практического использования
https://fxtwitter.com/i/status/1780979464706343062
даже проверили на мобилке через Юнити. пример с кодом также обещают выкатить, но с виду оч. легко повторить)