當前位置:首頁 » 硬碟大全 » 延遲渲染深度緩存
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

延遲渲染深度緩存

發布時間: 2022-07-04 21:57:33

『壹』 玩游戲畫面貼圖渲染延遲,是什麼問題呢

你開了3D加速沒?.老顯卡的話,.顯示器和主機的數據傳輸也有可能出現這樣的問題,要是有多餘的顯示器.換個顯示器試試,如果沒問題,就把顯卡驅動更新一下,.在看看你自己的DX版本是幾的..集顯禁用了沒.色彩換16和32試試.,,.最有可能的就是顯卡驅動問題..個人覺得.,

『貳』 如何解決DOM被延遲渲染

dom 是文檔對象模型,是需要載入在瀏覽器內存中的,而載入過程就需要渲染引擎來處理

不同廠商的瀏覽器引擎對dom的支持力度不太一樣,貌似Firefox 最好吧

網頁瀏覽器的排版引擎也被稱為頁面渲染引擎,它負責取得網頁的內容(HTML、XML、圖象等等)、整理信息(例如加入CSS等),以及計算網頁的顯示方式然後會輸出至顯示器或列印機。所有網頁瀏覽器、電子郵件客戶端以及其它需要編輯、顯示網路內容的應用程序都需要排版引擎。

『叄』 Crysis的SSAO是怎麼實現的

一個簡單實用的SSAO實現

全局照明(global illumination, GI)是一個計算機圖形學術語, 它指的是所有表面之間相互作用的光照現象(光線來回跳動, 折射, 或者被遮擋), 例如: 滲色(color bleeding), 焦散(caustics), 和陰影. 很多情況下, GI這個術語代表的只是滲色和逼真的環境光照(ambient lighting).
直接照明– 光線直接來自光源– 對於今天的硬體來說已經非常容易計算, 但這對於GI並不成立, 因為我們需要收集場景中每個面的鄰近面信息, 這樣的復雜度很快就會失控. 不過, 也有一些容易控制的GI近似模擬方式. 當光線在場景中傳播和跳動時, 有一些地方是不容易被照到的: 角落, 物體之間緊密的縫隙, 折縫, 等等. 這就導致了這些區域看起來比它們周圍要暗一些.
這個現象被稱為環境遮蔽(ambient occlusion, AO), 一般用於模擬這種區域變暗的方法是: 對於每個面, 測試它被其它面」阻擋」了多少. 這樣的計算比起全局光照來說要快得多, 但大多數現有的AO演算法還沒法實時地運行.
實時AO在屏幕空間環境遮蔽(Screen Space Ambient Occlusion, SSAO)出現之前一直被認為是達不成的目標. 它的第一次應用是在Crytek的」Crysis」這款游戲中, 之後的很多其它游戲也使用了這項技術. 在這篇文章中, 我會講解一種簡單明了, 但效果又好於傳統實現的SSAO方法.

Crysis中的SSAO

准備工作

最初Crytek的實現是用一個深度緩沖做為輸入, 粗暴地進行這樣的工作: 對於每個深度緩沖中的像素, 采樣周圍3D空間中的一些點, 投影回屏幕空間並比較采樣點和深度緩沖中相同位置的深度值, 以此判斷采樣點是在面前(沒被遮擋)還是在面後(遇到一個遮擋體). 這樣經過對深度緩沖的采樣, 平均遮擋體的距離後得出就得到了一個遮閉緩沖. 但是這種方式存在一些問題(如自遮閉, 光環), 之後我會說明.
這里我敘述的演算法的所有計算都是在2D空間中進行, 不需要進行投影變換. 它用到了每個像素的位置和法線緩沖, 所以如果你已經使用了延遲渲染的話, 一半的工作已經完成了. 如果沒有, 你可以從深度緩沖中重建位置信息, 或者直接把每個像素的位置保存到浮點緩沖中去. 如果你是第一次實現SSAO, 那麼我建議後者, 因為在這里我不會講解如何從深度緩沖中去重建位置信息. 無論是哪種方式, 在接下來的文章中, 我會假設你已經有這兩個緩沖可用. 另外, 位置和法線需要是視圖空間的.
接下來我們要做的事情就是: 使用位置和法線緩沖生成一個每像素對應一個分量的遮閉緩沖. 怎麼使用遮閉信息的決定權在你; 通常的方法是從場景的環境光照中減去它, 但是如果你願意的話, 也可以用來做一些非真實(NPR, non-photorealistic)渲染效果.

演算法

對場景中的任意像素, 可以這么計算它的環境遮閉: 把所有周圍的像素當做小球, 計算它們的貢獻度之和. 為了簡單起見, 我們把所有的小球當成點: 遮擋者僅僅是沒有朝向的點, 那麼被遮擋者(接受遮閉的像素)只是一個<位置, 法線>對.
因此, 每個遮擋者的遮閉貢獻度取決於兩個因素:
到被遮擋者的距離「d」.
被遮擋者的法線」N」與兩者(遮擋者與被遮擋者)之間向量」V」的夾角.

有了這兩個因素, 一個計算遮閉的簡單公式就出來了:
Occlusion = max( 0.0, dot( N, V) ) * ( 1.0 / ( 1.0 + d ) )
第一項max( 0.0, dot( N,V ) ), 直覺上來說就是位於被遮擋者正上方的的點比其它點的貢獻度更大. 第二項的作用是按距離線性衰減效果, 當然你也可以選擇使用平方衰減或其它衰減函數, 但憑個人喜好了.

這個演算法非常簡單: 從當前像素周圍采樣一些鄰近點, 用上面的公式統計出遮閉貢獻度. 為了收集遮閉, 我使用45o和90o時旋轉的4次采樣 (<1,0>,<-1,0>,<0,1>,<0,-1>), 並且使用一張隨機法線紋理做鏡像.
一些小技巧可以加速計算: 如使用一半大小的位置和法線緩存, 當然如果你願意的話, 同時也可以對最後的SSAO緩存應用一個雙向的模糊以減少採樣產生的噪點. 注意這兩個技巧是可以應用於任何SSAO演算法的.
這個屏幕空間的方案與 「Hardware Accelerated Ambient Occlusion Techniques on GPUs」 [1]十分相似, 主要是采樣模式和AO函數的不同. 另外也可以理解成「Dynamic Ambient Occlusion and Indirect Lighting」 [2]的圖像空間版本.
代碼中有些值得提下的細節:

半徑除以p.z, 按到攝像機的距離進行了縮放. 如果你忽略這個除法, 所有的屏幕上的像素會使用同樣的采樣半徑, 輸出的結果就失去了透視感.
在for循環中, coord1是位於90o的原始采樣坐標, coord2是相同的坐標, 只不過旋轉了45o.
隨機紋理包含了隨機的法線向量, 所以這是你的平均法線貼圖. 下面這張是我使用的隨機法線紋理:

它被平鋪到整個屏幕, 被每個像素使用下面的紋理坐標采樣:
g_screen_size * uv / random_size
「g_screen_size」 包含了屏幕的寬和高(像素單位), 「random_size」是隨機紋理的大小(我使用的是64x64). 采樣出的法線用來鏡像for循環中的采樣向量, 以此獲得每個屏幕像素各不相同的采樣模式. (詳見參考文獻中的「interleaved sampling」)
最後, shader減少到只需要遍歷幾個遮擋者, 為它們調用我們的AO函數, 累積出最後的結果. 其中共有4個artist變數:
g_scale: 縮放遮擋者和被遮擋者之間的距離.
g_bias: 控制被遮擋者所受的遮擋圓錐寬度.
g_sample_rad: 采樣半徑.
g_intensity: AO強度.
當你調節它們同時觀察效果的變化, 可以很直觀地達到想要的效果.

『肆』 vray幀緩沖區的作用

Vray的渲染而改變內容的那一部分圖形內存區域叫做幀緩存(frame buffer)。

一個支持Vray渲染的窗口 (即幀緩存) 可能包含以下的組合:
· 至多4個顏色緩存
· 一個深度緩存
· 一個模板緩存
· 一個積累緩存
· 一個多重采樣緩存
為了能夠執行雙緩存構架,大多數圖形硬體同時支持前後緩存。這將允許應用程序在顯示前緩存(可見的)的時候渲染到後緩存(離屏緩存)。當渲染結束的時候,這兩個緩存進行交換,以便已經完成渲染的緩存像前緩存一樣進行顯示,這樣渲染就能在後緩存重新開始了。一旦使用雙緩存,在繪制過程當中用戶將不能看到圖像。這種技術通常被用來實現實時交互的平滑動畫。
如果為左眼和右眼各實現一個顏色緩存的話,那麼就可以支持立體視覺效果了。雙緩存技術由前後緩存來支持。因此一個雙緩存的立體視覺將會有4各顏色緩存:前左,前右,後左,後右。一個普通的(非立體的)雙緩存窗口將會僅僅有前後兩個緩存。一個單緩存的窗口將會只有一個緩存。
如果繪制3D對象時需要剔除隱藏表面的話,深度緩存是必要的。這個緩存在每個象素上存儲了顯示對象的深度值。當繪制附加對象的時候,會在每個象素上進行深度比較,這樣就能決定新的對象是否可見。
模板緩存用來進行復雜的掩模(masking)操作。一個復雜的形狀可以存儲在模板緩存里,然後繪制子序列操作可以使用模板緩存里的內容來決定是否更新象素。
積累緩存是一個顏色緩存,不過典型地它有比顏色緩存更高的精度。這就允許一些圖像通過積累產生一些合成的圖像。比如說一個作用就是可以在積累緩存里對一個對象隨著他的運動繪制一些幀數。在積累緩存中的象素除以幀數以後,結果圖像就展現出了運動模糊效果。相似的技巧也可以用來模擬景深效果以及高質量的全屏抗鋸齒。
而通常的,當一個對象被繪制的時候,對於某個圖元是否影像屏幕上的象素,會做一個單獨的決議。多重采樣緩存正是這樣一個緩存,它允許每個渲染的對象在象素內被采樣多次,以進行高質量的全屏抗鋸齒,而不必對這個對象渲染多次。每個象素內的采樣包括:顏色,深度,模板信息。每個象素采樣的次數當然是必須的。當窗口包含多重采樣緩存的時候,它將不回包括單獨的深度或者是模板緩存。隨著對象的渲染,顏色樣本會被組合生成一個單一的顏色值,然後這個顏色值被傳遞,並寫入到顏色緩存里。因為他們包括窗口中每個象素的多個顏色、深度以及模板樣本(通常是4,8或者是16),因此多重采樣緩存會消耗相當數量的離屏緩存。

『伍』 n卡的渲染延遲是什麼

n卡的渲染延遲指的是英偉達顯卡的畫面所導致的與游戲中發生的動作之間的延遲。

延遲著色的基本原理是,通過MRT(multiple render targets)將幾何體(geometry)渲染到屏幕空間,渲染過程並不包括光照著色(light shading),深度緩沖。

法向量緩沖以及顏色緩沖作為不同的緩沖區被寫入,這些緩沖區能夠提供足夠的信息使Fragment Shader每一個光源針對每一個像素完成光照計算。

在GTC 2020主題演講中,NVIDIA宣布推出Ampere架構,這是NVIDIA發布的第八代GPU架構,包含超過540億個晶體管,性能相較於前代提升了高達20倍,也是NVIDIA 8代GPU歷史上最大的一次性能飛躍。

NVIDIA A100是首款基於NVIDIA Ampere架構的GPU。作為一款通用型工作負載加速器,A100還被設計用於數據分析、科學計算和雲圖形。

『陸』 游戲渲染延遲多少算正常

游戲渲染延遲60FPS算正常,滿足基本要求,100+FPS是流暢,高質量要110-120左右。換個好電腦,基本要求達到還是不難的。

只要FPS大於等於60就算正常,畫面會很流暢的。延遲越低越好,跟網速有關,一般在30-60之間為佳。游戲中ping值正常,FPS高達300左右,但是畫面卻很卡。顯卡性能非常好,可以一秒鍾輸出300幀左右的圖像,但是普通顯示器刷新率比較低,一般為60Hz。

延遲著色的基本原理是,通過MRT(multiple render targets)將幾何體(geometry)渲染到屏幕空間,渲染過程並不包括光照著色(light shading),深度緩沖。

法向量緩沖以及顏色緩沖作為不同的緩沖區被寫入,這些緩沖區能夠提供足夠的信息使Fragment Shader每一個光源針對每一個像素完成光照計算。

『柒』 虛幻4怎麼延遲改變材質

首先在看這個系列之前,你需要具備以下:
(1)至少要敲過簡單的渲染器,不管是拿dx敲還是拿gl敲或者vk之類的。
(2)對虛幻引擎有一定了解,對虛幻的渲染有一定了解。可以看我前幾篇文章,或許可以有所幫助。
(3)C++基礎。其實本人c++水平也是一般般(常常受到公司程序大牛的鄙視,不過我是美術)。
(4)至少一塊RTX顯卡可以用來做實時光線追蹤(2019年)
隨著引擎版本的更新,後續會逐步加入新版本。那麼下面就正式開始吧!
【概覽虛幻4渲染管線】
首先,虛幻有很多個管線的。Mobile管線和Deferred管線。首先找到
在這個函數里你將會看到很多熟悉的函數名稱
虛幻就是通過調用這些函數來一步步繪制的。是不是很眼熟?這個就是各大論壇啦,博客啦講的虛幻渲染流程的真面目。
下面就是官方的DrawOrder了。那麼這個順序是怎麼來的呢。就是上面那個函數的調用順序。
再打開這個Render函數,你就將看到延遲渲染一幀所調用的各個函數。(反正我看了半天就看到個大概的渲染順序之外,還是啥也不知道)
那麼當我們把一個模型托到場景里,這個模型被渲染出來的整個流程到底是什麼樣的呢?這個流程其實是非常龐大的。下面我就來一個一個拆分。
(1)第一步:資源准備階段。這個階段包括頂點緩沖區的准備,索引緩沖區的准備。這一步由場景代理管理完成。當然從磁碟里讀取模型資源這些就涉及到StaticMesh這些了。想了解這一步可以去看我以前的博客,或者直接去看UPrimitiveComponent,UMeshComponent,UStaticMeshComponent,UCableComponent,UCustomMeshComponent。當你把這些源碼全部研究一遍後,這個階段算是了解了。這個階段我不打算再描述了,因為已經有了很多現成的代碼了。
(2)第二步就是shader資源的准備了,這個又是一個非常大的話題了。可以去看我以前關於給改材質編輯器和加shadingmode的文章便可以有個大概的了解。這一步我還會進一步闡述。
(3)第三步就是繪制了。
我們先不看Render函數那些復雜的調用,我們把精力先集中到shader層面來。一張畫面是怎麼開始繪制的呢?

通過這個我們便能知道一個大概的繪制流程(千萬別以為虛幻只有這幾步,不過主要的大概的流程是這樣)。先繪制那些深度啊,初始化視口啦我們先不管。我們來看下這個BasePass。這個BasePass乾的事情就是把GBuffer畫出來。
這里就是像素著色器的入口。繪制完這一步後,我們就有了GBuffer然後再繪制剩下的。環境遮罩驟就先不說了。來看看最重要的光照部分。
光照部分的入口在這里:
虛幻的TiledDeferredLighting的渲染方式。不知道這個的去看毛星雲的RTR3的博客的光照那節,講得特別好。這里給個傳送門:
https://blog.csdn.net/poem_qianmo/article/details/77142101
這里會調用
GetDynamicLighting這個函數會調用
這里會接著調用
看到這里就很熟悉了,看過前面我修改shadingmode的博客應該會對這里很熟悉。
lighting繪制完了之後就會繪制一些反射啊之類的東西了,然後就是透明物體啊後期啊。這些後面會慢慢分析他們。我們先把兩個最重量級的研究了。
接下來我們研究一下fog渲染階段。找到FogRendering.cpp你就會發現,其實繪制fog的是一個globalshader。前面繪制各個物體的是materialshader。
你會發現繪制fog的是一個globalshader。虛幻一共有這么幾種shader:Globalshader materialshader和meshshader。
這篇博客只是一個概述性和引導性的。只是說明一下虛幻繪制的一個大概情況。下一卷我將演示一下怎麼自己寫個shader,引擎識別它,編譯它,然後如何cpu和gpu進行信息交流的
4.20的Unreal渲染模塊有了較大改動。
主要是為了配合引擎新增特性和性能優化。不過大體上的流程還是和上個版本的保持一致。
為了給LTC讓道,所以shader做了大面積重構。
ShadingModel改為了IntergrateBxDF
下面會對繪制流水線詳細寫一遍,由於量巨大所以我會慢慢更新。
(1)【InitView】
引擎代碼注釋寫得非常簡單:Initialize scene's views.Check visibility, build visible mesh commands, etc.
這是渲染管線的開始,這步是為渲染管線准備繪制當前幀所需要各種資源。後面的管線就是判斷一下畫不畫,綁定一下狀態和RT然後就畫畫畫就好了。這一階段做的事情非常多也非常雜。首先來看看一些主要的
ComputeVisibility
可見性剔除有很多種技術,引擎會使用多種方法進行組合剔除,把沒必要渲染的東西剔除干凈,最大限度在渲染之前就做到最省。
虛幻提供了幾種剔除方法
他們各有優劣,可以根據不同平台和情況進行選擇。
VisibilityMap
在後面會把視口中可見性屬性是非可見的物體剔除掉。
PrecomputedVisibilit
在場景中可以使用預烘焙的可見性數據。
如果當前視口場景中有可見性烘焙數據就會啟用可見性烘焙的剔除方式
ViewFrustomCulled
做完前面的步驟後,還會進行視錐體剔除,並且大部分情況下,視口會使用視錐體剔除
進行視錐體剔除後可以減少大部分沒必要繪制的圖元
這時再配合各種其它的剔除方法就可以進一步剔除
而這里的「其它的剔除方法」包括但不限於PrecomputedVisibility,Distance,DynamicOcclusion
DistanceOcclusion
不在距離范圍內就不繪制,非常簡單有效的繪制方式。這種剔除方式挺適合地面上擺的小物件,擺的一些decal或者小道具,對大型建築不適合。
Hardware Occlusion Queries
硬體的可見性剔除。這種方法將每幀的可見性檢查作為每個Actor的查詢發出。 Actor的可見度在一幀之後被回讀 - 如果相機移動得非常快,有時會產生不利影響,導致它們「彈出」。 硬體遮擋的成本隨著在GPU上執行的查詢的數量而變化。 使用距離和預計算可見性方法可以減少GPU每幀執行的查詢次數。
在各種剔除後,在InitView的最後會根據這些數據建立MeshPass
(2)【EarlyZ-PrePass】
EarlyZ由硬體實現,我們的渲染管線只需要按照硬體要求渲染就可以使用earlyz優化了,具體步驟如下:
(1)首先UE4會把場景中所有的Opaque和Mask的材質做一遍Pre-Pass,只寫深度不寫顏色,這樣可以做到快速寫入,先渲染Opaque再渲染Mask的物體,渲染Mask的時候開啟Clip。
(2)做完Pre-pass之後,這個時候把深度測試改為Equal,關閉寫深度渲染Opaque物體。然後再渲染Mask物體,同樣是關閉深度寫,深度測試改為Equal,但是這個時候是不開啟clip的,因為pre-pass已經把深度寫入,這個時候只需要把Equal的像素寫入就可以了。
關於EarlyZ的具體詳解可以去看參考文章【1】
首先渲染prepass的第一步肯定是渲染資源的准備啦。primitive資源會在InitView的時候准備好。
然後會再BeginRenderingPrePass函數中設置各種繪制管線的綁定,包括關閉顏色寫入,綁定Render target
然後再調用draw之前會把各種UniformBuffer和渲染狀態設置好
然後調用draw
最後完成PrePass的繪制
(3)【ShadowDepthPass】
根據不同的燈光類型會繪制不同種類的shadowmap。總的來說繪制shadowmap的時候不會使用遮擋剔除。
Unreal渲染shadowmap目前我就找到個視錐剔除
shadowdepthpass可能是在basepass之前,也可以是之後,具體看EarlyZ的方式
我們的燈光種類繁多大致可以分為兩類,一類使用2Dshadowmap的,一類使用Cubemapshadowmap的
上圖的1部分就是渲染2DshadowMap,2部分渲染的就是Cubemapshadowmap,這一步只是渲染出shadowmap供後面的Lightingpass使用。
(4)【BasePass】
BasePass使用了MRT技術一次性渲染出GBuffer。
再上一次GBuffer的數據分布
BasePass把GBuffer渲染出來之後就可以供後面的LightingPass使用了。我們的材質編輯器再Surface模式下也是在生成MaterialShader為BasePass服務
這部分可以去看看我的材質編輯器篇有詳細介紹。
也是通過一系列設置綁定渲染狀態資源等,最後調用dispatchdraw
可以注意到,MRT0是SceneColor而不是BaseColor
Scene在BasePass中做了簡單的漫反射計算
這一步用到了,這個測試場景我是烘焙過的,我把烘焙數據去掉,SceneColor其實是這樣的:
啥也沒有黑的
BasePass會在這個階段把預烘焙的IndirectLiting計算到SceneColor這張RT上供後面的pass使用
(5)【CustomDepthPass】
上面的圖渲染了一個球的customdepth(在紅圈處可以看到一個球,可能不是很明顯哈)。CustomDepth沒啥特別的,就是把需要繪制CustomDepth的物體的深度再繪制一遍到CustomDepthBuffer上。
(6)PreLightingPass
虛幻封裝了一套方便畫PostPass的機制,後面的繪制SSAO,Lighting,SSR,Bloom等各種pass都是用的這逃Context的機制。
PreLighting這步主要是在用前面的GBuffer算decals和SSAO為後面的Lighting做准備。
SSAO使用的是FPostProcessBasePassAOPS這個C++shader類。
對應的USF是PostProcessAmbientOcclusion
並且使用Computeshader來加速計算。
(7)【DirectLightPass】
LightPass也非常復雜,整個pass的代碼有幾千行,shader代碼也有幾千行非常恐怖的系統。我們先找到入口函數:
(1)方向光
根據不同的情況,使用不同的渲染策略
渲染不同情況下的燈光大體分類如下。還會根據不同的渲染方式分類。
比如一般的方向光:
在渲染方向光的時候因為不需要考慮分塊,所以直接把每盞燈挨個畫出來就可以了
下面我只放了一盞方向光
下面我放三盞方向光:
(2)TileDeferredLighting
如果燈光不渲染陰影,並且燈光沒用IES並且燈光數目達到80盞以上(4.22)並且啟用了TileDeferred管線,那麼虛幻4就會使用TileDeferredLight來計算光照,虛幻實現TileDeferrdLight使用的是一個Computeshader
有很多燈光使用的潛規則。
(8)【ScreenSpaceReflectionPass】

(9)【TranslucencyPass】
透明物體會放在最後渲染,但是在後期的前面。需要看是否在DOF(景深)後合並。
對於這個上圖的那個場景來說,透明物體渲染的buffer是長下面這樣的:
最後在後期中組合
如果沒有啟用r.ParallelTranslucency透明物體只能挨個渲染。
如果啟用了就可以走上面的並行渲染分支。
透明物體的渲染在實時渲染中一直比較迷,會有各種問題。比如排序等等。在默認情況下是走AllowTranslucentDOF的。AllowTranslucentDOF是什麼意思呢,代碼的注釋里有解釋。
Translucent物體的渲染有幾種模式:
這里的代碼我們在BasePassPixelShader.usf里能找到
對於非透明物體來說basepass是渲染GBuffer的,但是對於透明物體來說,BasePass是渲染基礎的+Lighting的,會在這里一次性渲染完,如果我們想改透明物體的shading方式,就需要用在這里改了。

『捌』 Vray的幀緩存有什麼用

Vray的渲染而改變內容的那一部分圖形內存區域叫做幀緩存(frame buffer)。

一個支持Vray渲染的窗口 (即幀緩存) 可能包含以下的組合:
· 至多4個顏色緩存
· 一個深度緩存
· 一個模板緩存
· 一個積累緩存
· 一個多重采樣緩存
為了能夠執行雙緩存構架,大多數圖形硬體同時支持前後緩存。這將允許應用程序在顯示前緩存(可見的)的時候渲染到後緩存(離屏緩存)。當渲染結束的時候,這兩個緩存進行交換,以便已經完成渲染的緩存像前緩存一樣進行顯示,這樣渲染就能在後緩存重新開始了。一旦使用雙緩存,在繪制過程當中用戶將不能看到圖像。這種技術通常被用來實現實時交互的平滑動畫。
如果為左眼和右眼各實現一個顏色緩存的話,那麼就可以支持立體視覺效果了。雙緩存技術由前後緩存來支持。因此一個雙緩存的立體視覺將會有4各顏色緩存:前左,前右,後左,後右。一個普通的(非立體的)雙緩存窗口將會僅僅有前後兩個緩存。一個單緩存的窗口將會只有一個緩存。
如果繪制3D對象時需要剔除隱藏表面的話,深度緩存是必要的。這個緩存在每個象素上存儲了顯示對象的深度值。當繪制附加對象的時候,會在每個象素上進行深度比較,這樣就能決定新的對象是否可見。
模板緩存用來進行復雜的掩模(masking)操作。一個復雜的形狀可以存儲在模板緩存里,然後繪制子序列操作可以使用模板緩存里的內容來決定是否更新象素。
積累緩存是一個顏色緩存,不過典型地它有比顏色緩存更高的精度。這就允許一些圖像通過積累產生一些合成的圖像。比如說一個作用就是可以在積累緩存里對一個對象隨著他的運動繪制一些幀數。在積累緩存中的象素除以幀數以後,結果圖像就展現出了運動模糊效果。相似的技巧也可以用來模擬景深效果以及高質量的全屏抗鋸齒。
而通常的,當一個對象被繪制的時候,對於某個圖元是否影像屏幕上的象素,會做一個單獨的決議。多重采樣緩存正是這樣一個緩存,它允許每個渲染的對象在象素內被采樣多次,以進行高質量的全屏抗鋸齒,而不必對這個對象渲染多次。每個象素內的采樣包括:顏色,深度,模板信息。每個象素采樣的次數當然是必須的。當窗口包含多重采樣緩存的時候,它將不回包括單獨的深度或者是模板緩存。隨著對象的渲染,顏色樣本會被組合生成一個單一的顏色值,然後這個顏色值被傳遞,並寫入到顏色緩存里。因為他們包括窗口中每個象素的多個顏色、深度以及模板樣本(通常是4,8或者是16),因此多重采樣緩存會消耗相當數量的離屏緩存。

『玖』 渲染延遲多少算正常

延遲渲染技術帶來一個很重要的缺點就是不能使用基於硬體實現的多重采樣抗鋸齒功能。因為渲染過程發生在第二步,所以我們在第二步需要多個樣本。但是,在第二步我們只有每一個像素的一個樣本。