实现一个通用的调试控制台
[ 2010-01-15 17:14:47 | 作者: Admin ]
游戏是种实时渲染的程序,有时候需要LOG一些重要的信息供程序员调试判断,有时候也需要从键盘接收指令,比如“lighting on” 打开光照,"showbox true"显示包围盒。这时我们就需要一种叫控制台的组件,你也许会说我们可以利用游戏的聊天窗口来兼职控制台的功能,但是在我看来这样很不好,何况在聊天窗口还没有做之前我们该怎么办呢?在这里我更倾向另开一个调试控制台进程来处理LOG信息,我的目的是在不同游戏中尽可能的复用调试控制台。
由于控制台是独立于游戏的另外进程,所以这里涉及到进程间的通信问题,在这里我选择了利用WM_COPYDATA消息来实现。要实现一个进程发送消息,另外的进程接受消息。首先两点要定义相同的数据结构体,关于结构体我定义在LogStruct.h中,定义如下: ...
阅读全文...
由于控制台是独立于游戏的另外进程,所以这里涉及到进程间的通信问题,在这里我选择了利用WM_COPYDATA消息来实现。要实现一个进程发送消息,另外的进程接受消息。首先两点要定义相同的数据结构体,关于结构体我定义在LogStruct.h中,定义如下:
enum LogType
{
LT_INFO = 0, //一般信息
LT_DEBUG = 1, //调试信息
{
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。
效果图如下:
...
阅读全文...
主要是要修改String类,使其中每个CHAR都拥有格式属性,然后当String传递到Font中drawLine的时候,解读出String中每个Char的显示属性,而采用不同的绘制策略。
同时还需要修改MultiLineEditBox来,添加一个开关在超文本和一般文本中进行切换。
添加的比较核心的代码就是一个HyperText Parser了。
暂时支持的文本协议请见DEMO。
效果图如下:
...
阅读全文...
牛蛙社技术DEMO - 山寨版《天龙八部》
[ 2008-12-19 16:55:08 | 作者: Admin ]
牛蛙社游戏开发团队拥有经验丰富的业内从业人员,完善的游戏解决方案,有成熟的商业计划书, 已经积累了一套完善的游戏引擎以及游戏开发工具,可以快速开发各种类型的网络游戏。
本DEMO使用了部分《天龙八部》的游戏资源,只为技术演示使用,无任何的商业目的,任何个人和团体严禁使用本DEMO资源进行任何形式的商业用途,由此所产生的任何后果,本团队概不负责!
DEMO截图:
下载后请先看 “读我先.txt”
...
阅读全文...
本DEMO使用了部分《天龙八部》的游戏资源,只为技术演示使用,无任何的商业目的,任何个人和团体严禁使用本DEMO资源进行任何形式的商业用途,由此所产生的任何后果,本团队概不负责!
DEMO截图:
下载后请先看 “读我先.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空间中的顶点坐标。
...
阅读全文...
AO的计算需要顶点周围的几何信息,但在一个顶点里面获得其他顶点的信息是不符合现在显卡的构架的(违背并行处理构架),那么我们怎么获得某个顶点周围的信息呢,答案是把顶点信息渲染到纹理。
首先把模型变换的视空间,然后把顶点的XYZ信息渲染到一张浮点纹理中去,这样在下个PASS中就可以查询此纹理获得一系列顶点的信息了,从而为AO运算做下了数据支持。
再一个PASS就是真正计算AO的PASS了,画一个SCREEN QUAD,然后存取前一个浮点纹理的像素,这里取得所有像素都不再代表颜色而代表插值过来的VIEW空间中的顶点坐标。
...
阅读全文...
RenderMonkey 实现草图渲染
[ 2008-10-30 16:59:13 | 作者: Admin ]
阅读了 GPU Gems 2 上的草图渲染, 自己也仿照的用RenderMonkey实现一次,实现的关键就是用一张噪声图来扰动线框纹理和基色填充纹理,来模拟那种快速作图,草率着色的感觉。。
一些效果图:
rfx文件下载:
点击下载
www.azure.com.cn
一些效果图:
rfx文件下载:
www.azure.com.cn
局域网聊天工具,更新,功能相对完善(附代码)
[ 2008-03-14 12:19:23 | 作者: Admin ]
在上次的直接输入IP的聊天工具的基础上,修修改改,完成了一个功能相对完善的聊天工具。
添加了以下功能:
1、 在线用户显示,可直接选择聊天,不用再输入IP地址。
2、用户可以自定义昵称,并能够及时在所有终端得到更新显示。
3、添加单独聊天,和群发的功能,可以向所有在线的用户群发消息。
4、上线自动刷新所有在线用户的用户列表,无需手动刷新。
5、退出自动刷新所有在线用偶户的用户列表,无需手动刷新。
6、异常终止进程,所用在线用户也可以得到此用户的下线信息,及时刷新列表。
以上功能并不是很高技术,但反应了一个聊天工具具备的最基本的功能,当然这个工具还有很多不完善的地方,比如没有文件传输功能,截图功能,希望那位大侠能够完善他了。呵呵。
程序截图:
源代码和执行程序下载:
...
阅读全文...
添加了以下功能:
1、 在线用户显示,可直接选择聊天,不用再输入IP地址。
2、用户可以自定义昵称,并能够及时在所有终端得到更新显示。
3、添加单独聊天,和群发的功能,可以向所有在线的用户群发消息。
4、上线自动刷新所有在线用户的用户列表,无需手动刷新。
5、退出自动刷新所有在线用偶户的用户列表,无需手动刷新。
6、异常终止进程,所用在线用户也可以得到此用户的下线信息,及时刷新列表。
以上功能并不是很高技术,但反应了一个聊天工具具备的最基本的功能,当然这个工具还有很多不完善的地方,比如没有文件传输功能,截图功能,希望那位大侠能够完善他了。呵呵。
程序截图:
源代码和执行程序下载:
...
阅读全文...
GPU上实现 Mandelbrot Set 的绘制
[ 2008-02-28 17:14:41 | 作者: Admin ]
Mandellbrot Set 的绘制是通过遍历2D复数空间中的点,通过迭代 Zn+1 = Z2n + c 测试其受否收敛 (模<2), 收敛的点就属于 Mandelbrot Set 绘制过程中各种状态赋予不一样的颜色,就可呈现十分绚丽的图案。
标准的 Mandelbrot Set
改进后的 Julia Set
rfx 文件下载
点击下载
www.azure.com.cn
标准的 Mandelbrot Set
改进后的 Julia Set
rfx 文件下载
www.azure.com.cn
Depth Of Field With Cg DEMO(Cg实现景深,附代码)
[ 2007-05-15 17:33:53 | 作者: Admin ]
实现方法:
景深其实就是对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)
{
//取得顶点的深度值,并且插值到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 ]
其实其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
//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 ]
























