Будущая работа над реалистичными тенями в Crystal Space 3D
Хотя время для этого проекта подошло к концу, есть еще несколько вещей которые предстоит сделать. Я разделил их на две основные категории: реализация, улучшения и расширения существующего кода/ идей и алгоритмы которые должны дать лучшие результаты.
Существующий менеджер визуализации может быть улучшен за счет расширенной поддержки:
1. Множественное освещение - в данный момент поддерживается только одно освещение. Множественное освещение может быть добавлено с помощью 3D текстур, потому что каждый источник света генерирует максимум 10 текстур.
2. Множественные типы сетки - сейчас поддерживается только genmesh. Хотя, это самы общий тип сетки используемый в Crystal Space 3D, поддержка для материалов, от других типов сеток, также должно быть добавлено.
3. Визуализация дыма и облаков - это потребует добавления метода объемного рендеринга и применения алгоритмов из текущего менеджера визуализации без дополнительных модификаций.
Пара идей, которые могут быть добавлены для повышения качества визуализации или создания более быстрого запуска приложения.
1. Различные коэффициенты распределения для каждого луча - на данный момент соотношение распределения вычисляется глобально и это создает проблемы, когда объекты с различной плотностью присутствуют на сцене. Одним из возможных способов является создание отдельной функции для разделения каждого луча, является создание раздельной текстуры, сохраняющий раздельные коэффициенты для каждого отдельного луча на соответствующем пикселе.
2. Пересчет соотношений распределения в режиме реального времени - сейчас это узкое место реализации, потому что это делается CPU. Если коэффициент распределения будет вычисляться для каждого луча, то не будет необходимости ни в какой глобальной информации и вычисление может быть сделано быстрее на GPU, добавив обработку новых изображении на проходе визуализации.
3. Расчет оптимального количества слоев - число слоев, в настоящее время, выбирается пользователем. Тем не менее, тестовая сцена может быть создана так, чтобы максимальное количество слоев, которое хранит приложение в реальном времени выбиралось автоматически.
- Реализация
Существующий менеджер визуализации может быть улучшен за счет расширенной поддержки:
1. Множественное освещение - в данный момент поддерживается только одно освещение. Множественное освещение может быть добавлено с помощью 3D текстур, потому что каждый источник света генерирует максимум 10 текстур.
2. Множественные типы сетки - сейчас поддерживается только genmesh. Хотя, это самы общий тип сетки используемый в Crystal Space 3D, поддержка для материалов, от других типов сеток, также должно быть добавлено.
3. Визуализация дыма и облаков - это потребует добавления метода объемного рендеринга и применения алгоритмов из текущего менеджера визуализации без дополнительных модификаций.
- Алгоритмы
Пара идей, которые могут быть добавлены для повышения качества визуализации или создания более быстрого запуска приложения.
1. Различные коэффициенты распределения для каждого луча - на данный момент соотношение распределения вычисляется глобально и это создает проблемы, когда объекты с различной плотностью присутствуют на сцене. Одним из возможных способов является создание отдельной функции для разделения каждого луча, является создание раздельной текстуры, сохраняющий раздельные коэффициенты для каждого отдельного луча на соответствующем пикселе.
2. Пересчет соотношений распределения в режиме реального времени - сейчас это узкое место реализации, потому что это делается CPU. Если коэффициент распределения будет вычисляться для каждого луча, то не будет необходимости ни в какой глобальной информации и вычисление может быть сделано быстрее на GPU, добавив обработку новых изображении на проходе визуализации.
3. Расчет оптимального количества слоев - число слоев, в настоящее время, выбирается пользователем. Тем не менее, тестовая сцена может быть создана так, чтобы максимальное количество слоев, которое хранит приложение в реальном времени выбиралось автоматически.