随笔分类 - DirectX11 高级篇
摘要:前言 在默认的情况下渲染,会看到物体的边缘会有强烈的锯齿感,究其原因在于采样不足。但是,尝试提升采样的SSAA会增大渲染的负担;而硬件MSAA与延迟渲染又不能协同工作。为此我们可以考虑使用后处理的方式来进行抗锯齿的操作。在这一章中,我们将会讨论一种常见的后处理抗锯齿方法:FXAA。 DirectX1
阅读全文
摘要:前言 上一章我们介绍了级联阴影贴图。刚开始的时候我尝试了给CSM直接加上PCSS,但不管怎么调难以达到说得过去的效果。然后文章越翻越觉得阴影就是一个巨大的坑,考虑到时间关系,本章只实现了方差阴影贴图(VSM)、指数阴影贴图(ESM)和指数方差阴影贴图(EVSM)作为引子,然后将相关扩展放在文末。 现
阅读全文
摘要:前言 在31章我们曾经实现过shadow mapping,但是受到阴影贴图精度的限制,只能在场景中相当有限的范围内投射阴影。本章我们将以微软提供的例子和博客作为切入点,学习如何解决阴影中出现的Atrifacts: 边缘闪烁&抖动 阴影接缝 阴影缺失 perspective aliasing proj
阅读全文
摘要:前言 在上一章,我们主要介绍了如何使用延迟渲染,以及如何对G-Buffer进行一系列优化。而在这一章里,我们将从光源入手,讨论如何对大量的动态光源进行剔除,从而获得显著的性能提升。 在此之前假定读者已经读过上一章,并熟悉了如下内容: 计算着色器 结构化缓冲区 DirectX11 With Windo
阅读全文
摘要:前言 随着图形硬件变得越来越通用和可编程化,采用实时3D图形渲染的应用程序已经开始探索传统渲染管线的替代方案,以避免其缺点。其中一项最流行的技术就是所谓的延迟渲染。这项技术主要是为了支持大量的动态灯光,而不需要一套复杂的着色器程序。 为了迎接这一章的项目,会对原来的代码有许多改动,并且会有许多引申的
阅读全文
摘要:前言 注意:这一章对应项目代码2.x.x版本,持有低版本项目代码的同学请到Github更新一份 在这一章中,我们主要关注的是如何模拟一系列粒子,并控制它们运动。这些粒子的行为都是类似的,但它们也带有一定的随机性。这一堆粒子的几何我们叫它为粒子系统,它可以被用于模拟一些比较现象,如:火焰、雨、烟雾、爆
阅读全文
摘要:前言 注意:这一章对应项目代码2.x.x版本,持有低版本项目代码的同学请到Github更新一份 在前面的章节中,我们学到了法线贴图和曲面细分。现在我们可以将这两者进行结合以改善效果,因为法线贴图仅仅只是改善了光照的细节,但它并没有从根本上改善几何体的细节。从某种意义上来说,法线贴图只是一个光照的小把
阅读全文
摘要:前言 曲面细分是Direct3D 11带来的其中一项重要的新功能。它引入了两个可编程着色器阶段以及一个固定的镶嵌处理过程。简单来说,曲面细分技术可以将几何体细分为更小的三角形,并以某种方式把这些新生成的顶点偏移到合适的位置,从而以增加三角形数量的方式丰富网格细节。但为什么不在创建网格之初就直接赋予它
阅读全文
摘要:前言 注意:这一章对应项目代码2.x.x版本,持有低版本项目代码的同学请到Github更新一份 由于性能的限制,实时光照模型往往会忽略间接光因素(即场景中其他物体所反弹的光线)。但在现实生活中,大部分光照其实是间接光。在第7章里面的光照方程里面引入了环境光项: \[ C_a = \mathbf{A_
阅读全文
摘要:前言 阴影既暗示着光源相对于观察者的位置关系,也从侧面传达了场景中各物体之间的相对位置。本章将起底最基础的阴影映射算法,而像复杂如级联阴影映射这样的技术,也是在阴影映射的基础上发展而来的。 在学完前面的章节后,你可以尝试了解下面的章节以查看EffectHelper是怎么实现的: | 章节 | | |
阅读全文
摘要:前言 注意:这一章对应项目代码2.x.x版本,持有低版本项目代码的同学请到Github更新一份 到这里计算着色器的主线学习基本结束,剩下的就是再补充两个有关图像处理方面的应用。这里面包含了龙书11的图像模糊,以及龙书12额外提到的Sobel算子进行边缘检测。主要内容源自于龙书12,项目源码也基于此进
阅读全文
摘要:前言 注意:这一章对应项目代码2.x.x版本,持有低版本项目代码的同学请到Github更新一份 由于透明混合在不同的绘制顺序下结果会不同,这就要求绘制前要对物体进行排序,然后再从后往前渲染。但即便是仅渲染一个物体(如上一章的水波),也会出现透明绘制顺序不对的情况,普通的绘制是无法避免的。如果要追求正
阅读全文
摘要:前言 注意:这一章对应项目代码2.x.x版本,持有低版本项目代码的同学请到Github更新一份 有关计算着色器的基础其实并不是很多。接下来继续讲解如何使用计算着色器实现水波效果,即龙书中所实现的水波。但是光看代码可是完全看不出来是在做什么的。个人根据书中所给的参考书籍找到了对应的实现原理,但是里面涉
阅读全文
摘要:前言 注意:这一章对应项目代码2.x.x版本,持有低版本项目代码的同学请到Github更新一份 上一章我们用一个比较简单的例子来尝试使用计算着色器,但是在看这一章内容之前,你还需要了解下面的内容: 章节 26 计算着色器:入门 深入理解与使用缓冲区资源(结构化缓冲区/有类型缓冲区) Visual S
阅读全文
摘要:前言 注意:这一章对应项目代码2.x.x版本,持有低版本项目代码的同学请到Github更新一份 计算着色器是一个比较庞大的分支,我们除了通过渲染管线来利用GPU的计算能力之外,还可以通过计算着色器来使用GPU的通用计算能力。接下来将会花费5章的内容讲述计算着色器的基础及应用。 DirectX11 W
阅读全文