An Implemention of Realtime Gobal Illumination

article/2025/9/21 14:06:53

前言:CG画面的“效果”最重要,至于达到这一效果所使用的技术倒是其次,一切的一切对于观众来说都是透明的。即使是Pixar都认为仅仅One Bounce Indirect Illumination对构建一个足够真实可信的光照效果足矣。看过这里的SII,我想你对Realtime Gobal Illumination的实现又会有一些新的认识。我实现了真实可信的Indirect Illumination效果,对比3dsmax附带的mental ray所得到的效果,同样不开阴影,我觉得我的画质更胜一筹。提供我的Demo下载,不过有个小小的BUG :-)期盼好心人帮我看一下。

  Splatting Indirect Illumination(以下简称SII)是我目前所看过最简单的实现Indirect Illumination间接光照方法。它结合了Shadow Mapping与Defered Shading,大部分使用了Reflective Shadow Map(以下简称RSM)技术的思想。虽然说技术很简单,完全没有Realtime Raytracing夸张的计算量,也没有Realtime Radiosity的局限,是一种很适合实时渲染程序尤其是游戏的技术,用来实现逼真可信的Indirect Illumination间接光照效果,再结合现有的Local Illumination算法如IBL光照,Ambient Occlusion等,完全可以实现电影级别的渲染质量。这一点在Pixar的设计思想中就有所提及。

  SII是源自于RSM的算法,所以在实现SII前需要解释一下RSM。RSM由4个Render Target(以下简称RT)组成:Depth Component、World Space Coordinates、World Space Normal、Flux。前面三者都很大众化了,直接绑定浮点纹理到FramebufferObject在Fragment Shader中输出就可以了,而最后一个Flux需要解释。

  在RSM的思路中,每一个在Light View的Depth Map中出现的点,都是对场景的间接光照效果有贡献的,这里叫做pixel light。对于每一个pixel light,我们可以首先设想它是无限小的,那么它在ω方向上发出的光强就是,

Eqn1 

  同理,对于点x及其向量n来说,pixel light对它光照的贡献就是,

Eqn2

  然后,我们可以近似的认为,场景中每一个点的光照都可以通过积分这些pixel light的贡献获得,

Eqn3

  对于Glossy物体,如果使用类似于Phong的光照模型我们有,

Eqn4

  对于原始的RSM算法,从RSM贴图中收集gather所有的象素点进行计算耗费很大,于是在SII中就采用了改进的策略,采样。这里我们先不做处理,使用Hammersley点集分布。如下图,样本数目为64,

PointSet

 

 

  下面准备开始实现。

1、首先我们从LightView渲染整个场景,渲染到World Position、World Normal、Flux 3张RenderTarget中去。

2、然后我们准备Defering Shading RenderTarget,也就是从摄像机渲染场景,得到World Position、World Normal、Diffuse、Specular、Shininess等光照计算需要的参数。

3、使用点集采样[1]中得到的纹理,再输出到同[1]中相同的RT中去。

4、在最终渲染遍中,使用[2]、[3]中的数据进行光照计算。

  在这个里面有几个技巧,第一个是怎样快速的生成RTs,答案当然是MRT。我使用了GL_RGBA_FLOAT16_ATI作为FBO的Attachment,相比GL_RGBA32F_ARB,FP16格式可以保证足够的精度,最重要的是硬件可以做GL_LINEAR过滤,而FP32硬件只支持NEAREST过滤。在我的7300GO上使用两种浮点纹理,效果几乎没有任何差别,而通过内存监测可以得知FP32让一切都变得很巨大。

  这里是只使用一个VPL进行渲染得到的黑白效果图,可以看到Local Illumination的效果很明显。右边是使用了64个VPLs得到的效果

gray1 gray

  这里是使用3dsmax的mental ray渲染的,使用了一个SpotLight,没有开启GI,因为开了GI后Photon Mapping得到的图简直惨不忍睹,实在没有耐心去调整参数。

3dsmaxnoii

 

  导出整个3DS场景,这是实时渲染的结果,使用了一个Spot Texture,仅仅是为了玩 :-)。同样,没有渲染阴影。

NoInDir

 

  这是使用了128个VPLs后渲染得到的场景。为了简化计算我把SpotLight当成了Point Light。

FinalII

  在这个经典的Cornel Box中站立着圣母、圣子的雕像,左边右边分别是红色与绿色的Diffuse面,雕像的身上体现了两种漫反射颜色的影响,天花板上也有浅浅的红色和绿色。如果再加上阴影和Ambient Occlusion和IBL那么效果将更加的完美,在这里我成功的实现了间接光照,最重要的是,一切的一切都是实时的。

  DEMO可以在这里下载,不过有个小小的BUG,渲染几个Frame后就黑屏了,不知道是不是缓冲切换的问题还是其他什么的,我还不是很清楚,如果你看程序麻烦帮我看看,有结果的可以联系我,谢谢!

转载于:https://www.cnblogs.com/Jedimaster/archive/2007/09/22/902242.html


http://chatgpt.dhexx.cn/article/1ueQ6Cpo.shtml

相关文章

Oracle ORA-06502 ORA-06512

问题描述&#xff1a; 发现存储过程里有对oracle <Collection>类型的操作 sql_text : select a.* from t_Drivewaystatus a inner join t_intersection b on a.intersectioncode b.intersectioncode where b.used 1 order by a.intersectioncode,a.drivewaycode; open…

ora-20011 ora-01555

问题 解决方案 ora undoinfo alter tablespace undotbs1 add datafile size 30g; alter tablespace undotbs2 add datafile size 30g; ora undoinfoora tempfree alter tablespace temp add tempfile size 30g; ora tempfree

ora-01461

插入数据长度大于4000&#xff0c;报该错ora-01461 解决方式&#xff1a;修改字段类型为 clob&#xff0c; 第一步&#xff1a;添加一个clob类型字段 ALTER TABLE tb_a ADD (RYZP CLOB);第二步&#xff1a;删除原来的字段 ALTER TABLE tb_a DROP COLUMN RYZP1;上面只是我工…

ORA-01156

需要关闭mrp进行操作。 alter database recover managed standby database cancel; alter database recover managed standby database parallel 10 using current logfile disconnect from session;

拼接字符串报错:Oracle: ORA-06512:字符串缓冲区太小

报错目前可以肯定的是&#xff0c;拼接的字符串超过oracle定义的上限。 plsql中varchar2长度上限是4000字节 报错语句定位到下面的这句&#xff1a; 我这里的p_zbdcdyh是存储过程的输出参数&#xff0c;故是默认数据库的字符串varchar2的大小。 p_zbdcdyh:p_zbdcdyh||,||PSELEN…

图像传感器设计资料-764-GSPRINT4502 2MP-4.5微米 全局快门 高速 CMOS 图像传感器

GSPRINT4502 2MP-4.5微米 全局快门 高速 CMOS 图像传感器 GSPRINT4502是一款一千万分辨率 (2048 x 1216) &#xff0c;2/3”光学尺寸的高速图像传感器&#xff0c;采用最新的4.5微米电荷域全局快门像素设计&#xff0c;实现30ke-的满阱容量和小于4e-的读出噪声。利用先进的65n…

转:详细图解,一眼就能看懂!卷帘快门(Rolling Shutter)与全局快门(Global Shutter)的区别

什么是快门 快门是照相机用来控制感光片有效曝光时间的机构。是照相机的一个重要组成部分&#xff0c;它的结构、形式及功能是衡量照相机档次的一个重要因素。 什么是Global Shutter&#xff08;Total Shutter&#xff09;&#xff1f; 通过整幅场景在同一时间曝光实现的。Sen…

详细图解,一眼就能看懂!卷帘快门(Rolling Shutter)与全局快门(Global Shutter)的区别

什么是快门 快门是照相机用来控制感光片有效曝光时间的机构。是照相机的一个重要组成部分&#xff0c;它的结构、形式及功能是衡量照相机档次的一个重要因素。 什么是Global Shutter&#xff08;Total Shutter&#xff09;&#xff1f; 通过整幅场景在同一时间曝光实现的。S…

VIO与全局快门及轮速计的一些应用小技巧

封面就用一个可爱的小车车~ 之前各种针对VIO&#xff0c;VSLAM和VINS的工程注意事项都讲过了 今天的内容主要是针对VSLAM&#xff0c;VIO的实用性。 比如Td&#xff0c;同步对时&#xff0c;内参&#xff0c;外参这一串 最近比较忙&#xff0c;简单写点全局快门和轮速计的东…

图解:卷帘快门(Rolling shutter)与全局快门(global shutter)的区别

什么是快门 快门是照相机用来控制感光片有效曝光时间的机构。是照相机的一个重要组成部分&#xff0c;它的结构、形式及功能是衡量照相机档次的一个重要因素。 什么是Global Shutter&#xff08;Total Shutter&#xff09;&#xff1f; 通过整幅场景在同一时间曝光实现的。Sens…

卷帘快门(Rolling Shutter)与全局快门(Global Shutter)的区别

转载的原始连接&#xff1a; https://blog.csdn.net/abcwoabcwo/article/details/93099982 快门是照相机用来控制感光片有效曝光时间的机构。是照相机的一个重要组成部分&#xff0c;它的结构、形式及功能是衡量照相机档次的一个重要因素。 什么是Global Shutter&#xff08;…

安森美的全局快门图像传感器解决机器视觉的成像需求

在“工业4.0”和“中国制造2025”的大势下&#xff0c;工业自动化趋势持续增强&#xff0c;机器视觉成为电子行业重要的新兴领域。在持续的自动化需求、社会安全保障需求和市场经济实力的推动下&#xff0c;全球机器视觉和智能交通系统市场迎来发展热潮。在中国&#xff0c;越来…

763-GMAX3809 1.1” 900万分辨率全局快门CMOS图像传感器

GMAX3809 1.1” 900万分辨率全局快门CMOS图像传感器 GMAX3809采用3.8μm像素设计&#xff0c;光学尺寸为1.1”&#xff0c;分辨率为900万&#xff0c;12bit数据输出最快帧频65fps。 GMAX3809采用了3.8μm的大像素设计&#xff0c;有效分辨率为4096(H) x 2160(V) (…

全局快门和卷帘快门(Global shutter and Rolling shutter)

全局快门和卷帘快门 “果冻效应”是什么&#xff1f;用相机拍下扇叶&#xff0c;为什么会发生扭曲变形&#xff1f; 相机两种曝光方式的优劣&#xff1a;全局曝光和卷帘曝光 卷帘快门和全局快门的区别 全局曝光和卷帘曝光是常见的相机曝光方式 一般来说&#xff0c;CCD相机是全…

工业相机快门类型:卷帘快门和全局快门——哪个最好?

CMOS 成像传感器是每个工业相机系统的核心&#xff0c;但它们有两种快门方式——卷帘快门或全局快门。每种类型的快门都有其优点&#xff0c;但哪一种最好&#xff1f;这取决于具体的应用程序。所以&#xff0c;让我们来看看它们之间的差异&#xff0c;以帮助您决定哪一个最适合…

图解:卷帘快门(Rolling_shutter)与全局快门(global_shutter)的区别

[toc](卷帘快门(Rolling shutter)与全局快门(global shutter)的区别) 卷帘快门(Rolling shutter)与全局快门(global shutter)的区别 快门是照相机用来控制感光片有效曝光时间的机构。是照相机的一个重要组成部分&#xff0c;它的结构、形式及功能是衡量照相机档次的一个重要因…

卷帘快门与全局快门的区别

卷帘快门与全局快门 卷帘快门&#xff0c;通常用于CMOS传感器。使用这种快门&#xff0c;传感器在曝光时并不是所有像素同时感光的&#xff0c;而是每行像素按照顺序依次感光。 全局快门的工作方式就像我们通常想象的那样&#xff0c;所有像素同时感光&#xff0c;在任意一个…

卷帘快门和全局快门的区别

技术背景 多面检测和图像处理任务需要足够的由光学、摄像机和PC机组成的图像采集系统&#xff0c;每个部件的特征对任务的完成有着重要的影响。在相机方面&#xff0c;你可能首先想到的是分辨率&#xff0c;帧速率和PC数据传输接口。 但是&#xff0c;在选择相机时必须考虑一…

机器视觉系列(四)——相机部分

一、工业相机和其他数码相机的区别 工业相机和普通数码相机的区别&#xff1a; ①工业相机是工业用品&#xff0c;需要连续长时间运行&#xff0c;所以在性能可靠性、稳定性、环境稳定、防水、连续运行时间上有明显的优势。工业相机不易损坏&#xff0c;连续工作时间长&#x…

【转】:卷帘快门(Rolling Shutter)与全局快门(Global Shutter)

Global Shutter 通过整幅场景在同一时间曝光实现的。Sensor所有像素点同时收集光线&#xff0c;同时曝光。即在曝光开始的时候&#xff0c;Sensor开始收集光线&#xff1b;在曝光结束的时候&#xff0c;光线收集电路被切断。CCD就是Global shutter工作方式。所有像元同时曝光 …