суббота, 8 сентября 2012 г.

Современные методы визуализации – Set 1


«Modern rendering techniques – Set 1»
Серия статей и презентаций посвящена современным методам визуализации и применению GPU в ускорении рабочего процесса специалистов визуализации.

GPU или CPU?
Ответ на этот вопрос сейчас выглядит так – «Лучше связка – CPU+GPU!». Объяснить это достаточно просто, GPU всегда выступал как ускоритель, возможности GPU в выполнении последовательных задач значительно ниже, чем у классического CPU архитектуры x86 (x86_64). Однако, GPU прекрасно справляется с решением множества однотипных задач (параллельных вычислениях), коими и являются современными системы визуализации основанные на алгоритмах Monte-Carlo, Metropolis или Path Tracing.
Современный GPU, обладает большим количеством вычислительных ядер, которые при, казалось бы, небольшой частоте, способны обработать гораздо больше данных за счет их количества. И современные системы визуализации, такие как NVIDIA iray, Chaos Group V-Ray RT GPU и ряд других продуктов, реализуют этот подход в своем инструментарии.
Для примера, посмотрите на две, казалось бы, одинаковые картинки, одна из нах визуализирована средствами CPU, другая визуализирована средствами CPU+GPU.
Пример визуализации сцены средствами только CPU, и пример визуализации сцены средствами CPU+GPU.
Версия изображения, созданная средствами только CPU достаточно шумна, т.к. CPU требуется больше времени на вычисления, версия же полученная средствами CPU+GPU намного чище, т.к. здесь был применен GPU для ускорения вычислений, и было обработано гораздо больше данных за тоже время, нежели средствами только CPU.
Пожалуй, одним из важных достоинств современных GPU является масштабирование, сейчас, в одной рабочей станции можно задействовать несколько GPU не только для визуализации графики в интерактивных приложениях, но и для увеличения производительности при визуализации или в вычислениях. Особенно полезным будет применение в системе двух или даже трех GPU, где первый отвечает за визуализацию графики в окнах проекций и интерфейса пользователя, другие GPU участвует только в вычислениях и представлены в виде дополнительного ускорителя. Ранее такой подход был не реализован в связи с отсутствием поддержки этой функции в программном обеспечении. Но сейчас, эта возможность реализована практически во всех современных движках визуализации и программах.
В августе 2012 года, NVIDIA представила второе поколение своей платформы NVIDIA® Maximus™. Платформа NVIDIA® Maximus™ представляет собой мощное решение для применения в профессиональных рабочих станциях и позволяет максимально реализовать и использовать мощь современных систем с NVIDIA Quadro и NVIDIA Tesla.
Платформа реализована за счет четырех компонентов – GPU NVIDIA Quadro, ускорителя NVIDIA Tesla, драйвера NVIDIA Quadro\Tesla и поддерживающего Maximus приложения. За счет единого драйвера для Quadro и Tesla, снимается проблема применения различных драйверов или программных компонентов, которые могут вызывать сбои программного обеспечения или снижать производительность работы программы. Не стоит забывать, что если вы используете GPU GeForce, можно также взять два или три GPU GeForce и под управлением единого драйвера осуществлять работу с ними, но из-за не самой лучшей реализации драйвера под применение с профессиональными приложениями, могут возникнуть трудности.

Новый процесс
За последние четыре года, с начала развития области ускорения вычислений с помощью GPU, было выпущено немало продуктов для визуализации, которые зародили новое направление в визуализации. Однако сами методы и алгоритмы были разработаны еще в середине 90-х годов XX века, и только сейчас, появилась возможность их реализовать на должном уровне по производительности и качеству получаемого изображения. Важную роль в этом сыграли графические процессоры (GPU) и появление таких API как NVIDIA CUDA или OpenCL.
Сейчас, в современном программном обеспечении реализуется возможность интерактивной preview визуализации – когда вы, работая над сценой, сразу можете отследить максимально приближенный результат, а финальную визуализацию выполнить средствами классического визуализатора или комбинированного решения.
Лучше всего, эта концепция реализована в Autodesk 3ds Max 2012 – 2013 версии и с помощью систем визуализации mental ray и v-ray. О них мы и поговорим в этой статье.
На протяжении последних трех лет, 3ds Max предоставляет пользователям возможность применения GPU для ускорения процессов визуализации, а с выходом 2013 версии пакета, 3ds Max предоставил пользователям не только полноценный GPU Accelerated визуализатор, но и интерактивные возможности в, казалось бы, давно забытом режиме ActiveShade.
Chaos Group, с выходом V-Ray 2.0 предоставила пользователям возможность использовать режим ActiveShade для интерактивной preview визуализации и своего GPU Accelerated движка – V-Ray RT CPU\GPU двумя годами ранее, чем спровоцировала еще больший переход многих пользователей на систему V-Ray.
Общая схема взаимодействия ПО и оборудования выглядит следующим образом.
Основу занимает работа с 3D приложением, им может быть как 3ds Max,  Maya или Softimage так и другое подобное приложение. Чаще всего, GPU выполняет задачи по визуализации трёхмерного пространства в окнах проекций, в целом достаточно одного GPU в системе. Это полезно когда вы работаете только над моделью, но если вы начнете применять для визуализации движок iray или V-Ray RT GPU, вам может потребоваться второй GPU для распределения задач по вычислениям, если нагрузить все вычисления на один GPU, производительность приложения буде снижена, или приложение прекратит отвечать на действия пользователя.
Первый GPU может быть использован для визуализации окон проекций (Viewports), а второй для выполнения вычислений движком визуализации (Rendering Engine). Все это находится под управлением графического драйвера и драйвера NIDIA CUDA, а также приложения, в котором осуществляется управление.
Реализация переключения между вычислительными устройствами и типами движка в iray renderer (3ds Max) и V-Ray RT в Maya.
При финальной визуализации с помощью iray или V-Ray RT GPU можно задействовать и основной GPU вашего компьютера, тем самым увеличив производительность, и сократить время визуализации.
Платформа NVIDIA Maximus как раз и реализует данный подход, за счет драйверов GPU и NVIDIA CUDA, GPU NVIDIA Quadro и NVIDIA Tesla. Просто, пользователь, работающий над проектом, сможет контролировать используемые вычислительные устройства из интерфейса приложения.
За счет применения нескольких GPU, процесс моделирования и визуализации не разбивается на отдельные этапы, а идут параллельно. На приведенной ниже схеме, показано, как сейчас реализована передача данных сцены в RT Engine и классический V-Ray. Для этого требуется всего один plug-in connector, который транслирует сцену в единый формат данных (.vrscene) и далее идет визуализация за счет выбранного движка.
Такие системы визуализации как NVIDIA iray или V-Ray RT, позволяют незамедлительно отследить за всеми изменениями в сцене, а именно положение объектов, изменение параметров источников света, изменение свойств материалов (шейдеров) и положения камеры и ее свойств. Такой наглядный способ отображения изменений, позволяет незамедлительно реагировать художнику на все действия в сцене.
Пример сцены, визуализируемой с помощью V-Ray RT GPU в Autodesk Maya.
Однако не стоит надеяться, что GPU Accelerated визуализаторы способны решать большинство задач, к сожалению, сейчас пока не реализован ряд необходимых функций, но именно preview визуализация, стала главным коньком у GPU Accelerated решений.
В ближайших релизах GPU Accelerated движков визуализации, будут реализованы многие функции необходимые современному художнику. Новая версия NVIDIA iray уже предоставляет ряд возможностей по визуализации большинства методов затенения, но когда они будут реализованы в интерфейсе 3ds Max и ряде других пакетов пока неизвестно, на данный момент NVIDIA iray 3 поставляется в Bunkspeed Shot\Move\Pro версии 2012.5 и поддерживает следующие возможности:


  • iray 3.0 including support for Kepler based Nvidia Graphic Cards
  • Metallic Flakes
  • Round Edges
  • Motion Blur
  • New Render Passes have been added to further control final images. New supported passes include: Depth Pass for adding depth of field in post, Black Specular Pass for controlling a more realistic specular component, Roughness Pass which retains material roughness settings per part, Ambient Occlusion Pass for generating neutral shadows and an Object Pass to aid in separating your object from the background.
  • Gamma Correction added to the Camera Post-Process Attributes.
  • Brightness added to the Camera Post-Process Attributes.
  • All Camera Post-Processing options now apply to Raster rendering as well.
  • Ability to move and adjust the pivot precisely via a matrix in the part properties under the Model tab in the palette.
  • Real-Time Turntable which allows you to toggle and control an object on a turntable in realtime, including speed, size, soft stop and start through a neat graphic interface and hotkeys.
  • Ability to put parts, groups and models into a “disabled” state. This will keep them in the project, but not show them in the viewport/render them, even if a “show all” is triggered.
  • “Rounded Gumdrop” Added to the Models available under the “Project > Create Model” option.
  • This is an ideal piece of geometry to apply environment maps onto for real-time presentation purposes.
  • Camera distance from look-at point on the “Camera Position” overlay is now exposed.
  • Ground shadow darkness/lightness slider for both raster and raytrace.
  • Follow and Aim Follow for Models, Cameras and Lights. This lets you bind any one of the listed assets to another allowing you to have multiple pivot points for a single object.
  • Local reflections in raster. This lets you reflect and light a model with other models in the scene.
  • Stepless gloss maps for raster.
  • Color dropped color and textures loaded as color maps are now automatically gamma adjusted to compensate for your screenspace gamma. Ultimately, this means that colors of textures or color dropped colors are now “correct” in the viewport.
  • Ability to change the render size, quality or time for a Queued item in Bunkspeed Queue.
  • Ability to prioritize queued items in Bunkspeed Queue by moving them “up” or “down”.
  • A project thumbnail is now sent to the Queue with the job without having to wait until it starts rendering to show a preview.
  • Procedural box mapping (1px seams) now raytraces.
  • Significant improvement to several import types such as IGES, STEP, 3DXML and others.
  • New “Look At” without moving the camera position functionality.
  • 3D Studio Max Plugin.
  • Solidworks Plugin.
  • Added ability to save out a texture used in a material and/or decal to disk.
  • Added ability to rename model sets.
  • Added ability to export selected as OBJ or FBX instead of just the whole scene.
  • Added ability to output animated frames as .hdr.
  • Added ability to rename backplates, environments and lights.

Синим цветом, выделены возможности, которые только тестируются в новом шейдере для 3ds Max и возможно будут реализованы в следующей версии, а пока для получения доступа к ним, можно воспользоваться специальным коннектором к Bunkspeed, если вы используете предыдущие версии 3ds Max и Bunkspeed.
Ближайшие релизы V-Ray RT также будут поддерживать больше возможностей по визуализации, но точные даты пока не оглашаются.

В следующих постах мы более подробно рассмотрим и сторону оборудования и сторону софтов, и конечно посмотрим на ряд различных решений существующих на рынке. А в декабре, на зимнем CG EVENT в Москве, я подведу большой итог в одной большой презентации.

До скорой встречи, ваш dimson3d :)

Комментариев нет: