d3d12龙书学习之MiniEngine的最小化实现(十六) 龙书第20章 阴影贴图 Shadow Map

本文介绍了学习Direct3D 12 (D3D12) 中的Shadow Map技术,通过分析MiniEngine源码,探讨了shadowBuffer和shadowCamera的实现,并详细记录了调试过程中遇到的问题,包括柱子上没有影子的解决方法。最后,作者反思了自己在学习DX12过程中的困惑和成长。
摘要由CSDN通过智能技术生成

shadow map技术简介

Shadow Map网上有大把的技术文档。

简单说就是设置一个camera到需要产生阴影的光源位置,根据光源类型有不同的camera类型。
使用这个camera观察世界,生成深度图。
回到真正的camera那里,在绘制世界的时候,判断当前顶点的深度与深度图上对应位置的值。

如果顶点深度小于(根据设置,也可以大于)深度图的值,代表没有被遮挡,否则代表在阴影中。

MiniEngine中的shadowBuffer

本身就是一个深度缓冲区。稍微封装了下,方便绘制阴影深度图到buffer中

MiniEngine中的shadowCamera

这个camera啊,一直没看懂,根据官方的例子,始终无法实现正常的阴影。
考虑到camera本身已经被修改过,所以这个shadwoCamera也要修改

调试以及知其然而不知所以然的魔改过程

做好后,发现没有阴影。

两个怀疑点

  1. 阴影pso参数错误
  2. shadowCamera错误

对于1,修改了很多参数,发现也没有什么用。
于是开始调试2

  1. 场景中仅保留一个渲染目标,方便进行图形调试
  2. 设置阴影绘制的shadowCamera为正常的camera,发现可以绘制出阴影图。确定是shadowCamera的问题
  3. 研究shadowCamera的代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值