在KlayGE走上OSX的实验中,我提到了目前OSX的版本还有两个主要问题,一是没法打开post processing,而是shader编译用的是Cg,以至于不能支持GL3+的功能。钱康来这几天又做了一些实验,在很大程度上解决了这些问题。
Post processing
原先一打开HDR、FXAA、Gamma校正等流水线末端的post processing之后,只能看到黑屏或一片混乱。在xcode的调试中看到的是,back buffer中有正确的结果,但swap到front buffer就只有错误的画面。这就排出了是depth或stencil没用清空造成的错误,只能是swap的地方有什么蹊跷。
经过一番尝试和查阅资料,发现了OSX和其他平台在swap上有所不同。Windows上的SwapBuffers,以及Linux上的glXSwapBuffers,都可以 ...
长期以来,把KlayGE移植到iOS的呼声很高。从别的平台直接移植到iOS,跨度有点大。所以我的计划里把MacOSX当作一个中间平台,先移植到OSX,把OSX当作开发平台来开发iOS版本。现在,KlayGE的OSX版本有些进展,在这里总结一下。
OSX几乎完全由新加入的组员钱康来完成的,在此表示感谢。这也是第一次不是由我亲自完成的平台移植。除了需要对付平台API的差异之外,还需要把一部分窗口相关代码用ObjC完成,在通过跨语言调用接入引擎的其他部分。目前有些初步的结果,在不加上post processing的情况下,一些sample可以顺利执行了。post processing一加就黑屏,具体原因正在调查中。
下面是一些结果。
除了post processing,还有 ...
几个月前KlayGE的WinRT工程就已经转到CMake的方式进行管理。但因为CMake本身不支持WinRT,当时的做法是修改CMake的代码,打上自己的补丁后才能使用。现今,CMake有了个微软的fork,从我的补丁出发,专攻WinRT等平台上的兼容问题。目前这个分支能很好地生成Windows Store和Windows Phone的工程。
使用方法
对于生成其他平台的工程,这个分支的CMake和原先完全一样。对于WinRT平台,需要通过这样的命令行参数来指定目标系统和版本号:
-DCMAKE_SYSTEM_NAME=WindowsPhone(或WindowsStore)
-DCMAKE_SYSTEM_VERSION=8.0(或8.1)
实际上这个做法相当于和WinCE一样,在platform generator级别生成WinRT的部分,比我原先用compiler gener ...
[zh]
又到了KlayGE的发布周期。今天,KlayGE 4.5正式发布了!这个版本除了KlayGE传统上在图形方面的发展之外,在工程方面和移动平台上也有较大的改进。这个趋势还会持续下去。在这个版本的开发中,多个大的组件是由团队成员完成的,同时也有很多朋友提供了宝贵意见和bug报告,在此表示感谢。KlayGE 4.5的主要更新如下:
新子项目
DXBC2GLSL。组员林胜华完成的一个库和工具,可以把D3D compiler生成的字节码转换成OpenGL 2.0-4.4和OpenGL ES 2.0-3.1的GLSL。
引擎方面的改进
G-Buffer中更好的normal表达。
Compute shader的TBDR实现。把4.4中基于PS的light indexed deferred进一步发展成compute shader的实现,一次处理1024 ...
[zh]
随着半年一个新版本的周期,今天KlayGE 4.4正式发布了!在这个版本的开发中,多名团队成员贡献了自己的代码,也有很多朋友提供了宝贵意见和bug报告。也从SALVIA项目的编译脚本中学习和借鉴了很多经验。这些都为KlayGE的发展和完善做出了贡献,在此表示感谢。KlayGE 4.4的主要更新如下:
改进的编译系统
尽可能使用MSBuild
第三方库使用cmake工程文件
自动搜索OpenGLES SDK的目录,简化了编译的配置
OpenGL ES 3.0支持
Tile-based deferred rendering
OpenGL 4.4支持
Multi-resolution层
高质量地形渲染(由孙文全协助完成)
屏幕空间SSS和半透明效果(由石裕隆完成)
基于后处理的图片放缩
多线程场 ...
SIGGRAPH 2013今天已经结束,还挺迅速,有的course ppt已经放出来了。
Khronos 2013 SIGGRAPH Camera BOF
Physically Based Shading in Theory and Practice
Advances in Real-Time Rendering in 3D Graphics and Games的网页已经上线,但ppt还没
在一年一度的SIGGRAPH大会上,Khronos group按照惯例,发布了OpenGL 4.4。新的OpenGL 4.4标准包含了一些新功能,同时以核心和扩展的形式出现:
ARB_buffer_storage
ARB_clear_texture
ARB_enhanced_layouts
ARB_multi_bind
ARB_query_buffer_object
ARB_texture_mirror_clamp_to_edge
ARB_texture_stencil8
ARB_vertex_type_10f_11f_11f_rev
另外,还有一些新扩展也宣布了:
ARB_compute_variable_group_size
ARB_indirect_parameters
ARB_shader_draw_parameters
ARB_shader_group_vote
ARB_sparse_texture
为什么还是没有direct state access!为什么还是没有direct state access!为什么还是没有dire ...
在2010年,曾经有个d3d1x for linux的项目短暂地轰动过。它通过Gallium的state tracker,原生地支持了d3d10和11的API,能运行一些简单的demo。遗憾的是,由于Wine的人对d3d1x不是很感兴趣(d3d9还支持不过来呢),在2013年3月份,d3d1x for linux因为无法使用和无人维护,被从mesa的repository里删除了。
(题外话:尚在开发中的HLSL bytecode to GLSL编译器也用了d3d1x for linux的bytecode解析代码,里面bug不少,而且都是下标写错之类不执行到肉眼很难看出来的bug。)
与此同时,d3d9 for linux诞生了。和之前一样,它也是个state tracker,也是原生支持。更好的是,它已经可以执行d3d9的游戏,并且性能高于Wine的转换成OpenGL的方 ...
昨天微软发布了Windows 8.1 Preview,其中一个没怎么被发现的新功能是,DirectX 11.2!上一次DirectX出现.2的版本号还是在8.x时代吧。DirectX 11.2引入了以下新功能:
HLSL shader linking:Shader可以分成小块,分开编译,连接后成为完整的shader。给模块替换提供了方便。甚至,在11.2中还提供了一个叫Function linking graph的功能,可以像offline shader那样,构建一个graph,每个节点是一小段shader。最后才link了送给GPU。
Inbox HLSL compiler:Win8的时候,shader编译器是个独立的dll,在metro里面不允许调用,得离线编译。现在编译器又回来了,D3DCompile都可以在metro和desktop里使用。
GPU overlay support:直接支持在3D ...
[zh]
经过KlayGE团队半年来的努力,今天KlayGE 4.3正式发布了!在这个版本的开发和测试过程中,很多朋友也提供了宝贵意见和bug报告,为KlayGE的发展和完善做出了贡献,在此表示感谢。KlayGE 4.3的主要更新如下:
一个新的子项目KFL
脚本引擎(由王锐完成)
高质量细节效果
改进的Deferred Rendering
改进阴影生成(由李渊完成)
Deferred框架和GI分离
大量重构(论坛里的lcbiotech提出的建议)
大范围阴影支持
支持官方版Android NDK r8
全新的输入系统,支持触摸输入
非阻塞式资源载入和管理(论坛里的lcbiotech提出的建议)
增强的立体输出(由孙文全帮助测试)
支持嵌入其他GUI框架
支持多种OIT方 ...