※ 引述《igarasiyui (かゆい うま)》之銘言:
: 1.使用一種自行開發兩年的物理渲染器,讓物品外觀更真實
: 推 makilight: 第一個應該就是最近很夯的Physically Based Shadid Shading?
是Physically Based Rendering沒錯
在這之前則是使用特殊用途的Prime Shader
Prime Shader是一個特殊的材質就寫一個shader
像是塑膠、玻璃、皮膚就各自有個shader
並且有不同組的參數供材質美術人員調整
Physically Based Rendering則是只寫一個master shader
僅提供一組統一的參數供調整,參數主要是將真實物理參數數值化
例如基底顏色、粗糙度、非勻相反光度、邊緣反射度等
如此統一的參數組合,會讓材質美術人員比較方便調整、統一思路
這個概念是由Disney於SIGGRAPH 2012所提出
詳細技術解說請見 http://blog.selfshadow.com/publications/s2012-shading-course/
Disney提出的參數好像是有10個吧(還是更多,我忘了)
ND為了效能與簡單化考量,只在shader中用了其中幾個參數而已
: 4.由SONY技術團隊和頑皮狗一起研發的新背景細節層次演算法(LOD)取代了曲面細分
: (Tessellation),物體表面看起來更精細
其實LOD(level of detail)不是什麼新概念
就是近的物件用比較細緻的模型、遠的物件用比較粗糙的模型而已
兩者之間如果做瞬間切換,會有視覺上的不連續(業界稱此現象為popping)
從PSX demo中,如果仔細看的話,可以發現U4在兩個模型之間有漸進式切換
這也不是什麼新穎的花招,用的技巧叫做dithering
這個技巧源自於印刷業,僅用CMYK四種顏色,靠色點的密度不同來營造不同顏色濃度
ND使用的dither花紋是Bayer Matrix http://en.wikipedia.org/wiki/Bayer_filter
兩個細緻度不同的模型,用Bayer Matrix的花紋交替渲染
有研究過電腦圖學的人,可能就會想到也可以用alpha blending的方式做漸進式切換
這是可行的,可是alpha blending比單純的z-buffering耗效能
換句話說,半透明的物件比完全不透明的物件還要吃GPU效能
將兩個不同的模型,用非透明物件的方式渲染
然後用dithering的技巧來把兩個不透明物件的像素混在一起
會比把兩個半透明物件疊在一起渲染還要節省運算資源
: 7.一些動態事件,如老德跳向遠方並抓住把手的動作,不再是事先設定好的場景,而會
: 隨著跳躍的力道及角度進行實機運算。
PSX demo可以看出Drake的攀爬動作跟以前比起來流暢多了
這是因為一連傳的攀爬動作,不是單純把不同的動作片段拼接起來
而是在這些拼接起來的動作上,投入部分ragdoll效果
ragdoll指的是完全用物理模擬的生物骨架
最常見的用處是模擬死亡的角色落地後翻滾軟癱
在攀爬的動作上加入部分ragdoll效果之後
有部分的身體晃動是靠物理在模擬的,所以看起來比較不呆版