- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想在 openGL 中对 3D 纹理执行模糊处理。由于它是可分离的,我应该能够在 3 次通过中完成。我的问题是,应对它的最佳方法是什么?
我目前有 3D 纹理并使用 imageStore 填充它。我应该为模糊创建另外 2 个纹理拷贝,还是有办法在使用单个纹理时做到这一点?
我已经在使用 glCompute 来计算 3D 纹理的 mip 贴图,但在这种情况下,我从 0 级纹理读取并写入下一级纹理,因此没有冲突,而在这种情况下,我需要一些拷贝。
最佳答案
简而言之,它不能在 3 遍中完成,因为它不是 2D 图像。即使内核是可分离的。您必须分别模糊每个图像切片,即图像的 2 次传递(如果您使用的是 256x256x256 纹理,那么您有 512 次传递仅用于沿 U 和 V 坐标模糊)。你仍然需要沿着 T 和 U(或 T 和 V:无关)坐标模糊,这是另外 512 遍。您可以使用 bilinear filter 提高性能并读取纹素之间的值以节省一些恒定的处理成本。 3D 模糊会非常昂贵。
性能提示:也许您不需要模糊整个纹理,而只模糊其中的一部分? (可见部分?)
如此大量通过的问题是 GPU 和 CPU 之间的交互次数:drawcalls 和 FBO 设置都是缓慢的操作,会挂起 CPU(可能是 different API 与低 CPU 开销会更快)
尽量不要分离内核:
如果你有一个小内核(我猜最多 5^3,只有分析会显示最大内核大小)可能最快的方法是不分离内核(就是这样,你节省了很多 drawcalls 和 FBO 绑定(bind)并将一切都用于 GPU 填充率和带宽)。
随着时间的推移分散工作:
内核是否分离并不重要。您可以每秒计算一次(可能使用更大的内核),而不是每帧都计算高斯模糊。然后,您使用前一个模糊和下一个模糊的插值作为“连续模糊数据”的来源(每帧 2x 3D 纹理样本,这比连续模糊便宜得多)。
关于c++ - 3D 纹理上的 OpenGL 高斯内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25180367/
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我试图用这种形式简单地获取数字 28 integer+space+integer+integer+space+integer我试过这个正则表达式 \\s\\d\\d\\s 但我得到了两个数字11 和
最近一直在学习D语言。我一直对运行时感到困惑。 从我能收集到的关于它的信息中,(这不是很多)我知道它是一种有助于 D 的一些特性的运行时。像垃圾收集一样,它与您自己的程序一起运行。但是既然 D 是编译
想问一下这两个正则表达式有区别吗? \d\d\d 与 \d{3} 我已经在我的本地机器上使用 Java 和 Windows 操作系统对此进行了测试,两者都工作正常并且结果相同。但是,当在 linux
我正在学习 Go,而且我坚持使用 Go 之旅(exercise-stringer.go:https://tour.golang.org/methods/7)。 这是一些代码: type IPAddr
我在Java正则表达式中发现了一段令我困惑的代码: Pattern.compile( "J.*\\d[0-35-9]-\\d\\d-\\d\\d" ); 要编译的字符串是: String string
我在 ruby 代码上偶然发现了这个。我知道\d{4})\/(\d\d)\/(\d\d)\/(.*)/是什么意思,但是\1-\2-\3-\4 是什么意思? 最佳答案 \1-\2-\3-\4 是 b
我一直在努力解决这个问题,这让我很恼火。我了解 D 运行时库。它是什么,它做什么。我也明白你可以在没有它的情况下编译 D 应用程序。就像 XoMB 所做的那样。好吧,XoMB 定义了自己的运行时,但是
我有两个列表列表,子列表代表路径。我想找到所有路径。 List> pathList1 List> pathList2 当然是天真的解决方案: List> result = new ArrayList>
我需要使用 Regex 格式化一个字符串,该字符串包含数字、字母 a-z 和 A-Z,同时还包含破折号和空格。 从用户输入我有02-219 8 53 24 输出应该是022 198 53 24 我正在
目标是达到与this C++ example相同的效果: 避免创建临时文件。我曾尝试将 C++ 示例翻译为 D,但没有成功。我也尝试过不同的方法。 import std.datetime : benc
tl;dr:你好吗perfect forwarding在 D? 该链接有一个很好的解释,但例如,假设我有这个方法: void foo(T)(in int a, out int b, ref int c
有什么方法可以在 D 中使用abstract auto 函数吗? 如果我声明一个类如下: class MyClass { abstract auto foo(); } 我收到以下错误: mai
有没有人为内存中重叠的数组切片实现交集?算法在没有重叠时返回 []。 当 pretty-print (使用重叠缩进)内存中重叠的数组切片时,我想要这个。 最佳答案 如果您确定它们是数组,那么只需取 p
我已经开始学习 D,但我在使用 Andrei Alexandrescu 所著的 The D Programming Language 一书中提供的示例时遇到了一些麻烦。由于 int 和 ulong 类
如何创建一个不可变的类? 我的目标是创建一个实例始终不可变的类。现在我只是用不可变的方法和构造函数创建了一个“可变”类。我将其称为 mData,m 表示可变。然后我创建一个别名 alias immut
不久前我买了《The D Programming Language》。好书,很有教育意义。但是,我在尝试编译书中列出的语言功能时遇到了麻烦:扩展函数。 在这本书中,Andrei 写了任何可以像这样调用
我在 D http://www.digitalmars.com/d/2.0/lazy-evaluation.html 中找到了函数参数的惰性求值示例 我想知道如何在 D 中实现可能的无限数据结构,就像
这个问题在这里已经有了答案: 12 年前关闭。 Possible Duplicate: Could anyone explain these undefined behaviors (i = i++
当前是否可以跨模块扫描/查询/迭代具有某些属性的所有函数(或类)? 例如: source/packageA/something.d: @sillyWalk(10) void doSomething()
我是一名优秀的程序员,十分优秀!