不久前因爲在豆瓣的0bug圍觀,知道了Milo Yip這個牛人,他最近寫了篇:用JavaScript玩轉計算機圖形學
,圖文並茂地介紹了離線渲染中最重要也是最基礎的光線追蹤算法。
編寫光線追蹤渲染器是圖形程序員的一個儀式,所以區區編寫了一個emacs版本
,順便把一直想寫的ppm-gen功能完成。
這個渲染器速度是很慢的,所以要有心理準備。在區區的機器上,25x25渲染都要20秒。這可能是因爲過量使用eieio的原因。不過,這在emacs lisp中也是沒辦法的事情。vector/sphere/ray的實現,從assoc list變爲vector變爲defstruct最後變爲defclass,都是爲了編寫代碼更清晰的,eieio的with-slots/oref/oset非常好用!
下面是幾張效果圖:
深度渲染
反射渲染
P.S: 用emacs lisp渲染是很慢的,如果你想了解自己機器的單線程速度,可以多一個度量了^_