NV_path_rendering替代方案

Eci*_*ana 9 opengl bezier gpu

我刚看了Siggraph 2012的一篇非常令人印象深刻的演讲:

http://nvidia.fullviewmedia.com/siggraph2012/ondemand/SS106.html

我的问题是,这是一个专有的Nvidia扩展,在GPU上快速渲染Bezier路径的其他可能性是什么?或者,作为OpenGL标准的一部分,是否有任何希望最终?是否有可能给出任何时间估计最终何时发生?

你知道处理GPU路径渲染的任何其他(最好是开源)项目吗?

编辑:现在原始论文有一个新的"附件":

https://developer.nvidia.com/sites/default/files/akamai/gamedev/files/nvpr_annex.pdf

Fiz*_*izz 16

现成的替代品

NanoVG(https://github.com/memononen/nanovg)似乎有一点牵引力(http://www.reddit.com/r/opengl/comments/28z6rf/whats_a_popular_vector_c_library_for_opengl/).所以你可以看看它们的实现.我自己没有使用过NanoVG,而且我对它的内部结构几乎不熟悉; 我所知道的是他们特别拒绝使用NV_path_rendering:https://github.com/memononen/nanovg/issues/25

正如我在上面的评论中已经提到的,NV_path_rendering现在已经在Skia中实现,并且似乎也被cairo追捧,请参阅下面tjklemz上面的回答,以获取有关这些细节的链接.NV_path_rendering的一个问题是它在某种程度上依赖于固定功能管道,所以有点与OpenGL ES 2.0不兼容,但是有一个解决方法,那就是https://code.google.com/p/chromium/issues/detail ?ID = 344330

我会远离任何与OpenVG相关的东西.致力于此的委员会已于2011年完成; 它现在基本上是一个遗留产品/ API.OpenVG的大多数实现(包括ShivaVG)也很古老,并且根据https://github.com/memononen/nanovg/issues/113使用固定功能的OpenGL 如果你真的必须使用类似OpenVG的库,MonkVG看起来最好保持[读作:最近被遗弃]免费(代码:https://github.com/micahpearlman/MonkVG ; 2010年公告http://www.khronos.org/message_boards/showthread.php/6776-MonkVG -an-OpenSource-implementation-available).他们声称它可以通过OpenGL ES 1.1和2.0在Windows,MacOS X,iOS和Android上运行.[相当大的]警告是MonkVG不是OpenVG的完整实现; 请参阅其代码页上的"TODO"部分,了解缺少的内容.

我还发现,开罗(攀高)开发,贝达·埃斯凡博德,写了一个新的符号(即字体)呈现库(https://code.google.com/p/glyphy/):" GLyphy是一个有符号距离-field(SDF)文本渲染器使用OpenGL ES2着色语言.[...] GLyphy [...]使用提交给GPU的实际向量来表示SDF.这样可以获得非常高质量的渲染." 据我所知,它尚未在开罗使用.(Behdad搬到谷歌[来自Red Hat]并且cairo在相当长一段时间内没有看到发布,所以也许GLyphy会进入Skia而不知道......)我不确定这个解决方案是否可以随意推广路径.(另一方面,NV_path_rendering还可以渲染字体和字距,以防您不知道.)Linux.conf.au 2014上有一个演讲,如果您对GLyphy感兴趣,请务必留意:https ://www.youtube.com/watch?v = KdNxR5V7prk如果您不熟悉(原始)SDF方法,请参阅http://www.valvesoftware.com/publications/2007/SIGGRAPH2007_AlphaTestedMagnification.pdf

我找到了一个Mozilla开发者的演讲,总结了今天使用的常用方法:https://www.youtube.com/watch?v = LZis03DXWjE#t = 882(时间戳是跳过介绍部分,他告诉你什么GPU是.)

DYI(可能)

顺便说一下,很多路径渲染的东西都是命令/状态变化密集型的.我认为Mantle,DX12和OpenGL等价物(主要是扩展名http://gdcvault.com/play/1020791/)可能会有所改善.

我想我还应该提一下,Nvidia已获得(至少)四项与NV_path_rendering相关的专利:

请注意,有17个USPTO docummets连接到这些文档,因为"也发布为",其中大多数是专利申请,因此完全有可能从这些专利中获得更多专利.对此进行更新:Google并未将所有这些内容完全链接在一起,因此还有一些已被授予肯定:

我不确定他们愿意以什么条款许可那些......

我发现Kilgard自己的一个非常好的常见问题解答是"有关矢量图形/路径渲染的特殊之处",不幸的是它被埋在OpenGL论坛的某个地方http://www.opengl.org/discussion_boards/showthread.php/175260-GPU -accelerated-path-rendering?p = 1225200&viewfull = 1#post1225200.对于任何考虑快速/黑客替代解决方案的人来说,这都是非常有用的读物

Direct3D 11.1中还有一个新功能可能是有用的,因为微软在Windows 8中用它来改进它的Direct2D实现; 它被称为目标独立光栅化(TIR).除了微软有专利申请之外,我不太了解它.http://www.google.com/patents/US20120086715美中不足的是,只有AMD的GPU似乎真正支持它每这种"口水战" http://www.hardwarecanucks.com/news/war-of-words-之间,NVIDIA和- AMD-过的DirectX-11-1-支撑继续/

采用

我没有一个水晶球,因为NVpr将被非Nvidia采用,但我认为他们正在努力推动它.在OpenGL的4.5 Nvidia的表现已经相当多了接管了-至少就演示洁具来讲,我认为是一个有点傻(因为它不是OpenGL的4.5内核的一部分).尼尔·特雷维特也涵盖NVpr不止一次(如https://www.youtube.com/watch?v=eTdLwfOLoG0#t=2095)和Adobe Illustrator中的β2014使用它,以及谷歌的Skia的.

  • 非常感谢您的详细解答!如果您了解任何新发展,请再次分享. (2认同)