簡單來說:光線追蹤就是從視點和畫素兩點成一條射線,投射光線到場景中,返回光線碰撞到的物體的顏色。
但是,對每個畫素只投射一條光線,會造成鋸齒現象。
下面介紹幾種在畫素格內的取樣技術,從而投射多條射線進行顏色中和,從而形成抗鋸齒的效果。
在2d畫素格內,隨機選取n個取樣點。這些取樣點在1d投影上的分布狀態並不好,隨機取樣的效果還是略差。如下圖所示:
對畫素格進行了分層管理的方法,先等分成n*n個子網格。
然後在每個子網格中進行隨機取樣。取樣分布明顯好於隨機取樣。
n-rooks取樣和抖動的區別是,抖動取樣在n*n網格中時需要
要求是各行各列中只存在乙個取樣點。剛開始是生成一條直線(如下圖),然後在保持n-rooks的狀態下,隨機混合x.y座標
1d投影尚可,但是2d分布並不如抖動取樣。
例如在16*16的網格上,新增4*4的網格,視為子網格。在每個子網格中生成乙個取樣點,然後在子子網格中遵循n-rooks。
多重取樣效果較好。
該類取樣是基於計算機數字表示法,不算是隨機取樣。
對整數i,其基數為2 取根的反函式 如下表:
n個2d取樣點的序列可以定義為n個取樣點pi的集合
其1d投影為等間隔取樣,對於給定的n值,只存在唯一乙個hammersley取樣。
當鄰接畫素採用相同的取樣點集時,會產生嚴重失真。所以該方法不適合單獨使用
光線追蹤(raytracing)
考慮乙個二維平面,攝像機在 0,0 0,0 的位置,初始時平面上沒有障礙物。現在執行qq次操作,操作有兩種 假設這是第ii次操作,1 i q1 i q 1 給定x0,y0,x1,y1 x0 2 給定向量 x,y x,y 會有乙個動點從攝像機所在的 0,0 0,0 位置出發,以 x,y x,y 所指的...
開始研究Ray tracing
幾個月前面試時boss問過我乙個問題 除了scanline渲染方法,你還知道什麼其他渲染方式?我沒答出來,至今記憶猶新。前段時間擺弄intel vtune時看了它的示例 是乙個十分精巧的c語言寫的ray tracer,醒悟過來這應該就是那個問題的答案。光線跟蹤的渲染流程跟掃瞄線光柵化演算法完全不同,...
光線追蹤(raytracing)
考慮乙個二維平面,攝像機在 0,0 0,0 的位置,初始時平面上沒有障礙物。現在執行qq次操作,操作有兩種 假設這是第ii次操作,1 i q1 i q 1 給定x0,y0,x1,y1 x0 2 給定向量 x,y x,y 會有乙個動點從攝像機所在的 0,0 0,0 位置出發,以 x,y x,y 所指的...