Аппаратное обеспечение и рендеринг Наиболее популярные архитектуры процессоров сегодня — x86-64. Они классифицируются как CISC. У них огромный набор команд, что приводит к большой площади ядра чипа.
Это, в свою очередь, повлекло за собой сложность реализации нескольких ядер на чипе.
Процессоры x86 не идеальны для многопоточных вычислений, требующих многократного выполнения небольшого набора инструкций (RISC).
В свою очередь, рендеринг — это алгоритм, который можно идеально распараллелить на практически неограниченном количестве ядер.
Объективные рендеры В связи с тем, что производительность оборудования неуклонно растет, технические вопросы (например, семплирование отражений материала в V-Ray, величина смещения в сглаживании, размытие в движении, глубина резкости, мягкие тени) все чаще переносят на плечи оборудования.
Таким образом, несколько лет назад появился первый коммерческий рендерер «несмещенного рендеринга» — Maxwell Render. Главным его преимуществом было качество конечной картинки, минимум настроек и всяких «предвзятостей».
Со временем качество картинки приближается к «идеальному».
Но недостатком было и есть время рендеринга.
На то, чтобы шум исчез, потребовалось очень много времени, и многие люди сразу же отказались от него после нескольких испытаний.
С анимацией дела обстояли ещё хуже (по понятным причинам).
Алгоритм
1. Из камеры излучается луч (начальная точка, соответствующая определенному пикселю на экране).
2. Проверьте, не пересек ли луч один из элементов геометрии.
Если нет, то перейдите к шагу 1. 3. Определить точку пересечения луча и геометрии, ближайшую к камере.
4. Выпустите новый луч из точки пересечения в сторону источника света.
5. Если между точкой пересечения и источником света имеется препятствие на пути луча, то переходим к шагу 7. 6. Закрасьте пиксель цветом (попросту, цвет поверхности в данной точке, умноженный на интенсивность источника света в точке контакта с лучом) 7. Выпускаем новый луч из точки пересечения в произвольном направлении, переходим к шагу 2 до тех пор, пока не будет достигнуто максимальное количество отражений (в большинстве случаев 4-8, если в сцене много отражений или преломлений, то необходимо увеличить это число).
Пример «шумной» картинки.
Число выборок на пиксель для достижения хорошего качества может исчисляться тысячами.
Например, 10 тысяч (в зависимости от сцены) Количество лучей на изображение FullHD 2 мегапикселя * 10 тысяч составляет 20 миллиардов.
Существует несколько типов оптимизации трассировки пути: Bi-Directional Path Tracing, Metropolis Light Transport, Energy Redistribution Path Tracing, предназначенные для отправки лучей «там, где они должны быть».
Большинство средств рендеринга ЦП для этой цели используют алгоритм MLT (Maxwell, Fry, Lux).
Роль графического процессора Алгоритм многократно использует операции с плавающей запятой, и многопоточность жизненно важна для этого алгоритма.
Поэтому эту задачу постепенно берет на себя графический процессор.
Существующие технологии: CUDA, FireStream, OpenCL, DirectCompute, а также есть возможность писать программы непосредственно на шейдерах.
Ситуация такая:
CUDA — написано всеми, кому не лень (iRay, Octane Render, Arion Render, Cycles и т. д.).
FireStream - вообще ничего не видно.
OpenCL — SmallLuxGPU, Cycles, Indigo Render. Кажется, никто не воспринимает это всерьез.
DirectCompute - ничего не видно.
Шейдеры — это лишь один пример.
реализация WebGL Трассировка пути шейдера .
Сравнение рендеров будет во второй части.
Теги: #gpu #Компьютерное оборудование #рендеринг #трассировка лучей #трассировка лучей
-
Nokia Все Равно Выпустит Смартфон На Meego
19 Oct, 24 -
Единый Сервис Для Вебмастеров
19 Oct, 24 -
Бинг: С Высоты Птичьего Полета
19 Oct, 24 -
Анализ Непопулярных Сетевых Ноутбуков
19 Oct, 24 -
На Презентации Samsung Galaxy S3
19 Oct, 24 -
Таблица Бюджета
19 Oct, 24