Выполнить работу по компьютерной графике: на c++ графика жидкости и света в ней, использую обратную трассировку с глобальной моделью освещения. Должно реализовано быть алгоритмами: не все через OpenGL (можно только карту теней в нем).
ПЗ не нужна, только сама программа на c++.
Всё через OpenGL нельзя (можно карту теней прокинуть), суть работы в алгоритмической реализации.
Задание:
Разработать программу для построения трёхмерного изображения бассейна с жидкостью и деталями конструктора: кубами, шарами, эллипсоидами и пирамидами. Детали конструктора могут плавать на поверхности или находиться на дне бассейна. Предусмотреть наличие источника света на бесконечности. Предусмотреть наличие точечных статичных источников
света. Геометрия поверхности жидкости в бассейне задаётся на этапе трансляции. Оптические свойства поверхностей объектов коэффициенты рассеянного, диффузного и зеркального отражения, коэффициент пропускания, коэффициент преломления задаются пользователем
на этапе выполнения. Количество и расположение объектов, число и расположение источников света задаются пользователем на этапе выполнения.
Пояснение и требования:
В интерфейсе программы возможность выбора деталей из набора деталей и их размещение на поверхности или на дне. Также в интерфейсе задаются все коэффициенты, амплитуда генерации волновой поверхности жидкости, точечные источники света. Источник света на бесконечности - это фоновое освещение, оно по умолчанию есть всегда. Задается положение наблюдателя.
Прозрачный бассейн. Детали конструктора имеют матовую поверхность(не прозрачные и не отражают свет). Также на дне должны быть тени от деталей и каустинги от света и волн.
Из алгоритмов надо отбратную трассировку лучей(для удаления невидимых линий и поверхностей и для теней и для затенения) глобальная модель освещения.
От плотности жидкости будет зависеть пропускание света на дно и амплитуда волн. Физику воды учесть.
Приложил ссылку и фото того, как это примерно должно выглядеть для понимания что нужно.
(https://madebyevan.com/webgl-water/)