Я пишу сравнительно простой трассировщик raytracer/path в D (http://dsource.org/projects/stacy), но даже при полной оптимизации все еще нужно несколько тысяч процессорных циклов на луч. Есть ли что-нибудь еще, что я могу сделать, чтобы ускорить его? В общем, знаете ли вы о хороших оптимизациях/более быстрых подходах к трассировке лучей?
Изменить: это то, что я уже делаю.
- Код уже работает с высокой параллелью Временные данные
- структурированы с использованием кэша, а также согласованы с 16b
- Экран, разделенный на 32x32-плитки
- Целевой массив устроен таким образом, что все последующие пиксели в плитке являются последовательными в памяти
- Выполняются основные оптимизации графика сцены
- Общие комбинации объектов (CSG плоскости плоскости, как и в коробках) заменяются преоптимизированными объектами
- Структура вектора, способная воспользоваться поддержкой автоматической векторизации GDC.
- Последующие удары по лучу обнаруживаются с помощью ленивой оценки; это предотвращает ненужные вычисления для CSG
- Треугольники не поддерживаются и не приоритетны. Только простые примитивы, а также операции с CSG и основные свойства материала.
- Ограничение поддерживается