Как стать автором
Обновить

Что почитать для Unity разработчика: Рендер

Время на прочтение4 мин
Количество просмотров8.2K

Всем привет. Меня зовут Григорий Дядиченко. Сегодня хочется составить некий список литературы, который как мне кажется было бы полезно почитать каждому, кто решает задачи рендера и занимается графикой в Unity. Разные книжки (и часть лекций) рассчитаны на понимание разных частей областей полезных рендер разработчику.

Для начала хочется взять некий набор книг с которых я бы начал погружение в мир рендера и графики. При разных степенях погружения в графику нужны разные знания и начинать всего проще с простых практических примеров разбирая базовые концепции.

Building Quality Shaders for Unity®: Using Shader Graphs and HLSL Shaders 1st ed. Edition @ Daniel Ilett

https://www.amazon.com/Building-Quality-Shaders-Unity®-Shader/dp/1484286510

Отличная книжка с кучей примеров разбирающая базовые концепции, математику и как писать шейдеры в контексте Unity. Для начального изучения и получения какой-то базы по написанию шейдеров подходит отлично. Книжка довольно подробно разбирает примеры и на мой взгляд для "не новичков в ней мало интересного", но какие-то базовые шейдеры разобраны чуть ли не построчно.

Cat Like Coding Rendering Tutorials

https://catlikecoding.com/unity/tutorials/rendering/

У Cat Like Coding очень много прикольных туториалов. С точки зрения кода и его организации мне они конечно не нравятся (в отличии от книги выше), но тем не менее они тоже отлично подходят для разбора базовых концепций начинающим и при этом там много довольно полезных туториалов и для не совсем новичков. Так как многие скажем не так хорошо разбираются в том, как делается GPU Instancing в своих шейдерах и т.п.

Начало положено. Что дальше?

Когда уже рука немного набита и в целом вид hlsl не вызывает хтонического ужаса — можно начинать погружаться дальше. И первое во что имеет смысл погрузится — это математика.

3D Math Primer for Graphics and Game Development @ Fletcher Dunn & Ian Parbery

https://gamemath.com/

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

Но помимо математики уже можно узнать, что не существует "шейдеров Unity", а есть hlsl и glsl шейдеры (и другие). Поэтому можно изучить шейдерный язык HLSL кроме части с компиляцией (она в Unity не особо важна). Так же можно поковырять ShaderToy и посмотреть этот репозиторий, что он и как генерирует, что меняет и как переносятся glsl шейдеры в Unity. Для обучения очень полезно разбирать чужие решения.

Кроме того посмотреть туториалы по базовым шейдерным эффектам:

Дело в том, что большинство крутых визуальных эффектов — это творческое применение базовых эффектов и концепций, а не какая-то сложная высшая математика. Вообще большая часть VFX строится на масках и uv distortion.

Хочется углубится

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

Real-Time Rendering, Fourth Edition 4th Edition @ Eric Haines & Naty Hoffman & Tomas Akenine-Mo¨ller

https://www.amazon.com/Real-Time-Rendering-Fourth-Tomas-Akenine-Möller/dp/1138627003

Эта книжка будет повторять в своём начале базовую (но написанную посложнее и без контекста Unity). Но в ней разбирается очень много более глубоких концепций. BRDF, Microfacet Theory и разные довольно сложные техники которые используются в реалтайм рендере. Но эту книгу я считаю чуть ли не настолько книгой каждого, кто работает с рендером.

GPU Gems

https://developer.nvidia.com/gpugems/gpugems/contributors

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

Есть в разы больше материалов для глубокого изучения. Полный список можно найти тут. Две книги выше я бы назвал стартом глубокого погружения в мир реалтаймовой компьютерной графики.

А как оно всё-таки работает?

Это всё были техники или же что-то что относится к программированию. Но для глубокого понимания работы ваших эффектов лучше знать "а как работает видеокарта". Что по железу? Тут есть нюанс, что эта информация быстрее может устаревать и прям для совсем хорошего понимания лучше читать мануалы видеокарт или рекомендации от производителей. Например вот это. Но так же есть что почитать для общего понимания.

Render Hell 2.0

https://simonschreibt.de/gat/renderhell/

Рендер хелл отлично, хотя и поверхностно (ко многому можно докопаться в стиле "вообще-то в таком-то случае это не совсем там") описывает логику работы гпу. Конечно не все гпу так работают и есть нюансы, но для какого-то базового представления очень полезно.

В том же Render Hell есть ссылки на лекции по параллельным вычислениям, которые объясняют работу GPU той же NVidia и принцип работы архитектуры Maxwell в подробнее и сложнее. Это такое знание которое нет необходимости знать прям конкретно вплоть до нюансов конкретной видеокарты, но поможет лучше оптимизировать или понимать проблемы в ваших эффектах. Оно, так же как и знание о существовании Cache Line Split у CPU полезно на уровне "понимания концепции". Знание деталей конкретной видеокарты особенно Unity разработчику может быть полезно крайне редко

В заключении

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

Теги:
Хабы:
Всего голосов 7: ↑7 и ↓0+7
Комментарии1

Публикации