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