浏览模式: 普通 | 列表
经过几天的算法改进,终于将AO加入了阴影渲染,下一步就是和直射阴影结合,
产生更加真实的光影效果,届时我会写一篇文章讲解一个简化版本的Globel illuminate,
使它适合游戏地形的阴影生成。

下放几张AO效果的图来看看,嘿嘿

军营的战车
uploads/200804/18_204759_ao2.jpg


军营的帐篷战车
uploads/200804/18_204855_ao1.jpg


地形全貌
uploads/200804/18_204936_ao3.jpg


www.azure.com.cn

推荐日志 GPU Gems 3 电子版下载, 不过是E文的

[ 2008-03-21 22:19:45 | 作者: Admin ]
uploads/200803/21_222055_1048020.jpg


,《GPU Gems 3》的目的是让“软件开发和科学研究人员充分挖掘GPU的并行运算潜力”,同时其中描述的技术还能帮助游戏开发人员“创造极其逼真的人物角色、更好的光照效果和粘贴渲染合成效果”,并增强“金融模拟、金融分析,甚至病毒检测,尤其是NVIDIA CUDA编程架构”等非图形类应用。
《GPU Gems 3》英文原版有1000页之多,是GPU硬件编程发烧友的必备宝典。除了NVIDIA,来自业界的20多家公司也都参与了该书的编辑,包括苹果、微软研究院、世嘉、Crytek、EA、Infinity Ward等等,另外还有不少学术机构的贡献,比如美国康乃尔大学、伊利诺斯大学、英国达特茅斯学院、伦敦帝国理工学院、日本东京大学等。

下载地址:
[url]http://www.fs2you.com...

阅读全文...

推荐日志 游戏版本比较的算法

[ 2008-03-21 15:33:20 | 作者: Admin ]
如有转载,请注明http://www.azure.com.cn/

在游戏开发和维护过程中,客户端都是不断更新的,伴随着每一次的更新,都会发布
一个更新补丁包来对旧的客户端进行更新,来使其变成新的客户端,补丁包应该包含
更新成新客户端的最少量资源(最大量资源就是整个新的客户端覆盖旧的)

更新程序通过读一个更新脚本,对旧的客户端进行文件添加,文件覆盖,文件删除等
操作来更新旧的客户端,当更新量比较少比较简单的情况下,更新脚本可以资源整理
人员自己写,但当更新量太大,资源多而杂的情况下,手写更新脚本就变得极容易出
错了,所以有必要开发一个工具自动查找两个版本的差异,自动生成更新脚本。

比较的方法:

假设有两个文件夹A,和文件夹B,A是旧的客户端,B是新的客户端,需要通过算法来
找出两个文件夹的差异,并生成脚本,此脚本即明确的表明一些操作能将A变成B的过
...

阅读全文...
在上次的直接输入IP的聊天工具的基础上,修修改改,完成了一个功能相对完善的聊天工具。
添加了以下功能:
1、 在线用户显示,可直接选择聊天,不用再输入IP地址。
2、用户可以自定义昵称,并能够及时在所有终端得到更新显示。
3、添加单独聊天,和群发的功能,可以向所有在线的用户群发消息。
4、上线自动刷新所有在线用户的用户列表,无需手动刷新。
5、退出自动刷新所有在线用偶户的用户列表,无需手动刷新。
6、异常终止进程,所用在线用户也可以得到此用户的下线信息,及时刷新列表。


以上功能并不是很高技术,但反应了一个聊天工具具备的最基本的功能,当然这个工具还有很多不完善的地方,比如没有文件传输功能,截图功能,希望那位大侠能够完善他了。呵呵。

程序截图:
uploads/200803/17_213027_chat1.jpg


源代码和执行程序下载:
...

阅读全文...

推荐日志 GPU上实现 Mandelbrot Set 的绘制

[ 2008-02-28 17:14:41 | 作者: Admin ]
Mandellbrot Set 的绘制是通过遍历2D复数空间中的点,通过迭代 Zn+1 = Z2n + c 测试其受否收敛 (模<2), 收敛的点就属于 Mandelbrot Set 绘制过程中各种状态赋予不一样的颜色,就可呈现十分绚丽的图案。

标准的 Mandelbrot Set
uploads/200802/28_174147_m1.jpg


改进后的 Julia Set
uploads/200802/28_174255_m2.jpg


rfx 文件下载
点击下载

www.azure.com.cn

优化3D图形渲染通道负载

[ 2008-02-26 13:19:47 | 作者: Admin ]
文章来源:CAD世界网

一般来说, 定位渲染通道瓶颈的方法就是改变渲染通道每个步骤的工作量, 如果吞吐量也改变了, 那个步骤就是瓶颈.。找到了瓶颈就要想办法消除瓶颈, 可以减少该步骤的工作量, 增加其他步骤的工作量。

   一般在光栅化之前的瓶颈称作”transform bound”, 三角形设置处理后的瓶颈称作”fill bound”定位瓶颈的办法:
  • 1.改变帧缓冲或者渲染目标(Render Target)的颜色深度(16 到 32 位), 如果帧速改变了, 那么瓶颈应该在帧缓冲(RenderTarget)的填充率上。

  • 2.否则试试改变贴图大小和贴图过滤设置, 如果帧速变了,那么瓶颈应该是在贴图这里。

  • 3.否则改变分辨率.如果帧速改变了, 那么改变一下pixel shader的指令数量, 如果帧速变了, 那么瓶颈应该就是pixel shader. 否则瓶颈就在光栅化过程中。
...

阅读全文...

自己用编辑器做的场景

[ 2008-02-22 16:06:22 | 作者: Admin ]
湖边的走道

uploads/200802/22_160801_scene1.jpg


山脚下

uploads/200802/22_160858_scene2.jpg


战场上都是尸体

uploads/200802/22_161003_scene3.jpg


营寨中

uploads/200802/22_161105_scene4.jpg


www.azure.com.cn

推荐日志 游戏中虚拟文件系统的设计

[ 2008-02-21 16:21:43 | 作者: Admin ]
由于游戏中相关资源在发布的时候都需要打入包中,但是在平常内部开发和调试中又是使用的非打包的资源形式,为了让这两种方案都能在游戏中实施,必须使用条件编译来选择不同的文件输入输出的API,这样做会带来#ifdef #else 遍布游戏的每个区域,十分混乱,那么有必要设计一种虚拟文件系统的中间对象来分别代理这两种不同的操作。

基本思想就是利用多态来继承一个文件操作的接口类IVirtualFile,再用一个Manager (VirtualFileManager)来管理所有的IVirtualFile对象。

uploads/200802/21_162242_tu1.gif


IVirtualFile 含有文件操作一些基本接口,类似read(), tell(), skip(), seek(), eof(), readLine() 等等。
CommonFile 代表对于硬盘是真实文件的操作类,
...

阅读全文...