Skip to content
BUILD 2014上有个D3D12相关的讲座,向开发者预览了D3D12的API。比之前的简介详细了许多。这里我谈谈我对这个东西的理解。 Context 这里先对比一下D3D11和12的context,能对它们的API有个大致的印象。 D3D11的context 这张图表达了在D3D11中,context的组成。 其中,最左边的双向箭头表示状态可以Get和Set。橙色方块表示各个stage的资源slot。它们会bind上显存里的各种资源。 D3D12的context D3D12里面,context变成了这样: 首先,各种状态被合并成了一个,叫pipeline state object(PSO)。这么一来,只需要调用一次API就能设置所有stage的状态。同时,Get接口被去掉了,就剩下Set。不过反正也从来不会去用Get。另外,s ...
[上周GDC,微软正式宣布了DX12和一些细节,这里放个中文翻译的版本] 有什么神奇之处? 这次的DirectX 12引入了新版本的Direct3D:位于DirectX核心地位的图形API。Direct3D是游戏或游戏引擎中最重要的组成部分之一,我们对其进行了重新设计使其比以前更快更高效。由此,Direct3D 12可以渲染更丰富的场景、更多物体,并能更好地利用当前的GPU硬件。而且Direct3D 12不但能用于高端游戏PC,也可以在所有微软的设备上运行。从手机和平板,到笔记本和台式机,当然,还有Xbox One。Direct3D 12就是你期待已久的API。 是什么让Direct3D 12独树一帜?首先,也是最重要的,它提供了一个比以前更底层的硬件抽象,让游戏可以明显改善多线程能力和CPU ...
[zh]三年前,我就曾经计划过一个KlayGE的长期研发子项目,D3D11 HLSL字节码到GLSL的编译器。两年前,在d3d1x for linux代码的帮助下,基本的字节码解析和反汇编工具已经实现。如今,这个子项目被正式命名为DXBC2GLSL,在库和工具两个层面上提供HLSL字节码(DXBC)到GLSL的转换。2013年底,DXBC2GLSL支持VS和PS初始版本已经由团队新成员林胜华完成,并提交到开发版本中。GS的支持也已经在上个月加入。当前所有KlayGE中的shader已经全部通过测试。[/zh] [en]Three years ago, I've planned a long-term R&D sub-project of KlayGE, D3D11 HLSL bytecode to GLSL complier. Two years ago, derived from d3d1x for linux, a simple bytec ...
[消息来源] 在正在举行的GDC 2014上,Khronos发布了OpenGL ES 3.1的规范。总体来说,OpenGL ES 3.1以OpenGL 4.4为蓝本,把一些原本是桌面API的功能带到了移动平台。 OpenGL ES 3.1的新功能包括: Compute shader:GLSL ES也开始支持compute shader了,和桌面API取齐。来自OpenGL 4.3。 分离式shader:可以分开绑定不同stage的shader。来自OpenGL 4.1。 间接绘制指令:允许从一个buffer object提供Draw的参数,而不用倒回CPU发起Draw。来自OpenGL 4.0。 增强了纹理的功能:包括multisample的纹理、stencil的纹理,以及在纹理上执行gather操作一次读取4个像素。来自OpenGL 4.1和4.3。 着色语言的改进:新的算术和位域操作, ...
最近突然出现很多DirectX 12的消息,这里稍微整理一下,对可以确认的消息给个汇总。 DirectX 12将于3月20号在GDC 2014宣布。(来自这里) 有4家GPU厂商将会第一批支持DirectX 12,NVIDIA、AMD、Intel和高通。 和DirectX 11一样,移动平台和桌面平台的接口统一。 XBox ONE也可能会升级到DirectX 12。见入口网页左下角的图标。 驱动开销会减少很多,和Mantle一样的思路。 如果驱动层变薄了,驱动开销变少,性能就有机会和Mantle一样得到不少性能提升。而且驱动的开发也会变容易。但比Mantle更好的是,DirectX 12可以用于各厂商的显卡,不限于AMD。
AMD Mantle的SDK一直都没出,但现在至少有了支持Mantle的Catalyst 14.1驱动。Geeks3D网站有个帖子列出了mantle32.dll和mantle64.dll等几个DLL中包含的函数入口。 Mantle本身存在于mantle32.dll和mantle64.dll。导出的函数接口如下: IcdDbgMessage DllMain grAllocMemory grAttachImageViewDescriptors grAttachMemoryViewDescriptors grAttachNestedDescriptors grAttachSamplerDescriptors grBeginCommandBuffer grBeginDescriptorSetUpdate grBindObjectMemory grClearDescriptorSetSlots grCmdBeginQuery grCmdBindDescriptorSet grCmdBindDynamicMemoryView grCmdBindIndexData grCmdBindPipeline ...
经过团队几个月的努力,KlayGE 4.4已经在去年年底顺利发布。在此感谢大家的支持和帮助。实际上从上个月开始,KlayGE 4.5就已经进入了计划阶段。这里公开一下对KlayGE 4.5的一些规划。和以前一样,欢迎有兴趣、有时间的朋友加入KlayGE 4.5的开发阵营。 KlayGE 4.5将会更好地支持移动平台,包括Android和WinRT,并为以后支持iOS跨出第一步。同时,在4.5里,会继续把一些原本在例子中的技术集成入引擎的核心层,方便使用。 时间线 这里列出几个重要的时间点,以供进度参考。 2014年5月31日,feature complete:所有功能都已经完成,没完成的推迟到下一个版本。 2014年6月15日,code complete:完成所有代码,除非特殊情况,否则不能 ...
上一篇我们提到了SSSSS,作为本系列的最后一篇,本文将介绍KlayGE 4.4的OpenGL和OpenGLES插件的改进。 OpenGL 4.4 KlayGE在OpenGL方面一直是紧跟spec的步伐,这次也不例外。在八月份OpenGL 4.4发布的时候,glloader和KlayGE的OpenGL插件就很快加上了4.4的支持。并且这次把代码彻底过了一遍,很多原先通过扩展实现的功能,都尽量替换成用核心实现的,提高兼容性。 经过测试,OpenGL插件在NV和Intel的显卡上所有例子都能正常工作。 OpenGLES 3.0 虽然GLES3出了有一段时间了,但硬件支持度和开发环境都还没跟上,所以原先OpenGLES插件只支持2.0。这次尝试了PowerVR和Mali的OpenGLES 3模拟器,觉得还行,就加上了GLES3的支持。Adreno的模 ...
[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和半透明效果(由石裕隆完成) 基于后处理的图片放缩 多线程场 ...
本系列的上一篇提到了KlayGE 4.4将会出现的高质量地形渲染。本篇仍讲一个新功能,Screen Space Sub Surface Scattering(SSSSS)和Translucency。这两个效果都是由团队成员石裕隆实现的。 Sub Surface Scattering(SSS)对渲染效果的提升有很明显的左右,尤其是皮肤和植被之类物体。早在GPU Gems 1里就有在texture space作的近似SSS。GPU Gems 3里的方法更是大张旗鼓地用了多次Gaussian来逼近Dipole,在texture space作6次blur后线性叠加,得到非常真实的皮肤效果。但这么做的开销实在太大了。 首先看看直接用Blinn Phong BRDF渲染的结果,皮肤本身看起来很塑料。 SSSSS 到了GPU Pro里,Jorge Jimenez等人提出了SSSSS的方法。在s ...