问题标签 [astc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
9826 浏览

ios - 哪些 iOS 设备不支持 ASTC 纹理压缩?

iPad 3 绝对不是。CPU解压滞后,我想知道大约有多少用户遇到这个问题。

0 投票
3 回答
1376 浏览

ios - 在设备(iOS)上编码 ASTC?

是否有任何库能够按需将图像数据编码为 ASTC 纹理?我知道它是 CPU 密集型的,但无论如何都很感兴趣。

0 投票
1 回答
494 浏览

android - 带有 ASTC 8x8 纹理的 glCompressedTexSubImage2D 上的 GL_INVALID_VALUE

glCompressedTexSubImage2D我在使用 ASTC 8x8 纹理的 Android 手机(Adreno 530 GPU)上遇到了一个奇怪的问题。我的设置最初包含一个用于促进异步纹理上传的 PBO,但我已将其缩减到最低限度以重现此问题。请注意,它作为本机插件托管在 Unity 5.5.2f1 中,因此 Unity 可能会在我的调用之间更改某些状态glCompressedTexSubImage2D

首先,我正在针对 Android 平台 24 进行编译,<GLES3/gl32.h>以便现在可以访问,并使用正确的标志和设置来启用 C++11 功能。

我定义了这个结构,它存储通过插件更新的每个纹理的状态:

我已经验证了来自 Unity 的数据是否正确传递,这是(为清楚起见而缩短的)函数,用于上传纹理:

总而言之,我将任意数量的数据从 Unity 中的流推送到本机插件中的缓冲区(代替映射的 PBO 指针),然后一次上传多行通过glCompressedTexSubImage2D为了使事情变得更简单,我正在跳过流的前 16 个字节(文件头)并读取 4096 个字节的块(正好是一行的大小)。因此,std::copy 的最后一点目前实际上并没有复制任何数据。我已经通过记录尽可能多的数据来验证这一点,缓冲区每次都会从 4096 的精确倍数调整为 0。

如所写,此函数将成功yOffset = 0(根据规范,无论在该调用中上传了多少行,8 192 或 8 的任何倍数)。在第一次调用之后,所有其他调用都失败并显示GL_INVALID_VALUE. 如果我颠倒 Y 顺序(yOffset of data.height - (num_rows * 8)),那么最后一次调用是唯一成功的调用。

使用 GL_KHR_debug 进一步挖掘,我的实现返回“图像大小对压缩纹理无效”

此外,这是真正让我感到困惑的部分,如果我交换 xOffset 和 yOffset 以及宽度和高度,则纹理上传时不会出错。我的块都在不正确的位置,但这个错误永远不会发生。从文档中的表格计算 imageSize 时两个变体具有相同的 imageSize 值。注销参数时,我的 imageSize 值是相同的。

您可以在下面看到,这是在第一次上传后使用未初始化内存运行的原始代码:

原始代码截图

现在,随着 xOffset/yOffset 和宽度/高度翻转,整个纹理正在上传,但块未对齐(如果以错误的顺序上传块,您会期望什么)

价值观翻转

ASTC 是否有任何限制会导致这种行为?有没有其他人遇到过类似的事情?一些论坛帖子提到了一些导致上传失败的外部状态变化,我还没有找到任何东西(这包括 glActiveTexture,上面的代码中没有显示)。为什么交换参数会导致错误消失?

0 投票
1 回答
822 浏览

animation - 如何解压缩带有附加 .ccz 扩展名的 .astc 文件?如何查看 .ita 文件?

首先,全面披露:我对编码很陌生,对文件分析也很陌生,但我预计很快就会在学校学习,所以请原谅我在未来的互动中的无知。

作为一个项目,我决定剖析我非常喜欢的移动应用程序的文件。这个应用程序是未来世界:明日世界。我是漫画的忠实粉丝,甚至在这些东西上花钱,所以我认为我选择是很自然的。

提取 .apk 文件很容易,我找到了他们在游戏中使用的一些资产,例如音乐、声音字节和一些 .png。都是简单的东西。

然而,有两个文件让我感到非常困惑:扩展名为 .astc.czz 的文件和一个非意大利语的 .ita 文件自述文件,开发人员告诉我这些是动画文件。

请允许我进入我知道的和我不知道的:

文件名.astc.czz

此处的示例文件 我将 .astc 识别为压缩文件,并被告知 .astc 文件在手机游戏中很常见。很公平,但真正的扩展名是 .czz,文件的“真正”扩展名将我带入了死胡同。我在 github 上找到了ARM-Software 的 ASTC 评估编解码器,所以我尝试了一下。我将扩展名更改为 .astc,然后尝试保留 .czz 但编解码器每次都会给我一个错误。这就是我表现出我的无知的地方,我不知道正确的方法,所以我向你展示了我尝试过的每一种组合。我用user替换了我的名字。

那里没有成功。

然后我了解到 .CZZ 文件显然与visECAD Viewer相关联,我下载了该文件,并且 .astc.czz 文件与该程序相关联。我尝试打开它们,但 visECAD 说它无法打开它们,因为它们“已过时”。所以这是另一个死胡同。

对了,我知道的就这么多。

文件名.ita

此处的示例文件 出于好奇,我实际上已经通过电子邮件向开发人员发送了有关此文件(以及 astc 文件)的信息,他们说这些是游戏的动画。他们无法向我发送查看器,这很好,但我什至不知道与哪些 .ita 文件相关联的不是意大利语读我的。任何见解都将不胜感激,动画很棒,我很想看到它们。

为了全面披露,这里是开发人员发送给我的内容片段:

那些奇怪的文件类型实际上是压缩文件(如“.astc.ccz”)。不同的设备使用不同的压缩方法,因此我们支持多种类型以保持较低的存储和内存使用率。有些设备不使用压缩,只使用相同文件名的 .png 版本。

.lta 文件是游戏的动画。我希望我可以帮助您查看它们,但是我无法向您发送查看器。:(

好了,各位,抱歉拖了这么久,在此先感谢大家。我已经很感激了!

0 投票
1 回答
277 浏览

opengl - 从 ASTC 纹理中移除 KTX 容器

有没有一种简单的方法可以从我在 KTX 文件中的 ASTC 8x8 纹理中删除容器。我想使用 ARM 的 astc-encoder 工具从.astc->.png但我只有 ASTC 8x8 格式的 KTX 文件

0 投票
1 回答
675 浏览

unity3d - 法线贴图的 ASTC

我正在尝试压缩我的法线贴图纹理,所以我使用的是 ASTC 4x4。

它对其他纹理(又名漫反射)完全有效,但法线贴图的质量损失太大。

有没有办法直接提高法线贴图的 ASTC 质量?

我尝试使用 -normal-psnr 标志,但它使我的纹理变灰(而不是正常的蓝色)

ASTC法线贴图:

在此处输入图像描述

PNG法线贴图:

在此处输入图像描述

0 投票
0 回答
627 浏览

android - 有没有一种简单的方法可以检查 Android 设备是否支持 ETC2 和 ASTC?

有没有一种简单的方法可以检查 Android 设备是否支持 ETC2 和 ASTC?顺便说一句,我不想​​创建 OpenGL 上下文来获取扩展,这是因为我需要知道支持功能才能从远程服务器请求正确的纹理资源。

0 投票
0 回答
106 浏览

metal - 如何在金属上创建 astc 压缩切片 3d 纹理?

我从一些来源(如此链接:https ://metalbyexample.com/new-in-metal-3/ )了解到 iOS 13 支持 3D ASTC 纹理。但是,在苹果的开发文档(https://developer.apple.com/documentation/metal/mtltexture/1515679-replace)中,它仍然说“您不能使用带有 MTLTextureType.type3D 纹理的压缩像素格式。”。

金属真的支持 astc 3d 纹理吗?如果是这样,我该如何创建一个?