`

[转]辐射度算法(三) - GameRes.com

    博客分类:
  • 3D
阅读更多

http://dev.gameres.com/Program/Visual/3D/Radiosity_Translation.htm

 

 

使用3D渲染硬件加速

    辐射度算法的一个好的方面是它能够十分容易地通过使用3D渲染硬件来优化。只要你能让它做直接的纹理映射,并且关闭着色器、反锯齿以及多贴图(Mip-maps)等。

    具体的优化方法可能并不是你所想象的那样,但它工作得很好,可以让CPU和渲染硬件平行工作。硬件负责处理纹理映射以及隐面消除(Z缓冲),而CPU负责剩下的工作。

    就我所知,目前还没有渲染硬件能够处理浮点型的光照数据,甚至不能处理超过255的光照强度。因此我们无法让它直接渲染带有光照信息的场景,然而,只需一点小技巧,我们可以让硬件来做纹理映射和隐面消除,只要你通过一个快速的循环回读光照信息。

    如果3D硬件可以向屏幕写入33位像素,那么它就可以用来写入任何32位的值。3D硬件并不能真正地向屏幕写入浮点型的RGB值,但它可以写入32位的指针,指向那儿应当出现的面片。一旦有了这个渲染结果,你只需简单地读出每个像素,让后使用它的32位值作为指针定位到那儿应当被渲染的面片。

这是从上面的场景中取出的一张面片贴图。每个像素都由3个浮点数构成,它们分别代表RGB通道的值。因此3D硬件不能直接处理这样的贴图。

 

这里是另外张贴图。它看起来十分的怪异,但是现在不要理会它看起来的样子。在这个贴图中每个像素都是一个32位的值,代表了左图中相应面片的指针。

为什么这个贴图的颜色看起来会有这种效果是因为最低位的三个字节被解释成了颜色。

 

    一旦你有了一整套这样的指针纹理(每个表面都有一个),你可以把它传给3D硬件让其渲染。渲染出来的场景看起来像右图这样。

    场景看起来十分奇怪,但你可以辨认出这些表面都覆盖了像上图那样的纹理。这些像素不应该被理解为颜色,而应该是指针。如果你的显卡使用32位的纹理,那么它会以ARGB的形式出现,且ARGB各 占8位。不要理会这样的结构,把每个像素都当作一个32位的值,把它们作为内存指针来重新创建被面片覆盖的场景。

重要: 你必须确保场景是被纯纹理映射的。这就是说:无线性插值,无动感模糊,无着色器/光照,无多贴图,无雾效、无伽马校正。如果你禁用这些,产生出来的地址就不会指向正确的地方,你的程序肯定会崩溃。

    如何优化辐射度计算过程应该解释得比较清楚了。如果还有不明白的方,告诉我,我会试着加上更多的解释。

误会和迷惑

(如何使用渲染出来的光照贴图)

    辐射度渲染器的输出是一幅每个像素都是三个浮点数的图片。图片中亮度的范围可能十分的广泛。如同我之前所说的那样,天空的亮度比室内表面的亮度要亮的多。而且太阳还要比它亮几千倍。你怎样处理这样的图片呢?

    你普通的显示器最多只能产生很暗的光线,并不比室内的表面所发出的光亮多少。如果要显示这样的图片就需要一个能发出和太阳光一样强烈的光线的显示器。而且显卡对于每个通道都要有一个浮点数。这些东西在技术上并不存在,更别说安全因素。那么你应该怎么做呢?

    很多人对照片对真实世界的记录感到满意,并且认可它是对真实世界忠实的记录。他们错了。照片重现现实中的光亮的本领并不比显示器强。照片不能发出像太阳一样强烈的光,但人们却从不怀疑它的真实性,这就是让人迷惑的地方。

人的视觉

    我们的视觉正是我们最重要的感观。我们每天的生活都信任它,但到目前为止对它的信任还没让我们死亡。它常常拯救了我们的生命。对于我们的祖先来说,这也是一个重要的感观,对于最早的后来发展为人类的鱼来说也是如此。我们的眼球经历了一段漫长的进化过程,对我们的生存有着至关重要的作用,因此它们确实十分的优秀。它们能够感受到非常低的光照度,最低能低到5个光子,同样还能感受到非常明亮的天空。眼球并不是视觉系统的唯一部分,可能更重要的是它们之后的大脑。一个令人难以相信的神经网络,由多层处理过程组成,然后把眼球的输出转化为我们对眼前事物的感知。大脑必须能够辨认出同样的物体,无论它是被照亮还是非常的暗。而且还能做一些让令人惊奇的光线补偿。我们不曾注意到当我们从非常亮的室外走到一个被暗淡的黄色光源照亮的室内时,眼前光亮程度的变化。当你在这两种情况下拍照时,你可能需要改变不同型号的胶卷来防止照出来的图片很黄或很黑。

    试着这样做:在一个阴天出门,站在一个白色物体前,然后看着天上的云,你会觉得这个物体变成灰色了,但你重新看回这个物体时,它又恢复了白色。这说明什么问题?白色的东西被灰色的云所照亮,因此不会存在比云更亮的东西了。但是我们 仍然能够区分出它是白色的。如果你不相信我,以天上的云为背景给白色的物体照一张相。你会看见白色的东西比云暗得多。

别相信你的眼睛: 它们比你聪明得多。

    那么你要怎么做呢?既然人们信服照片带来的真实性,我们可以把渲染器的输出作为场景中的光照模型,然后仿照照相机的原理做一个粗糙的近似。我已经写了一篇关于这部分的文章:Exposure, 因此我就不再多费口舌了。

参考文献

The Solid Map: Methods for Generating a 2D Texture Map for Solid Texturing: http://graphics.cs.uiuc.edu/~jch/papers/pst.pdf
    This paper will be very useful if you are going to try to implement your own radiosity renderer. How do you apply a texture map evenly, and without distortion across some arbitary polygonal object? A radiosity renderer will need to do this.

Helios32: http://www.helios32.com/
    Offers a platform-independent solution for developers looking for radiosity rendering capabilities.

Radiosity In English: http://www.flipcode.com/tutorials/tut_rad.shtml
    As the title suggests this is an article about Radiosity, written using English words. I didn't understand it.

Real Time Radiosity: http://www.gamedev.net/reference/programming/features/rtradiosity2/
    That sounds a little more exciting. There doesn't seem to be a demo though.

An Empirical Comparison of Radiosity Algorithms: http://www.cs.cmu.edu/~radiosity/emprad-tr.html
    A good technical article comparing matrix, progressive, and wavelet radiosity algorithms. Written by a couple of the masters.

A Rapid Hierarchical Radiosity Algorithm: http://graphics.stanford.edu/papers/rad/
    A paper that presents a rapid hierarchical radiosity algorithm for illuminating scenes containing large polygonal patches.

KODI's Radiosity Page : http://ls7-www.informatik.uni-dortmund.de/~kohnhors/radiosity.html
    A whole lot of good radiosity links.

Graphic Links: http://web.tiscalinet.it/GiulianoCornacchiola/Eng/GraphicLinks6.htm
    Even more good links.

Rover: Radiosity for Virtual Reality Systems: http://www.scs.leeds.ac.uk/cuddles/rover/
    *Very Good* A thesis on Radiosity. Contains a large selection of good articles on radiosity, and very many abstracts of papers on the subject.

Daylighting Design: http://www.arce.ukans.edu/book/daylight/daylight.htm

分享到:
评论

相关推荐

    遗传算法解决TSP问题.rar

    /* 用遗传算法(GA)解决TSP(旅行商)问题 ...Blog: blog.gameres.com/show.asp?BlogID=1450&column=0 E-mail: starsftk@yahoo.com.cn ps:初学遗传算法,很多都不懂,程序还有很多不足,若你改进了别忘了告诉我 */

    GIF文档 - GameRes_com

    GIF文档 - 中文 详细 全面 希望对大家有帮助 GIF文档 - 中文 详细 全面 希望对大家有帮助 GIF文档 - 中文 详细 全面 希望对大家有帮助 GIF文档 - 中文 详细 全面 希望对大家有帮助

    一种简单、快速、高效的多边形减面算法

    一种简单、快速、高效的多边形减面算法 - GameRes_com.mht 看看

    游戏策划之路-GameRes文档中心-游戏制作文章、游.doc

    - **售后服务**:解决玩家遇到的问题,提供技术支持和更新,维护游戏社区的活跃度。 ### 第三章:游戏的策划工作如何进行 3.1部分详细讨论了游戏策划的核心任务,包括确定游戏的题材、类型和风格: - **游戏题材*...

    Windows游戏编程快速入门 - GameRes文档中心- 游戏制作文章、游戏开发 ....doc

    《Windows游戏编程快速入门》是面向初学者的一篇教程,旨在引导读者踏入游戏开发的世界。本文档主要通过实际操作步骤,介绍了如何使用Visual Studio 2003 .NET来创建一个简单的Windows游戏项目,以此来教授基本的...

    sef.rar_sef_sef软件_图形图像处理

    - `计算几何算法概览 - GameRes_com.htm`:这可能是一个网页文档,提供计算几何的基本概念、常用算法的概述,以及在游戏开发中的应用。 - `e913ACM.pps`:可能是PowerPoint演示文稿,详细介绍了ACM竞赛中的计算...

    泡泡堂单机版[模拟] 源代码

    - 2ccc.com.nfo:NFO文件通常包含有关软件或分享内容的作者信息和版权声明。 - 开发日志.txt:记录了项目开发过程中的笔记、进度和问题。 - res 文件夹:可能包含游戏的其他资源文件,如图片、声音等。 - Map 文件夹...

    游戏脚本系统的demo

    游戏脚本系统是一种在游戏中实现动态行为和交互的关键技术,它允许开发者通过编程语言来控制游戏逻辑,而无需深入到游戏引擎的核心代码。"游戏脚本系统的demo"是针对这一主题的一个示例,提供了实践操作的经验,尽管...

    赫赫大名的A*寻路算法(vb.net版本)

    在网上看到一篇A*寻路算法的译文 http://data.gameres.com/message.asp?TopicID=25439 按此原理写了以下程序另外补充:1.此算法不是最短路径算法. 2.在实际应用中肯定还需要优化,以适合具体游戏. 3.(vb.net2005测试...

    VC版重装机兵(MetalMax)(游戏+源码)

    作品发布:http://data.gameres.com/showmessage.asp?TopicID=163262 如下为作品相关信息,如有转载,请详细标明如下相关信息,以示尊重!! ==================作品信息================== 名称:MetalMax 作者:...

    编程新手真言,转自gameres

    编程新手真言,转自gameres

    游戏中Windows中文输入法的处理类

    代码说明 ---------------------------------------------------- 这是一个Win32的窗口应用程序工程。 用于调试与游戏环境类似的非图象部分...该程序参考了www.gameres.com中的一个输入法例程,在此对原作者表示感谢。

    huluwa.rar_GBGM.m_c++ 锁_huluwa官网_www. huluwa .com

    本压缩包文件"**huluwa.rar_GBGM.m_c++ 锁_huluwa官网_www.huluwa.com**"可能与一个名为"Huluwa"的游戏或软件相关,它似乎使用了C++语言,并涉及到了互斥锁(Mutex)的概念。"GBGM.m"可能是项目中的一个模块或者类名...

    50个论坛地址

    - **GameRes**(http://www.gameres.com/): 游戏开发资源和技术交流的论坛。 - **17173**(http://www.17173.com/): 以游戏资讯为主的论坛,但也包含一定的游戏开发内容。 - **52RD**(http://www.52rd.com/): ...

    Parallel World 3D场景漫游

    《Parallel World》为网友dongch007原创的3D场景漫游示例Demo,内含天空、陆地、湖泊、植被、建筑、角色动画、UI及场景特效等诸多场景必备元素,...原帖地址:http://data.gameres.com/showmessage.asp?TopicID=131818

    Dx9 SDK DirectShow开发

    - www.pudn.com.txt:这个文件可能是从网站pudn.com下载资源的说明,可能提到了获取更多DirectShow开发相关资源的链接或信息。 - Include:这个目录应该包含了DirectX 9 SDK的头文件,供你的项目引用。 - Lib:这个...

    正则表达式解析库

    String email = "example@example.com"; Matcher matcher = pattern.matcher(email); boolean isValid = matcher.matches(); ``` 在提供的压缩包文件中,我们可以看到几个可能与正则表达式解析库相关的文件: 1. `...

    Pro.OGRE.3D.Programming 中文PDF版本

    - **论坛**:[http://bbs.gameres.com/showforum.asp?forumid=99](http://bbs.gameres.com/showforum.asp?forumid=99) 以上资源为学习OGRE 3D提供了丰富的参考资料和技术支持。 #### 六、总结 《Pro.OGRE.3D....

Global site tag (gtag.js) - Google Analytics