Grand Theft Auto V 图形研究(2)
生活随笔
收集整理的這篇文章主要介紹了
Grand Theft Auto V 图形研究(2)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
原文鏈接?http://www.adriancourreges.com/blog/2015/11/02/gta-v-graphics-study-part-2/
Level of Detail
如果說Rockstar(GTA的開發(fā)商)在一個領(lǐng)域優(yōu)于競爭對手的,那就是接下來要介紹的LOD。洛杉磯的游戲世界隨著多邊形和細節(jié)的多少,有許多不同的版本,即便是在線直播游戲時也不會被加載畫面阻塞,使得整個游戲體驗更加的身臨其境。Lights 光源
你看到的遠處所有的小的光源都是真實的,你可以朝著他們的方向開車,并找到投射光源的燈泡。 Aaron Garbut 上面這段話是 ? Rockstar North的創(chuàng)始人和藝術(shù)總監(jiān) Aaron Garbut,在PS3版發(fā)布不久前宣布的。 他的描述是否準確?讓我們思考下面這個夜景: 簡直像真的一樣:你看到的每個小的光斑都都是用一個使用32x32? texture的正方形渲染出來的。 ? ?? 盡管用? instanced geometry(實例化幾何體) ?進行了大量的batch,但仍有數(shù)萬多邊形推送到了GPU ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ?? 而且這些并不只是靜態(tài)幾何體:車輛的前燈也在街道上移動,實時更新。當然,這個距離并不需要渲染所有的車輛模型,只要兩個前燈就足以創(chuàng)作視覺。但如果你要接近一些遠處的光源,LOD會增加,并最終繪制汽車的整體模型。Low-Poly Meshes 低多邊形網(wǎng)格
我們回到前面討論的那一幀上,游戲世界里一些相當廣闊的部分在一幀中被渲染。例如我們下面討論的山的渲染: ? ?? 那么遙遠的小山究竟是什么樣呢? 原來這個山一點也不小,實際上Vinewood Hill(現(xiàn)實中的好萊塢山)是一個跨越了幾平方公里的區(qū)域,以及許多的房屋和建筑。 還有伽利略天文臺坐落在山頂上,以及?Sisyphus Theater(希臘劇場),?Lake Vinewood(好萊塢水庫),可以在所有的這些區(qū)域里探索或駕車,并由數(shù)千的draw-calls 和大量的多邊形來繪制。 但在當前這個場景里,這個區(qū)域很遠,所以用低多邊形的版本來渲染:只有1個 draw-call和2500多邊形。 ? 所有的渲染是用一個讀取了多張Diffuse texture的Mesh做到的。即便有一些工具可以把Mesh轉(zhuǎn)化為低多邊形的版本,但這個轉(zhuǎn)化并不能完全的自動化處理,即便是 Rockstar的3D美術(shù)師花費幾天時間來手動的微調(diào)Mesh,也不會感到驚訝的。 另外一個例子, 是城市中“小首爾”區(qū)的幾條街,也是由一個draw-call來繪制的。游戲世界的低多邊形版,在高效的渲染 reflection ?? cubemap這類不需要非常高細節(jié)和很高分辨率時非常的有用。游戲里如果只有一個LOD等級的話,實時的渲染環(huán)境 cubemap因為包含了大量的幾何體,會非常昂貴或無法實現(xiàn)。 ?
Asset Streaming 資源流加載
像在GTA中給不同的LOD創(chuàng)建多個版本的游戲世界,是非常龐大和耗時的任務(wù),是一個相當挑戰(zhàn)。但是,即便你完成了這些,也僅僅做到了一半:你可以在硬盤上放幾個G的model和texture,但如果不能找到方法來高效的加載到內(nèi)存或GPU顯存上就沒有任何意義。 GTA V是實時的流加載資源, 當你進入地圖的另一個區(qū)域時, 加載/卸載model和texture。真正使人印象深刻的是它實時的實現(xiàn)了并在幾個小時內(nèi)保持穩(wěn)定。 技術(shù)上最大的成就,就是把這一些都壓縮到了家用機的內(nèi)存,并讓游戲得以流暢的運行。我們流加載和壓縮到內(nèi)存的越多,就意味著可以比GTA4有更高數(shù)量級的細節(jié)。 Aaron Garbut 當然,這種流加載系統(tǒng)也有其局限性:例如當你切換角色時,相機要從地圖的一個區(qū)域跳到另外一個區(qū)域,這種情況下,流加載系統(tǒng)會突然的過載,也是完全可以理解的,它需要5秒來整理和趕上進度。但GTA5通過縮小/轉(zhuǎn)化/放大的動畫很好的處理了這個過渡,并不會覺得完全像是加載畫面。 當你正常駕車時,移動速度足夠慢,流加載系統(tǒng)就有足夠的帶寬來保持更新。開飛機的情況就不一樣了:它們對流加載系統(tǒng)來說太快了,這也就是為什么駕駛飛機的速度與現(xiàn)實相比大大的減慢了。飛行時,mesh會以和駕車相比更低等級的LOD來渲染以緩解流加載的壓力,但有時仍然會有資源的"突然出現(xiàn)"。Reflections 反射
因為前面分析的幀沒有那么多的水,讓我們通過下面場景更接近的看看游泳池和海洋是如何渲染的: 就像之前所見的,這個場景被正常的渲染:生成一張環(huán)境Cubemap(下圖),主要用來渲染物體對周圍的反射效果。 例如,游泳池的梯子的反射就歸功于這張cubemap。 注意角色和一些像梯子這樣的小的物體對象并沒有在這張cubemap里。 在渲染水之前場景看起來像這樣: 渲染水面和這個完全不同,它并不包括上面這張cubemap。Reflection Map 反射貼圖
首先,是生成" planar reflection map ",這張圖分辨率很低,是240x120,處理類似cubemap的生成,但只生成一張buffer并且有梯子和角色出現(xiàn)。 場景被顛倒的渲染,隨后做對稱采樣就可以獲得正確的反射了。Refraction Map 折射貼圖
圖像的一部分被提取出來:這是水面所在的部分用來創(chuàng)建折射貼圖,用來模擬后面的折射效果:光從水面下的射出。 這時加入一些“不透明水”的藍色(水越深顏色越強),以及 caustics( 焦散)效果。最終的貼圖為原始buffer的一半大小。Combination 組合
要組合不同的buffer,再繪制一個矩形多邊形來表現(xiàn)游泳池的水面。依靠bump texutre,逐pixel的擾動多邊形的法線作出一些水運動的錯覺。 海面的情況不只是擾動法線,繪制一個每幀更新頂點的整體的Mesh來模擬波浪的運動以替換之前的四邊形。 根據(jù)每個pixel的法線, ? pixel shader在不同的點獲取 reflection和 refraction ?map信息,通過菲涅爾方程計算出坐標。 ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ?? 最后的結(jié)果非常不錯,加入真實擾動的水面效果非常有說服力。Mirrors 鏡面
鏡面的渲染和水面是完全一樣的技術(shù),由于鏡子只反射光,甚至比水面更簡單,不用考慮來自鏡面后的折射效果。 不像水面,鏡面是完全平坦的,很難隱藏用 較低分辨率時問題,texel相當?shù)拿黠@。通過設(shè)置給予較高的分辨率可以增加反射的質(zhì)量。 生成 ? reflection map需要額外的pass渲染場景而且相當?shù)某林亍.旂R面在視口外或者玩家距離很遠時(這時看起來像一個黑色的四邊形),引擎可以避免執(zhí)行這個額外的pass。Spotlights 聚光燈
記得在每幀開始前生成的環(huán)境貼圖并不包含任何角色和車輛,只有主要的建筑和風(fēng)景吧? 這種情況下,下圖中車的前燈是如何反射在潮濕的路面上的呢? 在幀分析的部分這個效果并不明顯,因為那是一個白天的場景,但畢竟所有的 G-Buffers ?都被合并了,燈光也被順序的繪制。每個燈泡,光投射到的其他mesh被計算了,也包括像潮濕馬路的高光澤度表面上很強的反射高光的效果。 ?每個光源都要繪制一個mesh,這個mesh類似一個細分的八面體,只是通過修改vertex shader,使它與光暈的形狀相匹配。 這個mesh沒有texture,目的是為了讓光暈內(nèi)所有接觸的Pixel可以調(diào)用一個Pixel Shader。Shader會根據(jù)Pixel深度,與光源的距離,法線以及specular/glossiness屬性,來動態(tài)的計算光照。 上面的線框視圖就是用來計算路燈光源的影像的Mesh。 這里你可以看到延遲管線(Deferred)和前渲染管線(Forward)相比的一大優(yōu)勢:延遲管線可以在場景中渲染大量的光源,而 pixel shaders調(diào)用盡可能的少,只涉及了被光源影響到的pixel。而前渲染管線中,你必須要計算所有受光源影響的fragment,即使這個 fragment實際并不任何光的影響,或者隨后被其他的fragment遮擋。 Well, since you made it this far, you can check-out the final part about post-effects.
轉(zhuǎn)載于:https://www.cnblogs.com/TracePlus/p/5123301.html
總結(jié)
以上是生活随笔為你收集整理的Grand Theft Auto V 图形研究(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: angr符号执行用例解析——CSCI-4
- 下一篇: 51单片机通过DHT11温度传感器读取温