Укажите способ расширения SDL и метода Scene : read О так, чтобы в SDL-файле можно было задавать параметры и прикреплять их к последовательно определяемым объектам. Используйте эти параметры для выбора текстуры, из которой создается каждый из объектов, и для спецификации нескольких численных параметров, присутствующих в определении этой текстуры. Например, строки на языке SDL
parameter 3 12.6 -91 cube
прикрепляют к кубу три указанных параметра и приписывают этому объекту текстуру номер 3.
Тематическое задание 14.6. Сглаживание Уровень сложности II - на основе трассировщика лучей из тематического задания 14.2.
Скорректируйте усовершенствованный трассировщик лучей из тематического задания 14.2 так, чтобы он при трассировке лучей производил сглаживание сцены. Для каждого основного луча он должен испускать N лучей в слегка различных направлениях и усреднять цвета, возвращающиеся вдоль этих лучей. Поэкспериментируйте с различными величинами «дрожания» направлений этих лучей, а также с различными значениями N.
Тематическое задание 14.7. Трассировка лучей для других примитивов Уровень сложности III - на основе трассировщика лучей из тематического задания 14.2.
Изучите статью Джима Каджийа [Kajiya, 120] о трассировке лучей для различных форм, таких как призмы, фрактальные горы и поверхности вращения. Реализуйте технологию по меньшей мере для
Введение в трассировку лучей
фрактальных гор и расширьте язык SDL так, чтобы он воспринимал ключевое слово mountain и следующие за ним несколько параметров, определяющих природу трассируемой горы.
Тематическое задание 14.8. Двумерный трассировщик лучей для работы с преломлением Уровень сложности П.
Поскольку в формуле (14.46) для направления преломленного света t используются только скалярные произведения, она справедлива как для двумерных, так и для трехмерных векторов. Напишите и выполните программу, генерирующую изображения, подобные представленным на рис. 14.50. Пользователь задает показатель преломления и угол падения, после чего программа рисует падающий и преломленный лучи.