GPUImageLookupFilter与强度控制?

我正在为我的项目使用Brad Larson的GPUImage框架。 我试图find一种方法来实现强度控制GPUImageLookupFilter并通过https://github.com/BradLarson/GPUImage/issues/1485

gl_FragColor = mix(textureColor,vec4(vec3(newColor),1.0),mixTexture);
“textureColor”是原始纹理,“newColor”是LookupFilter结果,mixTexture是(0〜1.0)的Alpha值,可以认为是强度variables。

我不知道如何实现这一点,我不知道如何实现OpenGL着色器。 任何人都可以告诉我在哪里添加这个代码来实现强度控制GPUImageLookupFilter

每个GPUImagefilter都有自己的片段着色器。 这些在filter的.m文件的顶部被定义为string常量。 在GPUImageLookupFilter的情况下,这是GPUImageLookupFilter.m顶部的kGPUImageLookupFragmentShaderString。

这些片段着色器是类C程序,与标准C相比,它们具有一些独特的属性,但是一旦看过几个例子,仍然应该很容易遵循。

正如在这个问题中指出的那样,如果你想要这种强度控制(为了性能的原因,我不包括默认的),你需要创build一个新的filter类并将代码从GPUImageLookupFilter复制到它(其中几乎没有片段着色器)。 有两个版本的片段着色器,一个用于Mac(通常没有精确限定符),另一个用于iOS。 在这两者的底部是输出最终颜色的线。 你会想要修改它以使用像上面描述的mix()操作。

如果您不想硬编码强度值,则还需要添加属性以调整此强度值。 为此,您需要在片段着色器中设置一个匹配的制服来获取此属性。 查看GPUImageBrightnessFilter,查看与片段着色器中的统一信息匹配的属性的简单示例。

我build议通过为各种filter提供的片段着色器代码来查看这些代码是如何写入以及如何工作的。 大多数人能够通过检查已经在框架中的各种着色器来获取基础知识。