Skip to content

About

CPU software rasterizer developed as a part of a university computer graphics course

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Software Rasterizer

Решение задания по университетскому курсу компьютерной графики. Полный текст задания: текст задания.

Решение написано на C++ (C++23). Нужны компилятор (g++ или clang), CMake не ниже 3.10 и GLFW 3.3+.

Сборка под Linux

Сборка (из корня проекта):

cmake -S . -B build
cmake --build build -j

По умолчанию собирается Release (-O3 -march=native). Для отладки соберите отдельную Debug-версию в другую папку:

cmake -S . -B build_debug -DCMAKE_BUILD_TYPE=Debug
cmake --build build_debug -j

Измерять скорость растеризатора имеет смысл только в Release-сборке.

Сборка под Windows

Сборка CMake(из корня проекта):

cmake --build build -j --config Release

Запуск

main_cli

./build/main-cli [mesh.obj] [texture.png|jpg] [output.png]

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

main_app

./build/main-app <width> <height>

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

Соглашения

Соглашения

  • Система координат: правая.
  • Хранение матриц: по строкам.
  • Векторы: столбцы; преобразование выполняется как v' = M * v.
  • Порядок преобразований: clip = P * V * M * position, где M — матрица модели, V — матрица вида, P — матрица проекции.
  • Камера: смотрит вдоль отрицательной оси Z.
  • Координаты изображения: начало в левом нижнем углу кадрового буфера, X направлена вправо, Y — вверх.
  • Границы текстуры: используется повторение текстуры.

Управление

Клавиша Режим работы
0 Освещение по ламберту
1 Отображение цветов
2 Отображение нормалей
3 Отображение глубины
4 Отображение текстурных координат

About

CPU software rasterizer developed as a part of a university computer graphics course

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages