Nvidia NRC
Nvidia NRC — очередная вундервафля от сумрачных гениев из NVIDIA, призванная, что-то там нейронно кешировать в деле отрисовки этих ваших полигональных мирков. Если отбросить маркетинговую шелуху, то перед нами очередной хитровыдуманный способ заставить лучи летать быстрее, но не за счёт честной оптимизации, а путем перекладывания части вычислительной нагрузки на специально дрессированную нейросетку. Ты ведь любишь, Анонимус, когда за тебя думает кремниевый друг, особенно если этот друг произведен под чутким руководством Хуанга? Ну вот.
Суть[править]
Вместо того чтобы дотошно просчитывать мириады отскоков каждого луча, как это делают ортодоксальные трассировщики, предлагается срезать углы. Нейронка, предварительно натасканная на тысячах часов страданий других GPU, якобы способна, узрев лишь первые несколько мытарств луча, авторитетно заявить, какое освещение будет примерно таким же на последующих, более дальних этапах его путешествия. Профит, по уверениям создателей, очевиден: кадры в секунду растут, твой кошелёк худеет при покупке новой видеокарты с тензорными ядрами, а NVIDIA довольно потирает руки.
Как оно работает[править]
Под капотом этой шайтан-машины, как и у любого уважающего себя продукта от NVIDIA, скрывается сложная и многоуровневая система. Представь себе: луч света, выпущенный твоей виртуальной камерой, летит сквозь сцену. Когда он во что-то врезается, на сцену выходит невидимый дирижёр. Этот дирижёр, сверившись с текущими установками (которые ты, превозмогая боль, выставил), решает судьбу луча. Если система в режиме обучения, то информация об этом столкновении, о свойствах поверхности, о цвете и направлении полетит в специальную «копилку» для последующей тренировки нейронной сети. Если же режим боевой, то есть «запроса», то система обратится к уже обученной нейронке: «Эй, умница, а что у нас тут должно быть по освещению, если луч ударился вот так-то и вот об это?». И нейронка, почесав свои кремниевые извилины, выдаст некий результат.
Особого упоминания заслуживает так называемая эвристика терминации. Это такой хитрый механизм, который решает, когда уже хватит честно трассировать луч, и пора бы уже спросить совета у всезнающего AI. Видимо, это сделано для того, чтобы не перегружать нейронку слишком сложными задачами, от которых она может впасть в ступор или начать генерировать откровенную дичь. Всё это, конечно же, требует от разработчика понимания таких тонких материй, как «размытие сигнала» и «аппроксимация конуса луча», что звучит больше как тема для диссертации, чем для настройки в игре.
Данные о лучах, поверхностях и их взаимодействиях постоянно пакуются и распаковываются с маниакальной страстью к экономии каждого бита. Ведь где-то в глубине GPU эти сэкономленные биты, возможно, превратятся в лишний FPS. А может, и не превратятся, если ты что-то напутал в настройках.
Так зачем?[править]
Если верить официальным заявлениям, то NRC создана для того, чтобы ускорить трассировку лучей и улучшить качество картинки там, где полный, честный расчёт был бы непозволительной роскошью для твоего железа. Неофициальная же версия, как всегда, прозаичнее: чтобы инженерам NVIDIA было чем заняться, чтобы у игроделов появился ещё один повод для многочасовых бдений над кодом и документацией, и, конечно же, чтобы было что демонстрировать на презентациях новых поколений видеокарт, убеждая тебя, Анонимус, что без очередной карточки с тензорными ядрами твоя жизнь неполноценна.