随笔分类 -  DirectX11 With Windows SDK

摘要:前言 Dear ImGui是一个开源GUI框架。除了UI部分外,本身还支持简单的键鼠交互。目前项目内置的是V1.87版本,大概半年时间会更新一次版本,并且对源码有小幅度调整。 注意:直接下载源码使用会导致19章之后的UI效果有误,修改了源码imgui_impl_dx11.cpp,需要用项目源码中的替 阅读全文
posted @ 2022-06-23 19:50 X_Jun 阅读(3390) 评论(0) 推荐(1) 编辑
摘要:前言 注意:这一章进行了重写,对应教程Dev分支第19章的项目,在更新完后面的项目后会替换掉原来第19章的教程 在前面的章节中我们一直使用的是由代码生成的几何模型,但现在我们希望能够导入模型设计师生成的各种格式的模型。然而,在DirectX中,将模型导入到内存后还需要我们进行处理,最终变成能让管线使 阅读全文
posted @ 2022-06-09 22:38 X_Jun 阅读(2009) 评论(0) 推荐(3) 编辑
摘要:前言 在默认的情况下渲染,会看到物体的边缘会有强烈的锯齿感,究其原因在于采样不足。但是,尝试提升采样的SSAA会增大渲染的负担;而硬件MSAA与延迟渲染又不能协同工作。为此我们可以考虑使用后处理的方式来进行抗锯齿的操作。在这一章中,我们将会讨论一种常见的后处理抗锯齿方法:FXAA。 DirectX1 阅读全文
posted @ 2022-05-31 00:35 X_Jun 阅读(1595) 评论(1) 推荐(0) 编辑
摘要:前言 GAMES104的王希说过: 游戏引擎的世界里,它的核心是靠Tick()函数把这个世界驱动起来。 本来单是一个CPU的计时器是不至于为其写一篇博客的,但把GPU计时器功能加上后就不一样了。在这一篇中,我们将讲述如何使用CPU计时器获取帧间隔,以及使用GPU计时器获取GPU中执行一系列指令的间隔 阅读全文
posted @ 2022-05-20 02:00 X_Jun 阅读(1655) 评论(0) 推荐(3) 编辑
摘要:前言 上一章我们介绍了级联阴影贴图。刚开始的时候我尝试了给CSM直接加上PCSS,但不管怎么调难以达到说得过去的效果。然后文章越翻越觉得阴影就是一个巨大的坑,考虑到时间关系,本章只实现了方差阴影贴图(VSM)、指数阴影贴图(ESM)和指数方差阴影贴图(EVSM)作为引子,然后将相关扩展放在文末。 现 阅读全文
posted @ 2022-05-14 12:37 X_Jun 阅读(2016) 评论(0) 推荐(3) 编辑
摘要:前言 在31章我们曾经实现过shadow mapping,但是受到阴影贴图精度的限制,只能在场景中相当有限的范围内投射阴影。本章我们将以微软提供的例子和博客作为切入点,学习如何解决阴影中出现的Atrifacts: 边缘闪烁&抖动 阴影接缝 阴影缺失 perspective aliasing proj 阅读全文
posted @ 2022-04-07 13:24 X_Jun 阅读(1428) 评论(2) 推荐(1) 编辑
摘要:前言 由于最近Visual Studio的图形调试器老是抽风,不得不寻找一个替代品了。 对于图形程序开发者来说,学会使用RenderDoc图形调试器可以帮助你全面了解渲染管线绑定的资源和运行状态,从而确认问题所在。 RenderDoc官网 DirectX11 With Windows SDK完整目录 阅读全文
posted @ 2022-03-30 10:24 X_Jun 阅读(8870) 评论(2) 推荐(3) 编辑
摘要:前言 在上一章,我们主要介绍了如何使用延迟渲染,以及如何对G-Buffer进行一系列优化。而在这一章里,我们将从光源入手,讨论如何对大量的动态光源进行剔除,从而获得显著的性能提升。 在此之前假定读者已经读过上一章,并熟悉了如下内容: 计算着色器 结构化缓冲区 DirectX11 With Windo 阅读全文
posted @ 2022-03-18 19:53 X_Jun 阅读(1119) 评论(0) 推荐(0) 编辑
摘要:前言 随着图形硬件变得越来越通用和可编程化,采用实时3D图形渲染的应用程序已经开始探索传统渲染管线的替代方案,以避免其缺点。其中一项最流行的技术就是所谓的延迟渲染。这项技术主要是为了支持大量的动态灯光,而不需要一套复杂的着色器程序。 为了迎接这一章的项目,会对原来的代码有许多改动,并且会有许多引申的 阅读全文
posted @ 2022-03-04 23:55 X_Jun 阅读(2111) 评论(2) 推荐(2) 编辑
摘要:前言 注意:这一章对应项目代码2.x.x版本,持有低版本项目代码的同学请到Github更新一份 在这一章中,我们主要关注的是如何模拟一系列粒子,并控制它们运动。这些粒子的行为都是类似的,但它们也带有一定的随机性。这一堆粒子的几何我们叫它为粒子系统,它可以被用于模拟一些比较现象,如:火焰、雨、烟雾、爆 阅读全文
posted @ 2020-07-19 23:28 X_Jun 阅读(2479) 评论(0) 推荐(4) 编辑
摘要:前言 注意:这一章对应项目代码2.x.x版本,持有低版本项目代码的同学请到Github更新一份 在前面的章节中,我们学到了法线贴图和曲面细分。现在我们可以将这两者进行结合以改善效果,因为法线贴图仅仅只是改善了光照的细节,但它并没有从根本上改善几何体的细节。从某种意义上来说,法线贴图只是一个光照的小把 阅读全文
posted @ 2020-07-15 20:45 X_Jun 阅读(1546) 评论(0) 推荐(2) 编辑
摘要:前言 曲面细分是Direct3D 11带来的其中一项重要的新功能。它引入了两个可编程着色器阶段以及一个固定的镶嵌处理过程。简单来说,曲面细分技术可以将几何体细分为更小的三角形,并以某种方式把这些新生成的顶点偏移到合适的位置,从而以增加三角形数量的方式丰富网格细节。但为什么不在创建网格之初就直接赋予它 阅读全文
posted @ 2020-07-12 01:20 X_Jun 阅读(2818) 评论(0) 推荐(5) 编辑
摘要:前言 注意:这一章对应项目代码2.x.x版本,持有低版本项目代码的同学请到Github更新一份 由于性能的限制,实时光照模型往往会忽略间接光因素(即场景中其他物体所反弹的光线)。但在现实生活中,大部分光照其实是间接光。在第7章里面的光照方程里面引入了环境光项: \[ C_a = \mathbf{A_ 阅读全文
posted @ 2020-07-06 11:21 X_Jun 阅读(2395) 评论(0) 推荐(4) 编辑
摘要:前言 阴影既暗示着光源相对于观察者的位置关系,也从侧面传达了场景中各物体之间的相对位置。本章将起底最基础的阴影映射算法,而像复杂如级联阴影映射这样的技术,也是在阴影映射的基础上发展而来的。 在学完前面的章节后,你可以尝试了解下面的章节以查看EffectHelper是怎么实现的: | 章节 | | | 阅读全文
posted @ 2020-06-05 16:43 X_Jun 阅读(3485) 评论(0) 推荐(5) 编辑
摘要:前言 如果之前你是跟随本教程系列学习的话,应该能够初步了解Effects11(现FX11)的实现机制,并且可以编写一个简易的特效管理框架,但是随着特效种类的增多,要管理的着色器、资源等也随之变多。如果写了一套由多个HLSL着色器组成特效,就仍需要在C端编写与HLSL相对应的特效框架,这样写起来依然是 阅读全文
posted @ 2020-03-09 11:25 X_Jun 阅读(4868) 评论(1) 推荐(3) 编辑
摘要:前言 注意:这一章对应项目代码2.x.x版本,持有低版本项目代码的同学请到Github更新一份 到这里计算着色器的主线学习基本结束,剩下的就是再补充两个有关图像处理方面的应用。这里面包含了龙书11的图像模糊,以及龙书12额外提到的Sobel算子进行边缘检测。主要内容源自于龙书12,项目源码也基于此进 阅读全文
posted @ 2020-02-14 21:46 X_Jun 阅读(2285) 评论(0) 推荐(2) 编辑
摘要:前言 注意:这一章对应项目代码2.x.x版本,持有低版本项目代码的同学请到Github更新一份 由于透明混合在不同的绘制顺序下结果会不同,这就要求绘制前要对物体进行排序,然后再从后往前渲染。但即便是仅渲染一个物体(如上一章的水波),也会出现透明绘制顺序不对的情况,普通的绘制是无法避免的。如果要追求正 阅读全文
posted @ 2020-02-07 11:14 X_Jun 阅读(3319) 评论(1) 推荐(1) 编辑
摘要:前言 编写本内容仅仅是为了完善当前的教程体系,入门级别的内容其实基本上都是千篇一律,仅有一些必要细节上的扩充。要入门HLSL,只是掌握入门语法,即便把HLSL的全部语法也吃透了也并不代表你就能着色器代码了,还需要结合到渲染管线中,随着教程的不断深入来不断学习需要用到的新的语法,然后尝试修改着色器,再 阅读全文
posted @ 2020-01-31 21:38 X_Jun 阅读(29563) 评论(7) 推荐(9) 编辑
摘要:前言 注意:这一章对应项目代码2.x.x版本,持有低版本项目代码的同学请到Github更新一份 有关计算着色器的基础其实并不是很多。接下来继续讲解如何使用计算着色器实现水波效果,即龙书中所实现的水波。但是光看代码可是完全看不出来是在做什么的。个人根据书中所给的参考书籍找到了对应的实现原理,但是里面涉 阅读全文
posted @ 2020-01-21 20:46 X_Jun 阅读(3414) 评论(0) 推荐(3) 编辑
摘要:前言 注意:这一章对应项目代码2.x.x版本,持有低版本项目代码的同学请到Github更新一份 上一章我们用一个比较简单的例子来尝试使用计算着色器,但是在看这一章内容之前,你还需要了解下面的内容: 章节 26 计算着色器:入门 深入理解与使用缓冲区资源(结构化缓冲区/有类型缓冲区) Visual S 阅读全文
posted @ 2019-02-19 02:37 X_Jun 阅读(3571) 评论(1) 推荐(4) 编辑

levels of contents