一个简单的GI--Reflective Shadow Maps

时间:2024-01-08 12:32:56

Reflective Shadow Maps是一种简单的GI,虽然名字带有Shadow Maps,但是和Shadow Maps没有什么关系,
是在screen space的一种方法,不像光线追踪和辐射度方法一样又消耗,又费时,适合于动态的场景,我们主要需要的变量基本都来自G-buffer,如下图
 一个简单的GI--Reflective Shadow Maps
从左到右依次为depth, world space coordinates, normal, flux.
由于本算法简单,效果还不错,one-bounce的间接照明就足够了。
算法很简单:
 一个简单的GI--Reflective Shadow Maps
Φp为需要反射的flux

X为当前像素点,xp为采样点n为当前点的法向量,np为采样点的法向量。

一个简单的GI--Reflective Shadow Maps

当采样点正好位于当前点发现方向时反射到的光最多。
然后把各个采样点加和
 一个简单的GI--Reflective Shadow Maps
最后博主在unity中的实现结果是这样的,30个采样点,不知道为什么反射的光是像噪音一样的点,还请高人指点。。。

一个简单的GI--Reflective Shadow Maps

unity5

一个简单的GI--Reflective Shadow Maps

一个简单的GI--Reflective Shadow Maps

一个简单的GI--Reflective Shadow Maps

unity4.6

真正的实现结果

一个简单的GI--Reflective Shadow Maps

 

2015-9-25更新

改正了一些错误

一个简单的GI--Reflective Shadow Maps

一个简单的GI--Reflective Shadow Maps

flux贴图:

一个简单的GI--Reflective Shadow Maps

                  -------by  wolf96   http://blog.csdn.net/wolf96