Я хотел бы реализовать фильтрацию текстур (min и magfilter) сам в шейдере GLSL (так как я хочу использовать image_load_and_store, а не сэмплер, а также я хочу обрабатывать неопределенные пиксели в особым образом), и я ищу статью или так, чтобы обсудить процесс фильтрации.OpenGL/GLSL - реализация фильтрации текстур
Я могу вспомнить, как реализовать текстурирование из raytracer, который я когда-то писал, - я думаю, вам нужно учитывать УФ-градиенты на каждом пикселе и в зависимости от длины их как-то масштабировать ваш выборку растра .. но там я использовал 49-образное круговое ядро, я думаю, что это слишком тяжело.
Я думаю, что градиенты УФ-градиента я могу использовать с помощью dFdx() и dFdy(), но я хотел бы знать, каким образом ядро openGL используется для фильтрации и реализует его в моем glsl-шейдере одинаково.
также - как отличить, требуется ли применять minfilter или magfilter? и процесс фильтрации отличается?
Последнее, но не менее важное: если его фильтрация минимизации, как выбрать соответствующий уровень mipmap на основе УФ-градиентов?
Из любопытства, почему вы делаете это? – harold
Обычно фильтрация текстур и выборка выполняются с использованием аппаратного обеспечения. Это определенно будет трудно, не говоря уже об эффективности, если она реализована в шейдере. – Ani
Это графическое исследование, поэтому мы имитируем функции, которые в будущем могут поддерживаться аппаратными средствами. Я делаю это по двум причинам: во-первых, мне нужно использовать image_load_and_store (я не знаю, могу ли я использовать ту же текстуру, что и sampler, которую я также использую в качестве цели ImageStore?) Вторая причина заключается в том, что я хочу обрабатывать пиксели с помощью значение «NaN» особым образом (регулярная фильтрация будет делать весь пиксель NaN, если один из текселей - NaN) – user1282931