原创 【RayTracing】景深

光線追蹤形成景深的原理其實就是:利用薄凸透鏡,將場景中的物體投影到視平面上,當物體的深度不在焦平面上時,就會形成一個彌散圓(也就是一點唄模糊成一個圓)如下圖: 上圖的q就處於一種失焦的狀態。 光線追蹤形成景深的步驟: 針對每個像素內的

原创 騰訊遊戲客戶端開發&網易互娛暑期實習面經

騰訊提前批(二面掛) 在打算筆試的下午,收到了一面電話通知,週一去騰訊上海大廈現場面試,於是提前批的筆試就沒有參加(這可能有點影響) 騰訊一面 和麪試官約了時間,結果到了騰訊大廈樓下沒法進去,所以只能等面試官下來接人。。 和我一起的還有一

原创 【圖形學】體素全局光照GI

前段時間出了虛幻引擎5,介紹說是可以實現實時光線追蹤,感覺不可思議,後來看文章發現大部分的光線追蹤都是基於體素的光線追蹤(消耗比較小),一小部分的光線追蹤是基於屏幕的射線。於是找了文章開始瞭解體素光線追蹤。 這個技術是英偉達提出來的,不算

原创 【Q&A】渲染流程中的疑問

Q1:背面剔除是發生在光柵化階段的,光柵化階段之前還有頂點着色器,幾何着色器等階段,這些階段是不是就被無用執行了?能不能把背面剔除放到頂點着色器裏?

原创 延遲渲染的核心思路

之前渲染,對於每一個light都要調用一次triangle draw call,每一次draw call都要走一遍頂點到像素着色器流程,燈光和片元之間是乘法關係,而延遲渲染就是把light循環放到了像素着色器之後,每個像素做一次光照迭代,

原创 【Leetcode Summary】旋轉圖像

You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). Note: You have to r

原创 【Leetcode Summary】全排列12總結

給出數組,要求,這個數組的全排列 全排列1: 數組中沒有重複的數字。 solution:這種問題直接用DFS求出數組排列的每種情況即可。用DFS可以用幾種方法,一種是普通迭代法,用一個數組存儲當前還沒放進去的數字,然後去迭代,注意:這個數

原创 【Leetcode Summary】combination Sum

描述:給出一組數字,大於零且不重複。求這組數字中求和爲target的數字集合,集合中的數字可以重複出現 Example 1: Input: candidates = [2,3,6,7], target = 7, A solution s

原创 【Leetcode Summary】Sudoku Solver數獨

問題描述:每行每列 每一個小方塊的數字都必須是1-9 不能重複 沒填上的數字開始用“.”表示 solution:這是一個回溯問題。對九宮格上的每個位置進行循環。測試當前位置上空缺時,填上1-9數字是否能夠成功,如果成功,那麼遞歸調用下一

原创 【實時碰撞檢測算法Summary】k-DOP碰撞檢測

K-DOP名詞解釋 平行平面包圍體,不過平行平面是軸對齊的。利用一個法線和兩個浮點數值來確定平行平面的位置。而這個法線分量一般限制在(+-1,+-1,+-1)中。 k越多,包圍盒的擬合效果就越好,而且由於物體之間的法線可以共享(都是限制的

原创 騰訊遊戲客戶端開發&網易互娛實習面經

騰訊提前批(二面掛) 在打算筆試的下午,收到了一面電話通知,週一去騰訊上海大廈現場面試,於是提前批的筆試就沒有參加(這可能有點影響) 騰訊一面 和面試官約了時間,結果到了騰訊大廈樓下沒法進去,所以只能等面試官下來接人。。 和我一起的還有一

原创 【RayTracing】BDRFs

我們平時說的光強,其實是電磁場中的輻射。 輻射的相關概念 輻射能Q是電磁波能量的基本單位。 輻射通量是輻射能每秒通過物體表面的數量。對Q增加了時間限制 輻射通量密度定義爲單位表面積內的輻射通量。對Q在時間和空間上添加了約束 入射輻射度E是

原创 【RayTracing】採樣技術

簡單來說:光線追蹤就是從視點和像素兩點成一條射線,投射光線到場景中,返回光線碰撞到的物體的顏色。 但是,對每個像素只投射一條光線,會造成鋸齒現象。 下面介紹幾種在像素格內的採樣技術,從而投射多條射線進行顏色中和,從而形成抗鋸齒的效果。 隨

原创 【RayTracing】圓採樣映射和投影視圖

圓採樣映射就是把在單位正方形內的採樣點映射到圓內。 同心映射 映射公式如下所示: 拓展的還有半球體映射,比較複雜,這裏不再敘述 投影視圖 e爲視點,d爲視點到投影面的距離。窗口尺寸不變,當d增加時,類似於在相機上使用長焦鏡頭,並對當

原创 【實時碰撞檢測算法Summary】凸包檢測和AABB解釋

凸包可視爲碰撞集合體的早小包圍體。這裏介紹兩種算法 1.Andrew算法 對於一個點集,首先選擇點集中最靠左的兩個點,產生當前凸包的第一條邊。然後開始向右擴展,(分上下兩條路向右擴展,這裏先只介紹上半部分) 如果考察的下一個頂點位於邊集當