Mental Ray這個在業界近30年的老牌算圖引擎,在繼退出Autodesk的合作開發後,Nvidia無預警地在11月20日的發布了對於Mental Ray不續開發與銷售的消息(詳見新聞)。但是這個老牌的Renderer從特效界最早與最大量的使用的Raytracing Renderer到現在的無預警結束,到底是如何走到今天這一步,我透過我的記憶,帶大家來了解一下。
最早的商用Raytrace Renderer
在1989年,Pixar的RenderMan是最早的商用Renderer,提供了3D DCC軟體算圖的方案,但是因為是REYES Renderer,無法做Raytracing,特效界也因為這樣,只能使用Texture Based的Reflect Map與Environment Map來處理反射效果,在處理反射或Global Illumination方面無法提供接近真實的效果,必需使用BMRT(Blue Moon Rendering Tools)當作Rayserver,但是這個由德國公司Mental Images的Mental Ray Renderer提供了BSP加速的Raytracing Engine,並提供了可程式化的介面與SDK還有整合API,馬上就繼RenderMan之後,成為特效界商用Renderer之一。在2002年,ILM也選定Mental Ray作為該公司特效製作與開發的Renderer。
先進的技術
Mental Ray在早期就已經支援BSP(Binary Space Partitioning)的Raytracing加速方法,提高Raytracing的效率。在當下的硬體條件下,Raytrace變成可以執行的選項之一。在當時Mental Ray也提供了自家的硬體算圖方法,支援自家的MetaSL語言,而且提供了多種Global illumination的演算法,包含了Photon Map GI,Final Gathering(FG),Irradiance Particles(IP),最後還提供了以Optix為核心開發的純GPU GI(GI Next)引擎。Mental Ray在創新的部分也相當多,像是在2002年左右就支援使用OpenGL加速Shadow Map的產生的Hardware加速機制,在2007年Nvidia買下Mental Images之後,就開始支援許多Nvidia的標準,包含支援CgFX shader,支援Nvidia自家使用LLVM的MetaSL,MDL等等最新的標準。
Mental Ray也因應PBR的Shading,推出Mila的Layer Shading,在此之前也透過Unified Sampling的全新sample設定方法。
Mental Ray在Nvidia這個專門製作GPU硬體的公司裡,也在Mental Ray推出了純GPU加速Global Illumination的GI Next核心
特效電影製作上的成就
在電影製作上,2000年後Mental Ray大量的使用在特效電影中,因為Raytracing的GI呈現出較真實的效果,許多的特效公司也選用Mental Ray作為電影製作的renderer。在當時電腦還在32位元的時期,Mental Ray雖然提供了許多真實的Raytracing的效果,但是對於特效公司還是一個較為昂貴的選擇。也因此許多特效公司通常使用RenderMan與Mental Ray相互製作需要的效果。
2003年,由ESC Entertainment所製作的電影,駭客任務(The Matrix)系列電影中的數位角色,使用了automated face tracking and capture, 並在Mental Ray裡實作了image based lighting(IBL),subsurface scattering(SSS), measured BRDFs, hair rendering 與 multipass rendering技術,這些技術也奠定了VFX製作上許多的標準。
ILM在2001年製作珍珠港(Pearl Harbor)時,使用了Mental Ray實現Ambient Occlusion的技術來達到更真實的環境光遮蔽的效果,包含日後的Reflection Occlusion。雖然在當時做得出這樣的效果,但是因為系統還停留在32位元,記憶體的瓶頸也讓這樣的效果受限,不過該技術也在2010年獲得奧斯卡的TECHNICAL ACHIEVEMENT AWARD
ILM在2002年就與Mental Images共同開發Mental Ray,並以Mental Ray作為pipeline主要的Renderer,也在這個之後製作了許多的特效電影影,包含星戰的第二集(STAR WARS:Episode II Attack of the Clones), 浩克(Hulk-2003),明天過後(The Day After Tomorrow-2004))還有海神號(Poseidon-2006)等電影。
2011年 Transformers: Dark of the Moon
多平台與DCC軟體的支援
早在1993年,Mental Ray就提供了Softimage 3D作為算圖引擎的選項之一,在1994年Microsoft買下Softimage 3D後Extreme的版本的Mental Ray更提供了在Windows NT下分散算圖的環境,也將特效的製作從原本的SGI工作站IRIX平台,移到了Window平台,更支援了當時Alpha的CPU與Intel的CPU,並可以在不同的平台間分散算圖。在Softimage XSI版本更將Mental Ray整合至軟體中,提供豐富的Shader Node,成為其標準的Renderer。
在2002年在Maya 4.5版之後提供了免費的 Mayatomr(Mental Ray for Maya) 的外掛,讓Maya的使用者除了預設的 Software Renderer,可以使用 Mental Ray 豐富的 shader 工具,讓Maya在Render擁有相當大的彈性,可以製作出豐富的 Raytracing 的效果,包含GI的效果,雖然在當時的電腦使用 Raytracing 非常的昂貴,但是也讓電腦繪圖的表現上提昇到不同的境界。
在3DSMax上始終整合度稍嫌不足,雖然有所有的Mental Ray的Shader,但是使用上還是屬於以外掛的方式提供。不過也是以免費提供讓使用者下載。
與Maya間的整合問題
https://www.macworld.com/article/1007381/mental.html
在Maya從4.5版與 Mental Images 共同開發 Mental Ray for maya 的外掛,之後Mental Ray幾乎就成為Maya的標準算圖引擎。但是在Maya的體系,相較於Softimage,始終對 Mental Ray 的支援就是缺那麼一點。Maya 內的 Mental Ray,基本上是為Maya開發的完全獨立的Shading系統,與原來 Mental Ray 內建的mib(Base), mia(Architectural), mip(Production)的 shader 系統是完全不相容的,也因為這樣,Maya製作的檔案很難轉移到其他的DCC程式中。Maya 6.5開始加入 Render Layer 的機制後,Maya在Renderer上的BUG與相容性問題就變得非常多,造成使用者因為對Render Layer的不信任,一直延續到Maya 2008的Render Pass系統讓整個Mental Ray複雜度越來愈高,與自家的MaterialX的配合度也越來越不足,使用者許多的問題歸咎於Mental Ray的不穩定。但是從Mental Ray發行以來到3.4之後的版本,其實都相對的穩定,很少有Memory的問題,大多的BUG都是出在Autodesk所開發的Mental Ray for Maya這個Translator身上,Mental Ray也吃了許多的悶虧。
基於Maya的版本更新策略,是以Maya重大BUG修正,或累積到一定數量的Bug Fix才會推出Patch或Update,而且Patch次數有限,這樣的方式導致Mental Ray無法及時的修正與更新Mental Ray for maya的外掛,常常Mental Ray會落在一個有問題尷尬的版本上。使用者的Feedback也統一由Alias|wavefront或之後的Autodesk做統一處理,導致許多的BUG的修正的效率低落,讓有一部分的使用者慢慢對Mental Ray失去信心。
Mental Ray在Maya 2013.5版本時,向Autodesk拿回Mental Ray for maya的開發權利,完全由Mental Images自行獨立開發,這時Mental Ray的版本已經變為獨立安裝於自家Nvidia的資料夾內,不再與Maya同時發行在同一層的安裝結構下。Mental Ray也有意要重新使用原生地framebuffer來處理MultiPass的機制,結果在2017的版本,Autodesk就宣布與SolidAngle的Arnold整合。
Mental Ray在Maya 2013.5的版本中使用了新的Sample設定(Unified Sampling),取代了現有的Scanline所提供的Adaptive Sampling,目的為的是減少使用者在設定Sample的複雜度,並配合新的Mila的Layered based shader,減少在Shader Layer Composite下重複sample的問題,雖然是很創新的方法,但是新的技術不代表可以提升效率,使用者必須在算圖過程中不斷地檢查在每個Rendering State的Sample數量,造成了使用者在新的版本中,產生無所適從的狀況。
NVidia策略下的犧牲品
Nvidia是一個做GPU運算起家的公司,也買過不少的Renderer,之前由Larry Gritz主導的Gelato便是一個以硬體加速的REYES Renderer,前身就是BMRT,後來成立Exluna公司後變為Entropy,在2004年被Nvidia收購,便與Nvidia開發電影等級的硬體加速Renderer Gelato,但是到了2008年就停止販賣,並免費給學生做教育使用。
Mental Ray在2007年後就被Nvidia收購,對於Nvidia來說,使用硬體加速的Renderer,是可以將Nvidia的產品線做一個在軟體層面的擴展。除了遊戲Realtime上的應用,Nvidia想要在電視電影製作上擴展硬體的應用,看上了對於擁有Raytracing技術,而且在影視製作上有一定的使用族群的Mental Ray。Mental Ray在Nvidia收購後加入了許多Nvidia的Hardware CgFX shader的支援,與MetaSL標準。
在早期的GPU的硬體,GPU都是拿來作為Hardware加速,Renderer加速大多基於Rasterization的技術,因為還無法直接做Hardware Raytracing,Raytrace的效果,還是透過CPU才能實現。在2007年GPGPU圖形處理器通用計算(General Purpose computing on GPU)的崛起,讓GPU除了圖形繪製之外,透過CUDA的SDK,使用者可以在GPU上實現特殊的計算框架,在2009年,出現了基於GPU的OptiX的Raytrace的Framework。
Nvidia的OptiX在GPU架構為Maxwell時開始進入實際的應用,主要的原因是Raytracing必需要使用大量的記憶體,Nvidia為了自家的硬體,也開發了以純GPU為核心的GI Renderer – iRay,但是一開始的大多整合至一些CAD或室內設計軟體,並提供整合的API。Mental Ray也在3.8版本後中整合了部分的iray到核心,作為支援GPU GI的準備。
在幾次的SIGGRAPH與GTC的Conference中Nvidia將Mental Ray定義為Advanced Rendering的產品線的一部分,但是在每次的Conference中,Mental Ray的相關訊息也越來越少,反之是以iray為主軸,並將Nvidia的VCA伺服器整合iray renderer,iray cloud等等。由此可見,Nvidia開始以能完全使用自家GPU來render的iray當主要的GI Renderer,這樣的軟硬搭配,讓Nvidia可以透過賣軟體,藉此綁定硬體的需求。反之,Mental Ray這個還是以CPU為主的算圖引擎,對Nvidia來說,就顯得不是那麼划算了。
在與Autodesk結束合作關係後,Mental Ray的銷售也進入了停滯,更加導致了Nvidia不願意提供資源來銷售Mental Ray,也就在2017年的11月宣布不再銷售Mental Ray。
1989 – Mental Ray發布第一個商業版本
1996 – Softimage 3D發表了整合分散算圖的Mental Ray
2002 – Mental Images與 Industrial Light & Magic 共同開發Mental Ray並作為主要In-house renderer
2002 – Maya 4.5提供免費版本的Mental Ray for Maya
2003 – Mental Ray在The Matrix使用了MultiPass
2003 – TECHNICAL ACHIEVEMENT AWARD 奧斯卡技術成就獎
2007 – Nvidia收購Mental Images
2009 – Thomas Driemeyer,獲得奧斯卡金像獎的工程總監離開Nvidia
2010 – Mental Ray整合iray
2011 – Mental Images創始人Rolf Herken離開Nvidia
2015 – Maya取消預設安裝Mental Ray
2017 – Nvidia宣布停止銷售Mental Ray