3D图形编程

学无止尽

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  4 Posts :: 46 Stories :: 2 Comments :: 0 Trackbacks

常用链接

留言簿(2)

搜索

  •  

最新评论

阅读排行榜

评论排行榜

      GameBryo的材质主要是通过3DMAX的插件进行编辑的,并提供了标准的材质节点。
(在GameBryo中,材质节点的主要作用是负责根据着色过程生成相应的shader代码)这个节点一共有9个通道,并提供了大量可供调整的参数,这样就可以让美术方便的使用逐像素光照、视差贴图、环境体贴图这些效果,在游戏中,GameBryo通过不同的材质属性和不同的光照环境编译出不同的shader代码,以二进制的形式保存在磁盘上,下次启动时载入内存,这样就不用重复编译,但在第一次进入游戏中时会有些延迟。灵活强大的材质是次世代引擎的重要特征,GameBryo在这方面做到了灵活,但是美术仍然不能通过可视化工具控制材质的处理过程,只能编辑资源和修改参数,编辑性还不够强大。
Shader:
       GameBryo提供了一个极具扩展性的shader系统,并将它与艺术创作工具紧密结合。GameBryo定义了自己的shader格式,基于文本的.NSF文件和基于二进制的.NSB文件,.NSF文件编译后生成.NSB文件,这个过程即可以在开发时完成,也可以在运行时进行。 .NSF文件使用的是GameBryo自定义的语法,并使用自己的语法分析器将其编译成相关平台的代码。实际上,GameBryo的shader系统在应用程序和GPU程序之间做了一层封装,屏蔽了不同平台之间的差异,使得应用程序可以用相同的接口来与GPU之间进行交互,而GPU程序最终还是通过cg或hlsl来实现的,这样做的好处是,当平台发生改变时,只需要根据具体的平台来编写相应的shader程序,而不需要去修改应用程序。当然,shader系统也直接支持cg和hlsl格式的文件,使用方法同NSF、NSB文件相似。GameByro的Shader系统提供了一套完整的查错机制,方便使用者对程序进行debug。
GameBryo的shader系统集成到了所有的配套开发工具中,这样就实现了所见即所得,美术在工具中就可以直接看到资源在游戏中的效果,从而提高了开发效率。
GameBryo通过引入自己的shader文件格式为跨平台提供了方便,同时也增加了系统的复杂性,使用起来稍微有点繁琐,开发人员又不得不去熟悉它的语法,如果开发中不考虑跨平台的话,想要自己开发特效,也可以不使用NSF文件,直接使用fx格式的文件。
引擎自带的特殊材质:
AdditiveLightMapsMaterial
AlphaTextureBlender(纹理Alpha混合)
Aniso(各向异性光照)、Halo(光晕效果。)
ASMSkinningLighting(参与光照计算的骨骼动画蒙皮)
ASMSkinningNoLighting(不参与光照计算的骨骼动画蒙皮,效率经过了优化)
BaseBumpWithSpatialGlow(带有辉光效果的凹凸贴图)
Chrome(金属外表,使用基本纹理、漫反射cube map、镜面反射cube map、法线贴图等效果实现类似于金属表面的光泽和质感,并支持基于此效果的蒙皮操作)
Colorize(使用一个自定义的属性来动态的设置或者修改颜色)
FXSkinning and HLSLSkinning(使用可编程渲染管线进行骨骼动画的蒙皮)
GeneralGlow(普通辉光效果)
GeneralDiffuseSpecularGlow(普通镜面反射高光辉光)
GeneralDiffuseSpecular(普通镜面反射高光,支持蒙皮操作)
Dot3BumpMap(凹凸贴图)
Glass (玻璃效果)
OilyFilm(油状薄膜)
LuminanceTransfer(类似于热源侦测仪的效果)
Outlining(蓝图或草图)
ParallaxMapping(视差贴图)
PerPixelLighting(逐像素光照,同时支持固定管线和可编程渲染管线)
SkinnedToe起玩过滤词hadingWithOutline(卡通渲染,支持骨骼蒙皮、描边)
纹理:
       GameByro的纹理系统支持多重纹理、投射纹理、动态纹理、特效纹理,并且使用纹理的一些高级特性是平台无关的。当然GameByro中纹理的功能仍然受限于硬件特征。主要特性和限制见渲染器。
工具及插件:
       GameByro提供了场景编辑器,资源浏览器,资源的物理模型浏览器、动画编辑工具,字体创建工具,以及3DMAX、MAYA插件,材质编辑是在插件中进行的,这套工具包含了完整的3D资源开发流程。
物理系统
GameBryo通过PhysX提供物理仿真模拟,只需几行简单的代码就可以将GameBryo的场景和PhysX建立起联系,不过需要在显式的调用相关接口来进行物理仿真对象和场景对象间的同步,即将物理仿真的结果作用于场景中的对象。同时,还可以通过参数来决定是否需要等待物理仿真运算的结果。这就保证了一定的灵活性,例如,用户可以不对静态物体进行同步,达到优化的目的。还可以通过把更新的接口放在下一次循环开始的时候调用,这样可以减少由于等待物体仿真模拟造成线程的阻塞,充分的利用了CPU资源。
粒子系统:
       GameBryo的粒子系统为3ds max 和 Maya等粒子生成工具提供了完整的插件系统,并完全支持软粒子,即粒子会受到力的影响。
流处理引擎:
       GameBryo实现了一个完全跨平台的流处理引擎。使用者可以方便的利用它完成多线程任务,如资源的加载等,完全发挥多处理器平台的威力,而不用关注底层细节。
      
效率分析:
       为了对GameBryo进行全面的评估,笔者试着对GameBryo的渲染效率进行了简单的测试,本人的机器配置如下:
l         CPU:E2180
l         GPU:2400PRO
l         内存:2GB
基本可以代表当前中低端玩家的配置。
    GameBryo的骨骼动画渲染效率尚可,而室外地形渲染系统的性能稍显不足,再没有角色和植被的情况下,仅能达到22帧左右,如果在实际的游戏环境还要算上其他游戏系统(网络、逻辑、UI等)的性能消耗,这是不足以让玩家流畅进行游戏的,还需进一步手动的优化。
总结:
       GameBryo拥有一套灵活的架构,便于使用和扩展,易于上手;配套的开发工具比较齐全,拥有完整的美术开发流程;完全支持跨平台,便于游戏的移植;同时由于为了保证灵活性,在设计上面比较偏重于功能和扩展,而不是性能。
    高度的可定制性带来的是较低的整合,GameBryo没有提供游戏框架,地图编辑器也仅仅实现了最通用的功能,即地表和物件的摆放。这就说明,如果要使用GameBryo开发产品,就需要自己整合GameBryo,并对其进行一定的修改和扩展。这也是它与UnrealEngine3区别最大的地方。
posted on 2012-06-14 09:50 Nightsky 阅读(700) 评论(0)  编辑 收藏 引用 所属分类: gamebryo

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理