面試考察點:
- 基礎是否扎實。
- 代碼能力。
- 數學能力。
具體問題考察側重點:
- 業務水平:能不能講清楚自己做過的項目(包括項目起源、項目主要任務、項目的目標、項目的結果、對項目的反思)並說清楚自己在項目中扮演的角色、你的工作思路。
- 發展潛力:最常見的問題[以你現在的水平(技術經驗)來看,過去你參與的xxx項目有什么缺點,如果是現在的你,會如何處理這些缺點?]考察復盤能力,看是否有總結。
- 解決問題的能力:面試官結合你的經歷提出更加深入的問題。主要考察擬解決問題的思路。
具體問題:
-
對原來實習經歷中的工作簡單描述
-
sdk的實現原理
-
實時渲染與離線渲染的區別
-
具體描述基於GBuffer的延時渲染
- GBuffer的定義:G緩沖是對所有用來存儲光照相關的數據,並在最后的光照處理階段中使用的所有紋理的總稱。
- position : 位置向量用於計算(插值)片段位置的lightDir和viewDir
- albedo : 反射率
- normal : 法向量用於表面粗糙
- specular : 鏡面強度
- roughness : 粗糙度
- AO : 環境光遮蔽
- 所有光源的位置與顏色值
- 玩家或者觀察者的位置向量
- 使用cook-torrance反射模型
- $R_s$ = \(\frac{F*D*F}{(N\bullet V)(N\bullet L)}\) 其中F是Fresnel反射系數,表示反射方向上的光強占原始光強比率;D表示微平面分布函數,返回的是“給定方向上的微平面的分數值”;G是幾何衰減系數,衡量微平面自身遮蔽光強的影響。N、V、L分別代表法向量、視線方向和入射光方向。
- schlick給出了Fresnel反射函系數的一個近似,精度在1%范圍內:\(F = f_0 + (1-f_0)(1-V\bullet N)^5\) 其中\(f_0\)為入射角度接近0時的反射系數,V是指向視點的向量,H為半角向量。
- 微平面分布函數\(D = \frac{1}{m^2cos^4\alpha }e^{-\frac{tan^2\alpha}{m^2}}\) m值用於度量表面的粗糙度,較大的m值對應粗糙的平面,較小的m值對應與較光滑的平面;\(\alpha\)是頂點法向量N和半角向量H的夾角。
- 微平面上反射的光有三種可能:入射光未被遮擋,此時到達觀察者的光強為1;入射光部分被遮擋;反射光被遮擋;\(G = min(G_1, G_2, 1)\),其中\(G_1 = \frac{2(N\bullet H)(N\bullet L)}{V\bullet H}\), \(G_2 = \frac{2(N\bullet H)(N\bullet V)}{V\bullet H}\)
- 光照處理階段
- 對於這個光照處理階段,我們將會渲染一個2D全屏的方形(有一點像后期處理效果)並且在每個像素上運行一個昂貴的光照片段着色器。
- GBuffer的定義:G緩沖是對所有用來存儲光照相關的數據,並在最后的光照處理階段中使用的所有紋理的總稱。
-
指針與引用的區別
- 區別1
- 引用總是指向某個對象:定義引用時沒有初始化時錯誤的。
- 區別2
- 賦值行為的差別:給引用賦值修改的是該引用所關聯的對象的值,而不是使引用與另一個對象關聯。
- 引用一經初始化,就始終指向同一個特定對象。
- 區別1
-
點乘與叉乘
- 點乘
- 向量的點乘,也叫向量的內積、數量積,對兩個向量執行點乘運算,就是對這兩個向量對應位一一相乘之后求和的操作,點乘的結果是一個標量。
- 對於向量a($a_1$, $a_2$,……$a_n$)與向量b($b_1$, $b_2$,……$b_n$) 向量a與向量b的點積公式為:a·b = $a_1$$b_1$ + $a_2$$b_2$ + …… + $a_n$$b_n$
- 點乘的幾何意義,點乘的幾何意義是可以用來表征或計算兩個向量之間的夾角,以及在b向量在a向量方向上的投影,有公式:a·b = |a||b|cosα
- 叉乘
- 兩個向量的叉乘,又叫向量積、外積、叉積,叉乘的運算結果是一個向量而不是一個標量。並且兩個向量的叉積與這兩個向量組成的坐標平面垂直。
- 對於向量a($a_1$, $a_2$,……$a_n$)與向量b($b_1$, $b_2$,……$b_n$) 向量a與向量b的叉乘公式為:

- 叉乘的幾何意義,在三維幾何中,向量a和向量b的叉乘結果是一個向量,更為熟知的叫法是法向量,該向量垂直於a和b向量構成的平面。在二維空間中,叉乘還有另外一個幾何意義就是:aXb等於由向量a和向量b構成的平行四邊形的面積。
- 點乘
-
多重重要性采樣與蒙特卡洛積分
- 蒙特卡洛估計
- 對於函數f(x)求其積分
- 重要性采樣:重要性采樣是一種減小方差的技術,它利用了這個事實:當分布函數p(x)跟函數f(x)很相似時,下列的蒙特卡羅估計值就收斂更快:FN = 1/N Σi=1,N f(Xi)/p(Xi)
- 它的基本思想是,將采樣工作集中到被積函數值相對比較高的地方,那么就可以更有效率地計算出精確的估算值。
- 多重重要性采樣(Multiple importance sampling, MIS)用了一種簡單而又容易實現的方法解決了這些問題。其基本思想是,當我們估算一個積分時,我們應該從多個采樣分布中采樣,並且期望至少其中一個分布可以比較好地匹配被積函數,即使我們並不知道到底哪一個更好。MIS提供了一種可以對不同分布中的采樣進行加權的方法,這樣可以擺脫由於被積函數值跟采樣密度不匹配而產生的很大的方差尖峰。這個方法甚至鼓勵使用那些為特殊情況而設置的特殊采樣例程,因為在這些特殊情況發生時,一般而言確實可以減小方差而又沒有什么開銷。
- 蒙特卡洛估計
