??xml version="1.0" encoding="utf-8" standalone="yes"?>
下面一个一个道来?br>
1.改了(jin)个名字,g是另外一个怪兽。:(x)Q?协议改变Q现在是MIT?jin),M是更自׃(jin)?br>2.Sample Browser的引入,C里有写的很详细的文章。很多商业引擎都有,个h觉得实行用其实一般,属于引擎的噱头。以后只需要进行一ơ资源重建就可以切换包括渲染pȝ{等东西Q不用重新运行可执行文g?br>3.使用CMake来构建,好处׃说了(jin)Q社区里也有帖子很详l?br>重点来了(jin)啊~~
一.地Şpȝ重大改进?br>1. 地Ş理从场景管理中独立出来Q成Z个可选组?br>2. 内置?jin)可~辑功能 (不过功能q(sh)强大?
3. 使用?jin)批量渲染。当点数量随着LOD递减Ӟ渲染的批ơ也?x)递减。最低的Lod渲染Ҏ(gu)的数量ؓ(f)1
4. Lod可以实时的与Camera讄q行适配。因此可以方便在不同的视角中使用同样的地?br>5. Skirts技术替代了(jin)早期的缝合技术来出来地Ş的裂~?br>
q里解释下。Skirts不知道国内通用的翻译是什么。直接翻译成“裙子”也行。大片地形渲染中Q不同的Lod层次的地块由于有不共用的点所以一定会(x)造成裂缝QCracksQ。老的解决办法是~合Q通过削减高别Lod地块的边~顶Ҏ(gu)或者增加低U别地块的边~顶Ҏ(gu)来做q渡。这L(fng)~点是,无论哪种Ҏ(gu)都要重新遍历整块地Ş然后重新q行三角形剖分。对地Ş的分和~存带来很大的麻?ch)?br>Skirts的做法,则是Ҏ(gu)个分块的四条边,在现有的点的基上再延Z圈,q且与单个分块的边界׃n点Q而高度g同,q种延出来的一圈叫?#8220;裙子”QSkirtsQ。蛮形象的把Q呵c(din)只要保证顶点的高度D够大Q两个分块的裙子可以把裂~遮挡住?br>q种消除裂缝的方式唯一~点是会(x)增加l制的三角Ş数量Q但是对于现在的囑Ş处理器来Ԍq种三角形数量的额外增加不会(x)带来性能上的下降?br>
6. 内徏?jin)地形的保存和加载,q且是在后台U程里完成的
7. 支持多层材质融合Q可配置的采栯入,以及(qing)可插件化的材质?br>8. 支持生成全局Normal maps和light maps.同样也是在后台线E完成的?br>
?Compositor的重大改q?br>q也是去q实际做目中遇到的最ȝ(ch)的问题。由于不能共享,Dq渡的耗费Q让我们不得不放弃了(jin)某些后期的效果。现在终于解决了(jin)。就是通过?jin)一个叫‘pooled’的东ѝ?br>
1. 当不同的合成器实例用一个相同大和格式的表面时可以被共?q样可以节省内存?br>是说rendertarget如果讄一L(fng)话,可以被用来用去?jin)?br>
2. pȝ?x)帮你侦这个合成器实例链以避免怺依赖?br>
3. "pooled"需要在定义U理时显式被ȀzR注意下Q这个激zM是默认的。因Z旦它被激z,你就没法完全看到那些作ؓ(f)中间q程的纹理了(jin)。(因ؓ(f)他们可以通过׃n的方式互怼递(ping-pongingQ,或者叫反射吧)(j)Q但是如果用户又恰好需要,所以就讄?jin)默认不ȀzR?br>
其实很好理解Q就是说如果"pooled"被激z,那么那些被用来ping-ponging的纹理就得不C(jin)Q因Z作ؓ(f)最l结果的图不?x)被保存Q那个被׃n的rendertarget?x)被反复擦写。所以说Q你如果到最后又想用那些图,׃能激z?pooled"也就是说Q用默认了(jin)可以了(jin)?br>
4. 另外一个就是可以在q行Ӟ交换两个Compositor。Technique现在都有一个自q名字"scheme"。交换的时候只要通过名字来所以就可以?jin)。不用麻?ch)的再去用大量的宏定义去判断什么的Q以前做法是判断g是否支持啊,或者自定义几种表现方式啊。现在都不用?jin)。因为那L(fng)h?x)很乱?br>
5. 现在也可以保存和׃n一个用q的U理Q保证向前向后交换都变得更快?br>另外q有一些细节修改:(x)
a.不想l承FSAA的,需要设|下'no_fsaa'?br>b.支持逐纹理sRGB gamma校正?br>c.跨Compositor的通信?br>i.使用chain_scope ?global_scope 直接可以定义U理来自于其他的地方?br>ii.使用texture_refQ可以直接从其他Compositor或公共部分引用一个纹理?br>d.Compositor代码之间q接被改q了(jin)
i.可以自定义一个合成器pass。不仅仅是quad/scene/clear啦。要用render_custom来激z这个自定义的类型?br>ii.可以自动使用CompositorLogicsQ来使compositor和相关的代码q接Q例如用一个compositor监听者)(j)
PS:compositorq种东西在其他引擎中q很见刎ͼ原因是涉?qing)的东西太复杂,不好抽象Q如果限制太多,后期做v来就很困难。Ogre是一个尝试把Q不是实际用hq是有不地方不太方便用。等大牛们慢慢重构把Q希望以后对后期制作斚w的设计是个帮助?br>
三:(x)增加?jin)几个很牛X的组?br>1.RTSSlg?br>
q个太强?jin),以前材质脚本都需要一个懂术&懂技术的人员来搞定。现在不用了(jin)Q在画面上点点UIQ保存(sh)Q就完成?jin)一个Shader文g。ƈ且里面支持per-pixel lighting, normal mapping and shadows{更多内宏V?br>已经有点gamebryo的意思了(jin)。GB里做的只是把q个生成Shader的方式跟Maxl合C(jin)一赗而作为Ogre我也觉得应该有自q一套pipelineQƈ且集成好用的工具提供l游戏开发h员。现在看C雏ŞQ挺高兴?br>实现q程其实q是蛮复杂的Q特别是构徏一个ShaderTreepȝQ具体的关于Gamebryo的实玎ͼ做个q告Q?a rel=external target=_blank>http://www.guibian.com。可以去我B(ti)log看罗?br>另外Q我觉得q还?sh)够帅,按照q样发展下去QSOC2010应该能作出类似UE3的东西,是拖拖拉拉出Shader。至我觉得在Ogre现有框架下实现ƈ不复杂?br>
2.分页l徏?br>新的分页lg从场景管理器中独立开Q分拆成为几个不同的可选组件?br>插g化的{略lg来控制场景中的分c(din)插件化的内容组件来控制分页的内宏V?br>插g化的集合lg用来l合不同的分?比如 在一个页中分出多个LODU别)
四:(x)支持Iphone
估计地球人都知道?jin),自己ȝ代码把。很多Objective C的东西,看v来很亲切把。:(x)Q?我的Ip已经能跑h?jin)。就是速度q有待提升。另外别忘(sh)(jin)先预解析一下材质脚本,不然解析Shader很费c(din)?- -||
五:(x)几个不加解释的翻?br>1. 场景理器的修改Q可以中途暂停一帧的渲染Q比如通过在一个过E中使用回调函数Q,暂停后可以触发另一个渲染,最后在恢复。这是之前在商业引擎中看到的。而且是个很有用的功能?br>2.d?jin)一个选项可以手动触发阴媄(jing)囄更新Q比方在有特D光照的时候?br>两个Ҏ(gu)l合h很有用。当有多重shadowmap的时候,U理可以被重用?jin)?br>其实q是Compositor里的东西Q另外跟DS有关?br>
抗锯齿的改变
1.支持CSAAQdx9?0中可以用?br>2.化了(jin)q标准化?jin)AA的设|?br>在Root的config选项里。所有情况下都加FSAAQ组合上一个采用方式和一个提C字W串。通过I格分隔?br>在createRenderWindow的miscParams参数上你可以提供 "FSAA" ?"FSAAHint"参数,前面是这个采L(fng)倍数Q后面是一些提C?例如质量)
PSQ怎么跟gamebryo来像Q怀疑google codeq些家伙是GB的倒戈?br>
光照的改?br>1.阴媄(jing)摄像机的q近裁减面设|支持每盏灯光?br>2.可以通过调用MovableObject::setLightMask来设|渲染物体mask光照,一个可渲染物体的掩码与灯光掩码按位求与Q如果是0Q灯光就被排除?br>
LOD的改?br>LOD不再使用距离作ؓ(f)度量来区分了(jin)?br>LOD{略现在在材质和|格上都能被讄Q或者按照距,或者按照像素数。当然也可以很方便的d新的{略?br>STL容器
所有的STL 容器现在使用自定义的内存分派?br>
优化
固定线的光照状态更加智能化Qؓ(f)?jin)处理物体数量巨大的时能发挥更好的性能?br>着色器参数更新现在更加有选择性了(jin)Q减不必要的更新?br>
GpuProgramParameters改变
多个cgE序或者材质基本中需要共享的参数可以在一个地方定义和更新。代码看q里QGpuProgramManager::createSharedParamerers
当GpuE序的基c被改变或者重加蝲以后Q参C(x)自动被移植。改变后ȝ可以使用的参数将合ƈ到新的参C厅R?br>
文gpȝ的改?br>支持创徏和移除文Ӟ仅在FileSystem中有效)(j)
DataStream的改?br>可写数据?hu)也支持了(jin)(同样仅在FileSystem中有效)(j)
加了(jin)一个新的类StreamSerialiserQ是d二进制数据格式的新方法?br>
PSQ看到Ogre开始也要用格式来理数据?br>
RenderWindow的改?br>可以自定义v-sync的刷新频率。ƈ且硬件也要支持?br>
视口的改?br>增加?jin)一个clearҎ(gu)来手动清除Q?颜色/深度/模板的组合,q个指定g执行更新操作?br>
囄的改?br>增加?loadTwoImagesAsRGBA ?combineTwoImagesAsRGBA q两个方法,使用它可以更Ҏ(gu)的构?法线/高度??漫反?高光囄l合
U程也做?jin)修改,大家自己ȝ把?br>
ȝ下,q次新版本作出的改变。感谢SOC的那帮牛人,Ogre来向着一个易用的引擎靠拢。开始借鉴很多商业引擎不错的地斏V开始慢慢解军_实际目中遇到的问题。而他优良的扩展性被体现的很明显。最初项目开发的时候,我们发现Ogre其实有很?bug"Q之所以有个引P是因为那不叫真正的BugQ由于Ogre在游戏项目中不太l常的出场率Q造成很多引擎设计上没有考虑到的问题Q不q我发现q个版本很多的新功能都I补了(jin)那些~陷。这些可喜的l果我相信在SOC2010后还?sh)(x)有个飞跃~
q里参考了(jin)mybios博客中的文章,lC(j)EGUI字符串做一个patch
然后需要找到vs2008的autoexp.dat文g
XP下位?C:\Program Files\Microsoft Visual Studio 9.0\Common7\Packages\Debugger\autoexp.dat
用记事本{工h开, 在AutoExpandD中像这h?
[AutoExpand]
; CEGUI String
CEGUI::String = str =<d_quickbuff,su> length =<d_cplength>
卛_在VC调试器中看到CEGUI字符串内? 不过中文q是暂时无法支持