Методы рендеринга

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

Рейкастинг

В методе rayasting мы предполагаем, что у нас есть камера, расположенная где-то в 3D-мире, и из этой камеры мы снимаем лучи, проходящие через окно камеры в 3D-мир. Для каждого луча, если он попадает в объект, мы устанавливаем цвет пикселя в цвет объекта, в который мы попали. Чертовски просто.
Этот метод использовался еще в 80-х, потому что он относительно быстрый и дешевый. Проблема здесь в том, что мы не можем визуализировать высококачественные сцены 3D-графики с использованием техники рейкастинга только потому, что мы не описываем что-то вроде источников света или материалов поверхностей объектов или что-то в этом роде…

Трассировка лучей

Что касается трассировки лучей, это предполагает ту же ситуацию с камерой, которая также находится где-то в 3D-мире. Мы по-прежнему снимаем лучи из окна камеры в 3D-мир. Разница в том, что если луч попадает на объект, мы рассматриваем другой луч от точки пересечения до источников света. Если второй луч падает на свет, то это означает, что он освещен, в противном случае это означает, что эта поверхность находится в тени, а другая поверхность препятствует попаданию на нее света.
Этот метод дает гораздо более реалистичные результаты, поскольку Теперь мы можем размещать источники света в сцене и создавать тени. Мы также можем описать отражающие и преломляющие поверхности. Мы также можем определить, сколько лучей отражения позволяет рендерить не только простые объекты, но и рендерить отражающие и преломляющие поверхности.
Проблема здесь в том, что это было сложно использовать в приложениях реального времени, поскольку рендеринг занимает много времени. единый кадр. Необходимая вычислительная мощность увеличивается, когда мы увеличиваем разрешение экрана. Так что ему нужен очень хороший графический процессор, чтобы поддерживать высокую частоту кадров с помощью этой техники…

Отслеживание пути

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

Растеризация

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

В следующей статье мы немного поговорим об отношении между программным и аппаратным обеспечением. Это проложит путь к пониманию OpenGL.

Ваше здоровье !