A Hands-on Look at Using Ray Tracing in Games with UE 4.22 GDC 2019
A Hands-on Look at Using Ray Tracing in Games with UE 4.22 GDC 2019
talker: Sjoerd De Jong (SR.ENGINE EVANGELIST)
ue4.22加入了raytracing,GDC2019上,Epic的工程師用一個簡單的場景延時了下raytracing的一些效果。視頻在油管UnrealEngine的頻道已經放出來了,除了光追,還包括其它包括物理,聲音動畫的分享。
原視頻地址:https://www.youtube.com/watch?v=EekCn4wed1E&list=PLZlv_N0_O1gYrzsn-fTzsrJq4sQPlAiqb&index=13&t=0s
原文標題是 hands-on look ,翻譯成人人都能看懂不過分把(滑稽
0. Intro
全文 主要從 軟陰影,反射,半透明,AO/GI,性能分析 幾個方面介紹ue4.22中加入的raytracing。
演示場景是一個地鐵的環境,會包括水面反射,瓷磚,鏡子,車燈等效果
4.22 支持了全燈關類型的軟陰影(天光,點光,范圍光)的raytracing,反射,AO,GI,
還有一些沒有支持上的,未來會支持上的
ue4中怎么開
開raytracing,要你有張RTX的卡,windows版本在1809之上, ue4啟動的時候加上 -DX12,ue4的project setting 里面開啟 raytracing
也可以參考這個視頻 RealTime Raytracing Arrives
1.Shadows
首先從陰影開始,介紹下不同光源產生陰影,傳統做法和光追的區別。包括天光,點光,平行光,矩形光,還有光追效果和普通效果混合的。
進入一個地鐵場景,里面很多光源,注意看人物的影子,開啟cast raytraced shadow之后,人物的影子柔和了很多,可以通過改變光源的source radus調整軟陰影的邊緣,0話的就最硬。
注意看,通過ratraced生成的陰影,越靠近腳部的地方越硬,人上半身的影子邊緣梯度下降的就很明顯,這是傳統PCF做軟陰影達不到的。
4.18 就加入了rect light,但是4.22加入raytracing之后,算是完善了rect light。
rectlight在環境中可以產生了很棒的燈光效果,可以像rect一樣,調整rect的width,height
比較有意思的是還可以調整ban door angle和length,類似燈的厚度(這樣理解不知道準不準確)。
還可以加一張貼圖,達到特殊形狀rect light的效果,像天花板上的2根燈管。
還有這個rect light 的source texture 在反射中也是有效果的。
下面是一輛地鐵通過時候,開啟raytracing和不開的比較。可以在命令行里輸r.RayTracing.Shadows 0 關閉。沒開的話,影子特別的銳利
剛才是在indoor環境的,現在展示下outdoor的,很多茶壺,一盞平行光。上面的是沒有用raytracing,用的傳統CSM(Cascade Shadow maps)動態陰影,跑了52 fps。
同樣的場景,同樣的視角,Ray tracing 跑了73 fps,可以看出光追在動態陰影表現卓越。
其實可能確定室外,大環境更適合用raytracing,現在主機常見的室外做法是,太陽光產生 動態陰影,環境中可能有多盞點光源不產生陰影,共同作用達到動態陰影的效果。
之前地鐵的場景可以在epic的商城里免費拿到
2.Reflection
反射這部分,主要講反射過后的軟陰影,光線的彈射次數,性能問題(后面性能分析會提到)
接下來看看反射的東西,鏡子里raytracing的反射效果特別好,如果你移動的話,還會看到一部分 noisy
這里的墻面瓷磚光線是只進行了一次反彈,當然ue4也支持多次。
下面是開1次bounces 的效果,和開3次的效果。開了3次之后隧道墻面的燈光明顯更亮了一點。幀率也是明顯下降了從 90幀降到了30幀。
還有鏡子里的陰影,你會發現,鏡子中的影子和現實世界不一樣,因為為了性能優化,ray tracing reflect的 shaodws,提供了hard shadows,Area shadows,
3. Translucency
半透明物體
半透明物體,例子是地鐵的玻璃,透過玻璃看外面墻面上的led燈。
type可以選Raster或者RayTracing。
第二張圖是ray tracing的效果雖然只做了一次bounce,但是玻璃里受環境影響的黑色的效果也比光柵化的效果好很多,黑色更純粹。
4. AmbientOcclusion
這一部分演講者,說了下因為演示場景是在室內,地下,黑色比較多,AO和GI的效果不明顯,為了性能,他沒有開啟,別的環境可以嘗試,說是效果很好。
5. Optimiazation and Performance
性能優化,主要從陰影,反射,半透明,AO/GI 這幾個方面
反射是游戲里面最耗的,用GPU profiler工具可以看到剛才那個場景RayTracingReflections 占到了2/3。
老黃的Nsight也是非常好的Profiler工具, DXR也提供了一套Profiler的工具。(為啥不安利一波宇宙第一RenderDoc呢?)
反射性能主要受到這幾個東西的影響:
- Screen Percentage 反射的質量
- Distance 光追的距離,或者說bounce的次數(追的越遠越耗,彈的次數越多約耗)
- Material Roughness 材質的粗糙度(pbr微表面原理,不同Roughness的材質,對光線的吸收是不一樣的,光滑和不反射的材質都是不怎么耗的)
5.1 Material
材質不同,光追的復雜度也會不同,可以通過關閉r.RayTracing.EnableMaterial 0 來關閉,遮罩材質很慢!
演講者做了這樣的一個debug工具(上一節最后一張圖),可以看不同材質ray tracing 的時候的消耗,yellow是發生100%反射,近似鏡面反射的;green是不發生反射的,光線直接被吸收掉的;
2者交界處,褐色的部分是交界處,材質較為復雜,發生了漫反射,當ray過來的時候,并不是直接鏡面反射走掉,而是diffuse向四面八方,這就要大量的計算,朝不同方向,計算ray的bounces,這非常耗。
還有就是混合材質,混合材質意味著更復雜的反射折射,這也會更耗。
Mask Material也很耗,因為他要去算材質表面那個位置是0還是1,可見和不可見又要分別處理。
5.2 Geometry
不同幾何體,性能消耗也會不一樣。
- 空間中特別小的物體,很耗。(如樹葉,柵欄等)
- 不透明的固體會比較快(因為不會發生 scatter 散射)
- 室外會比室內快(室內空間小,光線可能發生多次彈射,室外直接彈走了)
- 所以更適合raytracing的環境是室外城市,沒有樹葉那種
以上是全部的內容,
轉載于:https://www.cnblogs.com/SeekHit/p/10780743.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的A Hands-on Look at Using Ray Tracing in Games with UE 4.22 GDC 2019的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Django框架(十八)—— auth框
- 下一篇: “短路求值(Short-Circuit