вектор направления в raycasting

#opengl #shader

#opengl #шейдер

Вопрос:

Когда я прочитал о том, как получить вектор направления в raycasting, например, на этом сайте:http://www.daimi.au.dk /~trier/?page_id=98

Они сначала визуализируют сетку с отбраковкой передней грани, а затем с отбраковкой задней грани. А затем вычтите заднюю поверхность из передней, чтобы получить вектор направления для каждого пикселя.

Но не слишком ли много работы для получения вектора направления, не проще ли и быстрее просто взять положение вершины (в мировых координатах) и вычесть положение камеры в шейдере фрагмента, чтобы получить вектор направления? Это должно дать точно такой же ответ, но мы пропускаем рендеринг backface и frontface.

Ответ №1:

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

Если все, что вы хотите сделать, это получить вектор направления от камеры к объекту, то более эффективным способом является выполнение того, что вы предлагаете (и, возможно, его нормализация).

Комментарии:

1. но будет ли результат таким же, или первый метод будет более точным?

2. @Merni: Я бы ожидал, что они будут одинаковыми (за исключением ошибок округления), если вы нормализуете их оба.