Chaos on Graphics
?
Chaos Chiao
?
?
?
靈感來自于《Joel on software》, 老實說,我在很久以前就已經希望為圖形學寫點什么了,要不就是沒下手,要不就是寫了一半覺得不妥當。到底我算什么人,要為圖形學寫點什么,這似乎很荒謬,很狂妄。雖然我在生活中也算是一個很狂妄的人,不過對于我自己所鐘愛與了解的圖形領域,在某程度上我狂妄不起來。?
很簡單,圖形學并不是熱門的研究領域,至少在Blog或者文檔上面能看得出來。大家都去搞高深的ERP了,要不就是 C++的詭秘Template(當然我在寫程序的時候不會抗拒,甚至會比較喜歡用)。直到后來我看到了《動手寫自己的操作系統》,這的確是一本很優秀的書,曾幾何時我也想過要寫操作系統,可是人本來就不夠時間用,開始了寫運行時系統與渲染器以后,我就一直沒時間再寫其它東西了,包括我高中的時候非常鐘情的GUI。這本書激勵了我,作者雖然不是一個專家級的人物(這里的專家是有某種含義的),不過他很負責任。我說所謂負責任是,一個領域里做研究的人,應該肩負起促進這個領域發展的責任,而促進其發展,不僅僅是促進它高的那一方面更高,而更重要的是促進它低的地方能夠得到更大的提升。?
斷層,這是最可怕的,也是中國技術界最大的問題,鄙人認為。高的人高高在上,低的人拿著一兩本垃圾書當作寶貝,而中間缺乏了必要的連接。光靠高校教育和硬性工作積累,只會把這個斷層越拉越大。技術的馬太效應比經濟顯得更恐怖,因為整個社會的資產總量是比較穩定的,死了一個暴發戶社會沒有少多少錢。但死了一個掌握了高技術的人(抱歉允許我說得不好聽一些,逃了),這對整個業界的損失是無法估量的,尤其在于當他掌握的技術只有他掌握的時候。?
所以,出于一種社會責任感,高技術人員不光需要不斷提升頂尖的技術,還有義務防止技術馬太效應,導致低者越低高者越高。我提倡應該多出版“中層”圖書。市面上的書以“入門到精通”為主流,實質上讀完了半只腳踏進了門,但精通就遠遠算不上。還有一大部分含金量特高,理論扎實、內容豐富,可惜起點太高,大多是濫翻譯國外教程,脫離了我國本身的教育模式和現狀。有那么一部分人,他們門是入了,學得也不錯,亟待提高,然而卻找不到恰當的材料。不幸的是,這部分人實際上占了主流,盡管不滿這種半桶水的水平,然而卻無法通過簡單的途徑得到充實。?
當然我就是這樣的一個實例。?
我不滿,我喜歡圖形學,但市面上就充斥著圖形學的垃圾書。恕我直言,這些封面印著圖形學三個大字的垃圾簡直丟盡了中國圖形學研究者的光。內容陳舊、老套、重復、互相抄襲嚴重,有的書竟然連一句代碼都沒有。目前最前沿的Photo Realistic Rendering已經研究到了Multi-layered Sub-Surface Scattering了,那些迂腐的作者還在用幾十年前的輸入輸出設備細節耗費半本書的篇幅。?
和一般的專業人員不同,我是一個徹頭徹尾的業余愛好者。自96年來我一直在圖形相關的領域自己作研究,直到2000年的7月,那是高二的暑假,我花了一個月的時間從頭到尾寫了一個輻射度渲染器,并根據我的一些想法設計了一套求解四種不同情況下輻射度的算法,寫到了一篇論文里去。這是我人生的第一個程序和第一篇論文。很可惜我的高考還是落榜了,當然,沒有真正的落榜那么嚴重,只是我讀了一個毫不相關的專業——新聞學。不過我沒有放棄,我一直視圖形為自己的生命,所以我繼續地在圖形上作研究,開始了更系統的學習,日復一日地寫代碼,測試,思考。最后我在畢業前終于完成了自己布置的畢業設計——一個實時的光線跟蹤渲染器,以及它的Shading Language編譯器和虛擬機。?
為此我非常自豪,因為沒有任何導師、沒有任何人對我進行過系統的培訓或者指導,我只是不斷地四處尋找各種可以找到的資料、看Open Source的代碼,最重要的,是自己動手寫出想要的東西。比如說編譯器,這對于我來說是非常非常困難的,新聞學的老師們從來沒有在課堂上面提起過什么是編譯器、怎么構造一個編譯器。我看了三本書,鉆研了半年多GCC的代碼,在google上淘了一次又一次的資料,終于成功地實現了從簡單的asm編譯器、到支持面向對象的運行時系統編譯器。然而最值得我驕傲的是我的光線跟蹤系統,從一開始的慢如蝸牛、到現在近乎實時渲染,其中的每一行代碼都滲透著我的血與汗。?
再回首,感覺滋味百般,若是能夠有人在這個過程中稍微給與我支持與指點,或許我可以少走很多彎路,可以節省很多時間、寫更多有用的代碼。所以,我覺得我有責任,有義務,為后來人鋪路。留下我所學過的、我所鉆研過的。盡管我很嫉妒有機會讀圖形專業的學生、很惱怒論壇里時不時有人出來說他將要讀這個專業了卻不知道要研究什么,但我知道分享經驗是值得的。我希望能夠在某種程度上推動中國的圖形技術發展,因為我愛這個領域,僅此而已。?
趁著畢業后在家待業的時間,我會盡量多寫一些,多分享成果,涵蓋數學庫、軟渲染、實時渲染、幾何體構造、光線跟蹤、系統基礎與結構體系等等,也歡迎大家一起交流,不僅僅是圖形學,還有圖形學所涉及的如編譯、系統、語言、計算機結構體系等等。更歡迎高手斧正、畢竟我不是科班出身的,某些概念、理論可能理解得并不很到位,希望交流的時候自己也得到提升。?
?
?