Предыдущая Следующая
foreach (GraphicsAdapter adapter in GraphicsAdapter.Adapters) {
GraphicsDeviceCapabilities caps =
adapter.GetCapabilities(DeviceType.Hardware);
// проверка второй версии шейдерной модели
if (caps.MaxPixelShaderProfile < ShaderProfile.PS_2_0)
{
System.Diagnostics.Debug.WriteLine(«Hет поддержки Shader Model 2.0.»);
} }
Шейдеры 275
Этот код в основном предназначен для компьютерных систем, но есть и более рациональные решения поддержки различных версий шейдеров. Например, написание универсальных шейдерных программ, использующих исключительно синтаксис всех моделей шейдеров, или написание отдельных блоков кода для всех трех или двух последних версий шейдерных моделей. Для приставки Xbox 360 Shaders Models 2.0 - это основная модель, и на базе этой модели необходимо писать шейдерные программы.
15.7.2. Механизм работы шейдерных программ
Любой язык программирования направлен на описание синтаксиса и семантики. На базе этих правил и ключевых слов пишутся все программы. Точно так же и язык HLSL обладает своим уникальным синтаксисом и семантикой. Язык HLSL имеет очень большое количество ключевых слов, как говорится, на все случаи жизни. Но часть ключевых слов может не поддерживаться определенной моделью видеоадаптера. Вот для этого и нужна шейдерная модель (Shaders Models), которая описывает требования, предъявляемые к видеоадаптеру. В результате шей-дерная модель является неотъемлемой частью правил использования высокоуровневого языка программирования шейдеров.
Шейдерные программы пишутся в обычных инструментариях (продукты семейства Visual Studio, RenderMonkey, FX Composer...) и сохраняются в отдельных файлах с расширением FX. Затем этот файл или файлы подгружаются в программу, и когда в исходном коде программа доходит до места выполнения шейдерного файла, то в этот момент программа переключается на выполнение файла шейдеров.
Как только шейдерная программа выполнена, работа приложения опять возвращается к основному исходному коду программы. Но поскольку шейдеры очень «плотно» интегрируются в исходный код программы, то и выполнение шей-дерных программ происходит достаточно часто и быстро. Таким образом, все приложение постоянно нагружает работой (в хорошем смысле этого слова) графический процессор видеокарты, минуя основной процессор компьютерной системы.
Специфичность архитектуры графического процессора заключается в наличии входных и выходных регистров. С помощью языка HLSL происходит запись определенных данных во входные регистры видеоадаптера и задается набор действий, которые графический процессор должен выполнить. После выполнения заданных операций все итоговые результаты помещаются в выходные регистры графического процессора, откуда посредством все той же шейдерной программы полученные данные считываются и выполняются. В данном контексте выполнение шейдерной программы означает рисование на экране итоговой графической картинки. Предыдущая Следующая
|