发展历程
本条目介绍的是KlayGE的发展历程,子项目有单独的条目介绍其发展历程:glloader。
各版本KlayGE的主要更新如下,另外可以参看各版本的路线图。
4.10 (2016.12.24)
参见 http://www.klayge.org/?p=3514
4.9 (2016.6.28)
参见 http://www.klayge.org/?p=3472
4.8 (2015.12.28)
* 引擎方面的改进 D3D12插件。 异步资源创建,简化资源载入的代码。 增加CPU和GPU的同步原语支持,支持手动同步管理。 在OpenGL/OpenGLES里支持texture array。 加速反射的渲染。 SIMD数学库,把现有的数学库扩展成支持SIMD的实现。(由刘智超和倪成丹完成) 重构了shader编译的工作流。(由钱康来协助完成) 增加了使用音频引擎的例子。 * 工程方面的改进 继续改进工程系统。 C++11语法。 删除一些老编译器的支持。 改进OSX下的性能。(由钱康来完成) * 移动方面的改进 减少内存消耗,针对移动平台的小内存做一些优化 UWP支持,在Win10和Win10 mobile上可以用UWP版本。 支持最新的GLES 3.2。 GLES插件可以启用sRGB,画面质量更好。 支持Android 5.1。(由钱康来完成) * 其他改进 多处bug修正和性能优化。
4.7 (2015.06.29)
* 引擎方面的改进 MacOSX成为完整的开发平台。上一个版本还需要在Windows上编译shader。这个版本可以独立在MacOSX上进行开发。(由钱康来完成) Transient Buffer。高效的GPU buffer管理,用来加速UI和文字渲染。(由林胜华完成) 硬件检测。支持引擎内的硬件检测能力,检测主板、内存的型号和频率等信息。(由裴博翔完成) 自动测试框架。引入一个单元测试的框架,可以对引擎的一些组件做自动化测试。 高速BC7压缩器。继续发展纹理压缩库,加入高速高质量的BC7压缩。 SSSSS集成入延迟渲染框架。 在OpenGL中加入tessellation支持。在支持tessellation的硬件上启用TS。 * 工程方面的改进 迁移到git。 改进了第三方库和资源文件的管理方式。 支持VC14。 删除老旧平台的支持。 * 移动方面的改进 移植iOS。可以运行在部分iOS的设备上。(由钱康来完成) 更好地支持D3D11 feature level 9.3。 在ANGLE上支持OpenGLES 3.0。(由董鹏程协助完成) * 其他改进 多处bug修正
4.6 (2014.12.24)
* 引擎方面的改进 现代化OpenGL,由刘瀚阳协助完成。增加uniform buffer、debug output等OpenGL 3.x的特性。OpenGLES插件也会做相应修改。 改进的DXBC2GLSL。林胜华进一步增强了DXBC2GLSL,增加了HS/DS/CS的支持。 支持最新的OpenGL 4.5。 改进OpenGL在AMD和Intel显卡上的兼容性。 面光源支持。支持球状和管状光源。 支持更多Android输入设备。包括键盘、鼠标、游戏手柄和完整的sensor支持。 环境光照。支持基于物理的环境光照。(由刘康协助完成) 完整的应用生存周期支持。支持移动平台的休眠和恢复操作。 高级纹理压缩库。支持BC1-7、ETC1/2的解压,BC1-5、ETC1的快速高质量纹理压缩。 模型查看器和材质编辑器。(由林胜华协助完成,第一次引入C# WPF界面) 实验性支持OSX。(由钱康来完成,第一次不是由我亲自完成的平台移植,第一次走上苹果的平台) * 工程方面的改进 CMake化的Boost,编译更方便。 引入C#作为UI,可以和C++的内核交叉调用。 第一次以x64作为默认版本,需要x86二进制文件的请自行编译 第一次不采用xp的toolset进行编译,需要在WinXP上使用的请自行编译 * 移动方面的改进 支持Windows Phone。 支持WinRT ARM。 支持64位的Android。(第一次支持尚未发布的平台) 自定义的stream buffer,改进Android上的打包文件读取。 * 其他改进 多处bug修正
4.5 (2014.06.28)
* 新子项目 DXBC2GLSL。组员林胜华完成的一个库和工具。 * 引擎方面的改进 G-Buffer中更好的normal表达。 Compute shader的TBDR实现。 支持Occlus Rift的输入和立体显示。由凃鸣实现的组件。 层次结构的场景物体,简化场景维护。 新的distance-based font算法。由周赫提议。在目前的版本里,字体转换速度可以提升4倍以上,未来还将做进一步的优化。 支持D3D 11.2。 改进的RenderEffect 删除了在runtime提供预定义宏的功能。请用<macro>和<include>来代替。参见GBufferSkinning128.fxml。 加速effect的载入。 支持递归包含。 支持CBuffer。 Sensor输入。在Windows、WinRT和Android上支持陀螺仪、罗盘、加速度计、GPS等多种sensor。 内置式性能剖析器。方便开发者从高层做性能剖析。 * 工程方面的改进 统一使用同样的CMake文件来管理Windows、Linux、Android和WinRT的工程。 支持用Clang编译。但因为Clang导入导出方面的bug,在Windows上链接仍是失败的。 更符合C++11规范。 移除了大的二进制文件。 新的文件命名规范,兼容不同编译器所生成的文件共存。 * 移动方面的改进 Deferred框架开始支持移动平台。 完整支持没有浮点纹理的平台。 减少了渲染系统的内存消耗。 更多例子能在移动平台运行。 * 其他改进 多处bug修正
4.4 (2013.12.24)
改进的编译系统 * 尽可能使用MSBuild * 第三方库使用cmake工程文件 * 自动搜索OpenGLES SDK的目录,简化了编译的配置 OpenGL ES 3.0支持 Tile-based deferred rendering OpenGL 4.4支持 Multi-resolution层 高质量地形渲染(由孙文全协助完成) 屏幕空间SSS和半透明效果(由石裕隆完成) 基于后处理的图片放缩 多线程场景更新和渲染(oz01提出的建议) 重写的ParticleSystem 从VSM切换到ESM 支持discard frame buffer 改进了Juda texture Runtime log可以输出到文件(石裕隆提出的建议)
4.3 (2013.6.27)
一个新的子项目KFL 脚本引擎(由王锐完成) 高质量细节效果 改进的Deferred Rendering * 改进阴影生成(由李渊完成) * Deferred框架和GI分离 * 大量重构(论坛里的lcbiotech提出的建议) 大范围阴影支持 支持官方版Android NDK r8 全新的输入系统,支持触摸输入 非阻塞式资源载入和管理(论坛里的lcbiotech提出的建议) 增强的立体输出(由孙文全帮助测试) 支持嵌入其他GUI框架 支持多种OIT方法 用C++11代替多个boost库
4.2 (2012.12.26)
一个新的子项目MeshML library 实验性支持WinRT平台 体积光(由王清源完成) 改进的DoF,并支持Bokeh 贴花渲染 JudaTex打包工具(由Honyeung Lau完成) 工具集增强 摄像机路径功能(王毅和胡勤协助完成) 多视口支持 优化的顶点结构 全方向SSR 更好地支持compute shader 改进的Juda texture GPU排序
4.1 (2012.6.29)
完全使用cmake工程 字体读写成为独立的库 屏幕空间反射(由王清源完成) FFT镜头效果 性能无损的立体显示 (由王锐完成) 加速全局光照(由陈顺斌完成) 碰撞检测函数(由朱晓阳协助完成) 增强了对OpenGLES的兼容 支持大气散射效果 支持SSGI Effect的JIT系统 增加了新的工具 增加了教程 3DSMax导出插件增强
4.0 (2011.12.25)
Deferred Rendering layer集成到核心中 全局光照得到了很大的加速 支持Android(由王锐协助完成) 支持实时焦散(由王清源完成) 蒙皮动画支持Dual quaternion(由Honyeung Lau、朱晓阳完成) 增加了资源载入框架(由郭鹏设计) 改进的SSVO (由吴野完成) 骨骼数据压缩 用Phong Tessellation代替PN-Triangles 支持渲染到纹理数组 支持parallax occlusion mapping
3.12.0 (2011.6.30)
支持全局光照(由atyuwen完成) 包含第三方库及其编译脚本 增加了Maya导出插件(由王锐、朱晓阳、honyeung Lau完成) 支持Dual Paraboloid Shadow Map(由张亚川完成) 增加了多种模式的BC1-BC5纹理压缩函数 增加了cmake工程脚本(由王锐完成) 支持Filmic tonemapping 支持FXAA和Temporal AA(由陈顺斌和郭鹏完成)
3.11.0 (2010.12.23)
支持OpenGL 4.1 增加了Juda texture,最大支持1M*1M大小的纹理 增强立体显示,支持立体眼镜 去掉了D3D9和D3D10插件,WinXP下由OpenGL插件接管 支持基于物理的BRDF SSAO速度提高10倍 增强Post Processor脚本 水体渲染的质量和速度都有所提高 增加了配置工具
3.10.0 (2010.6.27)
支持OpenGL ES 2.0和OpenGL 4.0 支持立体显示 在高端显卡上Deferred Shading速度提高120% 支持Compute Shader 字体渲染速度提高50% 字体生成工具速度提高3倍 增强了场景管理 增强的Post processing 支持Sub-Surface Scattering 支持PN Triangles
3.9.0 (2009.12.19)
增加了TrackballCameraController 增加了Model Viewer和Particle Editor UI dialog改进 直接读取uiml,fxml和meshml Cg载入后编译成GLSL使用 支持Motion blur 支持DX10 DDS的读写 支持Stream output 更快的Deferred Shading 加入LZMA的编解码
3.8.0 (2009.3.1)
支持DX10,DX11和OpenGL 3.0 改成DLL的形式 增加了描述UI的UIML文件格式和编译器 增加了ElementAccessHint和ElementInitData 支持硬件depth texture 支持BC4/BC5纹理压缩 去掉了归一化cubemap生成器 多线程资源载入 支持Procedural Texture
3.7.0 (2008.7.17)
改进了Clear 增加了Depth Peeling例子 加速了Octree 无死角的FirstPersonCameraController 新的基于distance的字体格式 支持Visual Studio 2008 支持lock-free atomic操作 增加了CPUInfo 增加了Summed-Area Table Postprocess 实验性支持Linux 性能提升5%-10%
3.6.0 (2007.7.30)
兼容Vista 32/64 使用pbo加速纹理填充 改用7z作为打包格式 加强了3DS Max插件 RenderEffect增加了Clone方法 去掉了RenderTarget和RenderWindow 去掉了Triangle fan的拓扑方式 增加了UI系统 增加了Depth of field例子 去掉了对Wav的支持 启用了新的thread和thread_pool
3.5.0 (2007.3.9)
支持Alpha to coverage 改用基于xml的特效格式 全新的特效系统,支持所有的状态缓存 增加了RenderStateObject和ShaderObject 支持x64系统 OpenGL插件可以检测Shader Model 4 增加了基于GPU的粒子系统 增加了aligned_allocator 修正了thread_pool死锁的bug(感谢Roy报告此bug) 支持NVPerfHUD 增加了有符号元素格式 不再提供VS2003的工程文件
3.4.0 (2006.9.22)
导出插件支持骨骼的导出 支持normal map的压缩 支持HDR纹理的压缩 加入了粒子系统 重写的播放引擎,现在通过图形引擎播放视频 重写了height map地形生成器 增加了HDRPostProcess
3.3.0 (2006.6.30)
Font支持渲染到3D位置 统一了渲染引擎的状态设置 OpenGL插件要求硬件支持OpenGL 2.0和FBO 增加了FrameBuffer和RenderView的结构 使用以Technique为单位的渲染 支持渲染到3D Texture的一个片 增加了多种纹理格式 统一了元素格式的使用 DistanceMap生成器支持直接对Volume的计算 增加了PostProcess
3.2.0 (2006.5.15)
增加了高精度计时器 完整地支持骨骼动画 渲染部分的结构有了较大的调整 把IndexStream和VertexStream合并成GraphicsBuffer 增加了RenderLayout 支持sRGB纹理 支持ATI的instancing方法 增加了与平台无关的线程池
3.1.0 (2005.11.27)
增加了SceneObject 简化了Instancing的使用 支持Visual Studio 2005 分离了实例和几何顶点流
3.0.0 (2005.10.26)
去掉了固定流水线 增加了Occlusion Query 增加了Point sprite 支持Instancing 支持Vertex Texture 增强了KMesh和3dsmax导出插件 优化了RenderEffect InputEngine改为使用Event形式处理消息 支持全场景的多遍渲染 支持顶点流的合并和拼接 增加了RenderablePlane
2.8.0 (2005.8.14)
增加了RenderDeviceCaps 增加了OpenGL兼容性检测工具 增加了Sampler 重写了RenderEffect 只支持OpenGL 1.5及以上 简化了RenderEngine DInputDevice改为多继承结构 增加了RenderToVertexStream
2.7.1 (2005.7.15)
美化了字体显示效果 LoadKMesh可以使用自定义类 增加了RenderableHelper基类 RenderEngine::ViewMatrix和ProjectionMatrix改为const
2.7.0 (2005.7.2)
改成GPL协议 增加了KMesh 去掉了RenderEngine::TextureCoordSet AddressingMode, Filtering和Anisotropy从RenderEngine移到Texture中 Texture增加了MaxMipLevel和MipMapLodBias App3D增加了Quit 支持OpenGL 1.5
2.6.0 (2005.6.2)
修正了SceneManager类CanBeCulled的bug 增加了half类型 D3D9Texture增加了对surface的检查 增加了RenderableSkyBox 支持HDR
2.5.0 (2005.5.2)
增加了3DSMax导出插件 可以同时使用多个输入动作表 MathLib改为使用返回值返回结果 改进了CameraController 增加了RenderableHelper 视锥裁减改为使用LUT实现
2.4.0 (2005.3.28)
支持纹理压缩 增加了D3D9Resource 支持DDS格式的载入和保存 八叉树改为线性实现 支持深度纹理
2.3.0 (2005.3.2)
使用FreeType实现Font 修正了几个内存泄漏 增加了对浮点纹理的支持 增加了CopyToMemory 增加了视锥裁减插件 D3D9插件增加了OnLostDevice和OnResetDevice
2.2.0 (2004.11.20)
修正了DSound插件的音量问题 去掉了ManagerBase、FileSystem、Crc32、alloc、Timer、Random 使用boost 1.32.0 增加了Trace
2.1.3 (2004.10.19)
增加了以boost::tuple为参数的ScriptEngine::Call 修正了一些关于STL的问题 修正了Pkt的CRC错误 去掉了MemoryLib
2.1.2 (2004.9.5)
增加了BoneMesh 增加了RenderEffectParameter 支持DX 9.0c SDK 修正了DiskFile::Seek的Bug 把const T&改为更规则的T const & InputEngine改用Bridge实现
2.1.1 (2004.5.25)
大量使用boost 数学库都采用泛型实现 增加了Parallax的Demo 增加了ResLocator
2.1.0 (2004.4.20)
增强了OpenGL 去掉了汇编代码 直接支持单独的Shader 简化了打包文件目录表的表示法
2.0.5 (2004.4.13)
增强了OpenGL 修正了WindowMovedOrResized的bug MemFile改用stringstream实现 提高了代码安全性
2.0.4 (2004.4.7)
修正了OALMusicBuffer无法loop的bug DSMusicBuffer改用timeSetEvent实现 改进了VertexBuffer Audio部分增加了NullObject 增加了Demo
2.0.3 (2004.3.12)
简化了VertexBuffer 去掉了软件顶点混合
2.0.2 (2003.12.28)
改进了渲染队列 使用Python做脚本语言 DiskFile改为用标准C++流实现
2.0.1 (2003.10.17)
去掉了DX8的支持 增加了一些工具
2.0.0 (2003.10.1)
正式版发布
2.0.0 Beta (2003.9.5)
初次发布