Скачать 335.79 Kb.
|
Ray Tracing (трассировка лучей)(Далее показаны самые красивые ролики с использованием RT) Ray-tracing – это наиболее общий алгоритм, который позволяет создавать глобальное освещение сцены, полный просчет всех теней с любыми параметрами, отображение сложных оптических эффектов многократного преломления и отражения и т.д. Единственный его недостаток заключается в высоких требованиях к вычислительным мощностям, так что его расчет в реальном времени стал производится только недавно. Radiosity http://en.wikipedia.org/wiki/Photon_mappingPhoton mappingLightmap (световые карты)Есть другие методы, которые не являются такими ресурсоемкими, как Ray-Tracing, но и в тоже время теряют в универсальности, зато под них заточены современные графические ускорители. Одним из таких методов является lightmap, т.е. карта освещенности, первая компьютерная игра в которой он появился – Quake. Lightmap представляет из себя массив так называемых световых текстур, конечный цвет точки получается простым умножением её цвета в темноте на значение яркости точки световой текстуры. Можно провести аналогию с классической анимацией: примерно так в рисованных мультфильмах художники-мультипликаторы рисовали тени от персонажей. Только вместо кисти аниматора используется видеоускоритель. А именно — тень представляется или как специальная текстура с черным силуэтом объекта, которая накладывается на затеняемые треугольники (отбрасывающая тень модель сначала рисуется в эту теневую текстуру). Карты освещенности позволяют отобразить лишь статическое освещение, и очень часто для их предварительного расчета используется тот же Ray Tracing. (видео из различных игр со специальными остановками для того, чтобы разглядеть источники света. Можно просто взять всю серию quake с 1-ой по 3-ую часть). Shadow volumes (теневые объемы)Volume Intersect !!!! -> http://download.developer.nvidia.com/developer/SDK/Individual_Samples/samples.html#HLSL_VertexLight В Nvidia effects browser все есть !!!!!!!!!!!!!!!! Динамические тени от объектов в реальном времени с учетом совместимости с существующими технологиями аппаратного ускорения получают с помощью алгоритма Теневых Объемов. Самый яркий пример здесь – игра Doom 3. Алгоритм Shadow Volumes был впервые предложен Франклином Кроу (Franklin Crow) в 1977 году для генерации теней в трехмерном пространстве. Особенностями алгоритма можно назвать построение геометрически правильных теней с четкими краями, а также использование буфера шаблонов (stencil-буфера). По сути, буфер шаблонов поддерживают все видеокарты, поддерживающие 32-битный цвет, начиная с таких динозавров, как Riva TNT. Что такое буфер шаблонов? Буфер шаблонов - это, по сути, дополнительная плоскость в буфере кадра (обычно 8 битов на точку), используемая для поточечного отсечения изображения. Алгоритм основан на использовании так называемых "теневых объемов" (shadow volumes). Теневой объем представляет собой область трехмерного пространства, полностью заполненную тенью. Теоретически, теневые объемы строятся по точкам силуэта объекта, отбрасывающего тень, и лучам, исходящим из этих точек по направлению от источника света. Однако практически, вместо лучей используются отрезки конечной длины, так как, во-первых, технически сложно работать с бесконечными величинами, а во-вторых, сцена всегда ограничена пирамидой видимости. Чтобы определить, попадает ли данная конкретная точка экрана в тень, или нет, предлагается подсчитывать число пересечений луча, идущего от наблюдателя через эту точку с границами теневых объемов. Если результат нечетный - точка лежит в тени (СМ. КАРТИНКУ!!!!). Этот подход был впоследствии усовершенствован для использования с буфером шаблонов. Мы увеличиваем значение в буфере, соответствующее точке на экране, при пересечении лучом "видимых" граней (нормаль которых повёрнута к наблюдателю) теневых объемов и уменьшаем при пересечении "невидимых" граней (см. рис. 1). В результате мы получаем маску в буфере шаблонов, по которой впоследствии рисуем тень, причем делается это за два цикла обхода сцены, за один цикл рисуются освещенные участки сцены, а за другой - затененные. Основным плюсом этой системы освещения стала возможность построения теней в реальном времени, для каждого отображаемого кадра: монстры, проходя мимо ламп, отбрасывают динамические тени; передвигающиеся источники освещения корректно затеняют окружающий их мир. Однако при помощи shadow volumes очень тяжело отобразить преобладающие в реальности размытые, «мягкие» тени. По сути, для этого придется каждый источник света обработать несколько раз (чем больше — тем лучше будет результирующее качество), построив для него несколько теневых массивов и затем усреднив их. Понятно, что алгоритм этот очень неэффективен. Также shadow volumes плохо приспособлены для рендеринга теней на больших открытых пространствах. Тени за окном практически всегда размыты: слишком много отражающих свет объектов, плюс воздействие на лучи света преломляющей и рассеивающей земной атмосферы. Затем, тени на открытых пространствах могут быть практически бесконечными, а чем больше тень, тем больше пикселей потребуется закрасить видеочипу для её отображения. |