原创 【圖形學】後處理下的HDR、顏色分級、顏色映射與顏色空間

目錄 一、Color Grading 1.1 概念 1.2 內置在Unity/UE4 二、HDR、LDR與VDR 2.1 LDR 2.2 HDR 2.3 VDR 三、Tone Mapping 3.1 概念 3.2 算法發展史 3.3 A

原创 【UE4 C++】實現旋轉小球的第三人稱自由視角

本文將介紹用C++實現一個簡單的玩家可通過WASD控制移動,Shift進行加速,鼠標控制視角旋轉和縮放的小球。 本人也只是一個UE4初學者,大佬勿噴。 一、技術難點 小球通過角速度控制旋轉,因此想實現自由視角相機,它就不能作爲小球的子

原创 【UE4 Material】使用材質UV偏移實現視頻切割

最終效果圖 使用UV偏移實現Instance Static Mesh中的實例使用同一材質球播放不同片段的視頻/圖片  增大間隔,分開四塊Plane模型效果 (簡便方法)一、設置材質球中的TexCoord節點的UV縮放值     比如我

原创 【C++】虛函數、純虛函數、多態與虛表機制詳解

虛函數 在類的定義中,前面有 virtual 關鍵字的成員函數就是虛函數。 注:派生類中的成員函數 與 基類中虛函數同名且同參數的函數,不加virtual也自動成爲虛函數。 純虛函數與抽象類 沒有函數體的虛函數稱作純虛函數,包含純虛函數的

原创 【C++】構造函數、析構函數可以是虛函數麼?

構造函數不能是虛函數 1、創建一個對象必須明確指出它的類型,否則無法創建,一個對象創建成功,編譯器獲得它的實際類型,然後去調用對應的函數,而如果構造函數聲明爲虛函數,會形成一個死鎖,虛函數是在運行才能確定確定其調用哪一個類型的函數,而具體

原创 【C++】編譯過程

C++編譯過程可分爲四個階段 預處理階段:對源代碼文件中文件包含關係(頭文件)、預編譯語句(宏定義)進行分析和替換,生成預編譯文件。 編譯階段:將經過預處理後的預編譯文件轉換成特定彙編代碼,生成彙編文件。 彙編階段:將編譯階段生成的彙編文

原创 【C++】結構體/聯合中的數據成員對齊規則

對齊規則 1、每個數據成員在內存中的存儲起始位置必須是自身大小的整數倍,如32位下的int佔4個字節,則存儲地址必須是4的整數倍。 struct node {      char a;//起始0是1的倍數,a存放在0      int

原创 【UE4+Houdini+Bridge】程序化地形生成——山谷環境製作思路

B站展示製作過程: Houdini To UE4 程序化地形生成製作過程與效果展示 最終效果圖 目錄 一、簡單介紹 二、製作步驟 2.1 Houdini製作步驟 2.1.1 地形創建 2.1.2 層級劃分 2.1.3 點雲生成 2.2

原创 【C++ 算法】快排優化之基準選擇與方法

三數取中(選基準)+插排(優化)+三向切分聚集重複值(優化)的時間複雜度同STL中的Sort近似。 一、基準的選擇 最理想的方法是,選擇的基準恰好能把待排序序列分成兩個等長的子序列。 1、隨機選取基準:在待排序列是部分有序時,固定選取樞軸

原创 【C++】Static的用法分類詳解

1 全局靜態變量 在全局變量前加上關鍵字static,全局變量就定義成一個全局靜態變量 內存中的位置:靜態存儲區,在整個程序運行期間一直存在 初始化:未經初始化的全局靜態變量會被自動初始化爲0(自動對象的值是任意的,除非他被顯式初始化)

原创 【C++】複製構造函數與類型轉換構造函數

複製構造函數 基本概念 複製構造參數只有一個參數,即對同類對象的引用,形如:X::X(X&) 或 X::X(const X&),常用後者。 若用戶未定義,則編輯器會生成默認的複製構造函數,完成複製的功能。 class Complex {

原创 【圖形學】reflect函數所指的反射向量計算原理

轉自作者:zdd 在圖形學中,計算光照模型時,經常需要求取反射向量,一般的shader函數庫都提供計算反射向量的方法,下面介紹一下如何手動計算反射向量。 給定入射光線向量I和平面法向量N,求反射向量R,如下圖。爲了方便計算,這裏

原创 【UE4 Material】在CustomNode中編寫自定義函數並調用

Custom 一般情況下,Custom節點不能添加自定義函數,因爲它本身就是一個函數,只需要寫好返回值即可。 其對應的HLSL源代碼如下 MaterialFLoat3 CustomExpression0(FMaterialPixelP

原创 【C++】i++=5編譯報錯,i++不能作爲左值的原因

左值與右值 首先,我們需要明確左值與右值的定義。 一個簡單的理解就是,對於每個變量,均是可尋址的,均與兩個值有關: 它的數據值——存儲在某個內存空間中,不佔有確定位置的表達式,被稱爲右值(rvalue)。 它的地址值——存儲數據值的內存的

原创 【C++】++i與i++哪個性能更優

對於基本類型比如int等,兩者性能沒有區別。 對於符合對象比如類、結構體等,++i的性能優於i++。 原因是i++會產生臨時對象,生成一個拷貝,若拷貝對象的內容較多,則會增加很多開銷。 舉個栗子: i++的運算過程如下: int tem