其實我已經寫瘋了,所以現在我似乎都不知道應該寫什么來介紹它好。
然而,我剛剛畢業了,離開了舒服的學校,接下來必須面對吃飯問題。
所以、開門見山,我現在發布的 BloomingQuad 其實并不完善(應該說相當不完善),我 90% 是為了找工作才發布的,又或者說,希望能找到懂得它的作用和意義的合作伙伴。
很多人說我不切實際、又說我開發些沒有 P 用的東西,也有很多人不屑,我不在乎,因為只要這個世界上依然有一個人懂得下面這些東西是什么,那就已經足夠了。當然,還希望那個人能支持我繼續做下去。

但也必須先講明白,開發和維護這么一個東西,是極其不容易的,在目前來說投入與產出可能不成正比,它的價值,必須在一段時間的積累后才能看到。 Pixar 開發的 PRMan 也不是一年半載就能為它渲染電影的,80 年的項目,到了 95 年才渲染出第一部動畫電影。
盡管這是一場持久戰,但若我們真想達到 Pixar 的高度,一味地研究別人開發出來的軟件和技術是徒勞的,鼻子將永遠被別人牽著走。
那么除了開發一個 PRMan 的替代品外,我也自認通過這個渲染器的開發,我已經對整個 RenderMan 體系有非常深入的了解,甚至對各種渲染器的工作體系和結構有了很深刻的認識。不僅僅是 RenderMan ,MentalRay 的 MI 架構也是我的重點研究部分,BloomingQuad 的前幾版所使用的 Scene Description 就是類 MI 的節點式結構。
不過后來我覺得 RenderMan 比 MentalRay 要流行得多,而直接使用 RIB 會更劃算,于是我開始把整個結構體系進行重寫,以 RI Spec 3.3 為標準,力求可以完全符合 RI Spec 3.3 ,希望能渲染出和 PRMan (在輪廓和基本要素上)一致的圖像。
當然這是非常艱難而痛苦的,特別是一個人、只能利用課余時間編寫。
而最后,為了找到商業使用的機會,我修改了一下內核,使它能實現簡單的 Realtime Raytrace,以直觀的方法表現它到底有多快。


支持 RSL 的編譯與執行、上面的三個物體都分別使用了編寫的 Shader ,盒子用了 Slim 生成的 Worley ,平面用了 step( x , mod() ) 形式的 Grid ,球體利用 s 坐標混合了 Thead 和 Spline ( Noise( P ) )。
另外我也終于完成了持久的“抗戰”,寫出了一個 RenderMan Shading Language 編譯器與執行虛擬機。這個編譯器符合 RI Spec 3.3 標準,能成功編譯出 Slim 生成的各種 Shader ,而且支持 Constant Folding、Instruction Replacement、Dead Code Elimination 等優化。但目前它的光照部分(包括 Illumination 和 Illuminate 、Solar、Ambience)都在測試中,Gather 正在編寫,而 Occlusion 和 Indirect Diffuse 只能靠命令行激活。
相信有更多人(可能一共才只有幾個吧)會關心它到底怎么在 Max、Maya 、XSI 中使用,其實很簡單,RIB 非常流行,幾乎所有的大型軟件上都有導出 RIB 文件的軟件,MAX 有 maxman,Maya 有 RAT、mayaman、liquid,XSI 有 rib 插件,LW 有 Lightman,Houdini 本身直接支持,所以根本不需要擔心、所有的大型軟件都能和 BloomingQuad 進行溝通。
而且我能保證 MTOR 從 Maya 里導出的東西能大部分正確渲染。
大部分是指哪些部分呢?其實目前僅僅是指多邊形而已,而且最好是三角片面的多邊形,又或者保證“合法”的多邊形,若有重邊或者法線有問題,都不能渲染。
上面測試用的兩個人頭模型,都是我自己在 Maya 里做的,然后用 MTOR 導出來渲染的,可以看看它到底渲染出來的結果準確不準確。
如果你想直接在 Maya 里渲染 —— No problem ,在 RAT 里設置一下就 OK 了。
也可以在 Maya 里啟動實時 raytrace ~
為了要說明它是 Realtime 的,我還設計了幾個按鍵,i k l j , . 這六個,可以移動鏡頭,很簡陋的功能而已,當然可以做得更復雜一些,但我目前只是演示一下我能做到什么地步,而怎么再精益求精則是在我解決了工作問題之后再想的事情了。
那么基本上都講得 7788 了,開發過程還有很多有趣的東西,不過這只是很少數比較關心開發的人想要知道的。
下載:
p.s.