-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME.txt
46 lines (35 loc) · 2.87 KB
/
README.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Сидоренко Юрий Анатольевич, 327 группа
ОС - Windows 8
Процессор - Intel Core i5-2450M (2.50 GHz)
Видеокарта - AMD Radeon HD 7400M Series
Объем оперативной памяти - 4 GB
Многие настройки программы (размер выходного изображения, тени, количество пропускаемых лучей через пиксель и.т.д.) можно задать
через конфигурационные файлы. Эти файлы расположены в "resources\configurations", в этой же директории есть так же 2 папки "base_configurations" и "advanced_configurations".
В "base_configurations" программа настроена на базовую часть, чтобы запустить программу только лишь с базовой частью, достаточно скопировать все конфигурационные файлы из
"resources\configurations\base_configurations" в "resources\configurations". В "advanced_configurations" расположен набор конфигурационных файлов, которые подразумевают
использование теней, ускоряющий структур и.т.д. Для базовой конфигурации программа отрабатывает 2 секунды. Для продвинутой около 1 минуты. Если пытаться улучшать
настройки, например, увеличить количество лучей через пиксель, время работы будет возрастать.
Реализованные пункты дополнительной части:
1) Ускоряющие структуры. В качестве ускоряющей структуры в своей программе я использую Grid структуру. Она реализована как template-класс, для удобства использования
в 2-х слабо связанных местах программы:
a) Сетка строится для всей сцены
b) Сетка строится для внутри каждого меша
Обе опции можно включать/выключать независимо друг от друга в конфигурационном файле. В продвинутой конфигурации они обе активированны.
2) Параллелизм вычислений:
Используется OpenMP для параллельной трассировки лучей
3) Антиалиасинг:
Реализован с помощью выборки нескольких случайных точек внутри пикселя. Количество таких точек задается в конфигурационном файле камеры
4) Тени:
Мягкие тени получаются от объемных источников света.
5) Затухание света:
Интенсивность освещения от источника убывает обратно пропорционально квадрату расстояния от источника до точки. В некоторой окрестности источника света интенсивность
не меняется.
6) Несколько источников света:
Можно задать произвольное количество источников света в конфигурационном файле.
7) Объёмные источники света:
В моей реализации практически любой объект может быть источником света. Объект лишь должен уметь предоставлять набор точек на своей поверхности для того, чтобы его
можно было сэмплировать. Из тех объектов, что используются у меня в программе, такой набор точек предоставляют Rectangle, Disk и Point (для точечного источника).
Этот набор точек может быть фиксирован, либо расчитываться случайно во время выполнения программы. В своей программе я использую фиксированный набор точек для
лучшей скорости работы.
Конфигурационные файлы оформлены в формате JSON. Для работы с этим форматом используется библиотека jsoncons-0.94.1. Так же используются библиотеки glm и l3ds.
При написании программы использовались материалы учебника "Ray tracing from ground up".