《Gpu Gems》《Gpu Pro》《Gpu Zen》系列讀書筆記

前言

最近趕上春節放假,然而家裏的電腦不太給力,不敢玩什麼大遊戲,剛好看到《This War of Mine》打折,其實遊戲大概在16年左右就玩過一次了,不過當時還是個窮學生(雖然現在依然窮,但是畢竟可以買得起遊戲了),也沒有很強的版權意識,這次決定補一下票。另一個很重要的原因在於經過幾年時間,遊戲竟然還在不斷更新,新增了戰爭中的孩子等內容,並且更新了兩個DLC。

遊戲主要是在戰爭中的人在一個簡單的避難所中如何生存到戰爭結束,白天需要在避難所中建造,做飯,取水,加固避難所,與商人交易等等,夜晚時則需要到外面的廢墟中搜索材料,食物,武器等。

在玩基本篇時,基本沒有任何劇情,但是當你爲了生存下去,不得不去偷,搶一個廢棄小房子中的老人的私人物品時,他追着你不停地祈求,即使知道他只是一個NPC。作爲一個畫面黨,這個畫面不怎麼樣的橫版遊戲當年給了我極其深刻的印象。而幾年後這次重玩,我也差點玩脫,開始的幾個人都在找東西的過程中被打死,最後只剩下一個人的時候,鄰居把小孩子寄養在這裏,靠着一個大人一個小孩艱難地玩到通關。

此次DLC也是非常給力,講述了兩個非常感人的戰爭中的生存故事,分別是《最後的廣播》和《父親的承諾》。

簡介

本篇blog簡單記錄了一下最近一兩年一直在讀的一系列書目。《Gpu Gems》1-3三部,《Gpu Pro》1-7七部,《Gpu Zen》一部。《Gpu Gems》三部是有中文版,而後面的幾部都是英文原版。每一本中內容都是紛繁複雜,直接看其中的任何一本書可以說跳躍幅度極大,因爲每一篇之間幾乎沒有聯繫。這一系列的總結淺墨大大已經在做了,給出了非常詳細的單本書的關鍵內容提煉,從這個角度來看這一系列的書,個人認爲是橫向來說,每一部書都代表了當年最先進的圖形學以及GPU相關的技術,可以看到當年GPU的能力,以及當年的渲染技術可以達到什麼樣的水平。

小弟不才,決定使用縱向的方式,針對每一項渲染技術,進行全系列書的總結,從這個角度來看,可以看到一項技術,近十五六年來的進化過程。比如陰影效果,在《Gpu Gems》的年代,還有使用Shadow Volume的方式進行陰影的渲染,而在《Gpu Pro》系列開始,Shadow Map成爲了絕對的主流,陰影技術的研究方向也轉向瞭如何優化Shadow Map,如PCF,CSM,進而如何優化PCF,CSM,SSSM等等。

本篇只是進行了一個技術的技術的簡要總結,可能一句話或一小段話,甚至幾個關鍵詞。畢竟這一系列書,想要全看懂是不可能的,這輩子都不可能的,比如流體模擬等。還有一些與渲染關係較小的內容就更是一筆帶過了,比如什麼GPU通用計算《病毒特徵匹配》等。不過,有些技術本人進行了實踐,如AO體積光DecalReflection等等,但是也不能保證覆蓋單項技術的全部實現。而後續的單項技術實踐本人將陸續更新。

《Gpu Gems》《Gpu Pro》《Gpu Zen》分類整理

以下是各項技術的分類整理,除Multi Topic可能包含若干章節是很多技術整合分享的,其餘絕大部分章節都是單向技術的總結。

Multi Topic:

《Gpu Pro1》Rendering Techniques in Call of Juarez: Bound in Blood:Deferred Shading,後處理流程,SSAO,Depth Fog,RainEffect。

《Gpu Pro1》Making it Large, Beautiful, Fast, and Consistent: Lessons Learned Developing Just Cause 2:超多光源處理方式,Soft Shadow,Character Self Shadow,Soft Particle,Jitter Bug,精度連續等問題,Cloud Shading,若干渲染,內存優化項。

《Gpu Pro3》CryENGINE 3: Three Years of Work in Review:CE3大量經驗分享。移植到多平臺的優化經驗,只關注最影響性能的問題,不要做重複工作,如多個後處理相同的內容,多次Clear,分幀做一部分工作,但是需要注意負載均衡。一個字就是Share。一定做好性能預算,預算是不能超的,要讓項目內所有人都明白這個底線問題。需要性能檢測工具以及自動化測試性能的工具(超大規模團隊300人工作室)。引擎使用Deferred Lighting,可以支持多種類型材質,HDR,Linear。後續各種CE3的技術,IBL,SSAO(SSDO,Bent Normal),Shadow(CSM,透明陰影),RLR(SSR),Deferred Decal,Deferred Skin,Screen Space Self Shadow,Soft Alpha Test,Post Processing(Camera & Object Motion Blur,Bokeh Dof)。

《Gpu Pro6》Next-Generation Rendering in Thief:Cube Map,SSR,IBR等多項技術結合的反射系統構建;Contact-Hardening Shadows區域光源軟陰影;支持光照的粒子效果;基於Compute Shader的Postprocessing。

 

Rendering:

《Gpu Gems1》Deferred Shading in S.T.A.L.K.E.R.:打開了延遲渲染世界的大門,利用DX9 MRT特性將着色和對象數量分離,並給出了後處理AA,多材質處理等。

《Gpu Gems3》Deferred Shading in Tabula Rasa:對上一篇更深入地探討了延遲渲染,最著名的延遲渲染分享之一,前向與延遲並存的流水線,多光源處理,雙向光照模擬GI,Light Cookie,形狀光源(盒式光照),全局及局部陰影圖,GBuffer處理折射,邊緣檢測;優化方面,精度問題,模板掩碼,動態分支,帶寬及內存。

《Gpu Pro1》Parallelized Light Pre-Pass Rendering with the Cell Broadband Engine:Deferred Shading帶寬較高,文中使用Pre-Pass計算,利用PS3硬件的Cell Broadband Engine硬件SPE和RSX,將部分計算並行。

《Gpu Pro4》Decoupled Deferred Shading on the GPU:主要是通過memoization cach,極力壓縮計算量,以降低AA的消耗,使用對應DS無法MSAA的問題。stochastic rasterization。

《Gpu Pro4》Tiled Forward Shading:對比了Forward,Deferred,Tiled Deferred的實現以及優缺點,實現了Tiled Forward Shading,先分Tiled,渲染Pre-Z Pass,每個Tiled尋找min,max Z Bounds,每個tile分配光源,Shading。可以支持半透,MSAA以及多類材質,但是又有Tiled Deferred的優點,最後擴展研究了一下Clustered Shading。

《Gpu Pro4》Forward+: A Step Toward Film-Style Shading in Real Time:AMD的技術Demo,實現Forward+ Shading,Depth Prepass,Light Culling,Final Shading。通過DX11 Compute Shader實現分Tile的light Culling。將Forward+和基於Compute Shader的Tiled Deferred Shading對比。最後擴展One Bonce GI,2.5D Culling,超大量光源陰影計算等。

《Gpu Pro5》[Mobile] Deferred Rendering Techniques on Mobile Devices:Deferred Shading:GLES3.0(帶擴展的GLES2.0),深度float pack到RGBA,重建世界座標。Pre-Pass Lighting(Deferred Lighting):存儲光照信息而非GBuffer,降低帶寬與內存。Light Indexed Rendering:存儲光Id與影響像素的映射,相比於前兩種,可以使用硬件AA。

《Gpu Pro6》Real-Time Lighting via Light Linked List:常規Deferred Lighting需要深度,因而半透一般是通過後續的Forward Lighting實現,文中通過自定義Software Depth Test,影響當前屏幕像素點的Light Link List實現對半透對象的Deferred Lighting效果。

《Gpu Pro7》Clustered Shading: Assigning Lights Using Conservative Rasterization in DirectX 12:使用Compute Shader以及DX12保守光柵化,實現優化的分簇渲染,三維空間劃分光,存儲到Light-Linklist中,降低光與物體映射的消耗。

《Gpu Pro7》Fine Pruned Tiled Light Lists:一種優化的Tiled Shading,與傳統的不同,通過兩個pass,首先計算light在全屏的AABB進行粗略判斷,然後逐Tiled精確判斷,可以實現不規則光源的Tiled Shading,而且利用Compute Shader生成,再利用AMD的GCN架構上,將這個計算和ShadowMap並行,降低計算時間。用於《古墓麗影·崛起》。

《Gpu Pro7》Deferred Attribute Interpolation Shading:傳統GBuffer內存太高,以至於MSAA基本不敢開,文中給出了一種方法,不保存GBuffer信息,而是保存三角形信息,再通過插值進行計算,降低Deferred的內存消耗。還可以把GI等低頻光照單獨計算降低着色消耗。

《Gpu Pro7》[Mobile] Physically Based Deferred Shading on Mobile:移動平臺實現延遲物理渲染,利用Frame Buffer Fetch整合G-Buffer,Lighting,Tonemapping,降低帶寬消耗。

《Gpu Pro7》Deferred Coarse Pixel Shading:延遲渲染最後全屏着色pixel瓶頸較高,文中給出了一種生成Gbuffer時額外生成ddx,ddy然後通過Compute Shader對NxN大小塊計算找到變化不明顯區域,使用低頻着色,即幾個像素計算一次,該方式同樣適用於後處理。

 

GI:

《Gpu Gems2》High-Quality Global Illumination Rendering Using Rasterization:通過兩遍的方式,使用GPU來對光線和物體求交,得到很好的GI效果,極大加速了離線渲染,但是還不能實時運行。

《Gpu Gems2》Global Illumination Using Progressive Refinement Radiosity:輻射度原理,逐步求精,半球投影可見性,四叉樹細分,實現軟陰影簡介光照等效果。

《Gpu Gems3》Interactive Cinematic Relighting with Global Illumination:GPU重光照引擎,用於電影級光照,對傳統的GBuffer擴展,支持多次反射的間接照明。

《Gpu Pro1》Fast, Stencil-Based Multiresolution Splatting for Indirect Illumination:VPL方式實現GI(光線反彈效果),使用ShadowMap可以精確實現但是不現實,通過Reflective Shadow Map近似模擬,但是有Fillrate的問題,文中給出了一種將需要計算的內容分成多個低分辨率的RT,通過Stencil優化,然後再upsample的方法。

《Gpu Pro2》Real-Time One-Bounce Indirect Illumination and Shadows using Ray Tracing:結合RSM,再將場景切分成Gird,Ray Tracing模擬光源單次Bonce效果。

《Gpu Pro2》Diffuse Global Illumination with Temporally Coherent Light Propagation Volumes:簡要介紹RSM,結合RSM,Tracing實現可控性能的實時Diffuse GI,無Precompute。

《Gpu Pro3》Real-Time Near-Field Global Illumination Based on a Voxel Model:通過將worldspace pos渲染到Texture,進一步構建voxel信息,通過mipmap chain實現Hierarchy Ray Tracing。RSM。支持One Onece GI。

《Gpu Pro4》Progressive Screen-Space Multichannel Surface Voxelization:使用Voxel RayTracing實現GI效果,多幀之間步進的效果,相比於傳統的GBuffer全屏信息的GI,可以實現不在屏幕內的物體的投射的GI效果。

《Gpu Pro4》Rasterized Voxel-Based Dynamic Global Illumination:需要Depth Normal重建座標和法線,另外DX 11 struct buffer,對場景多角度光柵化,存儲到3D體素buffer中,最後結合VPL實現Bonce GI效果。

《Gpu Pro6》Deferred Normalized Irradiance Probes:刺客信條4黑旗的GI技術,實現實時TOD,結合了實時和烘焙,僅sunlight影響GI,場景中擺放Probe,每3個小時的光計算GI,ShadowMap烘焙到一個CubeMap的每個面中,運行時插值計算,通過GPU烘焙極大降低了烘焙速度;World Ambient Occlusion。

《Gpu Pro6》Real-Time Global Illumination Using Slices:通過將場景切分成格子,用對齊的2D圖片對應,存儲場景的光照信息,可以模擬單次的光Bounce效果,限制比較大。

《Gpu Zen》Stable Indirect Illumination:通過deinterleaved texturing方式(棋盤格)優化Reflective Shadow Map,最終Cross Bilateral Filter,Upsample。單詞Bonce GI效果。

 

Lightmap:

《Gpu Pro2》 Level-of-Detail and Streaming Optimized Irradiance Normal Mapping:常規Lightmap只能存儲低頻GI,但是高頻的法線信息表現不出來,文中給出了一種將Lightmap作爲輸入,通過SH+Normal實現針對方向光的的更好的Lightmap效果。

 

AO:

《Gpu Gems1》Ambient Occlusion:AO正式在實時渲染中應用,基於離線光線追蹤預計算,隨機生成光線拒絕採樣(Rejection Sampling),實時採樣AO貼圖。主要是計算某一點針對當前位置暴露的比例,僅適用於靜態場景。

《Gpu Gems2》Dynamic Ambient Occlusion and Indirect Lighting:動態實現AO,三角形計算被遮擋權重,多次計算圖元ShadowMap迭代可以近似達到AO的效果,可以獲得動態AO以及間接光照效果。

《Gpu Gems3》High-Quality Ambient Occlusion:優化上篇的計算,對不連續出進行平滑,移除點尖,增加細節,使AO計算結果更加魯棒,效果更好。

《Gpu Pro1》Screen-Space Directional Occlusion:SSAO的改良版,正常SSAO只是壓暗了顏色,沒有考慮光的方向,造成整體一團黑。而SSDO可以在SSAO的基礎上考慮光方向的影響,可以在Indirect Diffuse中看出光的方向感。

《Gpu Pro2》Temporal Screen-Space Ambient Occlusion:TSSAO,Temporal技術,利用上一幀的Buffer,Reverse Reprojection,極大優化傳統SSAO效率。

《Gpu Pro3》Screen-Space Bent Cones: A Practical Approach:SSAO,Bent Normal的進一步加強版本,可以更加接近蒙特卡洛積分,重要性採樣得到的GI Diffuse以及IBL效果,而不是單純的壓暗。

《Gpu Zen》Scalable Adaptive SSAO:介紹了一套高中低配分級的AO系統,可以用於VR等。Deinterleaved rendering,Depth Mipmap Chain,Smart Blur。

《Gpu Zen》 Robust Screen Space Ambient Occlusion:在PS4上優化到1080P1ms的SSAO。1/4分辨率,存儲camera space depth然後downsample,可以用16位精度。分離Bilateral Filter(雖然這個是不可分離的,但是不太影響結果,性能大大提升),1/4算完後不直接合並,而是upsample以獲得更好的效果。

 

Shadow:

《Gpu Gems1》Efficient Shadow Volume Rendering:陰影體方式實現陰影,模板陰影技術,效率較低,文中主要處理了一些模板陰影的特殊角度情況,以及優化填充率等。

《Gpu Gems1》Shadow Map Antialiasing:優化的PCF採樣,解決常規Shadow Map鋸齒的問題,以及大分辨率解決不了的採樣點平行於光源的問題,在採樣時進行隨機,計算靠近光源的百分比,多次比較陰影貼圖的每個像素,求平均值,而非預Filter Shadow Map。

《Gpu Gems1》Omnidirectional Shadow Mapping:將Shadow Map擴展到點光源中,使用Cube渲染點光源Shadowmap,以及軟陰影PCF。

《Gpu Gems1》Generating Soft Shadows Using Occlusion Interval Maps:遮擋區間映射製作模糊陰影(半影效果),在當時還沒有什麼好方法模擬,文中的方法也只適用於單光線的靜態場景,而且有多重特殊情況失真,已經不太適用。

《Gpu Gems1》Perspective Shadow Maps: Care and Feeding:PSM主要是爲了解決SM鋸齒的問題,根據投影近大遠小的規則,優化近處鋸齒,但是有若干問題,文中給出了優化版本的PSM方法,包括優化過的視錐體,CubeMap,Biasing,Filter等。

《Gpu Gems2》Efficient Soft-Edged Shadows Using Pixel Shader Branching:用PCF實現軟陰影的半影效果,蒙特卡洛方法隨機採樣。

《Gpu Gems3》Summed-Area Variance Shadow Maps:對比了SM,PCF的優缺點,簡要介紹了VSM的另一種軟陰影實現,並且剔除了SVSM的方法,優化了常規的VSM,極大降低了Light Bleeding的情況。

《Gpu Gems3》Parallel-Split Shadow Maps on Programmable GPUs:PSSM,在大型環境中實現SM,降低SM分辨率不足導致鋸齒的問題。將視錐體分割成多個深度層,獨立渲染SM。

《Gpu Gems3》Efficient and Robust Shadow Volumes Using Hierarchical Occlusion Culling and Geometry Shaders:非常規的生成陰影幾何體的方法,結合層次話的硬件遮擋查詢以及Geomerty Shader實現了對傳統Shadow Volumes方法的改進,提高性能。

《Gpu Pro1》Visualize Your Shadow Map Techniques:Shadow Map都會有Aliasing的問題,文中給出了一個可以測量ShadowMap Aliasing Error的數學模型,可以量化Aliasing,方便對各類Shadow Map效果進行對比。

《Gpu Pro1》Fast Conventional Shadow Filtering:通過將Filter操作拆分,可以將49次PCF降低到16次PCF。

《Gpu Pro1》Hybrid Min/Max Plane-Based Shadow Maps:根據depth shadow劃分小的tile,區分全部在陰影和全部在光內的內容,加快Shadow Map Filtering的方法。

《Gpu Pro1》Shadow Mapping for Omnidirectional Light Using Tetrahedron Mapping:常規的點光源Shadow是Cube,文中給出了一種基於四面體的點光源ShadowMap方法。

《Gpu Pro1》Screen Space Soft Shadows:屏幕空間陰影,通過深度計算像素距離,光源距離,然後屏幕空間Filter,降低Filter消耗。

《Gpu Pro2》Variance Shadow Maps Light-Bleeding Reduction Tricks:VSM雖然比正常PCF省很多,但是有一個很致命的問題就是Light-Bleeding,文中給出了一種減緩這種穿幫的方法。

《Gpu Pro2》Fast Soft Shadows via Adaptive Shadow Maps:擴展正常的PCF,使之支持在多級Shadowmap之間Filter。

《Gpu Pro2》 Fast Soft Shadows with Temporal Coherence:常規軟陰影都是通過Filter實現半影效果的,文中給出了一種真·軟陰影效果,按照真實的原理模擬,隨機採樣光點位置混合,需要超大量的ShadowMap混合而成,但是性能堪憂,需要藉助Temporal方法來優化,每幀渲染一個,多幀混合。

《Gpu Pro2》Mipmapped Screen-Space Soft Shadows:屏幕空間軟陰影的優化,藉助多級Mipmap存儲軟陰影信息,兩個通道,一個保存強度,一個保存屏幕空間半影寬度,使用半影權重在多級Mip之間index。

《Gpu Pro3》Efficient Online Visibility for Shadow Maps:優化Shadow Map計算,尤其是大規模室外場景。檢測Shadow Receivers,生成mask,渲染Shadow Caster時使用mask,去掉對最終Receiver無貢獻的Caster計算。

《Gpu Pro3》Depth Rejected Gobo Shadows:普通gobo Shadow的優化版本。一種Soft Shadow的實現方式,簡單來說還是針對Shadowmap直接Blur,但是不適用於相交物體的Shadowmap。

《Gpu Pro4》Real-Time Deep Shadow Maps:Deep Shadow Map之前是用於離線渲染時對於霧,頭髮等透明物體渲染的Shadow Map,文中給出一種基於實時的DSM方法,基於DX11 Compute Shader。

《Gpu Pro6》Next-Generation Rendering in Thief:Contact-Hardening Shadows實現類似PCF的區域光源軟陰影效果。

《Gpu Pro6》Practical Screen-Space Soft Shadows:屏幕空間陰影,可以降低每個Light的PCF消耗,與ShadowMap分辨率解耦,文中爲正常SSSS的優化,通過Layered Penumbra Map Pass實現多光源疊加下的軟陰影,且支持透明物體。

《Gpu Pro6》Tile-Based Omnidirectional Shadows:處理多點光源的ShadowMap,使用Tiled Based的Shadow Map,分爲四層,最大8192(看到這個分辨率我都不想繼續看了....)與傳統的渲染到Cube不同,渲染到一個四面體上,使用Compute Shader實現一套Indirect Draw Buffer,通過GPU實現裁剪來降低大量點光源渲染ShadowMap的CPU消耗。

《Gpu Pro6》Shadow Map Silhouette Revectorization:把MLAA的思想放到Shadow Map中,可以解決低分辨率的ShadowMap使用時出現的鋸齒問題,但是目前解決不了投影和抖動造成的Aliasing。通過兩個全屏pass解決,第一個pass查找shadowmap中不連續的邊界;第二個pass根據不連續的距離以及位置,根據周圍內容重建,使之更加平滑。

《Gpu Pro7》[Mobile]Efficient Soft Shadows Based on Static Local Cubemap:Local Cubemap,可以較爲精確地模擬貼合包圍盒的反射,文中用Local Cube Map實現了烘焙到其中的軟陰影效果,不過只支持Static預烘焙。

 

Lighting:

《Gpu Gems1》Cinematic Lighting:Pixar動畫的光照模型,支持各種奇怪形狀的光源,以及Cookie,主要是過光本身形成各種效果,不考慮紋理貼圖,也不考慮細節,只是整體的光感。

《Gpu Gems1》Spatial BRDFs:空間BRDF,光的表現除了細節貼圖還有BRDF,文中給出了基本光源的BRDF以及基於Phong葉片Filter的環境貼圖效果,通過不同mipmap級別存儲不同鏡面指數的Filter過的環境貼圖,有些類似Roughness的前身了。

《Gpu Gems2》Approximate Bidirectional Texture Functions:BTF,不考慮BRDF,使用非常簡單的BRDF,而是基於攝影採集真是的特殊材質,在不同燈光角度下的值,生成查詢貼圖,來達到模擬如蠟,布料等特殊材質。新奇的思路.....

 

Shape Light:

《Gpu Pro5》Physically Based Area Lights : 可以反射顯示光形狀的區域光源,BRDF,Killzone

《Gpu Zen》 Linear-Light Shading with Linearly Transformed Cosines:桶形或者線形光源的光照效果,精確的GGX BRDF模型,anisotropy matrix。

 

PBR:

《Gpu Pro6》Physically Based Light Probe Generation on GPU:FIFA15中間接光照的解決方案,通過Specular BRDF+Diffuse BRDF處理Indirect部分的光照,遊戲加載時預烘焙場景中的LightProbe,場景CubMap存儲不同模糊程度的環境到Mipmap中,優化過的重要性採樣,可以根據光的分佈進行採樣,並保證每區域採樣點平均分佈。

 

IBL:

《Gpu Gems1》Image-Based Lighting:之前CubeMap最多就是模擬無限遠處的反射效果,而文中通過IBL實現很好的室內金屬光照反射效果,模擬近處的反射效果,給Cube定義了一個範圍,類似後續的Box Project Cube Map,不過更加複雜。還可以用Cube模擬Difuse效果。

《Gpu Gems2》Real-Time Computation of Dynamic Irradiance Environment Maps:輻照度環境映射,可以包含diffuse和specular映射信息,但是傳統都是CPU離線處理,文中給出了GPU加速的卷積生成方法。

《Gpu Gems3》GPU-Based Importance Sampling:引入蒙特卡洛方法,重要性採樣,根據PDF生成更加真實的Pre-Filter Environment Map到各級mipmap中,而計算量可控,通過濾波去噪可以達到實時的效果。雙拋物面環境貼圖優化。

《Gpu Pro1》Environment Mapping with Floyd-Steinberg Halftoning:Halftoning和重要性採樣,對比了Random Sampling和Floyd-Steinberg Sampling,後者可以給出更加準確的效果。

 

Linear & Gamma:

《Gpu Gems3》The Importance of Being Linear:現實情況的顯示設備,掃描圖像等設備都有非線性的問題,Gamma校正是最容易的處理這個問題的方法,可以使光照計算的結果更加真實,防止失真,尤其是HDR下以及Mipmap紋理失真((1 + 0  ) / 2 在gamma下並非0.5),不同設備上的差異。輸入圖片未處理gamma,輸出也未處理時,大體會抵消,但是會帶來很多難以避免的問題。Gamma校正在最終顯示前將顯示器的變換取反以抵消顯示器的Gamma校正,輸入的圖片已經經過Gamma校正,我們也需要將其轉到線性空間,sRGB。

 

NPR:

《Gpu Gems2》Blueprint Rendering and "Sketchy Drawings":藍圖渲染和草圖實現,後半部分介紹了勾邊以及風格化渲染的效果。

《Gpu Pro1》NPR Effects Using the Geometry Shader:傳統卡通渲染勾線一般是加pass外拓或者後處理,文中給出了一種使用Geometry Shader直接生成邊緣網格的方式單Pass實現NPR效果,此外還給出另一種鉛筆素描風格的NPR渲染效果。

《Gpu Zen》Mobile Toon Shading:卡通風格渲染,Ramp+Halftone,離線預處理。

 

Volumetric Lighting,Fog,Atmospheric Scattering:

《Gpu Gems2》Accurate Atmospheric Scattering:精確的大氣散射效果,結算大氣散射方程(Nishita),Rayleigh Scattering,Mie Scattering,最後增加HDR。

《Gpu Gems3》Volumetric Light Scattering as a Post-Process:用徑向模糊後處理實現體積光效果,Prepass處理遮擋。

《Gpu Pro3》An Approximation to the Chapman Grazing-Incidence Function for Atmospheric Scattering:RayTracing,簡化的Chapman function,模擬大氣散射效果。

《Gpu Pro5》High Performance Outdoor Light Scattering Using Epipolar Sampling:Ray Marching,epipolar sampling,1D minimum/maximum binary trees,Physically

《Gpu Pro5》Volumetric Light Effects in Killzone: Shadow Fall : 體積光,Dithered Ray Marching,3D Noise Tex

《Gpu Pro6》Volumetric Fog and Lighting:刺客信條4黑旗中的體積霧和體積光技術,理論還是比爾蘭伯特定律和MieScatting,使用了Cumpute Shader計算,首先並行計算3D密度(噪聲)圖和霧效光照,再進行RayMarching,不同於KZ的Depth Ray Marching,直接在體素3DRayMarching,最後結果和Forward或Deferred的結合,Deferred可以和光照合併計算,還給出了down sample計算後up sample時aliasing的解決方案。

《Gpu Pro6》Realistic Volumetric Explosions in Games:思想類似於Ray Marching體積光,Ray Marching方式實現爆炸效果,使用Tessellation,3DNoise Texture,可以實現光照。不過相比於普通粒子,GPUpixel階段消耗太高。

《Gpu Pro6》Sparse Procedural Volume Rendering:RayMarching體素實現爆炸濃煙等特效,使用層級的結構,降低Marching的消耗,使用CubeMap作爲3DNoise。

《Gpu Zen》Participating Media Using Extruded Light Volumes:NVIDIA提供的一套體積光解決方案,更加基於物理的體積光大氣散射效果,需要Tessellation生成載體Mesh,然後Raymarching。

 

Volumetirc Rendering:

《Gpu Gems1》Volume Rendering Techniques:介紹了用排列觀察面上的代理幾何體實現基於紋理的體系渲染,並增加了陰影體,半透,隨機細節等,優化了體渲染的效果。

《Gpu Gems1》Applying Real-Time Shading to 3D Ultrasound Visualization:類似上篇文章,介紹了體渲染的實際應用,根據三維超聲波可視化實現着色。

《Gpu Pro1》Efficient Rendering of Highly Detailed Volumetric Scenes with GigaVoxels:Octree,Hierarchical Volume Ray Casting ,Voxel Mipmap,Mipmap based Blur,Dof,AA,優化體素內存Bandwidth。

《Gpu Pro2》Adaptive Volumetric Shadow Maps:對於粒子,煙霧,頭髮等體渲染實現軟陰影效果,需要per-pixel linked lists,然後Filter。

《Gpu Pro3》Volumetric Transparency with Per-Pixel Fragment Lists:OIT,渲染煙霧,透明物體,Ray Tracing,Compute Shader,透明物體陰影。

《Gpu Pro3》Practical Binary Surface and Solid Voxelization with Direct3D 11:體素渲染,可以擴展實現GI,AO等。

《Gpu Pro6》Smooth Probabilistic Ambient Occlusion for Volume Rendering:體渲染中無法用深度圖,通過3D Filter的方式實現AO效果,用多層嵌套的cube模擬計算遮蔽概率。

《Gpu Pro6》Block-Wise Linear Binary Grids for Fast Ray-Casting Operations:使用二分區塊方法,實現更加快速的體素碰撞計算,可以更容易地計算簡介光照,VPL等內容。

 

Distance Filed & Impostors & Curve:

《Gpu Gems3》True Impostors:感覺類似體渲染,或者就是SDF,用光線投射到紋理定義的體積中,模擬各種複雜形狀的對象。

《Gpu Gems3》Rendering Vector Art on the GPU:在GPU上渲染矢量圖,渲染二次樣條,三次貝塞爾曲線等由封閉路徑定義的向量圖形,將曲線圖形三角化的過程。

《Gpu Gems3》Signed Distance Fields Using Single-Pass GPU Scan Conversion of Tetrahedra:介紹有向距離場的用途,GPU掃描實現有向距離場,極大加速生成。基於簡單的四邊形,僞法線處理符號。

《Gpu Pro2》2D Distance Field Generation with the GPU:關注2D Distance Filed,主要是DF的生成,文中給出一種Horizontal-Vertical Erosion的方式實現更好的DF,最後介紹了幾種DF的應用,更好的AA效果,OutLine效果,Psychedelic效果。

 

Cloud:

《Gpu Pro1》Real-Time Screen Space Cloud Lighting:給出了一種更加物理的雲計算方法,基於屏幕空間,首先渲染一張雲密度RT,進行Blur,再通過該RT計算Scattering,僅適用於遠景雲。

《Gpu Pro 6》Real-Time Rendering of Physically Based Clouds Using Precomputed Scattering通過預計算的RayMarching得到根據視深度的光散射效果,模擬光線穿透雲的效果;Gpu粒子排序,Instancing,特殊的Blend方式-Volume-Aware Blending。

《Gpu Pro7》Real-Time Volumetric Cloudscapes:《地平線·黎明時分》的雲渲染技術,類似當年他們KZ的體積光,依然是Ray Marching,但是給出了更加複雜的雲層光照計算,以及天空不同高度雲層表示,可以通過噪聲密度控制疏密,烏雲等,通過參數可以實現雲彩的TOD,資源佔用20M,RayMarching20ms,Temporal reprojection優化後2ms。

 

Translucent & SSS:

《Gpu Gems1》Real-Time Approximations to Subsurface Scattering:幾種SSS表現,最簡單的WrapLighting,通過深度圖計算傳輸距離吸收效果模擬Translucent,原理類似Shadowmap,Texture Space Diffusion  Blur模擬美術經常Blur Diffuse貼圖疊加得到柔和的光照效果,最後一種也是Texture Space Skin SSS的做法。

《Gpu Gems3》High-Quality Ambient Occlusion:AO的方法,自適應整合計算環境遮擋,但是也可以實現SSS效果。

《Gpu Pro2》Real-Time Approximation of Light Transport in Translucent Homogenous Media:簡單模擬光線透射,通過反向烘焙AO實現,也可以實時計算厚度圖。

 

Skin:

《Gpu Gems1》Skin in the "Dawn" Demo:Dawn中的皮膚效果,Cube實現Diffuse,Specular,Environment光照,RimLighting,細節法線貼圖表現毛孔等。

《Gpu Gems3》Advanced Techniques for Realistic Real-Time Skin Rendering:實時皮膚渲染的最經典文章,後續Skin的基礎。Scattering,Diffusion Profile,分離高斯模糊,Textur Space Diffusion,使用TSM實現皮膚等透射。

《Gpu Pro1》Screen-Space Subsurface Scattering:Diffusion Profile改爲屏幕空間,有諸如可以避免overdraw,降低空間轉化次數,多個皮膚一次搞定等好處。需要結合Linear Depth的Blur,此外還有Stencil Mask。

《Gpu Pro2》Pre-Integrated Skin Shading:預積分的皮膚效果,NdotL以及斜率分別採樣預計算的Ramp圖,可以很省地實現SSS效果。

《Gpu Pro5》[Mobile] Realistic Real-Time Skin Rendering on Mobile: 移動平臺皮膚渲染,Screen Space Diffusion,N·H,N·V Lut Texture

 

Grass & Plant:

《Gpu Gems1》Rendering Countless Blades of Waving Grass:俯視圖星形結構的網格渲染,防止由視角變化造成的穿插,禁用背面剔除。根據texcoord控制搖擺權重。

《Gpu Gems2》Toward Photorealism in Virtual Botany:大規模植被戶外場景渲染,柵格種植植被,草合批渲染,Screen Door Transparent渲染半透,分層渲染,配合後處理等達到較好的戶外渲染效果。

《Gpu Gems3》Next-Generation SpeedTree Rendering:樹幹粗糙凹凸使用Relief Mapping自動生成,樹葉雙面光照,遠距離Specular降低,模糊Bump降低閃爍,樹葉陰影,Alpha To Coverage,LOD漸變。

《Gpu Gems3》GPU-Generated Procedural Wind Animations for Trees:程序化生成風場,模擬樹木在鳳中的運動,樹幹,樹枝運動模擬。

《Gpu Gems3》Vegetation Procedural Animation and Shading in Crysis:CE2中植被的技術(CE3看起來也沒改啥),程序模擬風場,實現樹木運動的效果,通過頂點色控制,sin波疊加。此外,還通過植被的細節紋理圖(類似AO,或者就叫透明圖吧)實現葉片Transclut效果。此外還有HDR,基於Z Press的而非Alpha to Coverage的軟Alpha Test效果。

《Gpu Pro5》Screen-Space Grass : 屏幕空間計算草地效果,看起來不錯,主要解決草Instancing也太費的問題,Stencil Mask

《Gpu Pro6》Grass Rendering and Simulation with LOD:純GPU草效果,TressFX的後續擴展功能,使用Instance對不同形狀的草進行繪製,在Shader中擴展billboard片,Compute Shader進行草半透片的距離排序,支持距離LOD。

 

Fur:

《Gpu Gems1》Converting Production RenderMan Shaders to Real-Time:將RenderMan離線渲染的毛髮移到Shader中,一方面是離線到cg的API實現,如給出了多光源多Pass計算多光源的方式以應對不確定的光源數(Shader不定長數組支持不好),另一方面則是通過Lut,Pixel->Vertex->CPU轉移優化等方式進行渲染效率的優化。

《Gpu Pro2》Implementing Fur Using Deferred Shading:正常GBuffer無法實現多pass blend疊加的毛髮,文中給了一種Deferred Shading情況下實現毛渲染。

《Gpu Pro6》[Mobile] Animated Characters with Shell Fur for Mobile Devices:當時移動上無法使用Tessellation,所以使用Transform Feedback動畫+Instancing的方式,將原本多DC疊加的繪製毛絨的方式優化爲Instancing的方式,極大優化了效率。

 

Hair:

《Gpu Gems2》Hair Animation and Rendering in the Nalu Demo:Nalu中頭髮效果,魚鰭的效果,頭髮物理效果,以及Marschner模型實現光照,頭髮陰影不透明陰影圖。

《Gpu Pro5》TressFX: Advanced Real-Time Hair Rendering:海飛絲系統,線形圖元擴展渲染,Kajiya+Marschner,Self-Shadowing,Image Based AA,Order Independent Transparency

《Gpu Pro5》 Hair Simulation in TressFX:海飛絲系統,使用DX11 Compute Shader實現對頭髮的模擬,整體形狀,髮絲模擬,風影響,碰撞等。

 

Transparent:

《Gpu Gems2》Blueprint Rendering and "Sketchy Drawings":藍圖渲染和草圖繪製,前半部分展現了藍圖中透視的邊框線通過Depth Peeling實現。

《Gpu Pro1》Alpha Blending as a Post-Process:一般Alpha Test邊界太硬,Alpha To Coverage效果好一些,不過Alpha Blend效果最好,比較柔和,但是有半透穿插以及性能問題,文中給出了一種將Alpha Test物體先渲染到RT上,渲染遮擋Mask以及Coverage融合Mask,最終疊加回去的方法,可以用Test得到Blend的效果。

《Gpu Pro1》Multi-Fragment Effects on the GPU Using Bucket Sort:半透渲染,通過MRT在GPU實現透明物體的排序,Depth Peeling。

《Gpu Pro2》Order-Independent Transparency using Per-Pixel Linked Lists:類似ABuffer實現OIT,結合DX11新特性 隨機讀寫可以更容易實現。通過GPU構建Pixel Link list。最後,支持MSAA,並給出了若干優化方法。

《Gpu Pro 5》Per-Pixel Lists for Single Pass A-Buffer : ABuffer,GPU 鏈表,排序

《Gpu Pro 5》[Mobile] Tiled Deferred Blending:Tile Bucketing降低混合操作的帶寬,降低時間,不過在Iphoe4S上時間似乎是負優化

 

Reflection:

《Gpu Gems3》Robust Multiple Specular Reflections and Refractions:魯棒的多鏡面反射和折射,可以實現多反射,先將場景渲染爲層次化的距離圖,每個層存儲爲一個Cube Map,包含了顏色以及距離,法線。然後通過對這種結構進行光線追蹤實現反射和折射效果。

《Gpu Pro3》Ray-Traced Approximate Reflections Using a Grid of Oriented Splats:通過生成一系列3D的Grid 64^3,進行RayTracing,可以模擬簡單的模糊反射效果。

《Gpu Pro4》Practical Planar Reflections Using Cubemaps and Image Proxies:《Remember Me》的反射系統構建,Parallax-Correct Cube Map實現精確一些的Cube Map反射,使用Image Proxy實現動態物體的反射,Mipmap Chain Blur Reflection實現Glossy Reflection。

《Gpu Pro5》Hi-Z Screen-Space Cone-Traced ReflectionsRay Marching,Hi-Z,Con Tracing,Blur Reflection,SSR Overview,Temporal Filtering

《Gpu Pro6》Next-Generation Rendering in Thief:Cube Map,SSR,IBR結合的反射系統,支持Glossy Reflection,Bump。給出了許多SSR和IBR的優化方案。最終Consonle上5ms。

 

Refraction:

《Gpu Gems2》 Generic Refraction Simulation:不渲染兩次,而是直接把原始場景渲染到RT上,採樣RT進行折射模擬。但是可能有前面的遮擋導致折射物體前的物體也被擾動,所以渲染時生成一個Mask,避免擾動前面的物體。

 

Water:

《Gpu Gems1》Effective Water Simulation from Physical Models:網格模擬集合波動,網格擾動,Gerstner波,頂點間距小於1/2波長。水面自身顏色,反射顏色,菲尼爾控制透明度,淺水區透明,深水區不透。

《Gpu Gems1》Rendering Water Caustics:水的焦散效果,水面波紋導致不同路徑的光線浸入水中到達相同區域匯聚形成亮斑,使用逆向光線追蹤,從海底法線光線,到水面折射,如果到達光源,認爲高亮。兩種方式,一種屏幕空間,一種渲染到紋理。

《Gpu Gems2》Using Vertex Texture Displacement for Realistic Water Rendering:當時FFT還不敢想,所以文中根據採樣貼圖實現頂點偏移,但是基於法線貼圖計算光照,用法線貼圖當做高度圖。分支優化,泡沫渲染,波浪背面處理

《Gpu Pro2》[Mobile] Shader-Based Water Effects:移動平臺上ES2.0下實現水效果,平面反射,折射,Bump擾動,Fresnel,Fog。

《Gpu Pro3》Volumetric Real-Time Water and Foam Rendering:類似流體,粒子模擬,帶物理。模擬水面泡沫效果,瀑布激水,水花等。需要前後深度,模擬體效果。

 

Decal:

《Gpu Pro2》Volume Decals:延遲貼花實現,延遲下性價比超高,沒有前向下的各種性能問題以及Z Fighitng問題。

 

Image(Post) Processing:

《Gpu Gems1》Real-Time Glow:最基本的Glow效果,提取高亮,橫向縱向分離卷積疊加回原圖。此外爲了防止抖動,調高了遠處的霧效,還有結合上一幀形成拖影效果。

《Gpu Gems1》Color Controls:後期效果,模擬PhotoShop中各種顏色處理效果,根據曲線生成LUT圖校色圖像,根據Channel進行顏色校正,以及在不同顏色空間進行轉換等。

《Gpu Gems1》High-Quality Filtering:開始在GPU實現高質量的圖像濾波處理,介紹了卷積核,灰度處理,邊緣檢測,AA等方法。

《Gpu Gems1》A Framework for Image Processing:一套後處理流程搭建,支持多個後處理效果。

《Gpu Gems2》Using Lookup Tables to Accelerate Color Transformations:簡單介紹了一下LUT,但是常規LUT滿足不了輸入輸出,引入了三維LUT,分辨率32*32*32,不能過大,實現對某些操作預計算,某些操作可以提高100倍的效率。

《Gpu Gems2》Advanced High-Quality Filtering:GPU實現模糊,重建,銳化(Shock Filtering),抗鋸齒等濾鏡。

《Gpu Gems3》Motion Blur as a Post-Processing Effect:運動模糊效果,上一幀的VP矩陣重建世界座標,與當幀重建的世界座標比較,疊加得到運動模糊效果。適用於相機本身移動的情況。

《Gpu Pro1》Anisotropic Kuwahara Filtering on the GPU:Gpu實現Kuwahara濾波效果,可以過濾高頻噪聲,保留低頻,而且帶有各向異性效果,可以加強畫面的方向感,形成類似油畫或者水彩的感覺。

《Gpu Pro1》GPU Color Quantization:通過將Self-Organizing Map在GPU上進行處理,極大加快了色彩量化處理

《Gpu Pro1》Stylized Rendering in Spore:後處理鏈的流程的搭建,包括Distort,Blur,Old Film,Oil Paint等等。

《Gpu Pro1》Parallelized Implementation of Universal Visual Computer:將濾波處理Halftone,Edge Detect等從CPU轉移到GPU上。

《Gpu Pro2》[Mobile]Post-Processing Effects on Mobile Devices:移動平臺若干後處理實現,Bloom,Blur,Dof。

《Gpu Pro4》Coherence-Enhancing Filtering on the GPU:一系列Filter實現平滑實現Flow-Guided Sommth,實現很好的平滑效果,有點風格化油畫的效果。

《Gpu Zen》High Quality GPU-efficient Image Detail Manipulation:細節處理濾鏡,增加或者移除細節,通過GL Compute Shader實現。

 

Dof:

《Gpu Gems1》 Depth of Field: A Survey of Techniques:首先介紹了景深的原理,以及列舉了若干景深的方法,光線追蹤,累積Buffer,分層繪製,基於深度混合的。最後重點介紹了一些基於深度混合CoC的方法,多級mip混合,雙線性插值。

《Gpu Gems3》Practical Post-Process Depth of Field:還是跟上篇一樣,過了一遍常規的實現方式,然後重點解釋了一下景深的原理(物理原因),然後優化了模糊的實現,使之可以用很少的採樣次數達到較好的效果。可變寬度模糊,散光圈半徑。

《Gpu Pro1》Realistic Depth of Field in Postproduction:使用更加物理的參數表達鏡頭的景深效果,使用CUDA進行模擬計算,並給出了優化模糊和清晰邊界的方法。

《Gpu Pro4》 The Skylanders SWAP Force Depth-of-Field Shader:兩種一種基於物理的CoC,一種更方面美術的遠近模糊配置。使用根據距離進行對非聚焦位置Blur。

《Gpu Pro4》Simulating Partial Occlusion in Post-Processing Depth-ofField Methods:使用OIT思想實現DOF,存儲不同深層級的場景到ABuffer,使用多層級可以得到焦點外更加真實的模糊效果。

《Gpu Pro5》Bokeh Effects on the SPU : 散景,SPU,CoC,Sprite-Based Approach

《Gpu Zen》Practical Gather-based Bokeh Depth of Field:1.5ms 1080p GTX660,COC模糊,光圈邊界模糊效果,1/4分辨率計算,最後特殊Upsample。

 

AA:

《Gpu Gems2》High-Quality Antialiased Rasterization:一種將屏幕分塊SSAA,然後拼合的技術。屏幕分Tile,調整投影矩陣渲染到超大分辨率上,然後降採樣。用於離線渲染超清晰圖像。

《Gpu Gems2》Fast Prefiltered Lines:介紹了一種繪製線條的方法,線條容易有鋸齒,文中給出了一種卷積,並且通過查找表進行加速,得到抗鋸齒線條。

《Gpu Pro1》Edge Anti-aliasing by Post-Processing:Deferred下,MSAA帶寬和內存消耗太高,文中給出一種基於Depth和Normal進行後處理搜尋傾斜邊緣,複製邊緣細微像素融合的後處理AA方式,抗鋸齒效果堪比MSAA,還可以用於ShadowMap,以及應對UpSample。

《Gpu Pro2》Practical Morphological Antialiasing:對比了當時各種已有的AA算法,然後提出了一種新的AA後處理方法,性能和效果都比較好。Edge Texture,Blending Weight Texture。

《Gpu Pro3》 Geometric Antialiasing Methods:給出了兩種基於Geomerty的AA方法。GPAA,需要將所有物體的邊緣再渲染一次到RT上,然後在Blend回去。GBAA是其優化,渲染時額外生成一個Geomerty Buffer存儲邊緣信息,MRT,節省DC。

《Gpu Pro3》[Mobile] Inexpensive Antialiasing of Simple Objects:用於移動平臺的一種簡單AA方式,簡單來說就是在畫一遍更加平滑的邊蓋住原始的鋸齒。

《Gpu Pro3》Implementing a Directionally Adaptive Edge AA Filter using DirectX 11:DX10,11上實現一種更好的Box antialiasing filter,基於後處理的。主要是計算更加精確的傾斜邊界線來表示邊緣,非常數學...沒有看懂。

《Gpu Pro4》Second-Depth Antialiasing:通過Pre-Z Pass的Depth Buffer和額外的一個Depth Buffer實現更加青雀的基於Geomerty Eddge的AA方法。

《Gpu Pro5》Wire Antialiasing:光柵化後小於一個像素的MSAA也只能緩解,解決電線等特別細的物體渲染時的AA,可以配合MSAA使用。

《Gpu Pro6》Hybrid Reconstruction Antialiasing:整套AA處理框架用於Far Cry4,包含各種AA。HRAA,對比了SSAA,MSAA,GBAA,最後提出了Temporal FLIPQUAD AA。

《Gpu Zen》Programmable Per-pixel Sample Placement with Conservative Rasterizer:利用保守光柵化的特性,通過Geomerty Shader調整採樣位置,使Aliasing變成高頻噪聲,進而可以被濾波去掉,並介紹了怎樣整合到Foveated Rendering系統。

 

Ray Tracing:

《Gpu Pro1》Real-Time Multi-Bounce Ray-Tracing with Geometry Impostors:實時光追,除了Heightmap精確表示物體的形狀信息外,還要有粗略的物體光線檢測,另外需要保證動靜分離,降低每幀更新對象數量,cubemap sistance Impostors。

《Gpu Pro3》Interactive Ray Tracing Using the Compute Shader in DirectX 11:DX11 Compute Shader實現 Ray Tracing效果,Bounding Volume Hierarchies優化,Shading,Reflection,GI等。

《Gpu Pro4》Bit-Trail Traversal for Stackless LBVH on DirectCompute:上文的後續,主要講了LBVH的在GPU的構建,以加速Tracing。

《Gpu Pro5》Particle-Based Simulation of Material Aging : 材質做舊,生鏽效果,Ray Tracing

《Gpu Pro5》 Object-Order Ray Tracing for Fully Dynamic Scenes:結合當前的光柵化渲染使用光線追蹤渲染,支持動態場景,通過目前標準的光柵化渲染的資源生成體素化的場景結構,優化光線碰撞,多Pass渲染得到當前最近點信息,最後再使用deferred 實現着色。

《Gpu Pro6》Rendering Vector Displacement-Mapped Surfaces in a GPU Ray Tracer:OpenCL Ray Tracing實現Displacement Map。

《Gpu Pro6》[Mobile] Hybrid Ray Tracing on a PowerVR GPU:使用專門的OpenRL庫,通過G-Buffer的中間信息進行計算,結合光柵化實現光線追蹤渲染效果,方便實現軟陰影,反射,折射等在直接光柵化中比較複雜的效果。

《Gpu Pro7》 Semi-static Load Balancing for Low-Latency Ray Tracing on Heterogeneous Multiple GPUs:GPU 光線追蹤,針對不同GPU如果有不同的運算能力,進行合理分配以最大化效率,同樣的思想也可以用於CPU。

 

Occlusion Culling & GPU Pipeline:

《Gpu Gems1》Efficient Occlusion Culling:雖然不算GPU Pipeline,但是至少算是開始往這方面研究的始祖之一了。通過渲染物體之前先繪製簡單包圍盒判斷可以光柵化像素數量判斷是否可以提出,與Early-Z是兩個概念,可以更進一步提出,發生在真正渲染的流水線之前。

《Gpu Gems2》Hardware Occlusion Queries Made Useful:常規的硬件遮擋查詢性價比不高,主要有額外繪製以及需要等待GPU查詢結果,延遲高。文中給出了一種優化方案,構建場景樹狀結構,從前到後處理節點,渲染時交叉進行遮擋,並且濺射先前幀可見的物體當幀仍然可見,節省了查詢時間。

《Gpu Pro1》Hierarchical Item Buffers for Granular Occlusion Culling:不涉及CPU feedback的問題,僅考慮GPU上遮擋的問題,實現了一種僅在GPU上的遮擋方法,還可以針對管線早期,如Gemoerty進行優化。

《Gpu Pro2》Practical, Dynamic Visibility for Games:GPU Occlusion,通過Hi-Z,將對象存儲到vertex buffer中,通過shader計算碰撞遮擋,然後RT Readback實現GPU剔除。

《Gpu Pro4》Introducing the Programmable Vertex Pulling Rendering Pipeline:CPU瓶頸,對比了一下DC中的各類消耗,CPU,GPU等,根據Draw ID區分內容。

《Gpu Pro5》 Quadtrees on the GPU:完全在Gpu實現Recursive的Quadtrees,方便脫離CPU實現地形LOD等功能。

《Gpu Pro6》Compute-Based Tiled Culling:使用Cumpute Shader對分Tiled的區域進行光源影響計算,通過GPU上計算降低原本在CPU上計算的光源物體映射,並介紹了若干優化。

《Gpu Zen》Rendering Convex Occluders with Inner Conservative Rasterization:保守光柵化實現更加精確的凸包體遮擋剔除效果。

《Gpu Zen》Deferred+: Next-Gen Culling and Rendering for the Dawn Engine:《殺出重圍》引擎研究的新技術,並未正式使用。GPU Pipeline,前一陣1/4Depth Buffer Reproject,GPU Instacing渲染所有OBB,保守光柵化優化判斷,實現多種材質Deferred Shading,Deferred+,Compute Shader。

《Gpu Zen》Optimizing the Graphics Pipeline with Compute:在AMD上通過Compute Shader實現各種Culling(Cluster,Small Primitive,Backface,Frustum,Depth),Tesselation,以及AMD GCN架構下的某些特性優化。

 

Special Effect:

《Gpu Gems1》Simulating Diffraction:衍射的模擬,光盤等各向異性的效果模擬,tangent方向計算各向異性,額外附加彩虹貼圖模擬色散。

《Gpu Pro2》[Mobile] A Shader-Based eBook Renderer:在GLES2.0上實現電子書的翻頁動畫效果,並給出了ES1.1上fallback。

《Gpu Pro4》A Pipeline for Authored Structural Damage:製作角色部分破壞效果,比較了幾種常見做法,分塊做模型,SkinMesh做動畫,Alpha Test等方法,而最後給出了使用頂點色作爲標識,直接在Vertex Shader階段實現剔除的方案,性能和效果都比較好。

 

Particle:

《Gpu Gems1》 Fire in the "Vulcan" Demo:火焰粒子效果,排序的Alpha Blend Billboard貼片,降低Fillrate先把其渲染到低分辨率的RT再疊加回來,遮擋關係通過渲染低模到RT上實現。

《Gpu Gems3》High-Speed, Off-Screen Particles:與上一篇思想類似都是爲了降低大量overdraw消耗,先把粒子渲染到低分辨率RT再疊加回來,但是處理得更加全面,結合硬件新特性。離屏的Buffer不需要再渲染低模,而是直接使用主buffer的深度進行down sample的結果,需要DX10支持;軟粒子相關;手動Blend,混合時upsample效果不好,需要進行邊緣檢測優化。

《Gpu Pro6》[Mobile]Implementing a GPU-Only Particle-Collision System with ASTC 3D Textures and OpenGL ES 3.0:使用GLES3.0的新特性,Transform Feedback在vertex中模擬粒子然後寫回vertex buffer再渲染,並且使用Instancing降低大規模粒子的消耗。

《Gpu Pro7》Interactive Cinematic Particles:使用DCC Tools離線生成粒子,然後壓縮,最後再使用引擎實時渲染,可以模擬更加真實的粒子。

 

Optimizing:

《Gpu Gems1》Graphics Pipeline Performance:流水線各個階段的優化技巧,CPU提交,合批,Shader分支,採樣,Vertex,Fragment都有介紹

《Gpu Gems2》Optimizing Resource Management with Multistreaming:DX8下實現優化頂點流的功能,自動管理頂點數據,剔除無用定點數據提交進行優化。

《Gpu Gems2》GPU Program Optimization:介紹了若干GPU優化的策略,如多數據pack成一個vector並行計算,lut查找表等。

《Gpu Pro2》Shader Amortization using Pixel Quad Message Passing:利用GPU光柵化的一個特性,也是ddx,ddy以及Mip的原理,周圍像素一起光柵化,藉助這個思想可以優化部分計算,如PCF等,還需要UpSample,不過這個技術有部分硬件限制,DX11後會好。

《Gpu Pro3》Z^3 Culling:爲了防止Alpha Test或者Discard等導致Early-Z失效,文中給了一種自己採樣深度的實現culling的操作,也可以實現overdraw的優化。

《Gpu Pro5》[Mobile] Bandwidth Efficient Graphics with ARM® Mali™ GPUs:Shader Framebuffer Fetch Extensions,Shader Pixel Local Storage,使用擴展可以直接讀寫當前緩存,而非整個frame buffer,直接讀取深度,極大降低帶寬消耗。

《Gpu Pro7》Progressive Rendering Using Multi-frame Sampling:正常渲染比較費,那麼就把渲染分攤到多幀,使用一個積累的結果,該思想可用於AA,DOF,SSAO,OIT。

 

Instancing & Batching:

《Gpu Gems2》Inside Geometry Instancing:通過Geomerty Batch的方式實現儘可能降低批次的渲染,四種方式,靜態合批,動態合批,Vertex Constants Instancing(固定內容不變,每幀寫頂點數據控制變化),Instancing API(DX9已經給了類似Instancing的API,不過似乎和現有Instancing有些區別),各有優缺點。

《Gpu Gems2》Segment Buffering:還是英規場景中重複物體,將靠近的物體合併成一個大的實例,降低渲染批次。

 

Crowds:

《Gpu Gems3》Animated Crowd Rendering:DX10直接支持更好的Instancing,直接通過Instancing大量繪製對象。然後使用紋理存儲動畫,vertex階段讀取,實現大規模Instancing動畫。LOD。

《Gpu Pro2》Rendering Pipeline for Real-Time Crowds:Transform Feedback,Geomerrty Shader,RT,Instancing在GPU上實現多級LOD以及視錐體裁剪,超大規模人羣渲染,8192級別。

《Gpu Pro3》Optimized Stadium Crowd Rendering:觀衆席大規模渲染,先根據方向視角,動作把模型渲染到RT上作爲模板,albedo,normal,以及一些特殊信息,然後通過Instancing大規模渲染Billboard貼片,再通過Deferred Shading降低Overdraw。

《Gpu Zen》Real Time Markov Decision Processes for Crowd Simulation:主要關注的是馬爾科夫決策,模擬行爲,順帶包含了一些超大規模人物角色渲染的內容,GPU剔除等。


Animation & Morph:

《Gpu Gems1》Animation in the "Dawn" Demo:Dawn中的動畫模擬,第一種是Morph,多套網格之間插值計算模擬細膩的動畫,還有蒙皮骨骼動畫。

《Gpu Gems1》Deformers:通過輸入控制參數控制網格變形,如彎曲,膨脹,裁剪,扭曲等,在GPU上實現形變,最關鍵的問題在於頂點變化後,法線如何變化,Jacobian矩陣。

《Gpu Gems3》DirectX 10 Blend Shapes: Breaking the Limits:DX10下使用更強的頂點流輸出(Transform Feedback?)實現Morph結果輸出,再迭代處理,無需一次融合所有Morph,打破了可以Morph的數量限制,實現任意多Morph融合。

《Gpu Pro5》[Mobile] Efficient Morph Target Animation Using OpenGL ES 3.0:通過Transform-feedback技術,在正常渲染之前通過一個prepass處理morph,實現Morph動畫效果。

 

Texture Animation:

《Gpu Pro2》 Practical and Realistic Facial Wrinkles Animation:使用法線貼圖,Mask圖等實現人物的皺紋動畫效果。

 

Bump & Parallex Mapping & Displacement Maping & Relief Mapping:

《Gpu Gems1》Leveraging High-Quality Software Rendering Effects in Real-Time Applications:主要介紹了將離線渲染的高模的一些信息存儲到貼圖中,然後實時渲染時使用,一方面是法線高模烘焙到低模,另一方面也包含了一些光照信息。

《Gpu Gems2》Adaptive Tessellation of Subdivision Surfaces with Displacement Mapping:Tessllation曲面細分的情況下結合Displacement Mapping。

《Gpu Gems2》Per-Pixel Displacement Mapping with Distance Functions:按照Ray-Tracing的方式進行表面處理,可以達到比Parallex Map等技術更進一步的表面凹凸效果。

《Gpu Gems3》Relaxed Cone Stepping for Relief Mapping:用於浮雕映射的鬆散式錐形步進,基本的Relief Mapping到進一步擴展,如二分查找,錐形步進等,最後給出了鬆散式錐形步進的方法,消除了錐形步進半徑定義的限制,space-leaping結合二分查找。

《Gpu Gems3》Baking Normal Maps on the GPU:將一個十分重要的功能,高模烘焙法線貼圖從原本的CPU移植到GPU上的過程,還有一些SM3.0的限制,以及內存,走樣問題處理,此外還可以用於Parallax mapping和relief mapping,ao map,cavity map等,簡單來說就是GPU烘焙的實現,極大優化了工作流。

《Gpu Pro1》Quadtree Displacement Mapping with Height Blending:常規法線貼圖以及視差貼圖都有較大的限制,視角,自陰影,AO等問題,通過Ray-Tracing的原理實現的Displacement可以滿足上述條件,可以任意高度擴展網格,文中還給出了預計算存儲在Mip中的Quadtree加速Tracing優化的方案。

 

Texture Format & Compression:

《Gpu Gems1》The OpenEXR Image File Format:主要是HDR格式的貼圖,LDR保存不了高亮信息會被Clip掉。半精度。給出格式結構,使用等。

《Gpu Pro4》Real-Time Ptex and Vector Displacement:主要是將原本分散的uv壓縮整合得很緊密,能很大程度地利用貼圖,尤其是對於Tesslection的Displacement map。

《Gpu Pro4》Practical Framebuffer Compression:壓縮HDR FrameBuffer降低內存帶寬消耗,支持直接在上面計算以及Blend等。通過將RGB改變成YCoCg顏色空間,使用兩個通道就可以表示圖像。

《Gpu Pro4》Real-Time JPEG Compression Using DirectCompute:實時GPU實現JPEG圖片壓縮,使用Direct Comulte,使實時壓縮成爲可能,可以爲視頻等進行壓縮。

《Gpu Pro5》[Mobile] Adaptive Scalable Texture Compression:ASTC壓縮格式,Channel Weight,Block Weight可以單獨設置,可以以一個選定的比特率來壓縮常見的任意貼圖格式的貼圖,甚至3D貼圖。

《Gpu Pro5》 Reducing Texture Memory Usage by 2-Channel Color Encoding :兩通道表示顏色,特殊色彩空間壓縮顏色貼圖

《Gpu Pro7》Real-Time BC6H Compression on GPU:BC6H方式紋理壓縮,主要是針對HDR格式的貼圖,一般用於CubeMap的壓縮,該方法可以用於實時壓縮,基於GPU,256*256*6全套mipmap chain的0.07ms。

 

HDR:

《Gpu Pro6》[Mobile] High Dynamic Range Computational Photography on Mobile GPUs:結合OpenGL和OpenCL實現了一套通過GPU處理照片曝光問題的流程,通過多曝光係數的照片結合+Tone-Mapping生成最終圖片。

 

Texture Filter & Sample & Mipmap: 

《Gpu Gems1》Fast Filter-Width Estimates with Texture Maps:主要是ddx,ddy求導在某些硬件不支持,而藉助mipmap實際上跟ddx,ddy原理近似,利用將內容存儲到mipmap中達到使用ddx,ddy的方法。

《Gpu Gems2》Tile-Based Texture Mapping:貼圖太大,將內容重複的貼圖改爲小塊,增加一個st,也就是Tilling功能,不過需要處理mipmap的問題。可以大幅度降低貼圖量。

《Gpu Gems2》Fast Third-Order Texture Filtering:介紹了一種能減少高階紋理過濾需要採樣次數的方法。對三階過濾器曲線過濾進行優化。

《Gpu Gems2》Mipmap-Level Measurement:由於GPU決定用哪一級mip因素較多,不好CPU模擬,所以文中給出了一種直接使用GPU結果的方法,false colored(僞着色),將可見的mip層載入,而無需全部載入,大幅度降低內存消耗。

《Gpu Gems2》Deferred Filtering: Rendering from Difficult Data Formats:延遲過濾,複雜數據格式的渲染。

《Gpu Pro3》Practical Elliptical Texture Filtering on the GPU:給出了一種不使用硬件Binlnear等Filter,而是在GPU實現,可以獲得更高的AnsiLevel等的Texture Filter方法。


Procedural Texture:

《Gpu Gems1》 Implementing Improved Perlin Noise:柏林噪聲,程序噪聲,根據各種輸入值生成的程序噪聲可以脫離於分辨率,超近細節可以有較好的噪聲效果,不過高頻不能高於採樣率,對效果無意義,而且可能在使用紋理動畫時出現斑點。這類噪聲已經很早就應用於電影等工業。

《Gpu Gems2》 Implementing Improved Perlin Noise:優化了噪聲實現,基於像素着色器實現噪聲,以用於凹凸貼圖和其他效果,用於離線渲染。

《Gpu Gems1》 Texture Bombing:程序化貼圖,以小圖拼合大圖得到很近也不失真的效果。將UV空間劃分,然後使用噪聲隨機合成圖像,該方法也可以擴展到3D紋理。

《Gpu Pro1》Virtual Texture Mapping 101:大量的複雜貼圖會導致帶寬以及內存瓶頸,通過Virtual Texture Mapping技術,僅保留查找表,存儲TileID查找具體的小貼圖進行融合,可以降低貼圖消耗,用於地形較好。

《Gpur Pro1》Accelerating Virtual Texturing Using CUDA:還是VTM,使用GPU CUDA實現,節約貼圖。

《Gpu Pro7》Adaptive Virtual Textures:Procedural Virtual Texture的改良版本,支持超大分辨率,根據距離自動選擇Mipmap,結合延遲渲染+Deferred Decal可以實現開放世界超大地形超高分辨率的渲染。

 

Tessellation & Geometry:

《Gpu Gems1》Adaptive Tessellation of Subdivision Surfaces with Displacement Mapping:結合廣度優先的遞歸細分,實現曲面細分效果。並且結合了Displacement Mapping.

《Gpu Gems3》Generic Adaptive Mesh Refinement:通用的自適應網格細化,對粗糙網格替換三角形細化。

《Gpu Pro1》As Simple as Possible Tessellation for Interactive Applications:類似Phong光照的Phong Tesselation,似乎還沒有硬件支持,直接使用vertex shader實現。

《Gpu Pro1》Rule-Based Geometry Synthesis in Real-Time:給出了一種基於規則生成程序化網格的框架,全部GPU實現,包括碰撞,不過目前看只能支持比較簡單的mesh。

《Gpu Pro1》GPU-Based NURBS Geometry Evaluation and Rendering:給出了一種基於B樣條曲線生成程序化網格的實現,支持GPU加速實現,方便一些工業繪圖,直接通過曲線控制網格形狀。

《Gpu Pro1》Polygonal-Functional Hybrids for Computer Animation and Games:除了三角形表示網格外,還有通過函數式表達的網格,所謂Function Representation(FRep),可以更容易地表達流體,軟泥,觸手等形變的物體,通過CUDA進行GPU模擬,實現了動畫形變以及和普通三角形網格結合,綁定等功能。

《Gpu Pro2》Terrain and Ocean Rendering with Hardware Tessellation:剛開始DX11支持硬件Tesselation,簡要介紹了Hull Shader和Domain Shader,實現地形以及海洋渲染。

《Gpu Pro3》Vertex Shader Tessellation:使用Vertex Shader自己實現Tesselation,在DX10下不依賴DX11的特性。

《Gpu Pro 6》Bandwidth-Efficient Procedural Meshes in the GPU via Tessellation:CPU->GPU的帶寬限制了超大超細節的Mesh渲染,文中給出了一種基於Tessellation技術,完全通過數學計算生成程序Mesh的方法,可以根據不同的細節參數生成不同細緻程度的GPU Mesh,但是全在GPU就沒有了視錐體剔除,需要做的是一個簡單的剔除,可以給一個代理包圍盒,如果在相機外,就不生成Mesh,降低後續的光柵化和Shading的消耗。

《Gpu Pro7》Deferred Snow Deformation in Rise of the Tomb Raider:《古墓麗影·崛起》中的程序生成的雪地形變技術,齊腰大雪或者腳印都可以模擬,甚至還考慮了腳印旁邊的雪堆以及過後的暴風雪回填腳印雪坑,使用了Compute Shader計算動態的Height Map,只考慮影響雪地的Mesh,不考慮雪地下的Mesh導致的突起,也就是所謂的Deferred。

《Gpu Pro7》Catmull-Clark Subdivision Surfaces:Catmull-Clark細分網格的方式,使用B樣條曲線+Tessellation實現超細緻的網格細分效果。

《Gpu Zen》Attributed Vertex Clouds:程序化生成網格,使用Instacing渲染,通過per instance data實現區分,如頂點採樣attribute貼圖,通過Geomerty生成具體形狀,Tessellation進一步潤色。

 

Terrain:

《Gpu Gems2》Terrain Rendering Using GPU-Based Geometry Clipmaps:通過頂點紋理實現基於GPU的幾何體裁剪,儘可能將計算轉移到GPU,降低地形CPU的消耗。

《Gpu Gems3》Generating Complex Procedural Terrains Using the GPU:實時GPU生成程序地形,支持Bump,LOD,以及交互,Marching Cubes。

《Gpu Pro1》Destructible Volumetric Terrain:使用Voxels表現地形,從Max裏面從三角面轉化爲Voxels,以及渲染實時LOD,以及實現體素的碰撞檢測。

《Gpu Pro2》 Large-Scale Terrain Rendering for Outdoor Games:超大地形實現,包括DCC,貼圖Pack,渲染等一些列流程。

《Gpu Pro3》Real-Time Deformable Terrain Rendering with DirectX 11:壓縮Heightmap,GPU解壓,降低內存和帶寬。Procedure Texture,Instancing,TextureArray,Tessellation。支持動態變形。

《Gpu Pro4》GPU Terrain Subdivision and Tessellation:通過Tessellation的方式實現在GPU進行細分網格,無需預計算以及CPU計算,降低CPU->GPU消耗。

《Gpu Pro6》Dynamic GPU Terrain:在GPU計算生成網格,使近處網格密集,遠處LOD,但是對於物理碰撞,需要再從GPU將數據同步回CPU。


Procedural Content Generation:

《Gpu Pro2》Procedural Content Generation on the GPU:程序生成地形,高度,樹密度圖,通過隨機生成場景。

 

Engine Design:

《Gpu Gems1》Managing Visibility for Per-Pixel Lighting:降低計算消耗,主要講解剔除光源影響,深度剔除等內容,儘可能降低DC。

《Gpu Gems1》The Design of FX Composer:FX Composer的設計,效果編輯器,主要考慮的是穩定,易擴展,方便TA使用,效率次級。通過這個工具展現D3D的效果以及應用。

《Gpu Gems1》Using FX Composer:FX Composer的使用。

《Gpu Gems1》Integrating Hardware Shading into Cinema 4D:介紹瞭如何在Cinema 4D這個離線渲染軟件中接入GPU實時渲染的過程,以方便更快預覽迭代。

《Gpu Gems1》Integrating Shaders into Applications:介紹了設計一個靈活的Shader管理的功能,方便表現各種效果,簡化渲染器的開發。

《Gpu Gems2》 Implementing the mental images Phenomena Renderer on the GPU:Mental Ray離線渲染軟渲染改爲cg語言GPU渲染的過程。

《Gpu Pro3》Designing a Data-Driven Renderer:詳細介紹了一個渲染器的設計,包括架構,資源,渲染流程,後處理,API,數據組織。使之將引擎的架構和渲染解耦,可以支持任意的渲染風格。

《Gpu Pro4》An Aspect-Based Engine Architecture:引擎架構設計,Aspect-Based引擎,Core,Scene Graph,Event Queue,每個Aspect都是單獨的功能,依賴Core和一些Common Library,覆寫實現各種Aspect的接口以實現各類自定義的功能,如渲染,文件管理,

《Gpu Pro5》glTF: Designing an Open-Standard Runtime Asset Format:一種基於json的通用資源格式,對象,材質,mesh等序列化的功能。

《Gpu Pro5》Managing Transformations in Hierarchy:實現一套靈活的層級的TRS系統,方便解算物體的具體世界空間Transform,Parent,以及切換父節點時Transform重新映射。

《Gpu Pro6》Semantic-Based Shader Generation Using Shader Shaker:處理Shader管理,變體等問題。首先對比了現有的Shader管理方式,如函數調用複用代碼,Uber-Shader一個超級複雜Shader搞定一切,封裝好函數通過Graph編輯(UE4),Template-based方式封裝大部分功能,根據需要自行擴展接口(Unity的surface)。文中給出了一種指定輸入塊和輸出塊的Shader編寫方法,然後根據A*搜索按照尋路的方式鏈接Shader的Shader管理方式,實現複雜Shader管理以及跨平臺編譯。

 

Cross Platform&Graphic API:

《Gpu Gems1》An Introduction to Shader Interfaces:CG語言的一個功能,類似C#中泛型接口,比如可以多態實現各類光照效果,而無需#if def等,此外還有可變長數組。

《Gpu Gems2》GPU Image Processing in Apple's Motion:在Apple上實現圖像處理相關,感覺主要是吐槽ATI各種坑。

《Gpu Pro1》[Mobile] Migration to OpenGL ES 2.0:主要介紹了一下GLES2.0相關的內容,畢竟剛開始在移動上用ES2.0。

《Gpu Pro1》[Moblie]iPhone 3GS Graphics Development and Optimization Strategies:Iphoe3GS,PowerVR顯卡移動平臺GLES2.0相關內容,給出了若干移動平臺的優化,以及PVRTC壓縮相關內容。

《Gpu Pro1》Porting Code between Direct3D9 and OpenGL 2.0:對比了DX和GL在Shader,Buffer,Texture,FrameBuffer,API等不同。

《Gpu Pro1》Practical Thread Rendering for DirectX 9:DX9下多Command Buffer實現多線程。

《Gpu Pro6》ANGLE: Bringing OpenGL ES to the Desktop:使用DX11模擬OpenGLES,WebGL。Shader轉化,調試問題,Uniform Buffer,Transform Feedback,Pixel Pack Buffers等GLES3的功能如何對應轉化到DX下實現。

《Gpu Zen》Profiling and Optimizing WebGL Applications Using Google Chrome:Web GL下的優化,其實更偏重的是介紹WebGL相關內容,工具,非通用優化。

 

Pipeline & GPU Architecture & Algorithm:

《Gpu Gems2》Streaming Architectures and Technology Trends:GPU的流式體系結構,高性能計算等。

《Gpu Gems2》The GeForce 6 Series GPU Architecture:GeForce6系列GPU的架構,SM3.0,分支,結構,MRT等支持。

《Gpu Gems2》GPU Flow-Control Idioms:講述了GPU上分支控制相關內容,新硬件支持動態分支。

《Gpu Gems2》Conservative Rasterization:介紹了兩種保守光柵化的算法,這個東西在GPU遮擋剔除等很有用,DX12已經直接內置。

 

Quaternion:

《Gpu Pro3》Quaternion-Based Rendering Pipeline:對比四元數和矩陣相關內容,包括TBN的實現等,基於四元數的管線。

《Gpu Pro5》Quaternions Revisited:使用四元數代替引擎中的3x3旋轉矩陣,實現法線貼圖TBN矩陣轉換,基本座標變換,Instancing,skining,morph等效果,降低帶寬和存儲消耗

 

GPU Compute:

《Gpu Gems1》A Toolkit for Computation on GPUs:開始用GPU搞事情了,用GPU實現映射,約減,排序,搜索。

《Gpu Gems2》Mapping Computational Concepts to GPUs:將各種通用計算映射到GPU的各種流水線階段。

《Gpu Gems2》Taking the Plunge into GPU Computing:從現有CPU計算轉化到GPU遇到的挑戰。

《Gpu Gems2》Implementing Efficient Parallel Data Structures on GPUs:GPU上實現各種數據結構,一維,二維,三維數組,靜態稀疏結構,動態稀疏結構。

《Gpu Gems2》Stream Reduction Operations for GPGPU Applications:通過GPU實現過濾,一一次掃描和搜索過濾一個數據集,並由分支循環的新特性進一步優化。

《Gpu Gems2》Octree Textures on the GPU:在GPU上構建八叉樹,精確的層級結構,可以用於諸如在模型上繪製的功能。

《Gpu Gems2》GPU Computing for Protein Structure Prediction:蛋白質結構預測的GPU計算。

《Gpu Gems2》A GPU Framework for Solving Systems of Linear Equations:一個GPU上解線性方程組的框架,偏微分方程。

《Gpu Gems2》Options Pricing on the GPU:GPU上計算期權定價。(我就想問問GPU累不累,咋啥都GPU算了)

《Gpu Gems2》Improved GPU Sorting:優化的GPU排序。

《Gpu Gems2》Medical Image Reconstruction with the FFT:基於FFT的醫學圖像重建。

《Gpu Gems3》Fast N-Body Simulation with CUDA:Gpu全對N-body算法實現。

《Gpu Gems3》Fast Virus Signature Matching on the GPU:基於GPU的病毒特徵快速匹配(蛋白質搞完了就搞病毒,GPU咋這麼忙?)

《Gpu Gems3》AES Encryption and Decryption on the GPU:基於新版本GPU,處理整數流的功能,可以實現ASE塊密碼算法。

《Gpu Gems3》Efficient Random Number Generation and Application Using CUDA:GPU上隨機數生成,很重要的功能。蒙特卡洛方法的基礎,天生並行,非常適合GPU。Wallae高斯生成器。期權等計算仿真示例。

《Gpu Gems3》Imaging Earth's Subsurface Using CUDA:用CUDA進行地震數據計算模擬,用於地球勘探資源,地震分析等。(我靠,病毒搞完了又來搞地球?好吧,不得不說GPU在其他領域也是很重要的,比如Alpha Go最開始都用GPU算的,雖然後來有專門的TPU了,但是GPU的計算能力仍然不容小覷)。

《Gpu Gems3》Parallel Prefix Sum (Scan) with CUDA:CUDA並行前綴和,掃描法。

《Gpu Gems3》Incremental Computation of the Gaussian:高斯函數的增量計算。在規則間隔點上計算高斯曲線。加速多項式指數級的函數。

《Gpu Gems3》Using the Geometry Shader for Compact and Variable-Length GPU Feedback:Geometry Shader處理緊湊和可變長度的GPU feedback。可以構建直方圖,壓縮,Hough,圖像處理的角點檢測等。

《Gpu Pro1》Spatial Binning on the GPU:GPU排序裝箱問題。

《Gpu Pro2》A Fast Poisson Solver for OpenCL using Multigrid Methods:計算泊松結算,可以用於流體等。

《Gpu Pro5》[Mobile] Optimizing OpenCL Kernels for the ARM® Mali™-T600 GPUs:對 ARM® Mali™-T600 GPUs設計OpenCL的優化。

《Gpu Pro5》Two-Level Constraint Solver and Pipelined Local Batching for Rigid Body Simulation on GPUs:物理模擬,GPU實現約束解算

《Gpu Pro5》 Non-separable 2D, 3D, and 4D Filtering with CUDA:使用CUDA醫學影像方面的一些濾波處理。

 

Fluids & Liquids & Metaball:

《Gpu Gems1》Fast Fluid Dynamics Simulation on the GPU:介紹了GPU上模擬流體相關的一些數學知識等,使用GPU可以模擬一些複雜的運算效果。

《Gpu Gems2》Flow Simulation with Complex Boundaries:複雜邊界的流體模擬,Lattice Boltzmann,基於GPU的邊界處理。

《Gpu Gems3》Point-Based Visualization of Metaballs on a GPU:GPU上變形球,受限速度,斥力,粒子密度,不使用Marching Cube以及Ray Tracing,而是通過將粒子約束到表面採樣。

《Gpu Gems3》Real-Time Simulation and Rendering of 3D Fluids:實時流體渲染,運動流體方程,固體流體交互。體素化,RayMarching,火焰,煙霧體渲染。

《Gpu Pro2》Simple and Fast Fluids:通過一個Pixel Shader的Filter實現流體,主要是實現NavierStokes方程(納維-斯托克斯方程),可以模擬一些液體流動效果,火焰等。

《Gpu Pro5》Simple Rasterization-Based Liquids : 簡單的基於光柵化的液體渲染。

《Gpu Pro5》Screen-Space Deformable Meshes via CSG with Per-Pixel Linked Lists:逐像素鏈表構造屏幕空間形變效果。

《Gpu Pro7》Interactive Sparse Eulerian Fluid:DX11下模擬煙霧性質(噴氣)的流體效果

 

Physics:

《Gpu Gems3》Real-Time Rigid Body Simulation on GPUs:實時GPU上的剛體仿真效果。藉助GPU的計算實現大規模的模擬,並且可以適用於其他類型,如液體。

《Gpu Gems3》Broad-Phase Collision Detection with CUDA:CUDA進行寬階段碰撞檢測,就是粗略判斷碰撞。空間劃分,排序。

《Gpu Gems3》LCP Algorithms for Collision Detection Using CUDA:Havok的分享,剛體碰撞一般分爲3個階段,寬階段,窄階段,解析階段。文中主要針對精細的碰撞進行解析,LCP。

《Gpu Pro1》Real-Time Interaction between Particles and the Dynamic Mesh on the GPU:粒子(流水)和動態的Mesh碰撞,給出一種Volumetric方式表示Mesh的方法。

《Gpu Pro 6》Real-Time Deformation of Subdivision Surfaces on Object Collisions:大多數物理引擎只支持剛體碰撞檢測,文中給出了一種可以計算形變以及細分物體等非剛體類型的碰撞,先用基本的剛體檢測,然後將對象體素化(可以控制精度),完全在GPU進行細分物體的細節碰撞檢測。

《Gpu Pro7》 A 3D Visualization Tool Used for Test Automation in the Forza Series:基於Mesh的物理需要依賴網格本身,但是如果模型製作時不規範,有洞或者法線錯誤會導致物理引擎出錯,所以文中給出了一種檢測工具。

 

Stereogram & VR:

《Gpu Gems1》Real-Time Stereograms:實時繪製立體效果,那種對眼看能出現立體的?表示這輩子可能都不會研究到這個吧。

《Gpu Zen》Efficient Stereo and VR Rendering:介紹了一下VR Stereo渲染相關的內容,優化,Shader等。

《Gpu Zen》Understanding, Measuring, and Analyzing VR Graphics Performance:介紹VR相關內容,VSync,增加GPU Trace對VR性能進行優化。

 

Others:

《Gpu Gems2》Computer Vision on the GPU:計算機視覺,邊緣檢測,特徵向量,全景圖等。

《Gpu Gems3》Playable Universal Capture:全方位的動作捕捉,主要是面部表情。

《Gpu Gems3》Object Detection by Color: Using the GPU for Real-Time Video Image Processing:實時圖像處理跟蹤,Core Image圖像處理框架,實現視頻中追蹤關鍵對象替換等。

《Gpu Pro1》[Mobile]Touchscreen-Based User Interaction:觸屏用戶交互方案,計算觸摸輸入相關。

《Gpu Pro1》[Mobile]Optimizing a 3D UI Engine for Mobile Devices:在移動平臺實現3D UI相關功能。

《Gpu Pro3》A WebGL Globe Rendering Pipeline:Web GL(基於GLES2.0)實現地球繪製

《Gpu Pro4》Kinect Programming with Direct3D 11:Kinect設備介紹,相關功能實現等。

《Gpu Pro7》Octree Mapping from a Depth Camera:Kinect,CUDA,從Depth Camera攝像機信息重建三維場景。