高手做的地形与光照非常强(转,但是不知道文章的出处了)

原创 2007年09月22日 22:11:00

室外渲染有很多课题,我只做了室外地形渲染、光照阴影、水面渲染等基本的课题。本来这些课题就有多种多样的思路和算法,我将我的一些思路写出来与大家分享,希望对大家有帮助,也希望有自己不同见解的师兄能分享你的思路和方法。

  
下面分别介绍。
   1
:地形渲染。采用GeoMipmaps技术,2lod4层地形纹理,一张全局光照图(假如光照图是每像素对应每个顶点光照值的话,可以在初始化时将光照图中每个顶点的值写进顶点的diffuse,ps中可少用一张纹理,本文也是这样。当然你可以用更大的光照图和更细致的地形光照计算方法来生成), 一张控制4层纹理混合权重的纹理图(3颜色通道混合4层纹理,alpha通道预留在后面的阴影通道)wow中一个pitch64x64的纹理图来混合多层纹理和地形的shadow map.(由于地形编辑器暂时只支持全局的4层地形纹理设置,我也没有去手工设定每个patch4层纹理,所有看上去还没有wow地形那么丰富和细腻).高度图读取顶点高度数据,高度图在地形辑器里编辑.(形高度图的高度数据生成和地形光照图的生成算法可以参考《Focus.On.3D.Terrain》,那里也有其他地形渲染不错的资料)。地形渲染如下图:

  


   2
:水的渲染。和wow水一样的渲染,同样也有人发表过这个水渲染的帖子和源代码了。D3DTOP_ADD D3DTA_TFACTOR一个给定颜色,可以在设置水的颜色,再加上alpha 通道的值。30张纹理轮换交替形成水波荡漾状。最后D3DRS_ALPHABLENDENABLED3DBLENDOP_ADD。如果不要透视效果,就是和水底的纹理混合的话,不做ALPHABLENDE就是了。水渲染如下图:


   3:
光照和阴影。阴影用的是hw shadow map技术,静态的物体的shadow map预先一次算好。(实时阴影psm,tsm技术个人觉得在实际游戏应用中每帧2次渲染遮挡体,如果物体多了速度就慢了)。shadow map有精度问题,下面3张图分别是3个物体同在一个shadow map512x512256x25664x64大小时候的阴影渲染情况。物体投射在地形的阴影,如前面地形渲染说的,可以用投射纹理的办法算进纹理混合权重控制图里的alpha通道。正如Gpu Gems上所说的样,物体投影在地形上的阴影才是玩家最看重的样,我们可以用模糊阴影来预先算进alpha通道,这样最后渲染的时候加快了地形的渲染,又可以尽量避免锯齿现象。
 
物体自我的遮挡阴影如果被遮挡的像素与遮挡面中对应的像素离的很近的话,精度问题就难避免了,这时就会出现斑马纹了。(wow中小物体上自我遮挡阴影好像没有用,感觉是在diffuse上抹上去的,这个是猜想,有待实践)。动态物体的阴影暂时还是像wow一样用椭圆的阴影贴在地面,至于怎样快速计算动态的实时光照那时另外一个课题(暂时打算参考游戏编程精粹上的算法)。
   512x512shadow map
如下:


   512x512shadow map
在地形阴影中加入模糊如下:



  
本来还打算加上镜头光晕,体积雾,现在快过年了,又没那个心思了。室外图形渲染还应包括动态云层,天气效果等等。但是下一步计划研究下室内渲染的课题后,在成都找家游戏公司研究下实际商业引擎中的技术,剩下那些只好以后有空再研究。按照轻重缓急,先把基本重要的东西做出来再说。
(附:有对图形渲染技术和引擎技术有研究,愿意和我交流的朋友,

EMAIL留言--Email:windrunner17@163.com.
 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

一篇告诫正在学习以及将要学习计算机的同学的文章【找不到原作者及出处非常抱歉】

我始终认为,对一个初学者来说,IT界的技术风潮是不可以追赶的,而且也没有能力去追赶。 我时常看见自己的DDMM们把课本扔了,去卖些价格不菲的诸如C#, VB.Net 这样的大部头,这让我感到非常痛心。...

请高手指点,PHP问题,解密出一个文件,不知道这个是什么用的,怎么使用,谢谢好友指点

请高手指点,PHP问题,解密出一个文件,不知道这个是什么用的,怎么使用,谢谢好友指点 这个文件怎么使用才行 请高手指点,这应该是DRP的一个许可证之类的,具体还有待验证

尚学堂OA碰到 不知道怎么注解如何Map和List集合 希望高手解答

希望用Annotation注解来做   问题1 首先是List集合的 原来的   FormField类:   /**  * 表单域  *@hibernate.class table="...

高手才知道!七个你所不知道的 D3.js 秘技

D3.js ,当前最火红的视觉化套件,你用过了吗?越来越多人使用 D3.js 来开发视觉化专题,但… 你对 D3.js 的了解又到哪里呢?这次我们就带大家一起来看看一些 D3.js 很重要、大家却又...

浅谈《战地3》光照反射/曲面细分地形/SRAA反锯齿

EA DICE,全称EA Digital Illusions Creative Entertainment AB,也称DICE,是美国艺电旗下的一个游戏制作工作室,总部位于瑞典斯德哥尔摩。EA DIC...

我以我近如职场不足一年经验的我 写下了这篇 我不知道是不是我傲气的文章!

时间过的好快,转眼间毕业就快一年了,哥们我是个搞java的或许很多东西都是根深蒂固的!在前不久我辞掉了我的第一份工作,是一个搞汽修网站的。    来到了我现在的公司  一个做游戏的(是一份搞数据库的工...

不知道作文怎么写?看一看MindManager在文章写作方面的应用

MindManager的资料整理和文章写作功能非常强大和方便,它能够帮助在资料的整理、消化、归纳、提取有用部分、组织结构、甚至于快速形成草稿,以及写“参考文献”时起到很大的作用,效率提高明显,使得写作...

你知道 facebook,sina,sohu都用的啥数据库吗?不知道的话请看本文章!(35个非主流的数据库)

35个非主流开源数据库 你知道吗?【IT168 评论】 几乎每个Web开发人员都有自己喜欢的数据库,或自己最熟悉的数据库,但最常见的无外乎以下几种:   MySQL  PostgreSQL  MS...
  • kk5595
  • kk5595
  • 2011-01-04 17:02
  • 10787

经典编程:DLL地狱及其解决方案 文章出处:飞诺网(www.diybl.com):http://www.diybl.com/course/3_program/vc/vc_js/20100630/26

原作者:Ivan S Zapreev      译者:陆其明      概要      本文将要介绍DLL的向后兼容性问题,也就是著名的“DLL Hell”问题。首先我会列出自己的研究结果...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)