netlib.narod.ru | < Назад | Оглавление | Далее > |
Главным преимуществом использования шейдеров является возможность настраивать каждый этап конвейера визуализации. В пиксельных шейдерах версии 1.1 (GeForce 3) вам было доступно всего восемь инструкций, и в реальности программируемый конвейер был не настолько хорош, потому что все инструкции пиксельных шейдеров эмулировались с помощью заранее запрограммированного оборудования. Пиксельные шейдеры 2.0 были более гибкими, позволяя использовать больше функций (как вы видели в предыдущей главе, методы normalize и pow доступны только в пиксельных шейдерах 2.0 и выше) и писать больше инструкций (здесь ограничение было 96, но некоторые методы требовали больше одной инструкции).
Пиксельные шейдеры 3.0 стали еще лучше, позволяя управлять потоком выполнения, что означало возможность выхода из кода шейдера по программируемому условию для оптимизации производительности. Сложные шейдеры в пиксельных шейдерах 3.0 могут содержать до 512 инструкций, и даже для очень быстрого графического оборудования это много. При визуализации миллионов пикселей тратится много времени на выполнение большого количества инструкций для каждого отдельного пикселя, даже если у вас есть 16, 24 или даже 32 блока пиксельных шейдеров, работающих параллельно; в новой видеокарте NVidia 8800 GTX есть целых 128 работающих параллельно блоков шейдеров. Иногда вы можете хотеть пропустить сложные вычисления, если на пиксель не влияет несколько источников света или он не лежит в тени. Таким образом вы сможете достигать замечательного внешнего вида и реализовать ресурсоемкие эффекты пиксельных шейдеров, ограничивая их, когда они не требуются. Звучит замечательно, но в действительности большинство новых игр используют пиксельные шейдеры 2.0, потому что они поддерживаются большинством видеокарт; обычные игры не поддерживают очень дорогое графическое оборудование.
Шейдерная модель 4.0 была представлена с Direct3D 10 (в начале 2006 года) и первая видеокарта (GeForce 8800) с ее поддержкой стала доступна в конце 2006 года, но Direct3D 10 работает только в Vista и поддерживающее его оборудование очень дорого. Потребуется время, чтобы разработчики начали в полной мере использовать шейдерную модель 4.0. XNA на данный момент поддерживает шейдерные модели от 1.1 до 3.0. Шейдерная модель 4.0 позволяет применять еще больше инструкций и вводит геометрические шейдеры, которые манипулируют данными геометрии и даже могут добавлять их перед выполнением вершинных и пиксельных шейдеров. В шейдерной модели 4.0 все шейдерные блоки унифицированы, а это значит, что вы можете использовать их для чего пожелаете. Здесь больше нет 8 вершинных и 16 пиксельных блоков, у вас просто есть 128 шейдерных блоков и все они могут использоваться для геометрических, вершинных и пиксельных шейдеров. Это замечательно для эффектов уровня детализации и таких поразительных эффектов, как наложение сдвига (displacement mapping). В 2007 году можно надеяться на появление нескольких крутых демонстраций, но игры, скорее всего, не будут использовать геометрические шейдеры до 2008 года или даже дольше.
netlib.narod.ru | < Назад | Оглавление | Далее > |