七天近千星!哈佛小哥這個Github倉庫從零開始教你計算機圖形學
計算機圖形學被稱為計算機「三大浪漫」之一,這個github倉庫將幫助迷茫的你快速入門。
倉庫中包括多個模型,如片段著色器(使用GLSL語言編寫)、過程紋理生成、柵格化、光照計算和實時光線跟蹤。
所有的項目都將使用WebGL的標準技術,在瀏覽器中的使用圖形編碼進行開發。這種方式利用了現代的Web開發工具來快速迭代,并能夠很容易與其他人分享自己的工作成果。并且無需實際編寫javascript代碼。
基礎的運行環境要求是node.js v14和npm。
對于初學者,作者建議從「被子圖案」作為入門項目。
被子圖案怎么做?
片段著色器運行在屏幕上的每個像素點,每個像素點由著色器確定它的顏色。vec4是一個帶有紅色、綠色、藍色和透明通道的4維向量。
核心代碼在shaders/quilt.frag.glsl,它能夠運行在GPU上。
通過把代碼中的注釋部分打開就可以獲得更豐富的樣式。
還能著色什么圖案?
滿滿的「我的世界」風的島嶼圖。
使用實時計算機圖形學中非常流行的光柵化方法渲染3D三角形網格,與大多數游戲使用的算法相同。追求更逼真的、模擬現實世界中的物體。
探索風格化渲染,也稱為非照片級渲染。這是一個放棄忠實于現實生活的圖形領域,但是在模仿表達風格時可以實現更具創意的表達。主要原理是根據亮度強度的閾值離散化它并以不同的樣式進行陰影處理,能夠模仿漫畫書中的藝術風格。
「光線追蹤」的算法能夠反射,是照片級真實感渲染中的黃金標準。計算機上的光線跟蹤算法遵循穿過場景的無窮小光線的路徑,直到它們與曲面相交為止。這種方法提供了一種從任何特定位置和方向查找第一個可見對象的簡單方法,并且是許多渲染算法的基礎。
作者其人
Eric Zhang,是哈佛大學的碩士研究生,學習數學和計算機科學,他的主要研究興趣是圖形學、機器學習、編程語言和系統。在高中時期代表美國拿到兩塊IOI金牌,還給美國的高中生寫了一本物理書。
作者的github也是十分勤奮!曾在英偉達實習、協助實現sota的語義分割系統。
作者對音樂也頗有研究。
參考資料:
https://github.com/ekzhang/graphics-workshop