Составители:
Рубрика:
34
После этого возникает два вопроса - как строить Shadow Volume для данного
объекта, и как проверять, какая часть сцены находится внутри этого объекта.
Надо сказать, что эти вопросы связаны друг с другом, то есть от того как
строить Shadow Volume будет зависеть то, как будет находиться часть сцены
внутри него, и наоборот.
В самом простом случае ответ на первый вопрос звучит так - Shadow Volume
это силуэт объекта с точки зрения источника света, вытянутый до бесконечности.
То есть метод построения такой – необходимо найти все силуэтные ребра
объекта (с позиции источника света), и каждое такое ребро превратить в квад из
двух треугольников, вытянутый по направлению света. Понятно, что до
бесконечности вытянуть его нельзя, поэтому вытягивание происходит на какую-
то величину, заведомо превышающую размеры сцены.
Для нахождения части сцены, попадающей внутрь этого теневого объема,
используется стенсил-буфер (в дальнейшем - просто стенсил).
Стенсил-буфер – это дополнительный буфер размера экрана, то есть каждому
пикселю экрана соответствует свое значение в стенсил-буфере. Каждый раз, когда
точка рисуется на экране, то кроме тестов вроде сравнения с глубиной в Z-буфере
она проходит еще и стенсил тест. То есть, например, можно сказать - точка
рисуется, только если в стенсиле значение больше единицы. С другой стороны,
можно сказать, как изменить значение стенсила после того как пиксель в этом
месте отрисуется.
Это, например, полезно для разного рода отсечений. Характерный пример -
портальное отсечение. Пусть имеется портал в виде какого-то набора
треугольников, и необходимо, чтобы та часть сцены, которая за порталом,
выходила за его границы. Если портал произвольной формы, то гарантировать это
при простой отрисовке сложновато. Но если есть стенсил, то все становится
просто - сначала выполняется отрисовка портала в стенсил определенным
значением (запись на экран или в Z-буфер отключаем), а потом при отрисовке
сцены за порталом включается на это значение стенсил-тест. На запись в стенсил
есть следующие команды - что делать со стенсилом и при каких условиях.
Действия со стенсилом: "увеличить значение в стенсиле", "уменьшить значение в
После этого возникает два вопроса - как строить Shadow Volume для данного
объекта, и как проверять, какая часть сцены находится внутри этого объекта.
Надо сказать, что эти вопросы связаны друг с другом, то есть от того как
строить Shadow Volume будет зависеть то, как будет находиться часть сцены
внутри него, и наоборот.
В самом простом случае ответ на первый вопрос звучит так - Shadow Volume
это силуэт объекта с точки зрения источника света, вытянутый до бесконечности.
То есть метод построения такой – необходимо найти все силуэтные ребра
объекта (с позиции источника света), и каждое такое ребро превратить в квад из
двух треугольников, вытянутый по направлению света. Понятно, что до
бесконечности вытянуть его нельзя, поэтому вытягивание происходит на какую-
то величину, заведомо превышающую размеры сцены.
Для нахождения части сцены, попадающей внутрь этого теневого объема,
используется стенсил-буфер (в дальнейшем - просто стенсил).
Стенсил-буфер – это дополнительный буфер размера экрана, то есть каждому
пикселю экрана соответствует свое значение в стенсил-буфере. Каждый раз, когда
точка рисуется на экране, то кроме тестов вроде сравнения с глубиной в Z-буфере
она проходит еще и стенсил тест. То есть, например, можно сказать - точка
рисуется, только если в стенсиле значение больше единицы. С другой стороны,
можно сказать, как изменить значение стенсила после того как пиксель в этом
месте отрисуется.
Это, например, полезно для разного рода отсечений. Характерный пример -
портальное отсечение. Пусть имеется портал в виде какого-то набора
треугольников, и необходимо, чтобы та часть сцены, которая за порталом,
выходила за его границы. Если портал произвольной формы, то гарантировать это
при простой отрисовке сложновато. Но если есть стенсил, то все становится
просто - сначала выполняется отрисовка портала в стенсил определенным
значением (запись на экран или в Z-буфер отключаем), а потом при отрисовке
сцены за порталом включается на это значение стенсил-тест. На запись в стенсил
есть следующие команды - что делать со стенсилом и при каких условиях.
Действия со стенсилом: "увеличить значение в стенсиле", "уменьшить значение в
34
Страницы
- « первая
- ‹ предыдущая
- …
- 30
- 31
- 32
- 33
- 34
- …
- следующая ›
- последняя »
