Это задание не является обязательным. Пока что задания как такового тут нет, только набросок для экспериментов.

RayTracing - техника компьютерной графики, которая обсчитывает луч пущенный через каждый пиксель экрана и двигающийся по шагам (трассирует или марширует луч). Общая идея такова, что имея направление луча, текущую позицию, и функцию дистанции до каждого объекта со сцены - можно сделать шаг по данному направлению такой длины, что никакую поверхность объектов сцены мы не проскочим.

Откройте набросок, справа код, слева результат. Чтобы обновить результат после редактирования - нажмите Alt+Enter. Обратите внимание на комментарии. В первую очередь вас должны интересовать функции opU и map.

Примеры экспериментов:

  • добавить примитив
  • добавить плоскость
  • затекстурировать плоскость шахматной раскраской
  • расставить один примитив (например куб) на бесконечности (в центре ячейки бесконечной регулярной двухмерной сетки)
  • свернуть этот примитив в завиток (twist)
  • сделать сворачивание динамическим от времени
  • сделать плоскость зеркальной
  • сделать камеру крутящейся вокруг
  • добавить сглаживание
  • добавить motion blur

Полезные ссылки

Некоторые функции дистанций до примитивов: функции дистанций.

Полезный пример: несколько примитивов.

Любопытные применения: cubes, Menger Sponge, Menger Journey, Tiny Earth.