Бесплатная серия книг, которая учит с нуля создавать ray tracer на C++ и содержит полный исходный код для каждого этапа.
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
Клонируйте репозиторий
git clone https://github.com/ssloy/tinyrenderer.git - 2
Перейдите в каталог проекта
cd tinyrenderer - 3
Настройте и соберите проект с помощью CMake
cmake -Bbuild && cmake --build build -j - 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-контента: моделирования, риггинга, анимации, симуляции, рендеринга, композитинга, трекинга движения и видеомонтажа.
Движок физически корректного рендеринга в реальном времени для Android, iOS, Linux, macOS, Windows и WebGL2, рассчитанный на компактность и эффективность на Android.
Бесплатная книга с открытым исходным кодом и сайт, где по темам разбираются возможности современного C++ от C++11 до C++26.
Воссоздаёт объект по одному изображению в виде процедурного TypeScript-кода для Three.js, готового к анимации, а не файла с мешем.
Китайскоязычная база знаний для разработчиков игр и технических руководителей: от основ и инженерии до производственных процессов, управления командами и live-операций.