Рассмотрим сначала несколько интересных примеров, упомянутых в тематическом задании 8.5, а затем покажем, как включить такую текстуру в трассировщик лучей. Затем мы разработаем другие типы материалов, такие как древесина и мрамор.
Пример 14.8.1. Трехмерная шахматная доска, заполняющая пространство Представьте себе трехмерную шахматную доску, сделанную из чередующихся красных и черных кубов, которые вплотную составлены вместе и заполняют все пространство. Поместим один из таких «кубиков» вершиной в точку (0,0,0) и придадим ему такой размер, чтобы его вершина на другом конце диагонали лежала в точке S - (S.x, S.y, S.z). Все остальные кубы имеют такой же размер (ширина S.x, высота S.y, глубина S.z) и плотно прилегают один к другому во всех трех измерениях. Нетрудно написать выражение для такой шахматной текстуры: нужно сложить целые части x/S.x, у/S.y, z/S.z и вычислить остаток их суммы при делении на 2:
jump(;r,у, z) « (int(A + x/Sx) + птс(Л +y/S.y) + int(A + z/S.z))%2. (14.32)
Сделаем так, чтобы функция texture(x, у, z) возвращала черный цвет, если jump( ) - 0, и красный, если jump( ) = 1. Поскольку округление с помощью функции int в окрестности нуля работает специфически, все ее аргументы для отдаления от нуля смещаются на некоторую константу А (например, на 100).
На рис. 14.24 приведены базовая сфера и базовый куб, «вырезанные» из материала с такой сплошной текстурой. Цвет материала и есть цвет текстуры. Отметим, что сфера и куб действительно выглядят сделанными из сплошных «кубиков». Сопоставьте для контраста вид этих объектов, если бы на них было «наклеено» двумерное изображение шахматной доски.
14.8. Наложение текстуры на поверхности

Рис. 14.24. Трассировка лучей для некоторых объектов со сплошной шахматной текстурой Пример 14.8.2. Набор кубов с плавно изменяющимися цветами Вы также имеете возможность составлять вместе копии одного и того же куба. Один куб демонстрирует плавно изменяющуюся в пределах всего спектра окраску по мере того, как вы перемещаетесь внутри него. Все его восемь углов имеют черный цвет, а центральная точка куба (0,5,0,5, 0,5) белая. В промежутках цвет изменяется плавно. Для того чтобы красный компонент цвета возрастал до единицы и затем снова убывал до нуля вдоль оси х, следует задать red - 1 - \2х - 1|. Аналогично зеленый компонент управляется координатой у, а синий - координатой г. Для образования бесконечного числа копий такого куба, граничащих без зазоров в пространстве, следует использовать дробные части координат х, у, г.