原创 前向渲染(Forward Rendering)和延遲渲染(Deferred Rendering)

前向渲染(Forward Rendering) 它的實現最貼合我們的思維邏輯,當我們渲染模型時,只需要關心畫模型然後直接處理光照,讓它自己去做深度測試,最後深度測試過的都顯示在屏幕上。 1、對要渲染的物體進行遍歷渲染出shadowmap

原创 騰訊遊戲客戶端面經

這是我踏入社會工作以來第二次面試,第一次是在校期間內推進的遊戲公司,而且我本身是搞算法的,所以面試純考算法。本身情況也比較特殊,所以可以說是完全沒有面試經驗。也因此準備了很多東西,走了很多彎路。覺得好的小夥伴請記得“點贊,硬幣,收藏,素質

原创 UE3中如何使用Instance技術

前言 Instance技術其實就是將一個模型實例化成多份的技術,只要向GPU提交一份模型頂點數據和一堆Transform矩陣,就能創建多份相同的模型。因爲只需要一個Drawcall,所以如果需要渲染多個相同的模型,用這個方式可以大大提高性

原创 導出UE3材質研究

最近在研究如何將UE3的材質(UMaterial)導出,主要是先前在UE3項目中累計了不少材質資源,希望有辦法遷移到自研引擎當中。因爲自研引擎用的是純HLSL和GLSL語法,所以理論上是可以直接轉化的。因爲UE3的材質編輯器自帶了材質翻譯

原创 行矩陣和列矩陣

因爲之前接觸的是虛幻,用的是DX,所以接觸的是行矩陣。最近一年接觸自研引擎,用的是OpenGL的列矩陣。然而我之前圖形基礎沒打好,以至於很長一段時間沒弄清楚涉及到矩陣相關的一些問題。所以乘着自己意識清醒,還是應該梳理一下。 1、什麼是行矩

原创 可變參數模版

基本上用在格式化的地方比較多,因爲這個東西用得比較少,所以每次要用都花時間重新找資料複習一遍。於是乎花點時間記錄下 void ToString(const char* formatString, ...) { int result;

原创 廣告牌技術(Billboard)

作用 在3D空間裏創建一個面片,使其始終面向攝像機。不同於UI的一點,是因爲它在3D空間裏,會有近大遠小的特點,而UI大小始終不變。由於需要渲染兩個三角面,所以是一種常用的優化手段。普遍用於遊戲中的粒子,當然有些騷操作還會用來替代模型(近

原创 水波紋

早在沒當程序員之前其實就接觸過格式工廠了,當時經常把玩它的圖片區域,因爲水波紋效果實在太酷炫了。然後也一直想做出這種效果,但是一點思路都沒有。趁着過節有時間,就想了卻這個心願,就去網上找教程。發現了https://download.cs

原创 UI優化相關實現

初始情況 我們採取的是樹形結構的UI,你可以理解成跟HTML類似的層級結構。做法也很傳統,每一幀都從根節點出發遍歷所有節點,對有渲染用途的節點會收集頂點數據並判斷是否能合併批次。渲染也中規中矩,從後往前不開深度測試和深度寫進行渲染 瓶頸一

原创 基本光照模型

組成 基本方法是把進入攝像機的光線分成4個部分,每個部分分別有一種分發來計算其貢獻度 自發光(emissive):物體本身產生的光高光反射(specular):光線從光源照到物體表面反射到眼睛裏的光漫反射(diffuse):這個部分是光線

原创 陰影渲染

平行光 根據當前攝像機位置和平行光方向向後拉開一定距離並創建一個shadowmap攝像機(CameraPos - LightDir * Length),然後渲染出shadowmap,shadowmap無非就是把shadowmap攝像機看到

原创 投影矩陣

一直以來其實都有點不是特別想去研究投影矩陣,主要原因是現在的遊戲引擎這部分基本都不需要你去看和改動,因爲它過於底層,也基本不會出錯,所以根本沒有機會接觸。另一個原因是因爲它偏數學,推導過程的話容易記不住。所以除非自己手搭一個渲染引擎,否則

原创 如何製作一個拾色器

之前因爲做編輯器需要用到拾色器,剛好這部分知識不太常用,而且很多圖形學的入門書籍都沒怎麼提到過這個知識點。所以我翻查了下資料,並做了下總結 這是photoshop的拾色器,我們稱它爲HSB拾色器。這裏不探討HSB的原理是啥,這個拾色器,

原创 圖形相關筆記

Shadow Volume https://www.cnblogs.com/chandler00x/p/3958407.html?utm_source=tuicool&utm_medium=referral shadow volume是長

原创 骨骼蒙皮動畫初探

網上更詳細的骨骼蒙皮動畫相關的知識,可以參考“骨骼蒙皮動畫(SkinnedMesh)的原理解析”這個標題的博客,這裏也就不多贅述,這裏僅對我實際工作中使用的遊戲引擎是如何實現這一事情做一個總結,不代表所有引擎的實現方式都是下面這種,畢竟可