我想在GLSL着色器中自己实现纹理过滤(min和magfilter),因为我想使用image_load_and_store而不是采样器,并且我想以特殊方式处理未定义像素。我正在寻找一篇讨论过滤过程的文章或其他资料。
我可以回忆起从我之前编写的光线追踪器中实现纹理过滤的方法 - 我认为你需要考虑每个像素处的UV梯度,并根据这些梯度的长度来缩放你的采样光栅。但是我那里使用了一个49个采样点的圆形核,我认为太重了。
我认为通过dFdx()和dFdy()函数可以获取UV梯度 - 但我想知道OpenGL用于过滤的核心是什么,并以相同的方式在我的GLSL着色器中实现它。
此外 - 如何区分是否需要应用minfilter或magfilter?过滤过程有什么不同吗?
最后但并非最不重要:如果是缩小过滤,则如何基于UV梯度选择适当的mipmap级别?
我可以回忆起从我之前编写的光线追踪器中实现纹理过滤的方法 - 我认为你需要考虑每个像素处的UV梯度,并根据这些梯度的长度来缩放你的采样光栅。但是我那里使用了一个49个采样点的圆形核,我认为太重了。
我认为通过dFdx()和dFdy()函数可以获取UV梯度 - 但我想知道OpenGL用于过滤的核心是什么,并以相同的方式在我的GLSL着色器中实现它。
此外 - 如何区分是否需要应用minfilter或magfilter?过滤过程有什么不同吗?
最后但并非最不重要:如果是缩小过滤,则如何基于UV梯度选择适当的mipmap级别?