Repolode
ssloy

ssloy/tinyrenderer

Пошаговый курс по 3D-рендерингу: создаём программный рендерер примерно на 500 строках чистого C++, без сторонних библиотек.

Звёзды
24,450
Форки
2,311
Открытые issues
4
Последний коммит
3 месяца назад

Что это?

Tinyrenderer — серия уроков о том, как внутри устроены 3D-графические API, такие как OpenGL, Vulkan, Metal и DirectX. Вместо вызовов GPU API мы с нуля создаём упрощённый программный рендерер и разбираем рисование линий, растеризацию треугольников, барицентрические координаты, z-buffer, работу с камерой, шейдинг, текстурирование и normal mapping, shadow mapping и ambient occlusion.

Код намеренно небольшой — около 500 строк C++ без внешних графических зависимостей. В качестве вспомогательного средства используется только один класс для чтения и записи изображений в формате TGA. Проект создан для обучения: основные материалы курса последовательно разбирают каждый этап, а исходный код предназначен для изучения, а не для повторного использования в качестве библиотеки.

Программа принимает триангулированную 3D-модель с текстурами и создаёт отрендеренное изображение; графического интерфейса нет. Сборка выполняется с помощью CMake.

Ключевые возможности

  • 01С нуля создаёт программный рендерер примерно на 500 строках C++.
  • 02Последовательно разбирает растеризацию, z-buffer, настройку камеры и шейдинг.
  • 03Рассматривает текстурирование, normal mapping, shadow mapping и ambient occlusion.
  • 04Не использует сторонние графические библиотеки — только небольшой модуль для чтения и записи изображений TGA.
  • 05Материалы организованы в виде пронумерованной серии статей курса.

Сценарии использования

  • Изучение внутреннего устройства конвейеров OpenGL и Vulkan.
  • Преподавание основ растеризации на курсе или практическом занятии по компьютерной графике.
  • Изучение барицентрических координат, z-buffer и normal mapping перед работой с GPU API.

Быстрый старт

  1. 1

    Клонируйте репозиторий

    git clone https://github.com/ssloy/tinyrenderer.git
  2. 2

    Перейдите в каталог проекта

    cd tinyrenderer
  3. 3

    Настройте и соберите проект с помощью CMake

    cmake -Bbuild && cmake --build build -j
  4. 4

    Запустите рендерер на примерах моделей; результат сохранится в framebuffer.tga

    build/tinyrenderer obj/diablo3_pose/diablo3_pose.obj obj/floor.obj

Что важно знать

  • Этот код — учебное упражнение, и в README сказано не использовать его напрямую.
  • Это программный рендерер, который не показывает, как создавать приложения для GPU.
  • Лицензия указана неясно (NOASSERTION).

Темы

Частые вопросы

Что такое tinyrenderer?
Пошаговый курс по 3D-рендерингу: создаём программный рендерер примерно на 500 строках чистого C++, без сторонних библиотек. Tinyrenderer — серия уроков о том, как внутри устроены 3D-графические API, такие как OpenGL, Vulkan, Metal и DirectX. Вместо вызовов GPU API мы с нуля создаём упрощённый программный рендерер и разбираем рисование линий, растеризацию треугольников, барицентрические координаты, z-buffer, работу с камерой, шейдинг, текстурирование и normal mapping, shadow mapping и ambient occlusion.
tinyrenderer можно использовать бесплатно? Какая у него лицензия?
tinyrenderer распространяется с открытым исходным кодом под лицензией Other. Перед использованием в коммерческих продуктах проверьте условия лицензии.
tinyrenderer всё ещё поддерживается?
Обновлялся за последние 6 месяцев. Последний коммит в tinyrenderer — 29 июл. 2026 г..
Для чего можно использовать tinyrenderer?
Изучение внутреннего устройства конвейеров OpenGL и Vulkan. Преподавание основ растеризации на курсе или практическом занятии по компьютерной графике. Изучение барицентрических координат, z-buffer и normal mapping перед работой с GPU API.
Как установить tinyrenderer?
Клонируйте репозиторий: git clone https://github.com/ssloy/tinyrenderer.git Перейдите в каталог проекта: cd tinyrenderer Настройте и соберите проект с помощью CMake: cmake -Bbuild && cmake --build build -j Запустите рендерер на примерах моделей; результат сохранится в framebuffer.tga: build/tinyrenderer obj/diablo3_pose/diablo3_pose.obj obj/floor.obj
Где скачать tinyrenderer?
Исходный код и инструкции по установке — на GitHub: https://github.com/ssloy/tinyrenderer

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Blender — бесплатный пакет с открытым исходным кодом для создания 3D-контента: моделирования, риггинга, анимации, симуляции, рендеринга, композитинга, трекинга движения и видеомонтажа.

21,2 тыс.3,4 тыс.C++OtherОбновлён 18 часов назад

Движок физически корректного рендеринга в реальном времени для Android, iOS, Linux, macOS, Windows и WebGL2, рассчитанный на компактность и эффективность на Android.

20,6 тыс.+11 за неделю2,3 тыс.C++Apache-2.0Обновлён 17 часов назад

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

6,6 тыс.+3 за неделю656PythonMITОбновлён 8 дней назад