久久国产av,国产激情欧美有码,亚洲国产综合精品2020,国产无套粉嫩白浆内精

opengl和directx怎樣選擇 opengl和directx哪個(gè)用來(lái)運(yùn)行游戲

2023-05-04 00:43:00 生財(cái)有道 8172次閱讀 投稿:半心人

opengl和directx怎樣選擇 opengl和directx哪個(gè)用來(lái)運(yùn)行游戲

opengl和directx怎樣選擇 opengl和directx哪個(gè)用來(lái)運(yùn)行游戲?很多人不了解,今天各百科為大家?guī)?lái)相關(guān)內(nèi)容,下面小編為大家整理介紹。

向前渲染延遲著色向前(基于圖塊的正面和背面渲染)

介紹

正向渲染通過(guò)柵格化場(chǎng)景中的每個(gè)幾何對(duì)象來(lái)工作。在著色過(guò)程中,通過(guò)迭代每個(gè)光線(xiàn)來(lái)決定幾何對(duì)象的光照方式,這意味著每個(gè)幾何對(duì)象都需要考慮場(chǎng)景中的所有光線(xiàn)。當(dāng)然,我們也可以通過(guò)丟棄在相機(jī)視覺(jué)錐內(nèi)被遮擋或不可見(jiàn)的幾何對(duì)象來(lái)進(jìn)行優(yōu)化,我們還可以通過(guò)丟棄不在相機(jī)視覺(jué)錐內(nèi)的光線(xiàn)來(lái)進(jìn)一步優(yōu)化。如果光線(xiàn)范圍是已知的,我們可以在渲染場(chǎng)景幾何體之前消除光錐。物體剔除和光錐剔除只能為正向渲染提供有限的優(yōu)化,光線(xiàn)剔除在正向渲染中通常不可行。更常見(jiàn)的是減少影響場(chǎng)景中場(chǎng)景對(duì)象的燈光數(shù)量。例如,一些圖形引擎每像素使用兩到三個(gè)光源,每頂點(diǎn)使用三到四個(gè)光源。在OpenGL和DirectX提供的傳統(tǒng)固定渲染管道中,場(chǎng)景中活動(dòng)的動(dòng)態(tài)燈光數(shù)量被限制為8個(gè)。即使在現(xiàn)代圖形硬件中,在感知的幀速率問(wèn)題發(fā)生之前,前向渲染管道中的動(dòng)態(tài)場(chǎng)景燈光的數(shù)量被限制為100。

另一方面,延遲著色是通過(guò)將所有(非照明)場(chǎng)景對(duì)象光柵化到一系列2D紋理緩沖區(qū)來(lái)實(shí)現(xiàn)的,這些緩沖區(qū)存儲(chǔ)后續(xù)照明過(guò)程中所需的幾何信息。存儲(chǔ)在2D紋理緩沖器中的信息包括3360。

圖一。這些紋理構(gòu)成了G-Buffer:漫反射(左上)、高光(右上)、法線(xiàn)(左下)和深度(右下),高光因子存儲(chǔ)在高光紋理(右上)的alpha通道中。這些2D紋理緩沖區(qū)的組合也稱(chēng)為幾何緩沖區(qū)或G-Buffer1。

生成G緩沖區(qū)后,可以使用幾何信息來(lái)計(jì)算照明過(guò)程中的照明信息。在照明過(guò)程中,每個(gè)光源都作為一個(gè)幾何對(duì)象執(zhí)行,與燈光表示的幾何相交的每個(gè)像素都使用所需的照明方程式著色。

延遲渲染的一個(gè)缺點(diǎn)是,只有不透明的對(duì)象才能光柵化到G-Buffer,因?yàn)槎鄠€(gè)半透明的對(duì)象可以覆蓋同一個(gè)屏幕像素,而G-Buffer中的每個(gè)像素只能存儲(chǔ)一個(gè)值。在照明過(guò)程中,深度值,曲面法線(xiàn),漫反射顏色和高光顏色由當(dāng)前屏幕像素采樣以進(jìn)行照明,因?yàn)槊總€(gè)G緩沖區(qū)只能采樣一個(gè)值,透明對(duì)象不能在過(guò)程中被照明。為了解決這個(gè)問(wèn)題,透明幾何體必須使用標(biāo)準(zhǔn)的正向渲染技術(shù)進(jìn)行渲染,這可以限制場(chǎng)景中透明對(duì)象或動(dòng)態(tài)光源的數(shù)量。僅包含不透明對(duì)象的場(chǎng)景可以處理大約2000個(gè)動(dòng)態(tài)光源,而不會(huì)出現(xiàn)幀率問(wèn)題。

Forward+

光線(xiàn)剔除正向渲染圖2

第二個(gè)過(guò)程使用標(biāo)準(zhǔn)正向渲染為每個(gè)對(duì)象著色。與每個(gè)穿越場(chǎng)景的動(dòng)態(tài)燈光不同,當(dāng)前像素的屏幕空間位置用于查找在先前過(guò)程中計(jì)算的當(dāng)前柵格的燈光列表。與標(biāo)準(zhǔn)正向渲染相比,照明

剔除可以帶來(lái)明顯的性能提升,因?yàn)樗蟠鬁p少了像素正確光照所需要迭代的冗余燈光數(shù)量。不透明物體和透明物體都可以使用相似的行為進(jìn)行處理,而不會(huì)有明顯的性能損失,并且多材質(zhì)和多光照模型是Forward+原生支持的。

Scene

Pass

Technique

Pipeline State

Shader: 頂點(diǎn)shader(vertex shder),細(xì)分shader(tessellation shader),幾何shader(geometry shader)和像素shader(pixel shader。光柵化狀態(tài)(Rasterizer state): 多邊形填充模式(fill mode),裁剪模式(culling model),scissor, viewport融合狀態(tài)(blend state)depth/stencil staterender target其中,dx12等不同的渲染API都會(huì)引入一些不同的管線(xiàn)狀態(tài)。

前向渲染是一個(gè)通常只有兩個(gè)pass的渲染技術(shù):

透明Pass會(huì)渲染所有的透明對(duì)象,理想情況下,為了能正確blend,場(chǎng)景應(yīng)當(dāng)從后向前進(jìn)行排序(相對(duì)于相機(jī)),在該pass下,alpha blend需要被開(kāi)啟,使用得半透明材質(zhì)能與已經(jīng)渲染到render target的像素進(jìn)行正確的blend。

延遲渲染

幾何Pass光照Pass透明Pass第一個(gè)Pass是與前向渲染的不透明Pass相似的幾何Pass,只有不透明對(duì)象在該P(yáng)ass中被渲染,不同的是幾何Pass不執(zhí)行任何的光照計(jì)算,但只輸出幾何和材質(zhì)數(shù)據(jù)到前面介紹的G-Buffer中。

最后一個(gè)Pass是透明Pass,該P(yáng)ass與前向渲染的中透明Pass是完全相同的。因?yàn)檠舆t渲染不支持透明材質(zhì),因此透明物體需要在一個(gè)使用標(biāo)準(zhǔn)前向渲染的獨(dú)立的Pass中被渲染。

Forward+(也被稱(chēng)為基于tile的前向渲染)是包含三個(gè)主要pass的渲染技術(shù):

不透明燈光索引列表透明燈光索引列表不透明燈光索引列表被用來(lái)渲染不明秀幾何體,透明燈光索引列表用來(lái)渲染透明幾何體。

A light refers to one of the following types of lights:

燈光是指下面幾種燈光的一種:

點(diǎn)光源聚光燈(Spot light)方向光本文中所描述的渲染技術(shù)都支持了這三種燈光類(lèi)型,但沒(méi)有支持區(qū)域光。點(diǎn)光源和聚光燈被模擬成從一個(gè)點(diǎn)向外發(fā)射,方向光被認(rèn)為是從無(wú)限遠(yuǎn)處的一點(diǎn)發(fā)射光線(xiàn),任何地方都具有相同的方向。點(diǎn)光源和聚光燈都有一個(gè)有限的范圍,超過(guò)這個(gè)范圍強(qiáng)度會(huì)下降到0,光強(qiáng)度的下降稱(chēng)為衰減(attenuation)。點(diǎn)光源被描述成一個(gè)球,聚光燈作為一個(gè)圓椎體,方向光是全屏幕的四方形(quad)。

聲明:各百科所有作品(圖文、音視頻)均由用戶(hù)自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流。若您的權(quán)利被侵害,請(qǐng)聯(lián)系: [email protected]