gpt4 book ai didi

ios - 使用 "large"内核避免依赖纹理读取

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:22:11 26 4
gpt4 key购买 nike

在 iOS 上,我发现大多数(所有?)设备的 GL_MAX_VARYING_VECTORS 为 8。我还读到(参见注释 here),即使是 swizzle 操作也算作依赖纹理读取。总之,这些限制似乎意味着你不能拥有超过八个元素的卷积核(至少,不是最有效的)。

有没有一种方法可以在不引起相关纹理读取的情况下评估超过八个元素的卷积核?

编辑:如果有任何不同,我的内核是一个旋转的正方形:


• • •
• • • • •
• • •

我目前的策略是创建两个版本的纹理 - 一个相对于另一个偏移 (1, 1) - 并使用这个内核:


• • •
• • •

我不知道加倍的数据流是否会超过避免依赖纹理读取的好处。正如@TraxNet 所建议的,我可能只需要对其进行测量。

最佳答案

Together, these restrictions seem to imply that you cannot have a convolution kernel of more than eight elements (at least, not a maximally efficient one).

我想你的意思是只有八个元素没有依赖读取。您可以通过在片段着色器(依赖)中生成新的纹理坐标来多次查找纹理。

根据查找的分布范围,其中一些可以在纹理缓存中找到,这可能会减轻一些性能损失。此外,这并不意味着如果您使用统一(“常量”)来置换纹理坐标,则着色器编译器无法优化此代码路径并在着色器执行之前引入您的纹理数据。但是,是的,你是对的,如果没有 9 个不同的向量,你就无法在顶点着色器上实现 3x3 卷积。

最后你需要衡量和决定。

关于ios - 使用 "large"内核避免依赖纹理读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16369377/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com