独立于目标的光栅化(TIR)是DirectX 11.1中新的hardware功能,Microsoft used to improve Direct2D in Windows 8。 AMD声称TIR improved performance in 2D vector graphics by some 500%。与Nvidia有一些“言语之战”,因为Kepler GPUs apparently don't support TIR (among other DirectX 11.1 features)。 TIR的想法似乎起源于Microsoft,因为它们有patent application for it。
现在Direct2D很好你的操作系统是Windows,但是有一些OpenGL(可能是供应商/ AMD)扩展,可以访问相同的硬件/驱动程序TIR吗?我认为AMD有点奇怪,因为OpenGL没有独立于供应商的2D矢量图形扩展;目前只有Nvidia正在宣传NV_path_rendering,其架构为rather different from Direct2D。所以目前还不清楚AMD在加速2D矢量图形方面所做的任何事情都可以在OpenGL中插入(或显示),这与Direct2D + Direct3D世界不同。我希望我的悲观主义能够通过以下简单的答案解开。
我实际上在这里发布了一个更新,因为评论风格的帖子没有足够的空间。关于TIR做什么似乎有些混乱,这不仅仅是“没有附加存储空间的帧缓冲”。这可能是因为我只将上面链接到了大多数非常糟糕的专利(这是我在TIR上可以找到的最详细的文件)。我发现的TIR的最佳高级概述是来自Sinofsky's blog post的以下代码段:
为了提高渲染不规则几何体(例如地图上的地理边界)时的性能,我们使用称为目标独立光栅化或TIR的新图形硬件功能。
TIR使Direct2D在曲面细分上花费更少的CPU周期,因此它可以更快速有效地向GPU提供绘图指令,而不会牺牲视觉质量。 TIR适用于支持DirectX 11.1的Windows 8专用新GPU硬件。
下面的图表显示了在支持TIR的DirectX 11.1 GPU上从各种SVG文件渲染抗锯齿几何体的性能改进:[图表剪切]
我们与图形硬件合作伙伴[阅读AMD]密切合作,设计了TIR。由于这种伙伴关系,使得有可能取得显着进步。 DirectX 11.1硬件已经上市,我们正在与合作伙伴合作,以确保更广泛地提供更多支持TIR的产品。
这是我要求从OpenGL使用的硬件。 (哎呀,即使是从Mantle调用它,我也会满意,因为它也可以在Windows之外使用。)
答案 0 :(得分:2)
你想要的是ARB_framebuffer_no_attachment,它允许你创建一个没有附加存储空间的帧缓冲区。在渲染到这样的帧缓冲区时,您需要使用图像加载/存储扩展来写入缓冲区。 AMD和NVIDIA的最新硬件都支持此扩展,如您所见:http://delphigl.de/glcapsviewer/listreports2.php?listreportsbyextension=GL_ARB_framebuffer_no_attachments
答案 1 :(得分:1)
我认为TIR只是对nvidia和AMD用于抗锯齿的功能的再利用。
Nvidia calls it coverage sample antialiasing及其gl扩展名为GL_NV_framebuffer_multisample_coverage。
AMD calls it EQAA但它们似乎没有gl扩展名。
答案 2 :(得分:1)
与TIR等效的OpenGL是None
。
在Nvidia的Maxwell架构的新功能页面中提到了此问题:https://developer.nvidia.com/content/maxwell-gm204-opengl-extensions。
答案 3 :(得分:0)
仅需扩展Nikita的答案,says上会有一个更详细的Nvidia(2017)扩展页面:
(6) How do EXT_raster_multisample and NV_framebuffer_mixed_samples
interact? Why are there two extensions?
RESOLVED: The functionality in EXT_raster_multisample is equivalent to
"Target-Independent Rasterization" in Direct3D 11.1, and is expected to be
supportable today by other hardware vendors. It allows using multiple
raster samples with a single color sample, as long as depth and stencil
tests are disabled, with the number of raster samples controlled by a
piece of state.
NV_framebuffer_mixed_samples is an extension/enhancement of this feature
with a few key improvements:
- Multiple color samples are allowed, with the requirement that the number
of raster samples must be a multiple of the number of color samples.
- Depth and stencil buffers and tests are supported, with the requirement
that the number of raster/depth/stencil samples must all be equal for
any of the three that are in use.
- The addition of the coverage modulation feature, which allows the
multisample coverage information to accomplish blended antialiasing.
Using mixed samples does not require enabling RASTER_MULTISAMPLE_EXT; the
number of raster samples can be inferred from the depth/stencil
attachments. But if it is enabled, RASTER_SAMPLES_EXT must equal the
number of depth/stencil samples.