七天近千星!哈佛小哥這個(gè)github倉(cāng)庫(kù)從零開(kāi)始教你計(jì)算機(jī)圖形學(xué)
轉(zhuǎn)自:新智元
計(jì)算機(jī)圖形學(xué)被稱為計(jì)算機(jī)「三大浪漫」之一,這個(gè)github倉(cāng)庫(kù)將幫助迷茫的你快速入門(mén)。
倉(cāng)庫(kù)中包括多個(gè)模型,如片段著色器(使用GLSL語(yǔ)言編寫(xiě))、過(guò)程紋理生成、柵格化、光照計(jì)算和實(shí)時(shí)光線跟蹤。
所有的項(xiàng)目都將使用WebGL的標(biāo)準(zhǔn)技術(shù),在瀏覽器中的使用圖形編碼進(jìn)行開(kāi)發(fā)。這種方式利用了現(xiàn)代的Web開(kāi)發(fā)工具來(lái)快速迭代,并能夠很容易與其他人分享自己的工作成果。并且無(wú)需實(shí)際編寫(xiě)javascript代碼。
基礎(chǔ)的運(yùn)行環(huán)境要求是node.js v14和npm。
對(duì)于初學(xué)者,作者建議從「被子圖案」作為入門(mén)項(xiàng)目。
被子圖案怎么做?
片段著色器運(yùn)行在屏幕上的每個(gè)像素點(diǎn),每個(gè)像素點(diǎn)由著色器確定它的顏色。vec4是一個(gè)帶有紅色、綠色、藍(lán)色和透明通道的4維向量。
核心代碼在shaders/quilt.frag.glsl,它能夠運(yùn)行在GPU上。

通過(guò)把代碼中的注釋部分打開(kāi)就可以獲得更豐富的樣式。

還能著色什么圖案?
滿滿的「我的世界」風(fēng)的島嶼圖。

使用實(shí)時(shí)計(jì)算機(jī)圖形學(xué)中非常流行的光柵化方法渲染3D三角形網(wǎng)格,與大多數(shù)游戲使用的算法相同。追求更逼真的、模擬現(xiàn)實(shí)世界中的物體。

探索風(fēng)格化渲染,也稱為非照片級(jí)渲染。這是一個(gè)放棄忠實(shí)于現(xiàn)實(shí)生活的圖形領(lǐng)域,但是在模仿表達(dá)風(fēng)格時(shí)可以實(shí)現(xiàn)更具創(chuàng)意的表達(dá)。主要原理是根據(jù)亮度強(qiáng)度的閾值離散化它并以不同的樣式進(jìn)行陰影處理,能夠模仿漫畫(huà)書(shū)中的藝術(shù)風(fēng)格。

「光線追蹤」的算法能夠反射,是照片級(jí)真實(shí)感渲染中的黃金標(biāo)準(zhǔn)。計(jì)算機(jī)上的光線跟蹤算法遵循穿過(guò)場(chǎng)景的無(wú)窮小光線的路徑,直到它們與曲面相交為止。這種方法提供了一種從任何特定位置和方向查找第一個(gè)可見(jiàn)對(duì)象的簡(jiǎn)單方法,并且是許多渲染算法的基礎(chǔ)。

作者其人
Eric Zhang,是哈佛大學(xué)的碩士研究生,學(xué)習(xí)數(shù)學(xué)和計(jì)算機(jī)科學(xué),他的主要研究興趣是圖形學(xué)、機(jī)器學(xué)習(xí)、編程語(yǔ)言和系統(tǒng)。在高中時(shí)期代表美國(guó)拿到兩塊IOI金牌,還給美國(guó)的高中生寫(xiě)了一本物理書(shū)。

作者的github也是十分勤奮!曾在英偉達(dá)實(shí)習(xí)、協(xié)助實(shí)現(xiàn)sota的語(yǔ)義分割系統(tǒng)。

作者對(duì)音樂(lè)也頗有研究。

參考資料:
https://github.com/ekzhang/graphics-workshop
原文鏈接:
https://mp.weixin.qq.com/s/MhGrLydVsbvkhZ5U820zTQ
往期精彩:
【原創(chuàng)首發(fā)】機(jī)器學(xué)習(xí)公式推導(dǎo)與代碼實(shí)現(xiàn)30講.pdf
【原創(chuàng)首發(fā)】深度學(xué)習(xí)語(yǔ)義分割理論與實(shí)戰(zhàn)指南.pdf
算法工程師的日常,一定不能脫離產(chǎn)業(yè)實(shí)踐
技術(shù)人要學(xué)會(huì)自我營(yíng)銷
點(diǎn)個(gè)在看
