題目來源:牛客網討論帖 答案主要來源:《RTR3》
目錄
- C++
- 數據結構與算法
- 計算機網絡
- 計算機系統
- 計算機圖形學
五、計算機圖形學
1.渲染管線
應用程序階段:碰撞檢測 加速算法等
幾何階段:模型視圖變換 頂點着色 投影 裁剪 屏幕映射
光柵化階段:三角形設定 三角形遍歷 像素着色 合併
2.光柵化pipeline
三角形設定階段:主要用來計算三角形表面的差異和三角形表面的其他相關數據
三角形遍歷階段:找到哪些採樣點或像素在三角形中的過程
像素着色階段:計算所有需逐像素計算操作的過程
合併階段:合併當前儲存於緩衝器的由之前像素着色階段產生的片段顏色。此外還負責可見性問題的處理(Z緩衝相關)
3.光照模型
局部光照模型:Lambert漫反射模型、phong鏡面反射模型、Blinn-Phong光照模型
全局光照模型:光線追蹤、輻射度算法、光子映射
4.光線追蹤
光線追蹤方法主要思想是從視點向成像平面上的像素髮射光線,找到與該光線相交的最近物體的交點,如果該點處的表面是散射面,則計算光源直接照射該點產生的顏色;如果該點處表面是鏡面或折射面,則繼續向反射或折射方向跟蹤另一條光線,如此遞歸下去,直到光線逃逸出場景或達到設定的最大遞歸深度。
5.法線貼圖
法線貼圖就是在原物體的凹凸表面的每個點上均作法線,通過RGB顏色通道來標記法線的方向
6.尋路算法
7.SSAO
SSAO全稱“Screen-Space Ambient Occlusion” (屏幕空間環境光遮蔽)。其最先運用於Crysis(孤島危機)遊戲中,通過GPU的shader實現。
8.寫過什麼shader
9.最新gpu架構怎樣實現實時光線追蹤,不知道就猜一猜
10.給定兩點初始狀態和運動方程,求兩點相遇的時間和最早相遇的時間(沒做出來)
11.聊draw call以及相關優化問題
draw call就是對底層圖形程序接口的調用。批處理、減少材質使用、減少使用反光、陰影。
12.聊渲染相關問題,比如遊戲中的陰影是如何實現的