“紧缩”开源纹理压缩库与美国专利#20110115806

2021-06-11 08:47:30

我是Crunch的作者,一个漂亮的开源DXTC压缩库,具有两个唯一的功能:

R / D优化DXTC压缩:DXTC通常非常有损,但其他DXTC压缩机只能优化最大可实现的质量。紧缩允许开发人员在由此产生的DXTC数据的可压缩性中出于相对较大的收益来故意折衷质量。此模式很酷,因为客户端应用程序并不需要更改以效益(只要无损地压缩DXTC位以某种方式)。

不转换文件格式:crunch可以将MiPmapped纹理数据输出到自定义格式(使用.crn扩展),该自定义格式(使用了.crn扩展)旨在将直接转换为DXTC的快速转换为没有中间重新构建步骤。整个代码转换器包含在单个大C ++头文件中。从每个比特透视的质量,.crn执行或多或少地与R / D优化DXTC接下来是LZMA(有时会更好,有时更糟)。速度方向,副码步骤非常快(例如,比LZMA更快)。

我于2009年创建了这个图书馆,在我的一年里,在晚组工作室工作,在八月的阀门开始全职职位' 09。我的原型版本足以在2009年中期竞争JPEG +实时DXTC。我将Crunch命令行工具和图书馆发送给游戏行业的几个人和公司(Matt Pritchard在阀门,John Brooks在Blue Shift Inc.,以及当时暴风雪的Colt Mcanlis)。 Matt Pritchard在阀门实际上尝试了早期版本的危险在此时的半衰期2纹理资产上,这是一个非常酷的验证,我有一个有趣的东西。

我试图探索商业许可机会,蓝色转变作为经销商。他们在过去的技术许可/分布中有一些适度的成功(在PS1 / PS2 / Xbox1时代),所以它似乎值得一试。但现实是,像这样的图书馆的商业化是一个非常非常难的事情。诚实地,蓝色班次或者我真的没有时间,能源或专注于像正确的文档,优化,API设计/简化一样设计,并将库移植到足够的平台,以实际制作足够的产品。游戏公司Weren'我对我们所提供的产品感兴趣,所以我基本上放在后面的燃烧器上,然后搬到了西雅图地区,在较晚的阀门开始了一份新的工作' 09。

在帮助船舶门户2和Dota 2之后,我在2011年底休息了几个月的时间来解压缩,最后推出谷歌代码的门。我花了很多时间无情地将API简化为几个死亡的简单函数调用。我可能经历了4-5个版本的图书馆,每个版本都越来越小,更专注,更易于使用。 Colt Mcanlis(现在在谷歌),我重新测试了成千上万的游戏纹理,照片和精灵的整个东西。我终于在2011年12月27日公开发布了Zlib许可证。

不幸的是,通过向世界释放危机的行为,我不知道我正在进入一个虚拟专利雷区。 JUST作为图书馆开始使用游戏,WebGL和开源开发人员获得牵引力,我收到了我的第一个"专利违规通知"通过电子邮件从Doug Rogers于7月20日:

我立即让Doug知道紧缩只是一个开源库,而我没有以任何方式从紧缩(没有捐赠,咨询,许可等)我'实际上花了很大制定这个图书馆的自己的时间(和间接,钱)的数量。自从开始阀门I' ve学到了关于优化价值并专注于客户的一切事物'实际需要。我意识到通过使用非常宽容的许可(Zlib)释放这段代码,从开发人员社区释放和学习来获得更多的价值,以确定他们真正想要的,并认为是有价值的。 (并且有趣地,我认为社区想要在一个图书馆中的DXTC纹理压缩/转码,以及他们告诉我他们真正想要的东西,其中两个非常不同的东西。)

无论如何,我从他在NVIDIA写道时,我从他的优秀NVDXT纹理压缩工具中了解道格。我使用这个库,同时为Xbox 1启动标题&#34创建完全延迟的渲染器;史莱克" Doug'图书馆和工具基本上是DXTC压缩中的黄金标准多年。我和doug说道,我不觉得他的意图以任何方式糟糕或消极。我不是一个软件专利的大粉丝,但更好或更糟,他们是"王国的硬币"在技​​术世界。我没有专家专家,但我认为Doug试图捍卫他的专利,从被感知的侵权(一种"使用它或松散它"情况)在释放他自己的产品之前。

此时,我' ve讨论了Dou的几种可能性。其中一些涉及美国将其作为单一产品共同商业化紧缩及其代码。但是,我觉得此时runch已经是开源的,我将通过用任何类型的商业术语或不同(较少的允许)许可来重新许可图书馆来对开源社区进行扰动。如果有的话,我将更改许可证更加允许,或者甚至可以在其上拍打未定的许可证。我认为我早些时候给他的电子邮件很好地描述了目前的情况:

嗨Doug,谢谢,但在考虑所有这些东西之后,我真的认为它是最好的,如果我不参与任何商业化活动。在我开始阀门之前,我真的很感兴趣(我试图使用Blue Shift,Inc。作为2009年的控制台/ PC开发者的分销商)。但是,我现在有一份关于我的时间和能量的工作,即它对我有很大的意义,可以进入这个图书馆。 (如果你仔细观察日期,我几乎没有能够自初始发布以来释放任何更新。)我宁愿在业余时间继续推动艺术状态,我&#39 ; M很酷,只是让我的名字与这些努力相关联。基本上 - 我已经有了一个艰难的一天的工作,我宁愿不转动一些有趣的爱好(可能是间接的职业生涯福利)进入另一份工作。

我不想让你或他人慢慢地减慢你,并试图将这种东西商业化,我不希望公司或个人无法从中受益。我觉得紧缩已经证明了可能的是有足够的人,那里的一个很少但在那里的一个小但不断增长的市场。 Crunch'许可证是Zlib,它已经非常宽容,我打开了将许可更改为别的东西(MIT / BSD,偶数Unlicense.org),如果有助于向前移动。我已经有了一堆我的开源压缩代码(MINIZ,LZHAM,JPEG-COMPRESSOR)使用的几家公司(如EPIC MEGAGAGES,VALM和CRYTEK),所以这一并非似乎对我的根本不同。我问的一切都是为了某个地方的信用,但即使是必不可少的。如果你去Siggraph,我可以解释图书馆如何放在一起,大多数部分都很容易修改。

在技​​术方面,我不对你的产品讨论一下,但它可能正是谷歌'现在的WebGL团队需要。您的输出数据是否易于转发到DXTC,并使用GZIP进一步可压缩?我问,因为.crn不是这些东西中的任何一个(CRN转码器很大而复杂,所以它' s不是最适合在javascript / webgl应用程序中使用的。

WebGL Guys真正需要的是:一种快速而超级易于转发到DXTC的格式(在C或JavaScript中)

总代码转换器代码大小必须非常小(因为每次加载时需要使用网页传输)

使用专门的GZIP非常可压缩的格式(因为浏览器支持GZIP)

理想情况下,对JPEG +实时DXTC大致竞争的东西,或者对于同一个PSNR的文件大小仅为10-20%。

.crn ISN' t真的是最合适的(最初为P​​S3 / X360控制台游戏而非WebGL设计)。 '一位谷歌开发者一直试图修改CRNLIB,所以它支持"生和#34;文件,但我不认为他的进步'和紧缩' s rd优化的dxtc mode + gzip比同一个psnr大于的30%~crn,所以它没有足够的解决方案。 (您真的需要LZMA或LZHAM为此选项进行竞争力,这是浏览器中可用的,而且交叉编译这些库是不实际的或引人注目的),如果您愿意,我可以通过电子邮件或亲自介绍您谷歌的开发者一直在努力解决这些东西。

最后我听说,SOE家伙正在使用Crunch' S RD优化的行星2的DXTC模式,因为从.crn的比率增益' t证明了额外的复杂性(和潜在的专利风险)代码转换。然而,现在他们知道实际上是什么可以的,如果有商业解决方案,我会打赌他们会去。如果您想和这些家伙谈谈,请告诉我。

在这一点上,我真的想继续我的生活,并在过去举行(和s3tc / dxtc!)。我强烈觉得视频卡供应商应该聚集在一起并创建一套新的GPU友好,开放的纹理压缩格式,相对容易压缩/解压缩,非常明确,易于使用开源库,也很快就可以了有效地代否可转换(在C,Python,JavaScript等中)。我不认为任何现有的纹理压缩格式(PVRTC,S3TC / DXTC等,新DX11格式等)是今天面临的实际问题的好解决方案(稍后更多)。这就是恰好布兰登·琼斯,一个webgl和javascript开发人员都将展示紧缩(在所有东西的JavaScript中的转码!)在Siggraph的WebGL BOF(羽毛)活动中:Brandon Jones:Crunch / DXT / Rage演示http://www.khronos.org/news/events/siggraph-los-angeles-2012星期三,8月8日星期三,下午4:00 - 下午5:00,洛杉矶洛杉矶洛杉矶万豪酒店,金舞厅沙龙3

此外,I' ll在siggraph的后来OpenGL BOF事件中,在左边4 dead 2 Linux上提供简短的演示:

左4 dead 2 Linux:OpenGL-富格雷奇(阀门)的6至300 FPS 星期三,8月8日,下午6:00 - 下午7:00,JW万豪洛杉矶洛杉矶万豪酒店,金舞厅沙龙3