主題

快樂學 Raymarching 從不會 到 還是不會

木白 | 2022-06-15 15:19:49 | 巴幣 1436 | 人氣 190

試著做了 Raymarching 的著色器
之前就蠻想試試看了
只是一直沒有理解教學裡面的算法是什麼原理
今天終於做出一點東西了


Raymarching 是一種渲染方式
跟一般 3D 把物體拆成很多三角形依序畫到畫面上的方式很不一樣

Raymarching 的做法是從螢幕上的每一個像素發射出射線
射線會往他看的方向移動
每次移動的時候檢查跟場景裡所有物體表面的最小距離
然後以這個最小距離的長度再往前移動
如果這個最小距離非常接近零 就代表射線碰到物體表面

每一個物體都是用距離場(SDF)的函數來表現
當你輸入一個 3D 座標後 就會返回座標跟該物體表面的最小距離
例如說球體的話是
return length(pos) - radius

雖然用這種方式比較不容易做出複雜的模型
但好處是比較容易做反射、體積相減和 Metaball 之類的效果
渲染出來的畫面也可以同時跟其他渲染方式結合

講這麼多廢話其實我只是想星爆而已


其實我還沒有很懂其他的 SDF 函數
但我發現只要讓球體的半徑隨著 Y 軸數值去做變化
就可以做出有寬度變化的柱體
所以就有了艾恩葛朗特

創作回應

%%鼠 拒收病婿
我好困惑到底該推還是噓
2022-06-15 15:28:34
木白
https://cdn.discordapp.com/emojis/952768632558075924.png
2022-06-15 15:33:21
FunS
https://media.tenor.com/images/9486185448f09c755a89f9f99b5310b0/tenor.gif
2022-06-15 15:30:03
木白
https://cdn.discordapp.com/emojis/952769739359404082.png
2022-06-15 15:33:56
MYH
https://media.tenor.com/images/00d2ee05ecfb1e27e280c6d755558fe7/tenor.gif
2022-06-15 18:08:55
木白
https://i.imgur.com/bDvmvnY.png
2022-06-15 18:09:42
MYH
太星爆了
2022-06-15 18:09:24
尼歐里里

善有善報,星有星爆;
不是不爆,高塔未造!




其實這是……
突破天際的鑽頭!(錯棚)
2022-06-18 18:19:15
木白
https://i.imgur.com/6ZMFmxS.png
2022-06-18 19:40:07

更多創作