GTC 2015重點Session

GTC這個由NVidia所主導的Conference,基本上就是分享各領域應用在GPU上的相關技術,包含動畫多媒體相關的產業,是相當技術性的研討會。這次的GPU的應用趨勢大部份的主軸都在Deep Learning的應用,加速學習演算法的運算,應用從WEB到自動車。當然在各產業上也有相當多的應用,包含特效與動畫界。

GPU in Animation

Pixar有發表兩篇, 很可惜的沒有放出投影片或錄影。

  • Hydra: Pixar’s Real-Time Render Engine for Feature Film Assets and Workflows
  • Animating Singing Volcanoes: Real-Time Shading in Presto for Pixar’s Short Film “Lava”

GPU in VFX

在VFX特效部分應用包含了在GTC 2014時就MPC發表了使用Fabric Engine與OptiX打造的Realtime Lighting Preview系統(Dekko),這次DEMO看起來也是Fabric Engine在VFX上應用的相當完整的廣告,其中也包含了Fabric Engine所使用的Visual Programming的framework “Canvas”,幫助MPC將VFX流程”視覺化”。
Dekko: A Framework for Real-Time Preview for VFX
[fvplayer src=”http://s3-2u.digitallyspeaking.com/assets/nvidia/events/gtc15/S5622_VSJE-vc961e-1300.mp4″ splash=”http://www.animator.idv.tw/wp-content/uploads/2015/04/MPC_Dekko.jpg”]
Dekko使用Fabric Engine當作場景管理(Scene Assembly)的核心,透過Fabric Enging的KL語言對幾何元件的Extension API來讀取場景與幾何資訊,建立出Asset管理的系統,包含整合Alice(MPC Crowd System)與Muggins(MPC內部的inhouse工具開發庫)。
MPC_Dekko_FE_Extension
MPC也使用了新的Visual Programming “Canvas”界面來打造OptiX的Realtime Shading Pipeline,在OptiX裡實做了CUDA版本的Disney的Physically Based Shader。
MPC_Canvas

MPC_Dekko_Disney_Shader

mpc_demo

mpc_demo_2

mpc_demo_1

GPU Rendering

這次在特效與動畫界主軸大部分是在Rendering的GPU化,有OTOY所開發的OctaneRender與VR方面的應用,FurryBall使用OptiX重新打造全Raytracing的GPU Renderer,V-Ray的V-Ray RT在GPU上的應用,還有Redshift所打造Production 品質的GPU Renderer, Nvidia也推出了MDL的Handbook。

V-Ray

V-Ray這次發表的部分包含了許多在GPU上的功能上與核心的改進,像是GPU運算時需要的特殊Buffer(像是Ramp,特殊Shading需要的Lookup Table等),Texture Paging,改進的GPU的Code Debuging,取得在GPU上使用QMC Sampling的授權得到更好的品質,而且使用統一的原始碼編譯到不同的運算裝置等等。
vray_qmc_sampling
vray_one_source
Light Cache的改進包含支援在GPU記憶體的Layout方式來提升效率,為了支援Hair,也新增了一種Volume Point的類型,來紀錄該點spherical irradiance的資訊,用於Hair Shading。
vray_lightcache
在GPU上使用Anisotropic的Shader的時候,需要從幾何元件的UV Channel取得tangent vector與binormal vector,大量的幾何元件在GPU中包含這些資訊需要大量的GPU記憶體,也特別將有Anisotropic的Shader才會將這些資訊上傳到GPU處理,減少記憶體的使用。
vray_anisotropic
在SSS的部分,因為在CPU可以使用illumination Map的Pre Pass來達到SSS的效果,但是在GPU上只能使用Raytracing,因為需要針對Surface Point做illumination的recursive call(遞迴),所以只能在CUDA的裝置上跑,不支援OpenCL,同時也不支援Texture Pagine。
vray_sub-surface_scattering
在Texture Paging System方面,基本上是先從GPU做了許多intersect之後,將需要取得材質ID與UV結果傳給CPU,CPU把需要的貼圖Pixel資訊全部讀完後傳回GPU做Shading,這些動作需要小於10MB的額外記憶體來維護。
vray_texture_paging

Iray

這次Iray的發表主題有

在MDL的部分也有MDL的Handbook可以了解MDL的細節供使用者了解各種的Surface Shading Model的表示與Layering的使用方式。

Nvidia為了自家的GPU,配合VCA的硬體,建立了OptiX的Raytracing的framework,這次的GTC也是大量發表OptiX的應用,Iray也就是Nvidia在GPU上的Physically Based Rendering方面應用的主軸,配合新的Physically Based Material 的描述語言MDL,整合在Iray Photoreal與Interactive的模式下。
ARC_agenda
新的OptiX 3.7,有快速的用簡單的程式碼做三角形與ray的遍歷與相交測試,也增加了instance的功能,可以節省幾何元件在記憶體的資料量,提升重複的使用率。還有比之前SBVH快100倍的TRBVH Builder,為的是可以快速建立Raytracing需要的BVH資料,新的3.8版本還有提供Progressive API。
ARC_optix_3.7
ARC_optix_prime_instancing
OptiX的應用也在Pixar的Realtime Lighting系統中,透過Physically Based的GPU GI,有效的將原本巨量的燈光資料減少。
ARC_lightExample
ARC_pixar_lighting_tool
在Iray裡,Render模式可以是Photoreal, Interactive, Realtime,這些模式可以依照品質需求作切換,互相Blending,最重要的部分莫過於MDL(Material Definition Language)的整合,可以利用一種材質描述語言應用在這三種模式裡,之後在Mentalray 3.12後也支援MDL。
ARC_iray_render_mode

ARC_iray_render_mode_mdl

ARC_mdl

ARC_mdl_for_mentalray
Iray也同時會整合到不同的應用程式中,包含Max, Maya, Cinema 4D,Rhino等
ARC_iray_dcc

OTOY Octane Render

這次Octane Render發表了GPU Render應用在VR的應用技術,新版的Octane Render3也支援了OSL(Open Shading Language),Volume Primitive,還有OTOY也打造了自家的Octane Render Cloud
OctaneRender_OSL
OctaneRender_volume_primitives
OctaneRender_cloud_rendering

FurryBall RT

這次FurryBall RT把核心全部改成了使用OptiX所打造的Raytracing的核心,透過OptiX利用GPU資源做運算,達到比原始的純Rasterize方式快了10-30倍。
Furryball_RT_Pure_Raytracing
Furryball_RT_vs_Mentalray

Redshift

在一片GPU-based Renderer推出時,大家為了raytracing的效率,紛紛使用Unbiased path tracing的方法來當作GPU Renderer RayTracing的方法,但是Redshift所製作的GPU Renderer反之使用biased的GI Render方法,類似於Mentalray或VRay的架構使用來達到控制Noise的方式,提高Render品質。遇到的問題也是在Geometry與Texture的,透過自行開發的Texture Cache讓GPU可以有效存取Texture的資料,唯一的瓶頸也就是GPU的記憶體,但是Redshift的使用自家的Caching System來交還out-core的幾何與貼圖資料,突破了這個限制,並支援UDIM與UVTILE的貼圖格式,Shading與Material的支援多達200個Node,可以建立更多的組合與可能性。

RedShift_WhatIs

RedShift_The_Future
結論
由這些發表的內容看起來,GPU在Rendering還在繼續發展中,現在還是在GPU記憶體的限制中,各家也紛紛使用out-core的方式來跟GPU做最有效率的資料交換,在現今追求Physically Based GI的需求下,純GPU Raytracing應該是未來一致的目標,在如何達到Production Quality與效率上,應該還有相當多可以進步的地方,加上GPU硬體成本的下降與普及,以後電腦GPU核心最低為數千核心下,GPU Raytracing可以應用的部分就更多了,包含VR,AR可能都會有GPU Raytracing的存在。

indigo

電腦動畫工作者,在業界打混十餘年,喜好SGI骨董電腦,分享新技術,動畫流程開發。

Comments are closed.