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

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

Согласно исследованию НИУ ВШЭ «От совмещения учебы с работой к совмещению работы с учебой» (К. В. Рожкова, С. Ю. Рощин, П. В. Травкин, «Вопросы образования», 2024, № 2), около 53% студентов очной формы обучения работали хотя бы один месяц за время учебы в вузе. На первом курсе бакалавриата работают около 18% студентов, к выпускному курсу доля вырастает до 35% у бакалавров и до 40% у специалистов. Чаще других учебу с работой совмещают студенты направления «Математика и компьютерные науки» — 58%; авторы связывают это с широкими возможностями удаленной занятости для тех, у кого есть цифровые компетенции. На мой взгляд, отсюда следует и рост потребности в самостоятельном обучении, а оно требует структурированного подхода и проверенных материалов. Это уже не говоря о тех, кто пытается не забывать о личной жизни: спорт, студенческий актив, личные интересы и другое.

Также, на мой взгляд, имеет место проблема конспектирования лекции в реальном времени. Не всегда удается одновременно усваивать слова лектора и записывать.

Таким образом, этой статьей я хочу предоставить доступ к удобному и систематизированному набору академических знаний. Этот roadmap в мир КГ является дополнением к академическому образованию, он поможет облегчить учебу в университете: лучше понимать структуру и дать ссылки на материалы. К нему нужно относиться как к вспомогательному инструменту в обучении

Для кого этот roadmap

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

Тем, кто учится самостоятельно. Если профильного образования нет, а вместо системы — стопка разрозненных туториалов, здесь вы найдете последовательность: что за чем изучать и на каком материале.

Разработчикам из смежных областей — тем, кто пришел из бэкенда, геймдева на готовых движках или машинного обучения и хочет разобраться, как графика устроена изнутри, а не только на уровне API.

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

Пара слов про ИИ

Не сказать про ИИ в такой статье сегодня было бы неправильно. ИИ — действительно мощный инструмент в учебе: он позволяет быстро начать изучение нового материала, объяснит незнакомый термин своими словами и не устанет отвечать на глупые вопросы.

Но в этом же и главная опасность. Знания, полученные таким путем, лишены опыта самостоятельного исследования: вы не искали ответ сами, не заходили в тупики, не сверяли источники — а именно это и закрепляет материал в голове. Готовый ответ легко читается и так же легко забывается.

Как правильно использовать ИИ в учебе, я и сам пока не знаю. Мне сейчас интереснее наблюдать: что студенты спрашивают у ЛЛМок, а что все-таки разбирают сами, и какими программистами они становятся ближе к старшим курсам. Ответ на этот вопрос мы, похоже, узнаем все одновременно.


Все, о чем дальше пойдет речь и многие другие полезные материалы, собраны в одном месте — www.computer-graphics.xyz. Там дорожная карта разбита по этапам и дисциплинам, а так же есть раздел с полезными материалами и заметками. В статье я привожу дорожную карту целиком, чтобы было видно логику и связи между темами.

Вся дорожная карта целиком. Дальше — по этапам, с материалами для каждой дисциплины.

Этап 1. Основы математики и программирования

Основы математики

Этот этап может показаться особенно сложным и скучным при самостоятельном обучении — и это действительно так, очень сложно сходу увидеть прикладную часть этих знаний. Математика охватывает огромный спектр тем, в которых легко потеряться, особенно если углубляться в теории, не имеющие прямого применения на начальном этапе. Обучение в таком случае превратится в бесконечный процесс. Чтобы не утонуть в сложностях, рекомендуется подходить к изучению этих разделов математики по спирали: сначала осваивать базовые понятия каждого раздела, а затем постепенно возвращаться к ним, расширяя и углубляя понимание.

Математический анализ

Математический анализ обобщает математические операции и концепции, которые применимы в компьютерной графике. Он охватывает такие аспекты, как переходы между системами координат, параметрические модели, объекты вращения и т.п. Все эти элементы могут быть описаны и преобразованы с помощью математических функций и уравнений.

Материалы для изучения
  • [easy] Суть математического анализа. Интерактивное введение

  • [easy] Теория пределов. Теория пределов от mathprofi

  • [easy] Производные. Производные от mathprofi

  • [easy] Графики и функции. Графики и функции от mathprofi

  • [easy] Функции нескольких переменных. Функции нескольких переменных от mathprofi

  • [easy] Интегралы. Интегралы от mathprofi

  • [easy] Числовые ряды. Числовые ряды от mathprofi

  • [medium] Фихтенгольц Г.М. “Основы математического анализа (Часть 1-2)”. Классический университетский учебник

  • [medium] Ильин В.А. “Основы математического анализа (Часть 1-2)”. Классический университетский учебник

  • [medium] Ильин В. А., Садовничий В. А. “Математический анализ. Начальный курс”. Классический университетский учебник

  • [easy] Бохан К. А. “Курс математического анализа (Том 1-2)”. Учебник для студентов педагогических вузов, простое изложение материала

  • [medium] Демидович Б. П. “Сборник задач и упражнений по математическому анализу”. Легендарный сборник задач, на котором выросло не одно поколение студентов

Линейная алгебра

Линейная алгебра и аналитическая геометрия — это самое важное, что необходимо усвоить в начале. Линейная алгебра дает фундаментальные знания работы с векторами, матрицами и пространствами, которые представляют собой инструменты работы с геометрическими объектами.

Материалы для изучения

Аналитическая геометрия

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

Материалы для изучения
  • [easy] Аналитическая геометрия. Аналитическая геометрия от mathprofi

  • [medium] Ильин В.А. Позняк Э.Г. “Аналитическая геометрия”. Классический университетский учебник

Дискретная математика

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

Материалы для изучения
  • [medium] Новиков Ф.А. “Дискретная математика для программистов”

  • Кристофидес Н. “Теория графов. Алгоритмический подход”. Одна из лучших книг по теории графов

Теория вероятностей и математическая статистика

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

Материалы для изучения

Основы программирования

Программирование — это прежде всего навык, который развивается через регулярную практику. Особенно в задачах, связанных с компьютерной графикой, визуализацией и численными расчётами, важно уметь писать не только рабочий, но и высокопроизводительный код. Это требует внимания к алгоритмам, структурам данных и особенностям архитектуры компьютеров. Также полезно помнить, что программирование — это область, где обучение никогда не заканчивается: появляются новые инструменты, подходы и парадигмы.

Языки программирования

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

Материалы для изучения
  • [easy] Основы C++. Яндекс хендбук

  • [easy] Learn C++. Большой набор материалов по изучению C++

  • [medium] Просто о шаблонах С++. Введение в метапрограммирование на C++

  • [medium] Программирование на C++, часть 1. Качественные и крутые лекции. Не подходят для изучения с нуля

  • [medium] Программирование на C++, часть 2. Качественные и крутые лекции. Не подходят для изучения с нуля

  • [medium] Лекции C++. Продвинутые и короткие лекции по стандартам C++

  • [easy] Основы python. Яндекс хендбук

  • [easy] Курс python. Opensource курс по python

  • [easy][en] Python. Python Tutorial (geeksforgeeks)

  • [medium] Андрей Александреску “Современное проектирование на С++”. Хорошая книга по метапрограммированию

  • [medium] Скотт Мейерс “Эффективный и современный С++. 42 рекомендации”. Хорошая книга по C++11 и C++14

Алгоритмы и структуры данных

В изучении этих навыков очень важно понимать практическое применение — так они будут усваиваться лучше. Знание ценно только тогда, когда оно соотносится с реальными целями и задачами. Поэтому очень трудно подобрать материалы для изучения этой темы. Это все равно что обучать пилотов, просто дав им инструкцию к самолёту и надеяться, что после прочтения они сразу смогут летать. Алгоритм — это последовательность шагов, необходимых для решения задачи. Структуры данных — это способ хранения и организации данных.

Материалы для изучения
  • [easy] Основы алгоритмов. Яндекс хендбук

  • [hard] Дональд Кнут “Искусство программирования (Том 1-4)”. Легендарный четырехтомник, который не так просто осилить

  • [medium] Кормен Т. “Алгоритмы. Построение и анализ”. Классическая книга

  • [medium] Никлаус Вирт. “Алгоритмы и структуры данных”. Классическая книга


Этап 2. Основы компьютерной графики и программирование графики

Основы компьютерной графики

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

Основы цифровой обработки изображений

Изучает алгоритмы и методы обработки цифровых изображений. Чаще всего цифровая обработка изображений (ЦОИ) сводится к цифровой фильтрации изображений: устранение шумов, сглаживание, повышение резкости и т.д. ЦОИ – это очень большой раздел математики.

Материалы для изучения

Математические основы компьютерной графики

Компьютерная графика (КГ) — область информатики, изучающая совокупность методов и приемов для преобразования данных в графическое представление. Ее математический аппарат представляет собой симбиоз линейной алгебры и аналитической геометрии

Материалы для изучения
  • [en/ru] Render tutorial. Создание упрощенной графической библиотеки на подобии OpenGL

  • [en/ru] Ray cast tutorial. Создание клона игры Wolfenstein 3D без использования графических библиотек

  • [en/ru] Ray trace tutorial. Написание трассировщика лучей на C++

  • [en/ru] Ray trace KABOOM tutorial. Рендер взрыва трассировкой лучей на C++

  • [en] Ray Tracing in One Weekend. Серия обучающих материалов по трассировке лучей

  • [en] Scratchapixel. Сборник обучающих материалов по компьютерной графике с очень приятным повествованием.

  • [en] Eric Lengyel “Mathematics for 3D Game Programming and Computer Graphics”. Одна из фундаментальных книг по КГ, описывающая простым академическим языком математические основы КГ.

  • [en] Tomas Akenine-Moller “Real-Time Rendering”. В интернете часто советовали эту книгу начинающим.

Программирование графики

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

Графические библиотеки

Графическая библиотека – это программная библиотека, предназначенная для решения задач визуализации. Как правило, она предоставляет оптимизированные версии функций, которые выполняют распространённые задачи рендеринга (отрисовка треугольников, растеризация и т.д.). Основные технологии: OpenGL, Vulkan, Metal, Direct3D

Материалы для изучения
  • [en] Vulkan tutorial. Хороший обучающий материал по Vulkan. Официальный туториал основан на нем

  • [en] The book of shaders. Руководство по написанию шейдеров

  • [en] Slang shading language. Не пробовал, но предварительно нравится. Красивый и удобный, мне кажется, что он способен решить проблему унификации в шейдерных языках.

  • [en] Render pipeline. Страница на вики про конвейер рендера

  • [en] Metal Sample Code. Официальное руководство с примерами Metal

  • [en] DirectX tutorial. Серия уроков по DirectX

  • [en] DirectX Graphics Samples. Официальные примеры кода DirectX

  • [en] LearnOpenGL. Обучающий материал по OpenGL

  • [en/ru] Джейсон Грегори “Игровой движок. Программирование и внутреннее устройство”. Бестселлер, лучшая книга про проектирование игровых движков.

Игровые движки

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

Материалы для изучения
  • [en/ru] Unity Learn. Официальные обучающие материалы по Unity с разными уровнями сложности

  • [en] Learn Unreal Engine. Библиотека обучающих материалов по Unreal Engine

  • [en/ru] Джейсон Грегори “Игровой движок. Программирование и внутреннее устройство”. Бестселлер, лучшая книга про проектирование игровых движков.


Этап 3. Продвинутые знания

Этапы 3 и 4 идут параллельно: узкая специализация вырастает из продвинутых знаний.

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

Вычисления на видеокартах (GPGPU)

Вычисления на графических процессорах — методика использование графического процессора видеокарты для математических вычислений. В основном выделяют технологии: CUDA (NVidia devices), OpenCL (most devices), Metal (Apple devices), ROCm (AMD devices)

Материалы для изучения

Численные методы

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

Материалы для изучения
  • Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. “Численные методы”. Классический университетский учебник

  • [en] William H. Press and others “Numerical Recipes”. Сборник алгоритмов численных методов

  • [ru] Численные методы. Часть 1. Лекции МехМата МГУ. Лектор также соавтор популярной одноименной книги

  • [ru] Численные методы. Часть 2. Лекции МехМата МГУ. Лектор также соавтор популярной одноименной книги

  • [ru] Численные методы. Семинары. Часть 1. Семинары МехМата МГУ. Лектор также соавтор популярной одноименной книги

  • [ru] Численные методы. Семинары. Часть 2. Семинары МехМата МГУ. Лектор также соавтор популярной одноименной книги

Вычислительная геометрия

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

Материалы для изучения
  • Фокс А., Пратт М. “Вычислительная геометрия. Применение в проектировании и на производстве”

Методы оптимизаций

Оптимизация в математике — задача нахождения экстремума (минимума или максимума) целевой функции в некоторой области конечномерного векторного пространства. Методы оптимизаций играют важнейшую роль в машинном обучении, именно на этих методах основаны все алгоритмы обучения

Материалы для изучения

Физически корректный рендеринг

Physically based rendering (PBR) — это подход в компьютерной графике, который позволяет рендерить фотореалистичные изображения.

Материалы для изучения
  • [en] Physically Based Rendering: From Theory To Implementation. Онлайн-книга по реализации PBR рендер. Практико-ориентированная подача материала, но чересчур последовательная структура, поэтому ее трудно использовать как справочник

  • [en] Julian Fong, Magnus Wrenninge, Christopher Kulla and Ralf Habel “Production volume rendering: SIGGRAPH 2017 course”. Большая статья, описывающая техники современного объемного рендеринга в кинопроизводстве

  • [en] Radiometry: Overview. Теория в заметках по радиометрии используемая в PBR (блог Moments in Graphics)

  • [en] Spectral rendering: Overview. Теория в заметках по спектральному рендерингу (блог Moments in Graphics)


Этап 4. Узкоспециализированные знания

На этом этапе изучаются навыки, необходимые для решения прикладных задач в конкретных областях — будь то медицина, ракетостроение, архитектура или компьютерное зрение. Эти знания не входят в обязательную часть обучения, но становятся критически важными при работе над реальными проектами.

Обработка и визуализация томографических данных

Изучает методы и подходы визуализации МРТ, КТ и прочих томографических изображений. Чаще всего изображения хранятся в формате DICOM (Digital Imaging and Communications in Medicine).

Материалы для изучения
  • [en] Курсы по основам МРТ. Курс ориентирован больше на медицинские аспекты, чем математические.

  • Наттерер Ф. “Математические аспекты компьютерной томографии”

  • Аганов А.В. “Введение в магнитно-резонансную томографию”. Учебно-методическое пособие

Фотограмметрия

Методика сканирования объектов, которая использует фотокамеры или их комбинации для точного измерения формы, размера и положения объектов в пространстве

Материалы для изучения

Колориметрия

Это наука о цвете и методы его измерения

Материалы для изучения

Этап 5. Дополнительные навыки

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


Вместо заключения

Проект открытый, и я продолжаю его дополнять, и он точно не идеален: где-то не хватает описаний, где-то — материалов, где-то нейронка мне кривую картинку нарисовала и т.д.