[zh]
经过长时间的筹划,今天正式宣布开始次世代评测软件KlayMark的开发。
简介
KlayMark将以KlayGE为引擎,定位为一款集各种先进渲染技术于一身的跨平台评测软件。在提供赏心悦目的画面同时,对系统的性能作出综合评价。不论是PC平台还是移动平台,KlayMark将提供统一的计分方式,使得不同平台之间的得分具有可比性。
虽然动用到许多新技术,但KlayMark仍会保持极高的效率、较低的配置、良好的跨平台能力等特点。
发布计划
KlayMark的源代码将迟于二进制版本发布,类似Doom和Quake的方法。
由于平台的差异,KlayMark 1.0的发布将分拨进行。
Wave 1:预计开发周期1年。Windows平台支持D3D10+和OpenGL,Android平台支持Tegra ...
独具特色的KlayGE字体系统现在可以独立使用啦!
在开发版本中,字体系统KFont成为了一个不依赖于KlayGE主体的子项目。目前包含的功能有.kfont格式的读写。未来可能加入字体转换工具和渲染代码生成。
为迎接即将到来的OpenGL ES 3.0(开发代号Halti),KlayGE的OpenGLES2插件正式更名为OpenGLES,以保持兼容性。同时,还增加了OGLESConditionalRender,通过GL_EXT_occlusion_query_boolean来实现遮挡查询。
另外说说OpenGL ES 3。在2007年的OpenGL ES Overview里面就有提到代号为Halti的OGLES3,是基于OpenGL 3.0来开发,目标发布时间是2010年。但现在显然延期了很久。终于,在前不久的CES2012上,Imagination Technologies宣布了PowerVR6,支持OpenGL ES 3、OpenGL 3、D3D 10和OpenCL。特定型号还可以支持D3D11.1和OpenGL 4。之前ARM也宣布了Mali-6xx支持OpenGLES 3、D3D11和OpenCL 1.1。同样,Qualcomm的Adreno 3xx也会支持OpenGL ES 3 ...
去年4月份我写过《OpenGL ES Emulator横向比较》,比较了4种常见的OpenGL ES模拟器。过了将近一年,让我们再次横向比较一下现在的模拟器。
基本特性
厂商
NVIDIA
ARM
名称
x86 Windows OpenGL ES 2.0 Emulator
OpenGL ES 2.0 Emulator v1.3
模拟目标
Tegra
Mali
版本
OpenGL ES 1.1, 2.0; EGL 1.3
OpenGL ES 1.1,2.0; EGL 1.3
扩展
GL_EXT_texture_compression_dxt1
GL_EXT_texture_compression_s3tc
GL_NV_log_textures
GL_OES_compressed_paletted_texture
GL_OES_element_index_uint
GL_OES_framebuffer_object
GL_OES_mapbuffer
GL_OES_rgb8_rgba8
GL_OES_shader_source
GL_OES_stencil8 ...
经过这几天的的开发和调试,KlayGE的所有例子都在NVIDIA的OpenGL ES模拟器上顺利运行了。除了没有GI、distance mapping退化成normal mapping、以及由于缺少float texture而不能实现高精度DoF之外,其他效果都和D3D11和OpenGL一致。
Tegra 2模拟器的问题
NVIDIA的OpenGL ES模拟器的模拟对象是Tegra 2,但支持的扩展不如真的Tegra 2。Tegra 2真机支持的OpenGL ES扩展有(来自Xoom):
GL_ARB_draw_buffers
GL_EXT_bgra
GL_EXT_Cg_shader
GL_EXT_packed_float
GL_EXT_texture_array
GL_EXT_texture_compression_dxt1
GL_EXT_texture_compression_latc
GL_EXT_texture_compression_s3tc
GL_EXT_texture_filter_anisotropic
GL_EXT_te ...
[zh]
上个星期,经过整个团队半年的努力,KlayGE迈进了4.0这个大版本!紧接着就是开始计划4.1的开发了。该版本大约在2012年6月发布,这里列出目前的新功能计划。
必然出现
这些特性一定会出现在KlayGE 4.1中,都有明确的实现方法,不确定性因素较小。
屏幕空间反射
FFT Bloom filter
基于Postprocess的stereo
通过Importance sampling加速GI(开发中)
Collision detection函数库
进一步提升OpenGL ES 2兼容性
可能出现
可能出现的特性要么存在比较大不确定性,是否会出现在KlayGE 4.1取决于时间关系。
大气散射效果(开发中)
SSGI
不会出现
这些东西不会在KlayGE 4.1中出现,所以不必再提了。
各种编 ...
从KlayGE 4.0开始,KlayGE转为使用双协议。默认的协议仍然是开放源代码的GPL。对于不适合用GPL的用户,在缴纳授权费的情况下,可以选择另一个协议,称为KlayGE Proprietary License(KPL)。因此对于需要避开GPL条款的用户,也有机会为项目购买另一个协议的KlayGE。
详细情况请见Licensing。
[zh]
经过KlayGE团队半年的努力,KlayGE 4.0.0正式发布了!作为一个大版本,KlayGE开始由一堆发散的功能集走向一个以Deferred Rendeirng为核心的系统。并且开始支持新平台Android。主要更新如下:
Deferred Rendering layer集成到核心中
全局光照得到了很大的加速
支持Android(在王锐的协助下完成)
支持实时焦散(由Parsifal Wang完成)
蒙皮动画支持Dual quaternion(由Honyeung Lau、Xiaoyang Zhu完成)
增加了资源载入框架(由郭鹏设计)
改进的SSVO(由吴野完成)
骨骼数据压缩
用Phong Tessellation代替PN-Triangles
支持渲染到纹理数组
支持parallax occlusion mapping
从此处下载KlayGE 4.0.0。
...
在KlayGE的空框架跑起来之后,经过几天艰苦的debug,修正了多个KlayGE的bug,绕开更多Android的bug。现在,Text和Vertex displacement两个例子已经能在Android上顺利执行了。
Text例子。乱码不是bug,只因为系统区域没设置成中文。
Vertex displacement例子。
在移植的过程中,遇到的一个麻烦是NDK的ANativeWindow_getWidth和ANativeWindow_getHeight总是返回1,无法得到正确的窗口大小。结果viewport被错误地设置成1x1,使得渲出的东西都只有1个pixel。在修改了native_app_glue,获取resize的消息后,viewport大小终于得到了正确的设置。那两个例子才因此能正常执行。从这里也可以看出,Android的NDK千疮百孔,开发的时候要异常小 ...
今天CrystaX终于发布了从官方NDK r7修改而来的定制版Android NDK r7。主要的变化有:
宽字符
Google的NDK无法很好地支持宽字符,不管是在C还是C++里。CrystaX NDK含有完全兼容标准的宽字符支持,所以可以更容易地把使用了宽字符/string/stream的现有代码和新代码移植过去。
新的4.6.3工具链
从r7-crystax-1开始,CrystaX NDK包含了两个版本的编译器工具链:4.4.3(老的,和Google用的一样)以及4.6.3(新的)。
新工具链包含了GCC 4.6.3,它包含了Graphite framework,可以让gcc做一些高层内存优化。
为了兼容于Google的NDK,4.6.3工具链不是默认打开的。打开它需要在Application.mk里加一行:
APP_TOOLCHAIN_VERSION := 4.6.3
...