Shadow mapping - несколько источников - PullRequest
0 голосов
/ 03 января 2011

Я смотрю на написание некоторого кода, который выполняет отображение теней, в DX9. Пример кода, который у меня есть только карты теней от одного источника света. Является ли производительность приемлемой для карты теней от более чем одного источника света? Моя сцена ОЧЕНЬ легкая для рендеринга в противном случае - здесь нет текстур, а есть только несколько сотен или несколько тысяч вершин.

Беда в том, что моя сцена происходит в космосе, недалеко от Солнца. Я собирался создать Солнце как сферу и визуализировать каждую вершину в качестве источника света - это также дало хорошие эффекты для различных эффектов космического корабля в области науки. Но, читая код, я очень обеспокоен тем, что это разрушит мою производительность, и я не совсем уверен, что это приведет к невероятным световым эффектам, которые я ищу. Я просто перебил здесь?

Ответы [ 3 ]

1 голос
/ 04 января 2011

Простой способ визуализировать несколько источников света, каждый из которых отбрасывает тени, ------>

Для каждого источника света в цикле выполните следующие действия: *

{

Очистить черный экран за пределами RenderTarget.

Рендеринг сцены только с текущим освещением ... на внеэкранной визуализации цели.

Затем, включив Blending (Add, One to One), нарисуйте / наложите Offscreen RenderTarget на ваш основной буфер.

}

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

Если что-то из этого неясно и требуется более подробное объяснение, дайте мне знать ...

0 голосов
/ 08 января 2011

ТБХ вы просто перебиваете. Источник света из каждой вершины в большой сфере слишком много. Если вы хотите получить мягкие края теней, вам лучше рассмотреть мягкие тени в целом.

Чтобы дать вам пример Half-life 2 достиг мягкого затенения путем рендеринга карт теней в отдельный буфер рендеринга (при использовании Z-буфера из основного буфера рендеринга). Затем размывая этот буфер и примените его обратно к основному буферу рендеринга. В результате получаются довольно красивые тени ...

0 голосов
/ 03 января 2011

Если вы когда-либо искали код DX или OGL для «продвинутых» эффектов / техник, взгляните на Humus 3D , есть несколько образцов карт теней, у одного должно быть несколько источников. Также этот раздел графических процессоров Gems 3 может представлять интерес.

...