原创 DirectX11 With Windows SDK--06 使用ImGui

前言 Dear ImGui是一個開源GUI框架。除了UI部分外,本身還支持簡單的鍵鼠交互。目前項目內置的是V1.87版本,大概半年時間會更新一次版本,並且對源碼有小幅度調整。 注意:直接下載源碼使用會導致19章之後的UI效果有誤,修改了源

原创 DirectX11 With Windows SDK--19(Dev) 編譯Assimp並加載模型、新的Effects框架

前言 注意:這一章進行了重寫,對應教程Dev分支第19章的項目,在更新完後面的項目後會替換掉原來第19章的教程 在前面的章節中我們一直使用的是由代碼生成的幾何模型,但現在我們希望能夠導入模型設計師生成的各種格式的模型。然而,在Direc

原创 DirectX11 With Windows SDK--40 抗鋸齒:FXAA

前言 在默認的情況下渲染,會看到物體的邊緣會有強烈的鋸齒感,究其原因在於採樣不足。但是,嘗試提升採樣的SSAA會增大渲染的負擔;而硬件MSAA與延遲渲染又不能協同工作。爲此我們可以考慮使用後處理的方式來進行抗鋸齒的操作。在這一章中,我們將會

原创 DirectX11--CPU與GPU計時器

前言 GAMES104的王希說過: 遊戲引擎的世界裏,它的核心是靠Tick()函數把這個世界驅動起來。 本來單是一個CPU的計時器是不至於爲其寫一篇博客的,但把GPU計時器功能加上後就不一樣了。在這一篇中,我們將講述如何使用CPU計時器

原创 DirectX11 With Windows SDK--39 陰影技術(VSM、ESM)

前言 上一章我們介紹了級聯陰影貼圖。剛開始的時候我嘗試了給CSM直接加上PCSS,但不管怎麼調難以達到說得過去的效果。然後文章越翻越覺得陰影就是一個巨大的坑,考慮到時間關係,本章只實現了方差陰影貼圖(VSM)和指數陰影貼圖(ESM)作爲引子

原创 DirectX11 With Windows SDK--38 級聯陰影映射(CSM)

前言 在31章我們曾經實現過陰影映射,但是受到陰影貼圖精度的限制,只能在場景中相當有限的範圍內投射陰影。本章我們將以微軟提供的例子和博客作爲切入點,學習如何解決陰影中出現的Atrifacts: 邊緣閃爍&抖動 陰影接縫 陰影缺失 pers

原创 RenderDoc圖形調試器詳細使用教程(基於DirectX11)

前言 由於最近Visual Studio的圖形調試器老是抽風,不得不尋找一個替代品了。 對於圖形程序開發者來說,學會使用RenderDoc圖形調試器可以幫助你全面瞭解渲染管線綁定的資源和運行狀態,從而確認問題所在。 RenderDoc官網

原创 DirectX11 With Windows SDK--37 延遲渲染:光源剔除

前言 在上一章,我們主要介紹瞭如何使用延遲渲染,以及如何對G-Buffer進行一系列優化。而在這一章裏,我們將從光源入手,討論如何對大量的動態光源進行剔除,從而獲得顯著的性能提升。 在此之前假定讀者已經讀過上一章,並熟悉瞭如下內容: 計算

原创 DirectX11 With Windows SDK--36 延遲渲染基礎

前言 隨着圖形硬件變得越來越通用和可編程化,採用實時3D圖形渲染的應用程序已經開始探索傳統渲染管線的替代方案,以避免其缺點。其中一項最流行的技術就是所謂的延遲渲染。這項技術主要是爲了支持大量的動態燈光,而不需要一套複雜的着色器程序。 爲了

原创 【論文筆記】Learning to Estimate 3D Human Pose and Shape from a Single Color Image(CVPR 2018)

這篇論文沒有給出代碼,細節部分還是得看論文來推敲了,因此可能會有理解出問題的地方。 概述 做了什麼:引入一個端到端的框架,從包含人體的單張RGB圖像中預測出輪廓圖和關節熱力圖,生成SMPL參數並重建出一個SMPL的3D人體網格 存在問題:卷

原创 【論文筆記+復現踩坑】End-to-end Recovery of Human Shape and Pose(CVPR 2018)

PS. 這裏做的論文筆記主要是爲自己方便回顧。 概述 做了什麼:引入一個端到端的Human Mesh Recovery框架,從包含人體的RGB位圖中重建出一個SMPL的3D網格,並嘗試重新投影回圖片上 目的:最小化關鍵點的重投影損失,使得

原创 DirectX11 With Windows SDK--35 粒子系統

前言 在這一章中,我們主要關注的是如何模擬一系列粒子,並控制它們運動。這些粒子的行爲都是類似的,但它們也帶有一定的隨機性。這一堆粒子的幾何我們叫它爲粒子系統,它可以被用於模擬一些比較現象,如:火焰、雨、煙霧、爆炸、法術效果等。 在這一章開始

原创 DirectX11 With Windows SDK--34 位移貼圖

前言 在前面的章節中,我們學到了法線貼圖和曲面細分。現在我們可以將這兩者進行結合以改善效果,因爲法線貼圖僅僅只是改善了光照的細節,但它並沒有從根本上改善幾何體的細節。從某種意義上來說,法線貼圖只是一個光照的小把戲。接下來我們將會學習如何使用

原创 DirectX11 With Windows SDK--33 曲面細分階段(Tessellation)

前言 曲面細分是Direct3D 11帶來的其中一項重要的新功能。它引入了兩個可編程着色器階段以及一個固定的鑲嵌處理過程。簡單來說,曲面細分技術可以將幾何體細分爲更小的三角形,並以某種方式把這些新生成的頂點偏移到合適的位置,從而以增加三角形

原创 DirectX11 With Windows SDK--32 SSAO(屏幕空間環境光遮蔽)

前言 由於性能的限制,實時光照模型往往會忽略間接光因素(即場景中其他物體所反彈的光線)。但在現實生活中,大部分光照其實是間接光。在第7章裏面的光照方程裏面引入了環境光項: \[C_a = \mathbf{A_L}\otimes\mathbf