GraphicsLab Project之Parallel Split Shadow Map(PSSM)

本文介绍了GraphicsLab项目中的Parallel Split Shadow Map (PSSM) 算法,详细阐述了算法概述、实验环境的搭建,包括光源空间创建和包围体计算的关键步骤,为3D阴影效果的实现提供了深入理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:i_dovelemon

日期:2017/04/19

来源:优快云

主题:Shadow Map, PSSM



引言



        在GLB渲染库中早就集成了Shadow Map的功能,只是在较大的场景中,阴影的效果会很差。所以,我使用了在 GPU Gem 3中提到的Parallel Split Shadow Map的方法来改进。这篇文章将不会详细的讲解算法的每一个细节,主要讲述我在实现的过程中遇到的一些问题。


算法概述



        PSSM的算法思路十分的简单。由于我们在渲染的时候,对于较大的场景,仅靠一张Shadow Map保存阴影信息,将会丢失很多的细节。PSSM通过将视域体划分为N个不同的部分,对每一个部分单独的生成一张Shadow Map,这样就能够比较好的保存阴影的信息。所以算法的核心是如何对视域体进行划分。PSSM的划分算法是根据Shadow Map走样的原因提出的,主要分为如下两个部分:

Cs = a Clog + (1 - a)Cuni (0 < a < 1)

其中Clog和Cunim分别是两种不同的划分机制,它们各有优缺点,PSSM将他们按比例进行组合,从而得出更佳有效的划分机制。它们的机制分别如下:

Clog = n(f/n)^(i/m)  (i 表示划分区域的第几个部分, m表示总共划分的数目)
Cuni = n + (f - n) * (i / m) (i, m 同上)

        当我们确定好了划分的区域之后,我们就可以为每一个区域分别渲染出一张Shadow Map,渲染Shadow Map的过程和基本Shadow Map的渲染过程一样。当我们准备好了Shadow Map之后,在实际渲染场景的时候,我们计算像素的深度,从而得出应该使用哪一张Shadow Map。


实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值