3d_graphics
Это старая версия документа!
3D-графика
Процесс рендеринга 3D-треугольника выглядит следующим образом:
- Координаты вершин загружаются в регистры GTE VXY0, VZ0, VXY1, VZ1, VXY2, VZ2;
- Загружается матрица поворота 3×3, вектор смещения и параметры проекции;
- Выполняется инструкция GTE RTPT;
- Результат - три вершины в экранном пространстве - считывается обратно в регистры CPU;
- При необходимости вершины отсекаются в зависимости от направления (winding), чтобы не рисовать треугольники, повернутые в сторону от камеры;
- Отсекаются вершины, которые находятся полностью за пределами экрана или слишком близко к камере по глубине;
- Формируется и отправляется GPU-команда для рисования треугольника. Для текстурированного непрозрачного треугольника это GP0(24h).
Советы для повышения производительности:
- При рендеринге индексированных мешей не трансформируйте вершины по несколько раз. Создайте буфер для кэширования вершин в экранном пространстве. В первом цикле трансформируйте все вершины по три штуки, вне зависимости от индексов (для GTE индексы не имеют значения), во втором - рисуйте треугольники по индексам.
- Используйте буфер команд и DMA, это гораздо быстрее, чем отправлять команды рисования по одной.
3d_graphics.1792077957.txt.gz · Последнее изменение: — gecko
