Skip to content

Archive

Category: API
在关于D3D11,你必须了解的几件事情(二)中,我提到过目前的驱动都不支持D3D11的Multi-threaded,而是在D3D11 runtime中通过软件实现command list。昨天在NV Forceware R280及以上的驱动上发现,Driver Command List已经得到了支持。也就是说,在NV的D3D10和D3D11级别的显卡上都可以通过D3D11提供的Multi-threaded来进行加速了! 拿DX SDK的MultithreadedRendering11例子进行测试,Immediate、ST Def/Scene、MT Def/Scene、ST Def/Chunk、MT Def/Chunk的帧速率分别为54.67、35.06、62.20、39.88、64.83。很明显可以看出,Multi-threaded确实有了真正的性能提升。之前利用软件实现的时候,这个例子的MT只能达到Immediate的速度而已。 ...
Windows 8 developer preview不但向开发者提供了Win8和VS2011的预览,还在其中隐藏了之前没有宣布过的Direct3D 11.1。现在,D3D11.1的初期文档也出现在MSDN中,让我们来看看D3D11.1提供了哪些新特性。 已经添加入D3D11.1的新功能有: Shader tracing。在API层面提供更多调试shader的能力。 Direct3D device sharing。让D3D 10的API和D3D 11的API可以共享同一个渲染设备。 Check support of new Direct3D 11.1 features and formats。更新了ID3D11Device::CheckFeatureSupport和ID3D11Device::CheckFormatSupport,以支持D3D 11.1和DXGI 1.2提供的新格式。 Create larger constant buffers than a shader can access。可以建立超 ...
上文介绍了D3D11的两个重要特性compute shader和multi-threaded,本篇专注于两个不能在D3D10硬件上使用的、纯D3D11的新特性tessellation和BC6H/BC7纹理压缩。 Tessellation 很 多人会说D3D11增加了tessellation shader这个stage,但真相是增加了hull shader、tessellator和domain shader三个stage。Hull shader的输入是patch的控制点(三角形、四边形这样的图元,最多有32个控制点),计算出tessellation等级、确定 tessellation的方法等。它的输出被送给固定单元的tessellation进行细分。Domain shader的输入是细分后的bary centric坐标、来自hull shader的控制点,它负责计算插值后的顶点坐标。 Tessellation早就存在于一些GPU。 D3D9 ...
上文介绍了feature level和option features这两个最容易被误解的D3D11特性,本篇主要探讨一下另外两个重要特性,compute shader和multi-threaded。他们同样可以在D3D10级别硬件上使用,但存在很多细节需要注意。 Compute Shader compute shader(也叫DirectCompute)是D3D11新增的主要功能之一。在D3D11的GPU上,compute shader是完整的5.0版本,而在D3D10.x的GPU上,compute shader有个简化的4.x版。两者的具体差别请见Compute Shaders on Downlevel Hardware。 CS 4.x的一个很重要缺点是不支持RWTexture,所以shader无法写入texture,只能写入buffer。(这是NV造成的。AMD的硬件很 早就可以做到写入RWTexture,但因为CS 4.x要求同时兼 ...
OpenGL 4.2发布当天,NVIDIA就发布了支持OpenGL 4.2的驱动。现在AMD也发布了支持4.2的新驱动Catalyst 11.8 Preview。 Windows版下载 Linux版下载 详细信息请看这里。
[zh] KlayGE游戏引擎的子项目glloader是一个OpenGL扩展载入库。它支持OpenGL核心1.0到4.2,OpenGL ES核心1.0到2.0,同时也支持WGL、GLX、EGL和其他GL/GLES扩展。glloader有一个XML格式的数据库,包含了GL/GLES的所有入口函数、标示和类型定义。 请从这里下载。 [/zh] [en] The glloader, a subproject of Klay Game Engine, is an OpenGL extension loading library. It supports OpenGL core 1.0 to 4.2, OpenGL ES core 1.0 to 2.0, as well as WGL, GLX, EGL and other GL/GLES extensions. The glloader also includes a datebase of all entries, tokens and typedefs in GL/GLES in XML format. You can download it ...
仅以此文献给那些自以为了解D3D11的专家 D3D11正式发布已经有两年多了。在这短短的时间里,各GPU厂商 都相继推出了支持D3D11的显卡,许多游戏引擎也迅速推出了对D3D11的支持。但在国内,D3D11的接受度几乎为零。国内很多“大”游戏公司的“技 术人员”对于D3D11完全出于一知半解的状态,却又在不懂装懂地指手画脚。 关于D3D11,有些事情你确实必须了解。 Feature Level 从KlayGE 3.11.0发布以来,几乎每个月都会听见有人问我,“为什么要去掉D3D9和D3D10插件,仅保留D3D11和OpenGL?”。(最近这个频率显著 提高,基本到了每周1-2次的程度)。在他们的观点里,D3D11就得在D3D11的硬件上跑,而现在D3D11硬件尚未普及,这么做会影响到 KlayGE ...
在SIGGRAPH 2011上,Khronos正式发布了OpenGL 4.2的规范,把最新的图形功能带给了最先进最为广泛应用的跨平台2D和3D图形API。完整的规范文档可以从这里下载。 OpenGL 4.2的新功能有: GL_ARB_texture_compression_bptc GL_ARB_compressed_texture_pixel_storage GL_ARB_shader_atomic_counters GL_ARB_texture_storage GL_ARB_transform_feedback_instanced GL_ARB_base_instance GL_ARB_shader_image_load_store GL_ARB_conservative_depth GL_ARB_shading_language_420pack GL_ARB_internalformat_query GL_ARB_shading_language_packing GL_ARB_map_buffer_alignment 这些功能同时以核心和扩展的形式提供 ...
上周末实现了打算在KlayGE 4.0中使用的render to texture array功能。于是自然而然想到在ShadowCubeMap这个例子中使用,用来在1个pass内直接生成cubemap。结果,不比不知道,一比吓一跳。在不同GPU上FPS如下: NV 9800GT NV 480GTX AMD 5870 6 pass Cubemap 158.63 312.82 241.10 Dual Paraboloid 5.77 375.32 211.91 1 pass Cubemap 66.08 288.77 228.44 1 pass Cubemap with instance 105.37 281.34 224.10 1 pass Cubemap with instance GS NA 287.80 211.01 9800GT所在机器的CPU比后两套系统差得多,没法横向比较,只能纵向比较。后两套系统只有GPU不同,可以横向和纵向比较 ...
上篇文章讨论了两个API在功能上的交集,以及互操作的方法。本篇作为系列的结局,将讨论一些平台相关的问题。 平台 长久以来,一直可以听到一种说法,D3D只能在Windows上用,而OpenGL可以用在所有平台。那么,我们就来看看在各个平台上,几种3D API的可用性。 桌面平台 Windows Windows 平台在这方面相当全面,D3D11、D3D10、D3D9、OpenGL、OpenGL ES都支持(需要注意的是,只有Vista+支持D3D10和D3D11)。由于OpenGL 4.1可以建立OpenGL ES的context,NV和AMD的驱动都提供了原生的OpenGL ES。这也为浏览器中WebGL的实现提供了方便。 Mac OS X Mac OS X所支持的OpenGL比较老旧,也不支持D3D和OpenGL ES。 Linux Linux的主打API是OpenG ...