Я читал различные статьи о том, как писать voxelizer GPU. По моему пониманию, процесс выглядит следующим образом:Как мне начать с voxelizer GPU?
- Осмотрите треугольники индивидуально и решите ось, которая отображает треугольник самым большим образом. Назовите это доминирующей осью.
- Оденьте треугольник на его доминирующую ось и проведите тексели, которые выходят.
- Пишет, что данные тексел на 3D текстуру, а затем делать то, что вы будете с данными
пренебрегая консервативные растеризации, у меня есть много вопросов, касающиеся этого процесса.
Я дошел до каждого треугольника, выбирая доминирующую ось и ортогонально проецируя его. Какими должны быть значения ортогональной проекции? Должна ли быть какая-то ценность, основанная на размерах вокселей или на том, как большая часть области должна покрывать карту?
Что я должен делать в шейдере фрагмента? Как написать в мою 3D-текстуру, чтобы она хранила данные воксела? По моему мнению, из-за выбора доминирующей оси у нас не может быть больше глубины 1 вокселя для каждого фрагмента. Однако, поскольку мы проектировали ортогонально, я не вижу, как это отразится на трехмерной текстуре.
Наконец, мне интересно, где хранить данные текстуры. Я знаю, что неплохо хранить данные со стороны ЦП, так как вам нужно передать все это, чтобы использовать его на графическом процессоре, однако исходный код, который я как бы следую, выбирает для хранения всей его текстуры на стороне процессора, например, для свет карта. Мое предположение заключается в том, что данные, которые будут использоваться только на графическом процессоре, должны храниться там, а данные, используемые для обоих, должны храниться на стороне процессора. Таким образом, я сохраняю свои данные на стороне процессора. Это верно?
Мои основные источники были: https://www.seas.upenn.edu/~pcozzi/OpenGLInsights/OpenGLInsights-SparseVoxelization.pdf OpenGL Insights https://github.com/otaku690/sparsevoxeloctree SVO с использованием вокселизатора. Проблема в том, что шейдерный код отсутствует в github.
Вы можете ознакомиться с этим Voxelizer CUDA Я написал: https://github.com/Forceflow/cuda_voxelizer –