Программа для графического программиста: сначала трассировка пути, потом PBR, минимум математики
Алан Вулф, ведущий блог как demofox, уверяет: чтобы стать графическим программистом, хватит линейной алгебры, базовой тригонометрии и немного матана, а быстрее всего войти в тему, написав трассировщик пути ещё до знакомства с любым real-time API.
Вулф делит рендеринг на две работы: управление явными API вроде DirectX 12, Vulkan или Metal и работу с математикой освещения на GPU. Первый проект, который он советует, — трассировщик пути по книге «Ray Tracing in One Weekend», ещё до любого real-time API.
Он настаивает: линейной алгебры, базовой тригонометрии и немного матана вполне достаточно.
Комментаторы не согласны: один, у кого специализацией в вузе была компьютерная графика, назвал такой объём математики слишком скудным, а ветеран с 25-летним стажем сказал, что сегодня вообще не пошёл бы в эту сферу.
Две работы в одной и трассировщик пути для старта

Алан Вулф, ведущий блог как demofox, представляет современный рендеринг как две работы в одной. На стороне CPU ты управляешь явным API вроде DirectX 12, Vulkan или Metal; на стороне GPU занимаешься математикой освещения и затенения и построенными на ней приёмами вроде теней и ambient occlusion.
Его контринтуитивный совет — начинать не с real-time, а офлайн. Сначала напиши трассировщик пути по бесплатной «Ray Tracing in One Weekend», чтобы понять, как работает рендеринг кинокачества, прежде чем годами приближать его на интерактивных скоростях. Дальше переходи к физически корректному рендерингу: теория PBR на LearnOpenGL, потом документация Google Filament, потом бесплатная книга PBRT.

Насчёт предварительных знаний он успокаивает: линейной алгебры, базовой тригонометрии и немного матана хватает на то, что нужно на деле. Рабочий язык — C++, шейдеры на HLSL или GLSL, а новички могут размяться на OpenGL, WebGL или DirectX 11 до явных API. Портфолио он предлагает конкретное: real-time-рендерер с загрузкой ассетов и PBR-освещением плюс трассировщик пути, выдающий PNG.
Добавьте математику или не беритесь вовсе
Тред чётко раскололся на тех, кто расширяет программу, и тех, кто сомневается в самой цели. Практикующий графический программист добавил ресурсы, на которые опирался сам:
«Самые полезные ресурсы по графике, что мне попадались: scratchapixel, лекции по графике из UC Davis, статьи songho и Essential Math for Games and Interactive Applications.»
Успокоительные слова про математику встретили прямое возражение от того, чьей вузовской специализацией была компьютерная графика:
«В этой статье слишком мало внимания математике… Линейная алгебра огромна!»
Джон Нейгл переформулировал вопрос целиком, предупреждая будущих создателей движков о масштабе:
«Хотите делать игры, используйте готовый движок… Довести игровой движок до точки «мой первый рендерер» занимает около двух лет.»
Самую резкую реплику подал графический программист с 2001 года, наблюдавший, как Nvidia переходит к real-time-эффектам на ИИ, и больше не видящий места для одиночки-виртуоза:
«Сегодня я бы никому не советовал идти в графическое программирование»
Его тревога сама называет своего антагониста: он спрашивает, откуда вообще взяться новому Джону Кармаку, когда почва уходит из-под ног так быстро.
Получайте такие разборы каждый день
Главные истории Hacker News — на email, в Telegram или RSS.
FFmpeg 9.1: новый AAC-кодировщик, настроенный на слух и только с постоянным битрейтом
В FFmpeg 9.1 появился совершенно новый встроенный AAC-кодировщик, настроенный вручную на слух самого автора; он метит на замену fdk-aac и Apple Core Audio, на которые годами полагались. Есть две громкие оговорки: только постоянный битрейт и расчёт на 48 кГц.