Unity 4 вводит возможность использования графического API DirectX 11, со всеми ожидаемыми возможностями: вычисляемые и тесселяционные шейдеры, шейдерная модель 5.0 и т. д.
Включение DirectX 11
Чтобы включить DirectX 11 для сборок вашей игры и для редактора, установите параметр “Use DX11” в Player Settings. После редактирования нужно перезагрузить Unity, чтобы изменения вступили в силу.
Помните, что DirectX 11 требует ОС Windows Vista или более позднюю версию. Также требуется GPU уровня DX10 (предпочтительно уровня DX11). Когда Unity запущено в режиме DX11, заголовок окна будет содержать “<DX11>” в конце.
Графические эффекты с поддержкой DX11
- эффект Depth of Field (оптимизированный разброс (splatting) текстур Боке)
- эффект Noise and Grain (образцы шума высокого качества)
- эффект Motion Blur (фильтр восстановления высокого качества)
Вычислительные шейдеры
Вычислительные шейдеры позволяют вам использовать GPU как процессор с массовым параллелизмом. Для получения более детальной информации изучите Вычислительные шейдеры .
Тесселяционные и геометрические шейдеры
Поверхностные шейдеры (surface shaders) поддерживают простую тесселяцию и смещение (displacement). См. Тесселяция поверхностных шейдеров .
В процессе написания вручную шейдерных программ. вы можете использовать все возможности DX11 shader model 5.0, включая geometry, hull и domain шейдеры
Поверхностные шейдеры и DX11
На данном этапе некоторые операции при компиляции поверхностных шейдеров не “понимают” специфичного синтаксиса DX11 HLSL, а значит при использовании таких возможностей HLSL как структурированные буферы (StructuredBuffers), RWTextures и прочий не DX9 синтаксис, нужно вставить его специальный (для DX11) макрос препроцессора. Для более подробной информации изучите Особенности различных платформ
Примеры DirectX 11
Следующие скриншоты показывают примеры того, что возможно с DirectX 11.
Объемный взрыв на этих кадрах отрендерен с использованием raymarching, что становится возможным с shader model 5.0. К тому же, поскольку генерируются значения глубины(depth), мы можем использовать графические эффекты, которые работают с глубиной (depth),например, depth of field или motion blur. Волосы на этом кадре сделаны с помощью DirectX 11 тесселяционных и геометрических ( tessellation & geometry) шейдеров. Каждый волос генерируется и анимируется динамически. Шейдер базируется на модели предложенной Kajiya-Kai, что позволяет достичь большей реалистичности в области diffuse и specular. Как и в примере с волосами, мех на тапочках также основан на генерации шерстинок, которые “растут” из незамысловатого меша (base mesh) тапочек. Эффект размытия на этом изображении (также известный как Bokeh ) основан на разбросе (splatting) текстуры поверх очень ярких пикселей. Такой подход позволяет достичь крайне правдоподобного результата, особенно, когда используется в связке с технологией HDR rendering. Преувеличенное размытие похожее на предыдущий скриншот. Можно добиться используя новый эффект Depth of Field