Фильтр минимизации текстуры в трассировке лучей? - PullRequest
2 голосов
/ 28 ноября 2009

Может кто-нибудь указать мне на документ / алгоритм / ресурс / что-нибудь, что говорит мне, как реализовать фильтр минимизации текстуры (применяется, когда тексели меньше пикселей) в raytracer?

спасибо!

Ответы [ 4 ]

3 голосов
/ 21 декабря 2009

Так как вы используете трассировку лучей, я подозреваю, что вы ищете высококачественную фильтрацию, которая динамически изменяет выборку в зависимости от количества «ошибок». Исходя из этого предположения, я бы сказал, взгляните на «лучевые дифференциалы». Здесь есть хорошая статья: http://graphics.stanford.edu/papers/trd/, в которой учитываются такие эффекты, как преломление и отражение.

1 голос
/ 07 июня 2012

Ваш ответ для себя звучит как правильный подход, но, поскольку другие могут наткнуться на странице, я добавлю ссылку на ресурс по запросу. В дополнение к обсуждению мипмаппинга (рипмэппинг - в основном более продвинутый мипмаппинг), они обсуждают влияние отражения и преломления на производные и выбор уровня мип.

Хоман Игеги. «Трассирующие дифференциальные лучи». 1999. Труды SIGGRAPH. http://graphics.stanford.edu/papers/trd/

При более внимательном прочтении я вижу, что Рено Линдек упоминал эту статью. Сначала не понимал, что это была правильная ссылка, потому что он говорит, что метод выборки динамически основан на ошибке выборки, которая является неправильной. Фильтрация выполняется в зависимости от размера отпечатка пикселя и использует только один луч, как вы описали.

Edit: Еще одна полезная ссылка (http://www.cs.unc.edu/~awilson/class/238/#challenges). Выделите раздел «Производные текстурных координат». Он предлагает обратное отображение производных текстур от поверхности до экрана. Я думаю, что это было бы неправильно для отраженных и преломленных лучей, но, возможно, легче реализовать и должно подойти для первичных лучей.

0 голосов
/ 02 января 2010

спасибо вам, ребята, за ваши ответы, но так как я не нашел подходящего techinque, я сам создал что-то, что получилось очень хорошо:

Я предполагаю, что мой луч - это конус с конерадием в полпикселя на плоскости изображения. когда луч попадает на поверхность, я вычисляю эллипс, который проецируется на поверхность (эллипс от пересечения плоского конуса). Затем, используя производные текстуры-координаты в точке пересечения, я проецирую этот эллипс в пространство текстуры. теперь я знаю, какая часть текстуры находится под моим пикселем, и могу выделить эту область

Я также использую RipMaps для улучшения качества - и я выбрал уровень RipMap на основе размера эллипса в Texturespace

0 голосов
/ 10 декабря 2009

Я думаю, что вы имеете в виду mipmap 'ing.

Вот статья , в которой говорится об их использовании.

Но никто не скажет, как выбрать, какой mipmap использовать, но они часто смешиваются (больше и меньше mipmap).

Вот еще одна статья о , как работает Google Планета Земля , и рассказывается о том, как они отображают Землю.

...