Render_Hacker

Design,Deploy,Destroy!!!

2009年04月10日

原创 World Craft更新: 渲染层

花了很多的时间,终于把渲染层的一些框架都确定了。已经实现了这些 场景分割 可见性判断 batching mesh-model-object层次管理 view-scene管理 特效框架 其余的,都只是框架,现在渲染层唯一缺漏的部分是人物渲染,我依然不确定,虽然做了一年多的人物系统,但是还有很多问题没有解决好,我准备放一下,当然人物系统的渲染是真个人物系统中最简单的,我只是不想现在花工夫写这个部分,因为现在的主要任务是一个场景编辑器。 上面就是截图,虽然还是相当简陋,不过完成这个已经花了我很多的时间。大部分的时间,还是在写基础的代码,场景管理部分。过一段时间,我会详细说说其中的两个部分,view-scene部分,和mesh-model-object层次管理部分。 然后是多线程框架部分,我对此的感觉非常复杂。一方面,非常希望挑战一下多线程框架,我已经试过了写一个简单的demo,把渲染和物理放到两个线程,或者把资源加载和渲染放到两个线程;另一方面,我不想花太多时间在这个可能是个巨大陷阱的地方。。。我之前没有做过大型的多线程程序,我确定里面肯定阅读全文>

发表于 @ 2009年04月10日 00:08:00|评论(loading...)|举报|收藏

2009年03月23日

原创 World Craft更新:纹理可视化,属性栏,以及模型格式

先上图再说: 三个图是编辑器的三个tab页面。现在的资源浏览,已经支持了常用的一些纹理格式,比如dds,png,tga。。。当然,我的工作很简单,只是把freeimage的结果反映到dc上面去。地形绘制方面,修改比较小,都是方便性的修改。然后最右边一幅图,我要感谢wxPropertyGrid的作者,写了这么一个方便的控件,添加新的类型也会非常方便。我还加上了xml的解析,动态的配置属性栏的项目。虽然在wxWidgets中有xrc的支持(界面的xml序列化),但是我觉得不够习惯,因为ui既然是程序的一部分,我更希望它是以code的形式存在,这样我就少一些精力维护xrc的工程。 最后是模型的格式问题,在继续开发之前,模型的格式问题要先解决。先说说现在的内建mesh的抽象,内建的mesh已经差不多稳定了,可能material相关的地方,还需要考虑,还有就是需要动态deformed mesh,那个还没有设计好(因为算法还不够熟悉),对于人物系统的渲染,在mesh中只有最核心的一些底层接口,不会涉及任何bone,animation,skeleton类似的东西——————————阅读全文>

发表于 @ 2009年03月23日 22:53:00|评论(loading...)|举报|收藏

2009年03月17日

原创 游戏引擎十大核心竞争力——引言

我希望这个系列的文章能够成为游戏引擎相关资料中的一朵奇葩。实际上,肯定是。在近几年的文章中,有一些东西渐渐消失了,如果你去搜索一些主题,你得到的文章都是04年甚至更早的。而现在,不管是blog、技术论坛,还是qq的技术群,关于游戏引擎的技术讨论也慢慢的偏向了一个方向。那些在游戏行业8年以上的“老”程序员肯定知道我的意思。 我曾经花了很长的时间试图去寻找那些核心竞争力,但是我失败了,我花了太多的时间在一些浮浅的事情上面,在一些急功近利的技术上面,而丢掉了那些最重要的基础问题。我在图形、特效上面花的时间越多,我的代码就越脏乱,我的程序运行也越慢。一天,我想起一些话,那是以前的一位老程序员的话,当然,我当时没有听进去,因为我不够明白其中的道理,直到我走了弯路,才意识到自己的错误。 游戏引擎的十大核心竞争力到底是些什么,请让我卖个关子,也请你继续关注这个系列的文章。不够,可以告诉你,这个系列的顺序,基本上是靠重要性决定的,最重要的放在前面,恩,好的,我想你也许能够猜到第一部分是啥。 这个系列不是泛泛而谈,也不会有“我觉得”、“我认为”这样的态度。写这个系列,我试图本着科学的一种态度,拿出阅读全文>

发表于 @ 2009年03月17日 20:30:00|评论(loading...)|举报|收藏

原创 最近的情况——简单说,辞职了

辞职了。 准备趁这个机会好好补习一下基础。所谓基础,就是指游戏引擎里面最核心的一些东西。上一份工作中,没有机会让我继续以前的学习,之前看的一些基础算法现在都已经忘得差不多了。没有关系,我现在有时间补回来。 我准备花大工夫整理手头的资料,写一些实际性的东西。由于工作关系,我有大概两年的时间,没有写任何纯技术的文章,都是些肤浅的文章,虽然有很多东西很想分享,但是没有办法写。 不过现在情况不一样了。最先献上的,当然是一系列的技术文章,不是稍微谈谈的那种,而是拿出过硬的东西,恩,我习惯称之为“山寨论文”。也许你也猜到了,会是什么。 Good, 这个系列很有挑战性,也很有意义。我终于有机会潜心整理手头的资料,包括,quake3的代码(荒废了1年半的时间没有读),gamebryo,unreal,还有ogre、nebula device引擎的代码。重点会放在开源引擎上面,尤其是quake3,这个以后解释。 好了,这个系列就是《游戏引擎十大核心竞争力》:)。当然我一个人写不好,不过之前的大部分内容由我先开始,后面还有很多有另外的高手补充。 很高兴又能够开始分享一些实际的东西,有很长一阵我都一阅读全文>

发表于 @ 2009年03月17日 11:40:00|评论(loading...)|举报|收藏

2008年12月26日

原创 为什么zBrush这么快?!!

很早以前就接触过zBrush,那大概是那个软件还是2.0的时候,当时就是觉得这个软件设计得太另类太奇葩了,所以没有怎么试试. 这些天,看了一点dt的教程,把zBrush好好的玩了一下,现在的版本是3.1. 用zBrush可以做出好的效果,更方便的雕刻,像玩2D一样的弄3D模型...这些当然是很有趣,但是我更感兴趣的,是zBrush中牛逼的程序设计. 那些什么雕刻啊,贴图画法啊, 对我而言比较浮云... 最让人想不通的就是,为什么这个东西这么快!!! 我做过地形的编辑器, 理论上和zBrush的雕刻是一个故事. 但是我花了很久的工夫,也才能做到那种程度的效率,zBrush怎么就能够轻而易举的做到比我多100倍的数据量,而且效率还是那么高的呢? 我想了很久,大概得出这样的结论: 1. 现在所有的3D建模软件, 基本都是用的显卡进行渲染(当然我自己写的地形编辑器也是这样), 这样有很多好处, 因为显示图形什么的,你只用调用opengl或者dx的api, 速度还挺快的, 而且还有专业的图形卡, 比一般的卡的表现还要好很多. 但是, 在做雕刻的时候, 问题就来了, 大量的多边形, 顶点的阅读全文>

发表于 @ 2008年12月26日 17:15:00|评论(loading...)|举报|收藏

2008年10月07日

原创 WorldCraft v0_1_4 最快的地形编辑器 ;)

国庆期间,我哪里都没有去,潜心写了几天程序。困了就睡,饿了就吃,其他时候,编程。感觉很好,我想应该每隔一段时间就这样闭关几天。 WorldCraft方面,实现了性能上面的突破,地形涂刷方面,是我见过的地形编辑器中最快的。实际上,我只见过一个东西的速度比我这个快,那就是zbrush 3.1,而且那个不是地形的涂刷,而是任意的mesh(的确很牛逼);和zbrush比较,瓶颈主要在gpu方面,cpu的优化工作,已经做得相当好了,我已经没有办法让cpu的过程更快一点了;zbrush是用的软件渲染,所以,涂刷过程的修改不需要让数据经过系统总线,所以他的速度是最快的。下面是最新的截图: 这个是1分钟内做出来的地形,很简单,我都没有怎么调整。加了很多特殊的“笔刷”,地形的细节增强了很多(不过还是不够)。 说说优化的技巧: 1. 地形mesh分块,每块地形的mesh对应全局高度图的一块区域 2. 涂刷过程,针对高度图,然后只更新对应区域内的mesh 3. 地形mesh使用dynamic vertex buffer 4. 只在̶阅读全文>

发表于 @ 2008年10月07日 13:23:00|评论(loading...)|举报|收藏

2008年09月23日

原创 World Craft中的无缝地形实现 v1.0

World Craft中的无缝地形实现 v1.0 熊家煜,QY_TEK Emile:Xjyhust@gmail.com 主页:http://blog.csdn.net/xjyhust 简单说明: 这份文档不是论文,我称之为笔记,或者.note;这份文档free for all,你可以随便使用。如果你想引用,请注明出处http://blog.csdn.net/xjyhust,以及作者 熊家煜。 Ok,由于这个文档只是v1.0,所以缺少很多实际的测试结果,在后面的版本中我会加进来;但是里面的技术是不会有太大的变化的。最后,希望这个文档对你有用。 无缝地形技术简介 mesh部分,使用分块的高度图来保存信息;纹理部分,每块地形使用8张diffuser纹理,4张normal map纹理,使用调色板纹理查询权值进行混合。分别对待场景编辑器和引擎运行时的地形处理方法,使效率和灵活性都能得到保障。 无缝网格的实现 地形的实现,主要针对2D的高度图,保存的精度是float 32bit。为了支持超大的无缝地形,必须将地形进行分块,在运行期间,内存中只保存可视的一块区域。 LOD的实现 阅读全文>

发表于 @ 2008年09月23日 00:38:00|评论(loading...)|举报|收藏

2008年09月13日

原创 开源游戏引擎 World Craft 地形 plan

World Craft现在已经实现了地形的编辑,还支持不同的笔刷: 最终地形的效果比较一般,和其他的游戏里面的简单地形相比没有多少区别,我还不满意。一方面是我没有比较丰富的笔刷,我是直接从zbrush里面弄的一些alpha图,还有就是有drag rect的功能没有做,做完这个功能就应该会好很多。玩过crysis的sandbox,感觉他的地形编辑也是差不多就是这样子,它强大的室外效果还是靠的植被。我相信只要多花点时间,肯定做得不会比他差。不过我还不会在地形上挖洞。。。至少现在还没有仔细想过这个问题。。。 在计划中,关于地形的效果,我参照的不是游戏,而是真是的自然照片,比如:   要是能够实现照片中的80%的效果,我就很满意了。 技术上面,现在已经只实现了无缝地形的高度编辑,并不是很困难,这个部分最麻烦的不过是内存、数组、指针的操作。真正的挑战在纹理上。最近参考资料里面的实现方法不是代价过高不能实时完成,就是效果太烂。简单的重复纹理是现在最常用的方法,但是效果一般。使用全局的纹理,如果纹理不是超级大,效果也是很一般:一般高度图中的两个像素之间的距阅读全文>

发表于 @ 2008年09月13日 23:47:00|评论(loading...)|举报|收藏

2008年09月05日

原创 Torque的Atlas系统很是垃圾

给我一个TGEA的Atlas不垃圾的理由,因为我实在是想不出来了。阅读全文>

发表于 @ 2008年09月05日 12:24:00|评论(loading...)|编辑|举报|收藏

2008年08月26日

原创 开源游戏引擎 WorldCraft v_0_1_1

wxWidgets实在太方便了,我又找到了几个编辑界面的工具,编辑之后得到代码,然后copy到工程中,方便很多。我觉得在几个免费的工具中wxFormBuilder是最方便的,导出的代码的功能也很好: wxWidgets中还有一个wxPropertyGrid,可以写出很丰富的属性编辑框: World Craft的框架已经差不多了,接下去就是完成一些编辑功能了。。。 阅读全文>

发表于 @ 2008年08月26日 18:14:00|评论(loading...)|编辑|举报|收藏

2008年08月20日

原创 开源游戏编辑器 WorldCraft v_0_1

开源游戏编辑器 WorldCraft v_0_1阅读全文>

发表于 @ 2008年08月20日 00:03:00|评论(loading...)|编辑|举报|收藏

2008年08月08日

原创 Gamebryo 游戏引擎分析(二)内存管理

Gamebryo中的内存管理阅读全文>

发表于 @ 2008年08月08日 15:05:00|评论(loading...)|编辑|举报|收藏

2008年08月07日

原创 Gamebryo 游戏引擎分析(一)整体设计

(因为这个引擎是商业引擎,所以,我不会粘贴“源代码”像这样:class OoXx{ public ...};但是我会这样:   So, technically, technically, I don't breaking any laws here. But IF you want fuck me, go ahead, I don't give a shit. ) (另:引用请注明出处 blog.csdn.net/xjyhust,以及声明:全部资料来自互联网,如果对文章内容有意见,请e-mail我: xjyhust@gmail.com;否则管我鸟事,I just come to buy some sauce. ) gamebryo有很多的工程,大概是这样组织的: 核心的库:CoreLib,引擎的核心运行时,包括了这样几个项目: 看名字就知道这些模块的功能。其中NiDXRenderer其实就是NiMain中渲染类的实现。看里面的宏定义就知道,ga阅读全文>

发表于 @ 2008年08月07日 12:19:00|评论(loading...)|编辑|举报|收藏

原创 开源游戏编辑器WorldCraft Plan,mind map

什么是WorldCraft,参考: http://blog.csdn.net/xjyhust/archive/2008/07/24/2702455.aspx 介绍 http://blog.csdn.net/xjyhust/archive/2008/07/26/2713779.aspx 参考 http://blog.csdn.net/xjyhust/archive/2008/07/29/2732192.aspx log阅读全文>

发表于 @ 2008年08月07日 05:54:00|评论(loading...)|编辑|举报|收藏

2008年07月31日

原创 游戏引擎的分层设计

在计算机领域,我们使用得最广的方法,就是抽象、封装。每个系统,都是像洋葱一样,一层接一层,从内到外;每一个组件,都是建立在比其更为底层的基础之上。 依据这个方法来设计游戏引擎,是非常合适的;尤其是一些关键性的组件,我们可以直接替换掉它们,使引擎能够适应新的硬件,新的平台——这些当然很容易理解,但是在实践之中,要始终做到这一点,就非常困难。 最常见的错误就是,各个模块划分不清,也就是说,哪些部分该完成哪些工作并不十分明确。这看似小问题,但其实是软件开发中最头痛的一个问题。可以看一看设计模式,有很多的模式就是专门为了解决这个问题而存在。我们需要进一步提炼程序中的“原子”操作,再将这些“原子”操作放到合适的地方。 避免类爆炸问题。简单的按照功能划分出类,很容易出现类爆炸问题,再加上我们习惯了最简单的扩展、修改类行为的方法——继承,使得引擎中的组件数目不断增多。这阅读全文>

发表于 @ 2008年07月31日 16:47:00|评论(loading...)|编辑|举报|收藏

Csdn Blog version 3.1a
Copyright © 熊家煜