您可以在 运行 像素着色器之后应用变换矩阵吗?

Can you apply transformation matrices after running your pixel shaders?

我正在处理图像,我的任务是扩展图像的数量 post - 我们可以对图像执行的处理效果。某些所需的效果需要像素数据进行计算,所以我创建了一些像素着色器来完成这项工作,它们工作正常。

问题是图像需要可变换,即它们需要能够旋转、放大和缩小、平移等。所有这些纹理的创建,执行 post-processing,它们都在减慢程序的速度。我需要一种方法来完成这些转换,而无需完全重新制作所有效果。该程序处理的一些图像是数 GB 的图像,所以我真的不能做明显的事情,即在转换后缓存图像以备后用。

我正在寻找某种合理的解决方案。我不是图形专家,但我无法想象具有 post-processing 的类似程序会在您每次平移时重做 post 处理。我最好的猜测是保存最后一个纹理并对其应用变换,但我真的不知道该怎么做。

我说 "images" 我假设您的意思是加载并应用一些 post-pro 效果的 2D 纹理。如果是这种情况,只需创建一个渲染目标并使用所有 post 效果渲染它。 然后 rotate/pan 一个附加了该纹理的四边形(将需要一个简单的纹理获取片段着色器)。重新渲染该纹理以防 post-pro 参数发生变化。

另一方面,如果您有一个 3D 场景,则无法绕过它,您必须每一帧都对其进行渲染。

如果我的假设是错误的,最好提供更多关于您的案例的详细信息。