
會場:San Francisco Moscone Convention Center

Naughty Dog的Lead Technical Artist、Andrew Maximov氏
在
GDC 2017的最后一天,
Naughty Dog在題為【
Technical Art Techniques of Naughty Dog: Vertex Shaders and Beyond
】的分享會上,對公司的人氣動態做冒險游戲【神秘海域4(
Uncharted 4
)】的Vertex Shader(頂點着色器)的使用實現的要素做了解說。
登場解說的,是
Naughty Dog的
技術美術組長(
Lead Technical Artist)
Andrew Maximov。
Maximov所列舉的【
神秘海域
4
】的粒子着色器所做的內容,相當的豐富和有意思。
這次是基本上是沿襲
SIGGRAPH 2016上的內容,不過因為是
GDC 2017最后一天最后的一個主題,會場里包含站着聽的開發者完全的滿員,不得不進行入場的限制。
所謂的
Vertex Shader是什么呢
,在最近GPU上的支持了沒有分工區別的統一渲染架構的Unified-Shader的同時,因為計算階段也被細分化了,不能簡單的來區別了,傳統的GPU繪制圖形進行演算的部分,Vertex所指的是負責的3維頂點的計算,到寫入到緩沖部分的計算單元。而這次分享中提到的Vertex Shader,也是如此作為上下文來使用。然后為了繪制實際的圖形,通過Pixel shader的運行,得出畫面上像素的顏色后,來進行繪制。
現代的Vertex Shader是把3D的頂點數據的集合,轉化為相機所看到的2D的頂點數據,在制作“繪制元素”時,把美術師制作的原始的3D的形狀和顏色數據進行加工,就可以動態的制作出變化的形狀和顏色。這部分Shader有着程序化(Procedural)的意義在里面。能這部分做好,實現與其他游戲的差異化,有着非常重要的意義。
【Uncharted 4 General-Purpose Vertex Processing - Naughty Dog】
Uncharted 4 General-Purpose Vertex Processing - Naughty Dog.mp4
在【神秘海域4】中實現的很有意思的,是通過幾種基本系統的組合,制作出豐富多彩的變化。以此為大前提,在整體的空間,有着控制風的風系統(Wind System)。
組合這個風系統的對象,有着以一點為中心軸(Pivot)進行變形的元素,具體來講就是以草木樹枝的根為中心軸來彎曲的那樣的白哦先。但是,草木隨風的飄動,不光有風系統的影響,像葉子頂端激烈的晃動,是通過激烈切換法線貼圖,用法線的凹凸表面來實現動畫效果。這樣把每個局部的動作用適當的技法組合來實現的。
另外,使用Wind System和Pivot制作的動態效果,不光只有背景。角色的毛發和衣服隨風飄動的樣子也是受風系統影響的。另外毛發還受重力變化的影響。在毛發干燥的時候,是不受重力影響的,而是跟隨風系統隨風擺動的,而切換到下雨的場景里,頭發被雨潤濕后受重力影響運動也變得沉重起來。為了實現這種變法,角色在通常使用的法線貼圖外,還要准備其他用途信息的法線貼圖。
【頭發的Pivot受風的影響控制】


衣服飄動時候的處理也是,利用了方向信息的擴展貼圖。並不是
整個襯衣
受風力控制,把飄動的那部分皺折
用Mask的方式用法線來作出
皺折
的形狀。然后再通過與向下Scroll的2軸向的2D法線進行混合,來作出衣服受風運動的效果。
【風對衣服的影響】


在垂直的旗桿掛着的旗子的飄動表現,也是采用的類似的方法。旗子飄動,是參考的保存在頂點顏色中的值,通過對描述的在無風狀態下沿着旗桿下垂的狀態和受風影響完全橫向飄動狀態之間做變形(Morph),再與風系統影響的動作做混合來表現。另外那種水平放置的旗桿,旗子垂下的狀態,是通過Pivot和法線的來進行風的模擬的。
【重力對頭發的影響以及旗子的飄動】


變形方面,又稱作“Step Morph”,在腳底起伏所產生的步調的變化,足跡和腳下地面的變換,塵土粒子的控制上也被使用了。另外還有碰撞所產生的汽車的變形,是預先在頂點顏色里保存表現碰撞產生的凹凸的坐標信息。用變形狀態的變化管理在Render Target中寫入損壞值。在通過損壞值來對車體表面進行變形,稱作“Skinned Morph Target”。
【地面的変化】


【汽車碰撞的變形】


【飛行物的控制】


除了這些實現之外,為了能充實細節,控制降雨強弱的信息,也保存了作為Scale值的動畫數據,再參考這個值自動變化的來使用RayCast,水面上浮動的小船和水面的漣漪的表現,可以根據小船上下移動和左右旋轉的偏移自動的生成。
【雨天/水面的控制】


【人群的控制】


在降低渲染處理負荷的措施上,例如Billboard的特效動畫,加入了相機看不到的像素就不會描繪的優化。還有為了不會產生特效紋理的分辨率的低劣化,最低也會使用一半數據尺寸。也加入了跟隨玩家角色的移動,增加角色包圍網格范圍內草的生成密度。
【負荷降低 / 優化】




除此之外,還有很多的“小技巧”,都是使用頂點着色器的功能來實現,每個都不是什么高級技術,不過實現了那么多要素,不得不佩服這些復合技術的使用。
Naughty Dog的下一款作品預訂為【最后的生還者2 The Last of Us Part II
】,雖然游戲風格不同,但可以確定的是下一款作品中肯定會實現更高密度的信息,非常的期待【
The Last of US II
】以及【
Uncharted
】系列的續作。