※ 引述《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效果之后
有部分的身体晃动是靠物理在模拟的,所以看起来比较不呆版