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