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