會場: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
】系列的續做。