「平淡無奇小天才」:兩塊C++代碼結(jié)合ASCII碼,即可實(shí)現(xiàn)Nvidia光線追蹤技術(shù)
近期,有國外大神利用ASCII碼,完成了Nvidia顯卡才能實(shí)現(xiàn)的光線追蹤技術(shù),并實(shí)現(xiàn)了不錯(cuò)的光影效果。
下面是光線追蹤的效果示意:
該項(xiàng)目一經(jīng)過發(fā)出,在Reddit上的熱度就達(dá)到了2.1K,演示視頻在Youtube上的觀看量也達(dá)到了3萬多次。
代碼結(jié)構(gòu)簡單,可在任何系統(tǒng)上運(yùn)行
代碼本身結(jié)構(gòu)非常地簡單:
項(xiàng)目代碼地址:https://github.com/DinoZ1729/Ray
而要想在自己電腦上運(yùn)行,整個(gè)過程也非常的方便:
只需要在控制臺中將字體改為8,就可以實(shí)現(xiàn)在Windows上的運(yùn)行。
如果想在Linux或者其他操作系統(tǒng)上運(yùn)行,那么只需要加上修改幾行代碼的步驟就可以了。
像素級別光線透射,相關(guān)項(xiàng)目惹人矚目
那看到這里,很多人都會好奇,具體實(shí)現(xiàn)過程是什么的呢?
作者原話是這么說的:
「I shot a ray through each pixel and then let it bounce」
意思是什么呢?
讓每個(gè)像素都被光線穿過,并讓光線進(jìn)行了反彈。
為了進(jìn)一步解釋這個(gè)過程,作者還放上了兩個(gè)相關(guān)視頻和項(xiàng)目鏈接:
其中一個(gè)是用C++實(shí)現(xiàn)的「ASCII地球旋轉(zhuǎn)」:
代碼地址:https://github.com/DinoZ1729/Earth
另一個(gè)是「ASCII渲染四面體著色」:
著色前:
著色后:
項(xiàng)目地址:https://github.com/DinoZ1729/Renderer
網(wǎng)友反應(yīng)熱烈,連調(diào)侃都「精辟到位」
在項(xiàng)目和演示視頻下的評論區(qū),有許多網(wǎng)友都表示了興趣和稱贊:
也有不少網(wǎng)友表示「希望自己的編程課可以教這些」,還有些網(wǎng)友說:「這個(gè)項(xiàng)目激勵了我繼續(xù)學(xué)習(xí)C++」。
除此之外,有趣的是,不少網(wǎng)友開始了調(diào)侃:
「Nvidia:我們有實(shí)時(shí)光線追蹤!
ASCII:你太可憐了」
「玩家:我買了一個(gè)RTX 3080用于射線追蹤!
控制臺 :嗯,我可以用ASCII碼做這個(gè)」