Ogre1.7 更新

1649 篇文章 11 订阅
1277 篇文章 12 订阅

Ogre新的版本在年后首次发布了。1.7较之以往的版本有了长足的进步。
由于跟SOC的互动,Ogre 1.7开始慢慢渗透了更多只有商业引擎才有的功能。这得益于最初优良的框架。

下面一个一个道来。

1.改了个名字,似乎是另外一个怪兽。:) 协议改变,现在是MIT了,总之就是更自由了。
2.Sample Browser的引入,社区里有篇写的很详细的文章。很多商业引擎都有,个人觉得实行用其实一般,属于引擎的噱头。以后只需要进行一次资源重建就可以切换包括渲染系统等等东西,不用重新运行可执行文件。
3.使用CMake来构建,好处就不说了,社区里也有帖子很详细。
重点来了啊~~
一.地形系统重大改进。
1. 地形管理从场景管理中独立出来,成为一个可选组建
2. 内置了可编辑功能 (不过功能还不强大哈)
3. 使用了批量渲染。当顶点数量随着LOD递减时,渲染的批次也会递减。最低的Lod渲染批次的数量为1
4. Lod可以实时的与Camera设置进行适配。因此可以方便在不同的视角中使用同样的地形
5. Skirts技术替代了早期的缝合技术来出来地形的裂缝。

这里解释下。Skirts不知道国内通用的翻译是什么。直接翻译成“裙子”也行。大片地形渲染中,不同的Lod层次的地块由于有不共用的顶点所以一定会造成裂缝(Cracks)。老的解决办法就是缝合,通过削减高级别Lod地块的边缘顶点数或者增加低级别地块的边缘顶点数来做过渡。这样的缺点是,无论哪种方法都要重新遍历整块地形然后重新进行三角形剖分。对地形的分页和缓存带来很大的麻烦。
Skirts的做法,则是对每个分块的四条边,在现有的顶点的基础上再延伸出一圈,并且与单个分块的边界共享顶点,而高度值不同,这种延伸出来的一圈叫做“裙子”(Skirts)。蛮形象的把,呵呵。只要保证顶点的高度值足够大,两个分块的裙子可以把裂缝遮挡住。
这种消除裂缝的方式唯一缺点是会增加绘制的三角形数量,但是对于现在的图形处理器来讲,这种三角形数量的额外增加不会带来性能上的下降。

6. 内建了地形的保存和加载,并且是在后台线程里完成的
7. 支持多层材质融合,可配置的采样输入,以及可插件化的材质。
8. 支持生成全局Normal maps和light maps.同样也是在后台线程完成的。


二.Compositor的重大改进
这也是去年实际做项目中遇到的最麻烦的问题。由于不能共享,导致过渡的耗费,让我们不得不放弃了某些后期的效果。现在终于解决了。就是通过了一个叫‘pooled’的东西。

1. 当不同的合成器实例使用一个相同大小和格式的表面时可以被共享,这样可以节省内存。
就是说rendertarget如果设的一样的话,就可以被用来用去了。

2. 系统会帮你侦测这个合成器实例链以避免相互依赖。

3. "pooled"需要在定义纹理时显式被激活。注意下,这个激活不是默认的。因为一旦它被激活,你就没法完全看到那些作为中间过程的纹理了。(因为他们可以通过共享的方式互相传递(ping-ponging),或者叫反射吧);但是如果用户又恰好需要,所以就设置了默认不激活。

其实很好理解,就是说如果"pooled"被激活,那么那些被用来ping-ponging的纹理就得不到了,因为不作为最终结果的图不会被保存,那个被共享的rendertarget会被反复擦写。所以说,你如果到最后又想用那些图,就不能激活"pooled"也就是说,使用默认了就可以了。

4. 另外一个就是可以在运行时,交换两个Compositor。Technique现在都有一个自己的名字"scheme"。交换的时候只要通过名字来所以就可以了。不用麻烦的再去用大量的宏定义去判断什么的,以前做法是判断硬件是否支持啊,或者自定义几种表现方式啊。现在都不用了。因为那样看起来会很乱。

5. 现在也可以保存和共享一个用过的纹理,保证向前向后交换都变得更快。
另外还有一些细节修改:
a.不想继承FSAA的,需要设置下'no_fsaa'。
b.支持逐纹理sRGB gamma校正。
c.跨Compositor的通信。
i.使用chain_scope 或 global_scope 直接可以定义纹理来自于其他的地方。
ii.使用texture_ref,可以直接从其他Compositor或公共部分引用一个纹理。
d.Compositor代码之间连接被改进了
i.可以自定义一个合成器pass。不仅仅是quad/scene/clear啦。要用render_custom来激活这个自定义的类型。
ii.可以自动使用CompositorLogics,来使compositor和相关的代码连接(例如使用一个compositor监听者)

PS:compositor这种东西在其他引擎中还很少见到,原因是涉及的东西太复杂,不好抽象,如果限制太多,后期做起来就很困难。Ogre算是一个尝试把,不是实际用起来还是有不少地方不太方便使用。等大牛们慢慢重构把,希望以后对后期制作方面的设计是个帮助。

 

三:增加了几个很牛X的组件
1.RTSS组件。

这个太强了,以前材质脚本都需要一个懂美术&懂技术的人员来搞定。现在不用了,在画面上点点UI,保存下,就完成了一个Shader文件。并且里面支持per-pixel lighting, normal mapping and shadows等更多内容。
已经有点gamebryo的意思了。GB里做的只是把这个生成Shader的方式跟Max结合到了一起。而作为Ogre我也觉得应该有自己的一套pipeline,并且集成好用的工具提供给游戏开发人员。现在看到个雏形,挺高兴。
实现过程其实还是蛮复杂的,特别是构建一个ShaderTree系统,具体的关于Gamebryo的实现,做个广告,http://www.guibian.com。可以去我Blog看罗。
另外,我觉得这还不够帅,按照这样发展下去,SOC2010应该能作出类似UE3的东西,就是拖拖拉拉出Shader。至少我觉得在Ogre现有框架下实现并不复杂。

2.分页组建。
新的分页组件从场景管理器中独立开,分拆成为几个不同的可选组件。
插件化的策略组件来控制场景中的分页。插件化的内容组件来控制分页的内容。
插件化的集合组件用来组合不同的分页(比如 在一个页中分出多个LOD级别)

四:支持Iphone
估计地球人都知道了,自己去看代码把。很多Objective C的东西,看起来很亲切把。:) 我的Ip已经能跑起来了。就是速度还有待提升。另外别忘了先预解析一下材质脚本,不然解析Shader很费电。 - -||


五:几个不加解释的翻译
1. 场景管理器的修改,可以中途暂停一帧的渲染(比如通过在一个过程中使用回调函数),暂停后可以触发另一个渲染,最后在恢复。这是之前在商业引擎中看到的。而且是个很有用的功能。
2.添加了一个选项可以手动触发阴影图的更新,比方在有特殊光照的时候。
两个方法结合起来很有用。当有多重shadowmap的时候,纹理就可以被重用了。
其实还是Compositor里的东西,另外跟DS有关。

抗锯齿的改变
1.支持CSAA,dx9和10中可以使用。
2.简化了并标准化了AA的设置。
在Root的config选项里。所有情况下都加FSAA,组合上一个采用方式和一个提示字符串。通过空格分隔。
在createRenderWindow的miscParams参数上你可以提供 "FSAA" 和 "FSAAHint"参数,前面是这个采样的倍数,后面是一些提示(例如质量)
PS:怎么跟gamebryo越来越像,怀疑google code这些家伙是GB的倒戈。

光照的改变
1.阴影摄像机的远近裁减面设置支持每盏灯光。
2.可以通过调用MovableObject::setLightMask来设置渲染物体mask光照,一个可渲染物体的掩码与灯光掩码按位求与,如果是0,灯光就被排除。

LOD的改变
LOD不再使用距离作为度量来区分了。
LOD策略现在在材质和网格上都能被设置,或者按照距离,或者按照像素数。当然也可以很方便的添加新的策略。
STL容器
所有的STL 容器现在使用自定义的内存分派。

优化
固定管线的光照状态更加智能化,为了处理物体数量巨大的时能发挥更好的性能。
着色器参数更新现在更加有选择性了,减少不必要的更新。

GpuProgramParameters改变
多个cg程序或者材质基本中需要共享的参数可以在一个地方定义和更新。代码看这里:GpuProgramManager::createSharedParamerers
当Gpu程序的基类被改变或者重加载以后,参数会自动被移植。改变后任然可以使用的参数将合并到新的参数中去。

文件系统的改变
支持创建和移除文件(仅在FileSystem中有效)

DataStream的改变
可写数据流也支持了(同样仅在FileSystem中有效)

加了一个新的类StreamSerialiser,是读写二进制数据格式的新方法。

PS:看到Ogre开始也要用流格式来管理数据了

RenderWindow的改变
可以自定义v-sync的刷新频率。并且硬件也要支持。

视口的改变
增加了一个clear方法来手动清除任何 颜色/深度/模板的组合,这个指定值不执行更新操作。

图片的改变
增加了 loadTwoImagesAsRGBA 和 combineTwoImagesAsRGBA 这两个方法,使用它可以更容易的构造 法线/高度图 和 漫反射/高光图等组合

线程也做了修改,大家自己去看把。


总结下,这次新版本作出的改变。感谢SOC的那帮牛人,Ogre越来越向着一个易用的引擎靠拢。开始借鉴很多商业引擎不错的地方。开始慢慢解决在实际项目中遇到的问题。而他优良的扩展性被体现的很明显。最初项目开发的时候,我们发现Ogre其实有很多"bug",之所以有个引号,是因为那不叫真正的Bug,由于Ogre在游戏项目中不太经常的出场率,造成很多引擎设计上没有考虑到的问题,不过我发现这个版本很多的新功能都弥补了那些缺陷。这些可喜的结果我相信在SOC2010后还会有个飞跃~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值