原创 Vulkan_Shader—高級光照_陰影_原理

高級光照_陰影原理概述 陰影是光線被阻擋的結果;當一個光源的光線由於其他物體的阻擋不能夠達到一個物體的表面的時候,那麼這個物體就在陰影中了。陰影能夠使場景看起來真實得多,並且可以讓觀察者獲得物體之間的空間位置關係。場景和物體的深度

原创 Vulkan_PBR—基於物理的渲染基礎

本文主要介紹shader部分,至於main代碼,如果你看過之前章節,應該可輕鬆實現,基礎理論主要參照 Learn OpenGL–PBR,本部分做簡述及BRDF實現 1.理論 PBR,或者用更通俗一些的稱呼是指基於物理的渲染(Ph

原创 Vulkan_曲面細分(Tessellation Shader)

曲面細分 本部分我們主要來看一下圖形管線中的可選功能:曲面細分。 曲面細分靠近管線的最前端,緊挨着頂點着色器之後,它是以圖元片(patch)作爲輸入:每一個都是一個用頂點表示的控制點集合,並把片段分解成更小、更簡單的片元,比如點

原创 Vulkan_布料仿真模擬(Mass Spring Systems_質點彈簧模型)

布料仿真的常用方法就是將布料表達爲三維網格,然後通過彈力+外力進行布料仿真。它在遊戲中有着廣泛的應用,如衣袖的擺動,旗幟的飄動;此外,也可以用於模擬試衣等。 (僅重力與風力作用下布料圖片) 一、彈簧質點系統(Mass Sprin

原创 Vulkan填坑學習Day23—描述符池和集合

Vulkan 描述符池和集合 Vulkan 描述符池和集合,描述符佈局描述了可以綁定的描述符的類型。在本章節,我們創建描述符集,它將實際指定一個VkBuffer來綁定到一個uniform buffer描述符。 一、描述符池 描述符

原创 Vulkan填坑學習Day24—紋理圖像(Images)

Vulkan 紋理圖像(Images) Vulkan 圖像(Images),到目前爲止,幾何圖形使用每個頂點顏色進行着色處理,這是一個侷限性比較大的方式。在本教程的一部分內容中,我們實現紋理映射,使得幾何圖形看起來更加生動有趣。這

原创 Vulkan填坑學習Day25—圖像視圖和採樣器

Vulkan 圖像視圖和採樣器 Vulkan 圖像視圖和採樣器,在本章節我們將爲圖形管線創建另外兩個資源來對圖像進行採樣。第一個資源我們之前已經接觸過了,就是交換鏈,但是第二個資源比較新,它涉及着色器如何從圖像中讀取紋素。 一、紋

原创 Vulkan_Shader—環境映射天空盒

環境映射 我們現在將整個環境映射到了一個紋理對象上了,能利用這個信息的不僅僅只有天空盒。通過使用環境的立方體貼圖,我們可以給物體反射和折射的屬性。這樣使用環境立方體貼圖的技術叫做環境映射(Environment Mapping),

原创 Vulkan_Shader—高級光照_陰影_實現

高級光照_陰影_代碼實現 根據上節陰影原理及附源碼,主要是創建一個深度緩衝視圖,然後將其使用到主場景Shader中,以此來實現陰影,大部分工作是在原有代碼基礎上進行改動,並新增了部分hpp文件來快捷創建各類所需結構體。 本小節,我

原创 GLSL-TBN矩陣

TBN矩陣 一、簡述 1.1 TBN矩陣作用 我們研究一個矩陣的時候通常需要了解一個矩陣是從哪一個空間或者說矩陣而來的。如果搜索一下TBN矩陣運算公式可以發現其決定於物體座標系下的頂點和紋理座標系下的紋理座標。想到這裏我們需要明確

原创 Vulkan_基於CPU的粒子系統(火焰、煙霧)

粒子系統 本部分主要是實現一個簡單的基於CPU的粒子系統。粒子數據存儲在主機內存中,每幀在CPU上更新,並在使用預乘alpha渲染之前與設備同步。 一個微粒,從vulkan的角度看就是一個總是面向攝像機方向且(通常)包含一個大部分

原创 Vulkan_法線映射、視差映射、陡視差映射和視差遮擋映射

本部分主要實現基於紋理信息的多種紋理映射方法:法向映射、視差映射、陡視差映射和視差遮擋映射(質量最好,性能最差)來模擬深度。 貼圖技術 首先,本部分場景僅是簡單的創建一個平面及加載紋理,基本的vulkan加載創建等就不再囉嗦,直接

原创 Vulkan_基於GPU的遮擋剔除和LOD

本部分主要介紹基於GPU的相機視錐體可見性剔除模型以及根據模型距攝像機距離處理擇選模型LOD的方法。在本部分中計算着色器用於修改存儲在間接繪製命令緩衝區中的繪製命令,以切換模型可見性並根據攝像機距離選擇其詳細程度,而無需在CPU上

原创 Vulkan_渲染可視化調試(VK_EXT_debug_marker與RenderDoc離線圖形調試)

在使用vulkan實現各項渲染工作的時候,我們經常會因爲各種不經意的坑導致渲染失敗,所以調試工作就尤爲重要,所以今天我們就來說一下如何可視化vulkan的各項進程來調試程序。 一、簡介 首先我們來說一下vulkan驗證層:Luna

原创 Vulkan-光線追蹤(計算着色器實現)

光線追蹤 本次使用計算着色器實現具有陰影和反射的簡單GPU光線跟蹤器。至於vulkan最新發布的光追擴展VK_KHR_ray_tracing或之前的VK-NV-ray-u跟蹤擴展,本次未涉及到,以後可具體研究實現,本次具體計算着色