3D游戏引擎RedEngine介绍( Introduction of 3d game engine RedEngine)
Saturday, August 18th, 2012支持技术(Features):
Graphics:
Phong Shader(Normal,Specular)
Emissive Map
Environment Map
HDR(High Dynamic Range)
Deferred Lighting
Motion Blur
Volume Light
PCF Soft Shadow
SSAO(Screen Space Ambient Occlusion)
DOF(Depth Of Field)
SSS(Subsurface Scattering)
Octree/Frustum Occlusion Culling
Model & Animation:
Billboard
Instance Model
Height Field
Particle System
Skeletal animation
Physics(supported by Nvidia PhysX wrapped by StillDesign):
Rigid Body
Cloth simulation
Fluid simulation
Ragdolls simulation
……
Script:
LUA Script language support
Audio:
Fmod support
Misc:
Camera Track
Game Script Manager
Particle Editor
User Interface
简介(Introduction)
开发于2009~2011,最初是学习用小程序,经过多次的重构以后,变得结构清晰,方便扩展,添加了一些基本游戏引擎应该有的组件,包括物理,脚本,声音的支持与管理。
引擎使用的API是微软的XNA。关于API,由于是在.NET Framework上运行的,所以语法的问题不再成为困扰,可以专心来学习图形学和引擎运作的算法,但弊端也十分显著,XNA很难成为开发大型游戏的工具,运行环境严重被限制,只能支持DirectX9.0c,shade model 3.0,所谓次世代的技术几乎都不支持。于是转战OpenGL(RedEngine GL),目前也正在学习DirectX 11,以适应新时代的变化。
注:引擎所使用的技术都是过时的技术,在此仅做介绍。
这些都是早期的开发中的截图,上图是普通的albedo/diffuse输出+HDR,blur filter。此处已经有骨骼动画(skeletal animation)、骨骼绑定(bone attach)等动画功能,其他的渲染输出(normal map/depth map/etc…)在此就不贴出来了。
这张是延迟照明(Deferred Light)的色彩输出,能支持大量光源的渲染技术,此处有平行光与点光源,可以看到地上的光源数量非常多,通过法线贴图(normal),高光贴图(specular)实现的Phong shade。
这是阴影(shadow)的截图,PCF的软阴影,当然咱得承认这里没有PSSM、CSM之类的大规模阴影技术,虽然现在有了,当时没做真是个败笔。
动态模糊(Motion Blur),这里是Object Motion Blur,从DirectX SDK和别人的一些例子里找的参考,这里没有Cryengine里的Camera Blur的技术,还是传统的逐帧模糊。效果是最好的。
景深(Depth of field),同样是传统的做法,gl里会简单很多,NV的例子里做的更漂亮,不过这里就用最原始的做法好了,支持远景和近景模糊。
这张是SSAO,当然这张是很早以前的截图了,尝试了很多的方法,包括Game Programming Gems,Blizzard的SSAO,Crytek,Gamedev上面外国人讨论的好几个做法。这张的SSAO并不是最终敲定的AO,在我的游戏Castle Quest里面可以看到最终确定的AO版本。
次表面散射(Subface Scattering),这里使用的是GPU Gems上给出的算法。虽然公式中全部都是简化模型,但最终做出来的效果非常漂亮。
容积光(Volume Light),同样是参照GPU Gems上的原始方程计算出来的,效果看起来很棒。
布娃娃(Ragdoll),在Nvidia PhysX SDK中看到这么一个例子,就试着在引擎中实现了一下,图是引擎连接至PhysX Visual Debugger以后的截图,全场景都是在附加物理引擎的情况下运行的。
还有其他的一些功能和引擎的具体实现技术在这里不作介绍,一是限于篇幅,一是这些技术我想网上的参考资料与书上的内容会介绍的更详细吧。这个引擎也不准备继续再进行开发了,这也是没有截新图的原因,另一个原因是我来这边以后带过来的只有已经成为游戏的Castle Quest,也不会再加载以前的场景专门为一篇博文截个图。本文存档,记录下开发过的一些程序。