Azure Product
浏览模式: 普通 | 列表
分类: 个人作品 | 1 | 2 | 3 | 4 | 5 | 6 | >

推荐日志 实现一个通用的调试控制台

[ 2010-01-15 17:14:47 | 作者: Admin ]
游戏是种实时渲染的程序,有时候需要LOG一些重要的信息供程序员调试判断,有时候也需要从键盘接收指令,比如“lighting on” 打开光照,"showbox true"显示包围盒。这时我们就需要一种叫控制台的组件,你也许会说我们可以利用游戏的聊天窗口来兼职控制台的功能,但是在我看来这样很不好,何况在聊天窗口还没有做之前我们该怎么办呢?在这里我更倾向另开一个调试控制台进程来处理LOG信息,我的目的是在不同游戏中尽可能的复用调试控制台。

由于控制台是独立于游戏的另外进程,所以这里涉及到进程间的通信问题,在这里我选择了利用WM_COPYDATA消息来实现。要实现一个进程发送消息,另外的进程接受消息。首先两点要定义相同的数据结构体,关于结构体我定义在LogStruct.h中,定义如下:
enum LogType
{
  LT_INFO = 0,      //一般信息
  LT_DEBUG = 1,      //调试信息
...

阅读全文...

推荐日志 CEGUI中实现超链接(Hyperlink)演示

[ 2009-03-20 14:18:55 | 作者: Admin ]
通过3个星期对CEGUI的研究和改写,现使CEGUI支持了文本协议的解析和超链接的响应。
主要是要修改String类,使其中每个CHAR都拥有格式属性,然后当String传递到Font中drawLine的时候,解读出String中每个Char的显示属性,而采用不同的绘制策略。
同时还需要修改MultiLineEditBox来,添加一个开关在超文本一般文本中进行切换。
添加的比较核心的代码就是一个HyperText Parser了。
暂时支持的文本协议请见DEMO

效果图如下:
uploads/200903/20_142140_hyperlinkdemo.jpg

...

阅读全文...
牛蛙社游戏开发团队拥有经验丰富的业内从业人员,完善的游戏解决方案,有成熟的商业计划书, 已经积累了一套完善的游戏引擎以及游戏开发工具,可以快速开发各种类型的网络游戏。

本DEMO使用了部分《天龙八部》的游戏资源,只为技术演示使用,无任何的商业目的,任何个人和团体严禁使用本DEMO资源进行任何形式的商业用途,由此所产生的任何后果,本团队概不负责!

DEMO截图:

uploads/200812/19_170435_tlbb1s.jpg

uploads/200812/19_170446_tlbb2s.jpg

uploads/200812/19_170605_tlbb3s.jpg

uploads/200812/19_170619_tlbb4s.jpg


下载后请先看 “读我先.txt”
...

阅读全文...

推荐日志 SSAO实现(Use RenderMonkey)

[ 2008-11-03 16:37:11 | 作者: Admin ]
SSAO 全称为 Screen Space Ambient Occlusion (屏幕空间的环境遮挡),它可以参数实时级别的环境遮挡效果,效果在视觉上相对比较真实,其最先运用于 Crysis(孤岛危机) 游戏中。通过对相关文档的阅读,我也在RenderMonkey上实现出此技术。

AO的计算需要顶点周围的几何信息,但在一个顶点里面获得其他顶点的信息是不符合现在显卡的构架的(违背并行处理构架),那么我们怎么获得某个顶点周围的信息呢,答案是把顶点信息渲染到纹理。
首先把模型变换的视空间,然后把顶点的XYZ信息渲染到一张浮点纹理中去,这样在下个PASS中就可以查询此纹理获得一系列顶点的信息了,从而为AO运算做下了数据支持。

再一个PASS就是真正计算AO的PASS了,画一个SCREEN QUAD,然后存取前一个浮点纹理的像素,这里取得所有像素都不再代表颜色而代表插值过来的VIEW空间中的顶点坐标。
...

阅读全文...

RenderMonkey 实现草图渲染

[ 2008-10-30 16:59:13 | 作者: Admin ]
阅读了 GPU Gems 2 上的草图渲染, 自己也仿照的用RenderMonkey实现一次,实现的关键就是用一张噪声图来扰动线框纹理和基色填充纹理,来模拟那种快速作图,草率着色的感觉。。

一些效果图:

uploads/200810/30_170441_caotu1.jpg

uploads/200810/30_170541_caotu2.jpg

uploads/200810/30_170626_caotu3.jpg


rfx文件下载:
点击下载

www.azure.com.cn
在上次的直接输入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
uploads/200705/15_173703_depthoffield.png


实现方法:
景深其实就是对blur filter的一种改进,使其对每个像素的blur程度都有所不同,
而blur的依据就是场景的深度和当前焦距之间的关系。

1.渲染深度到纹理。
相关SHADER如下:
//AdaptDepthVS.cg
//取得顶点的深度值,并且插值到PS中去

uniform float4x4 modelViewProj : state.matrix.mvp;
uniform float farclip;  //远裁剪面距离

void main(float4 inPos : POSITION,
     out float4 oPos : POSITION,
     out float oDepth : TEXCOORD0)
{
...

阅读全文...

推荐日志 一个标准的Blur Filter演示

[ 2007-05-14 13:51:12 | 作者: Admin ]
uploads/200705/14_135347_blurfilter.png


其实其PS代码非常简单,就是个遮罩算法。
相关代码摘录,
PS代码:
//Blur Filter
//www.azure.com.cn

uniform float gViewportInvX;
uniform float gViewportInvY;
uniform sampler2D gTexture;

float4 main(float2 texCoord : TEXCOORD0) : COLOR
{
  float4 col = float4(0,0,0,0);
  
  col+=tex2D(gTexture,texCoord + float2(-1.0*gViewportInvX ,-1.0*gViewportInvY)) * (1.0/16.0);
  col+=tex2D(gTexture,texCoord
...

阅读全文...

RayTrace Renderer Use Ogre Source Code Released

[ 2007-02-14 09:38:28 | 作者: Admin ]
大家新年快乐

我以前用Ogre写了一个简陋的光线追踪渲染器,
现在我决定把源代码开放,也为大家学习图形学做点贡献。
此渲染器的效率不高,没有考虑太多的优化问题。
如果有兴趣可以逐步完善它啊 。

这里是我新渲染得一张效果图,
花了23563秒,
递归深度为4,
开启软阴影,反射,折射,和diffuse + specular光照。

uploads/200702/14_095157_result7.jpg


源代码这里下载(Source Code Download Here):
点击下载

还有一些资源请到这里下载(Other Resource Download Here):
...

阅读全文...
ħ˽ ħ˽ : ϲ ϲվ ϲʿ ϲʿ ϲʿ ϲվ ϲ ϲվ ϲ ϲ ͸۾ ˽ ѾѾַ document.write("");