С наступлением 2019 года подавляющее большинство людей по всему миру сосредотачиваются на том, чтобы ходить в спортзал или экономить деньги. Я решил погрузиться в другой тип разрешения, и я должен сказать, что это довольно интенсивно, но я люблю вызовы и люблю учиться, поэтому я решил написать свой собственный рендерер. Честно говоря, я понятия не имею, чем это закончится, но все дело в путешествии, а не в конечной цели. В качестве путешествия я знаю одно, я узнаю много нового, погружусь в кроличьи норы и поговорю с ветеранами в офисе, чтобы окунуться в эту сумасшедшую цель понять, как работает и реализуется движок рендеринга. Это будет ухабистая поездка, но, безусловно, это хороший вызов! На заметку: вызов принят!

Я люблю фильмы с самого раннего возраста… И поэтому состояние каждого фильма становится окончательным только тогда, когда оно проходит этап рендеринга!

Но почему?

Чтобы понять КАК!

С чего начать?

На втором курсе колледжа у меня был первый урок по компьютерной графике, и мы едва касались темы того, как на самом деле работает рендеринг. В то время мне было 18 лет, сейчас мне 23, так что эти лекции о том, как работает движок рендеринга, немного далеки от «повседневной школьной атмосферы». Так или иначе, я вернулся ко всем концепциям, от трассировки лучей, расчета световых лучей и так далее… Чувствую себя заржавевшим, но не потерянным, так что это хороший знак.

Школьные годы позади

Основная цель написания рендерера с нуля заключается не только в рендеринге изображения из кучи загруженных библиотек, но и в понимании того, КАК и ПОЧЕМУ работает из-за сцены. Для начала я открою капот этого программного обеспечения и проанализирую сигналы, чтобы убедиться, что каждый проблеск *магии*. Большинство рендереров не имеют открытого исходного кода, поэтому вы используете их как черный ящик и воспринимаете все как должное…

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

Иди глубже, всегда глубже

Каким будет путешествие?

Между Unity, Unreal, Maya, Blender, Cinema4D… Это основное видение программного обеспечения для 3D, позволяющее воплотить творческий подход в конечный осязаемый результат. Все инструменты, которые можно использовать для выражения своих идей, получают подтверждение только при прохождении этапа рендеринга конвейера. Ни один отдельный треугольник не может быть одновременно и квадратом, и треугольником, кроме любой магии кода.

На уровне математики

Как упоминалось ранее, цель здесь — изучить и понять детали рендеринга, а не заработать деньги или написать очередное убойное приложение. А также, как уже упоминалось, я не совсем не знаю, каким будет путешествие в виде линейного описания.

Геометрия, Геометрия, Геометрия

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

Существует множество книг, в которых объясняется, как создается конечный результат рендеринга, но моя цель — не применить инструмент, а понять его с нуля. Вот почему я решил углубиться в математику, но в основном в «чистый» способ увидеть эту широкую область. Начните с доказательства концепции, затем переместите ее в магию, а затем мы урежем.

На уровне компьютера

Термин «рендеринг физического тела» (на английском языке, Physically Based Rendering, или PBR) перегруппирован в ансамбль методов визуализации 3D-сцены, который имитирует модели телосложения, определяющие соответствие светового излучения в реальном мире. Le rendu physique réaliste a pour but de donner aux objets virginels une apparence proche de celle qu’ils auraient en réalité, et de baser le rendu des matériaux sur un nombre réduit de propriétés physiques qui sont peu interdépendantes, pour simplifier le travail des infographistes. L’albédo, la rugosité, et le caractère metallique sont des propriétés de materiau souvent utilisées pour ce type de rendu.

Путешествие будет заключаться в том, чтобы много читать о компьютерной графике, не только о конечном результате и программном обеспечении, но и понимать историю этих алгоритмов. Компьютерные коды происходят от магии людей, применяющих концепцию в некоторой среде x или y.

Компьютерная графика сильно изменилась… Я даже не родился, когда Softimage только начинал компилироваться, и когда 3D анимационные фильмы были еще далеки от общепринятых представлений. Но, как и в случае с математикой, хорошие идеи и алгоритмы складываются из понимания основных концепций и небольшой реализации.

Я буду использовать C++, потому что на нем уже продемонстрировано много кода, и я чувствую, что это лучший язык для решения подобных проблем 3D-рендеринга.

Первый гол?

Честно говоря, просто распечатайте треугольник на экране и визуализируйте его, используя любую концепцию или идею, возникшую в ходе этого путешествия.

Давай сделаем это!

Итак, вот начало большого пути знаний и лекций. Я погружаюсь на 360% процентов, чтобы узнать: Как написать средство визуализации с нуля!

Удачного кодирования,

Много любви,

хх, Антуан