一、概述

Effects框架是一組用于管理著色器程序和渲染狀態(tài)的工具代碼。例如,你可能會(huì)使用不同的effect繪制水、云、金屬物體和動(dòng)畫角色。每個(gè)effect至少要由一個(gè)頂點(diǎn)著色器、一個(gè)像素著色器和渲染狀態(tài)組成。

在Direct3D11中,Effects框架已從D3DX庫中移除,需要我們自己配置effect庫,配置過程請參考《Direct3D11學(xué)習(xí):(一)開發(fā)環(huán)境配置》。

上一篇文章介紹了D3D11的繪圖基礎(chǔ)過程,并繪制了一個(gè)彩色立方體,當(dāng)中使用了Effects框架,只是簡單的介紹了一下。我們這篇文章來詳細(xì)講解一下Effects框架。

 

二、Effects

2.1 effect文件

我們已經(jīng)討論了頂點(diǎn)著色器、像素著色器,并對(duì)幾何著色器、曲面細(xì)分著色器進(jìn)行了簡要概述。我們還討論了常量緩沖,它可以用于存儲(chǔ)由著色器訪問的“全局”變量。這些代碼通常保存在一個(gè)effect文件(.fx)中,它是一個(gè)純文本文件中(就像是C++代碼保存在.h和.cpp文件中一樣)。除了著色器和常量緩沖之外,每個(gè)effect文件至少還要包含一個(gè)technique,而每個(gè)technique至少要包含一個(gè)pass。

1.technique11:一個(gè)technique由一個(gè)或多個(gè)pass組成,用于創(chuàng)建一個(gè)渲染技術(shù)。每個(gè)pass實(shí)現(xiàn)一種不同的幾何體渲染方式,按照某些方式將多個(gè)pass的渲染結(jié)果混合在一起就可以得到我們最終想要的渲染結(jié)果。例如,在地形渲染中我們將使用多通道紋理映射技術(shù)(multi-pass texturing technique)。注意,多通道技術(shù)通常會(huì)占用大量的系統(tǒng)資源,因?yàn)槊總€(gè)pass都要對(duì)幾何體進(jìn)行一次渲染;不過,要實(shí)現(xiàn)某些渲染效果,我們必須使用多通道技術(shù)。

2.pass:一個(gè)pass由一個(gè)頂點(diǎn)著色器、一個(gè)可選的幾何著色器、一個(gè)像素著色器和一些渲染狀態(tài)組成。這些部分定義了pass的幾何體渲染方式。像素著色器也是可選的(很罕見)。例如,若我們只想繪制深度緩沖,不想繪制后臺(tái)緩沖,在這種情況下我們就不需要像素著色器計(jì)算像素的顏色。

網(wǎng)友評(píng)論