转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=3551
圣诞节前,KlayGE 4.10刚刚发布。与此同时,新版本的开发已经开始。和以前一样,在这里公布一下KlayGE 4.11的开发计划。欢迎有兴趣、有时间加入KlayGE 4.11发阵营的朋友们继续参加。
时间线
这里列出几个重要的时间点,以供进度参考。
- 2017年6月7日,feature complete:所有功能都将完成,没完成的推迟到下一个版本。
- 2017年6月21日,code complete:完成所有代码,除非特殊情况,否则不能再改变接口。
- 2017年6月30日,release:正式发布KlayGE 4.11。
Ticket系统
我们会继续使用github的issues系统,大家遇到问题可以到上面提。这次还用上了github的新功能Project来管理4.11,可以更方便地看到每个ticket的进展。
必然出现
这些特性一定会出现在KlayGE 4.11中。其中有些需求来自于KlayMark。这个版本更多偏重于把现有功能进行扩展和重构,让其更灵活。
- 继续完善场景编辑器KGEditor。
- 删除老系统的支持。不再支持:
- 老版本的系统(已完成)
- 老编译器(已完成)
- 老API,D3D11 feature level 10、OpenGL 3、OpenGLES 2。
- 引入C++17(已完成)
- 加速粒子渲染,试验用VDM的方法提速。(已完成)
- Cluster shading。从目前的实践情况上看,Cluster shading已经成熟。是时候从TBDR升级到Cluster DR的方法了。
- 双面材质的渲染。更好地支持树叶等双面薄物体。
- 矢量纹理支持。把字体渲染的SDF推广到矢量纹理。
- HDR显示器支持。4.10里已经支持了ACES tone mapping,现在可以进一步扩展成支持输出到HDR显示器。
- 更好的高DPI管理。虽然原先就支持高DPI,但用的是手动管理大小的形式。应该升级成保面积、自动计算大小的形式。
- 渲染任务图。在现在的DeferredRenderingLayer里有一个非常简单的任务队列。这次要把它重构成更通用的任务图。
- 性能优化
- 把ShaderObject的可变和不变的部分分开,有利于减少内存开销、简化D3D12的PSO的构建。
- 合并DirectionalLight和SunLight。两者代码很相似,只是有没有阴影的区别。合并代码,减少分支开销。
可能出现
可能出现的特性存在比较大不确定性,会需要一些调研,是否会出现在KlayGE 4.11取决于时间关系。
- 用SMAA取代FXAA。有可能的话直接上Filmic SMAA。
- Shader graph框架。目前shader存在大量重复代码,重构成图的表达。不同材质提供不同节点,而节点之间的关系可以复用。可能通过字符串连接,也可能通过shader linking来做这件事情。
- 用glsl-optimizer优化DXBC2GLSL的输出结果。
中长期研发
除了上面为4.11而开发的功能,这次还有一些特性具有非常大的不确定性,需要投入中长期研发才能有可能做出来的。预计周期大概在一年左右。有兴趣的朋友也可以加入探讨。
文档和测试
随着KlayGE慢慢走向成熟,维护和文档工作变得越来越重要。除了上面提到的新特性开发,另外还需要做一些回归测试、引擎维护和文档生成的事情。为此,我在KlayGE的wiki网站上建立了这个页面。有兴趣的朋友可以在自己的机器上执行所有例子,并把结果提交给我。
资料
上面提到的特性都作为issue记录在github上了,欢迎有兴趣的朋友查看和提供建议。让然,还有一些特性尚未放入4.11的计划,会在未来慢慢做。
我平常搜集了一些资料,可能有助于开发这些特性。这些资料都放在开发资料里。
Comments