Stencil Shadow Volume技术讲解

本文介绍了Stencil Shadow Volume技术,这是一种解决点光源阴影生成问题的方法,最初由William Bilodeau和Michael Songy提出并在Doom 3引擎中广泛应用。通过创建和利用模板缓冲区,该技术能够有效地为点光源产生阴影效果。文中详细阐述了阴影体积的生成过程,包括深度测试、模板操作以及如何处理无限远的投影,最后提到了实际应用中的注意事项和源代码展示。
摘要由CSDN通过智能技术生成

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》电子工业出版社等。

CSDN视频网址:http://edu.csdn.net/lecturer/144

最近给读者介绍关于阴影技术的实现原理,当试图为点光源生成阴影时,您需要一个方向矢量才能生成阴影贴图,而且由于点光源将光线投射到整个场景,所以很难获得这样的矢量。 虽然有办法解决这个问题,但它们有点复杂,其实影子贴图技术更适合聚光灯。 Stencil Shadow Volume是一种有趣的技术,可以为点光源的问题提供直接的解决方案。 这种技术是由William Bilodeau和Michael Songy于1998年发现的,由John Carmack在Doom 3引擎(2002)中普及。

实际上在我们的“延迟着色”中看到了这种技术的介绍, 通过延迟着色,我们需要一种阻止光线影响的方法, 我们仅在光照范围内的物体上处理照明 现在我们要做相反的事情 我们将创建一个阴影体积,并仅在其外部的物体上处理照明我们将使用模板缓冲区作为算法的关键组件 因此名称 -  Stencil Shadow Volume

阴影体积算法背后的想法是将光线减弱时创建的对象轮廓扩展到一个Volume中,然后使用一些简单的模版操作将该Volume映射到模板缓冲区中。 关键的想法是,当一个对象在Volume内(因此在阴影中)时,Volume前面的多边形会对对象的多边形进行深度测试,并且该Volume部的多边形将失效相同的测试,或者说不参与测试。

我们将根据称为Depth Fail的方法设置模板操作人们经常使用更直接的方法称为Depth Pass来开始描述阴影体积技术,但是当观看者本身位于影子内并且Depth Fail修复该问题时,我们已经跳过Depth Pass,直接去Depth Fail。 看看下面的图片:


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海洋_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值