Arnold GPU渲染支持的功能及基础知识
Arnold GPU渲染支持的功能
-
Arnold GPU 支持复杂的着色网络、SSS、头发、大气、实例化和程序。
-
使用相同的设置,GPU 渲染目前比 CPU 渲染更嘈杂,因为 GPU 渲染是“非分割的”(即每个相机/AA 样本一条路径)。因此,为了实现等效噪声,需要在 GPU 渲染中增加 AA 样本数。完全支持自适应渲染。
-
支持standard_surface、standard_hair和standard_volume,但有一些限制(见下表)。
-
支持 OSL,但目前有一些限制(见下文)。
-
支持 OpenVDB 卷,但目前有一些限制(见下文)。
-
支持体积位移,但目前有一些限制(见下文)。
-
支持文件名属性标签。不支持M ipmap 偏差。
-
卷上不支持轻量级链接。
-
有限的 AOV 支持。
-
不支持跟踪集。
-
支持自定义程序、驱动程序、颜色管理器。
-
不支持自定义 着色器、相机、过滤器、BSDF。
-
Arnold GPU 渲染不支持 Noice(因为 Arnold GPU 不支持方差过滤器)
对 OSL 的初始支持已添加到 GPU 渲染器中。与在 CPU 渲染器中一样,您可以在同一着色网络中混合和匹配 OSL 和 Arnold 着色器。请注意,此初始支持仍不完整,目前有许多限制,如下所列。
着色操作
目前,对特定着色操作的支持有限,如下所示:
-
动态字符串操作
-
消息传递
开放式虚拟数据库
对 OpenVDB 的初始支持已添加到 GPU 渲染器中。在这个初始实现中,每个 VDB 网格都以密集格式加载到 GPU。虽然这在视觉上与 CPU 渲染器非常匹配并且功能完整,但由于缺乏稀疏表示,内存消耗可能更大。在高不透明度体积的情况下,渲染速度可能比 CPU 慢,因为 GPU 实现不会像 CPU 版本那样有效地跳过空白空间。随着步长参数的减小,与CPU的匹配会越来越好。
体积位移
对体积置换的初始支持已添加到 GPU 渲染器中。在高不透明度体积的情况下,渲染速度可能比 CPU 慢,因为 GPU 实现不会像 CPU 版本那样有效地跳过空白空间。随着步长参数的减小,与CPU的匹配会越来越好。
支持的功能和已知限制
特征 |
GPU 支持 |
笔记 |
---|---|---|
相机 |
||
cyl_camera |
是的 |
|
鱼眼相机 |
是的 |
|
正射相机 |
是的 |
|
persp_camera |
是的 |
|
球面相机 |
是的 |
|
uv_camera |
是的 |
|
vr_camera |
是的 |
|
色彩管理器 |
||
color_manager_ocio |
是的 |
|
color_manager_syncolor |
是的 |
|
驱动程序 |
||
cryptomatte_manifest_driver |
不 |
|
driver_deepexr |
不 |
|
driver_exr |
是的 |
|
driver_jpeg |
是的 |
|
driver_png |
是的 |
|
driver_tiff |
是的 |
|
过滤器 |
||
blackman_harris_filter |
是的 |
适用于所有 AOV 的单个过滤器。 |
box_filter |
是的 |
适用于所有 AOV 的单个过滤器。 |
gaussian_filter |
是的 |
适用于所有 AOV 的单个过滤器。 |
三角形过滤器 |
是的 |
适用于所有 AOV 的单个过滤器。 |
最近过滤器 |
是的 |
适用于所有 AOV 的单个过滤器。 |
所有其他过滤器 |
不 |
回退到盒式过滤器。适用于所有 AOV 的单个过滤器。 |
灯 |
||
气缸灯 |
是的 |
|
磁盘灯 |
是的 |
|
远光 |
是的 |
|
网格光 |
是的 |
|
photometric_light |
是的 |
|
点光 |
是的 |
|
四光 |
是的 |
支持轻型门户 |
天穹灯 |
是的 |
|
聚光灯 |
是的 |
|
运营商 |
||
收藏 |
是的 |
|
禁用 |
是的 |
|
include_graph |
是的 |
|
材料x |
是的 |
|
合并 |
是的 |
|
设置参数 |
是的 |
|
设置转换 |
是的 |
|
switch_operator |
是的 |
|
选项 |
是的 |
|
覆盖 |
是的 |
|
着色器 |
||
腹肌 |
是的 |
|
添加 |
是的 |
|
环境光遮蔽 |
是的 |
不支持跟踪集。 |
aov_read_float |
是的 |
|
aov_read_int |
是的 |
|
aov_read_rgb |
是的 |
|
aov_read_rgba |
是的 |
|
aov_write_float |
是的 |
|
aov_write_int |
是的 |
|
aov_write_rgb |
是的 |
|
aov_write_rgba |
是的 |
|
晒黑 |
是的 |
|
大气体积 |
是的 |
|
谷仓门 |
是的 |
|
黑体 |
是的 |
|
凹凸2d |
是的 |
|
凹凸3d |
是的 |
|
c4d_texture_tag |
是的 |
|
c4d_texture_tag_rgba |
是的 |
|
缓存 |
是的 |
这是 GPU 上的空操作。 |
camera_projection |
是的 |
|
汽车漆 |
是的 |
|
cell_noise |
是的 |
|
棋盘 |
是的 |
|
夹钳 |
是的 |
|
clip_geo |
不 |
|
颜色转换 |
是的 |
|
颜色正确 |
是的 |
|
颜色抖动 |
是的 |
|
比较 |
是的 |
|
补充 |
是的 |
|
complex_ior |
是的 |
|
叉 |
是的 |
|
加密货币 |
不 |
|
曲率 |
是的 |
不支持跟踪集。 |
划分 |
是的 |
|
点 |
是的 |
|
经验值 |
是的 |
|
面对比率 |
是的 |
|
薄片 |
是的 |
|
平坦的 |
是的 |
|
float_to_int |
是的 |
|
float_to_matrix |
不 |
|
float_to_rgb |
是的 |
|
float_to_rgba |
是的 |
|
多雾路段 |
是的 |
|
分数 |
是的 |
|
图案 |
是的 |
|
图像 |
是的 |
不支持 Mip-map 偏差。 |
is_finite |
是的 |
|
兰伯特 |
是的 |
|
层浮点 |
是的 |
|
layer_rgba |
是的 |
|
层着色器 |
是的 |
|
长度 |
是的 |
|
光阻滞剂 |
是的 |
|
光衰 |
是的 |
|
日志 |
是的 |
|
matrix_interpolate |
不 |
|
matrix_multiply_vector |
是的 |
矩阵参数在 GPU 上不可链接。 |
矩阵变换 |
不 |
|
哑光的 |
不 |
|
最大限度 |
是的 |
|
maya_layered_shader |
是的 |
|
分钟 |
是的 |
|
mix_rgba |
是的 |
|
混合着色器 |
是的 |
|
模数 |
是的 |
|
运动向量 |
不 |
|
乘 |
是的 |
|
否定 |
是的 |
|
噪音 |
是的 |
|
normal_map |
是的 |
|
标准化 |
是的 |
|
奥斯陆 |
是的 |
对闭包和着色操作的一些有限支持。 |
直通 |
是的 |
|
物理天空 |
是的 |
|
战俘 |
是的 |
|
查询形状 |
是的 |
|
斜坡浮动 |
是的 |
不支持连接的颜色和位置。 |
斜坡_rgb |
是的 |
不支持连接的颜色和位置。 |
随机的 |
是的 |
|
范围 |
是的 |
|
ray_switch_rgba |
是的 |
|
ray_switch_shader |
是的 |
|
互惠的 |
是的 |
|
rgb_to_float |
是的 |
|
rgb_to_vector |
是的 |
|
rgba_to_float |
是的 |
|
圆角 |
是的 |
不支持跟踪集。 |
阴影遮罩 |
是的 |
这个初始版本目前有许多限制,包括:不支持间接照明、没有 AOV 生成,以及阴影遮罩对象中可能不正确的自反射。 |
洗牌 |
是的 |
|
符号 |
是的 |
|
空间变换 |
是的 |
不支持相机和屏幕空间。 |
方格 |
是的 |
|
标准头发 |
是的 |
不支持额外的深度和额外的样本 |
标准表面 |
是的 |
不支持扩散 SSS 模式。 不支持传输 AOV(因此,例如,您将在 Alpha 中获得纯白色以进行传输) |
标准体积 |
是的 |
|
state_float |
是的 |
|
state_int |
是的 |
|
state_vector |
是的 |
|
减去 |
是的 |
|
switch_rgba |
是的 |
|
开关着色器 |
是的 |
|
香椿 |
不 |
|
跟踪集 |
不 |
|
三角 |
是的 |
|
三平面 |
是的 |
|
双面 |
是的 |
|
user_data_float |
是的 |
当前不支持从父程序继承的用户数据 |
user_data_int |
是的 |
当前不支持从父程序继承的用户数据 |
user_data_rgb |
是的 |
当前不支持从父程序继承的用户数据 |
user_data_rgba |
是的 |
当前不支持从父程序继承的用户数据 |
用户数据字符串 |
是的 |
当前不支持从父程序继承的用户数据 |
公用事业 |
是的 |
不支持 edgelength、pixelerror 和 nlights 颜色模式。 |
uv_projection |
是的 |
|
uv_transform |
是的 |
|
矢量地图 |
是的 |
|
vector_to_rgb |
是的 |
|
volume_sample_float |
是的 |
|
volume_sample_rgb |
是的 |
|
线框 |
是的 |
|
形状 |
||
盒子 |
是的 |
不支持跟踪集。 |
锥体 |
不 |
|
曲线 |
是的 |
不支持跟踪集。不支持定向曲线。 |
圆筒 |
不 |
|
磁盘 |
不 |
|
初见 |
是的 |
不支持跟踪集。 |
纽布斯 |
是的 |
|
飞机 |
是的 |
不支持跟踪集。 |
积分 |
是的 |
不支持跟踪集。 |
多边形网格 |
是的 |
不支持跟踪集。 |
领域 |
是的 |
不支持跟踪集。 |
隐含的 |
不 |
|
volume_implicit |
不 |
|
蒸馏器 |
是的 |
不支持跟踪集。 |
程序 |
是的 |
不支持跟踪集。 |
体积 |
是的 |
不支持跟踪集。 |
AOV |
||
AA_inv_密度 |
是的 |
|
ID |
是的 |
|
N |
是的 |
|
磷 |
是的 |
|
首选项 |
不 |
|
RGBA |
是的 |
|
Z |
是的 |
|
反照率 |
是的 |
|
背景 |
是的 |
|
外套 |
是的 |
|
外套_反照率 |
是的 |
|
外套_direct |
是的 |
|
外套_间接 |
是的 |
|
时间 |
是的 |
|
扩散 |
是的 |
|
漫反射率 |
是的 |
|
扩散_直接 |
是的 |
|
扩散_间接 |
是的 |
|
直接的 |
是的 |
|
排放 |
是的 |
|
间接 |
是的 |
|
运动矢量 |
不 |
|
不透明度 |
是的 |
|
光线计数 |
是的 |
|
阴影遮罩 |
不 |
|
光泽 |
是的 |
|
sheen_albedo |
是的 |
|
sheen_direct |
是的 |
|
sheen_indirect |
是的 |
|
高光 |
是的 |
|
specular_albedo |
是的 |
|
Specular_direct |
是的 |
|
specular_indirect |
是的 |
|
sss |
是的 |
|
sss_albedo |
是的 |
|
sss_direct |
是的 |
|
sss_indirect |
是的 |
|
传播 |
是的 |
|
传输反照率 |
是的 |
|
传输_直接 |
是的 |
|
传输_间接 |
是的 |
|
体积 |
是的 |
|
音量_Z |
不 |
|
volume_albedo |
不 |
|
volume_indirect |
不 |
|
volume_opacity |
不 |
|
自定义插件 |
||
BSDF |
不 |
|
相机 |
不 |
|
色彩管理器 |
是的 |
|
司机 |
是的 |
|
筛选 |
不 |
|
着色器 |
不 |
|
程序 |
是的 |
|
程序 |
是的 |
|
成像仪 |
是的 |
|
运营商 |
是的 |
Arnold GPU 渲染的基础知识
系统要求
Arnold GPU 适用于 Turing、Volta、Pascal 和 Maxwell 架构的 NVIDIA GPU。多个 GPU 将提高性能,NVLink 可用于连接多个相同架构的 GPU 以共享内存(在 Windows 上,我们建议也启用 SLI)。
查看支持的 GPU的完整列表。
推荐的NVIDIA 驱动程序:
-
Linux 460.32.03 或更高版本
-
不支持 macOS
预填充 GPU 缓存
第一次使用 GPU 渲染时,GPU 渲染器必须为所使用的着色器和对象类型创建缓存。这可能会延迟您第一次渲染的第一个像素的时间。为避免这些一次性延迟,我们建议您在执行任何渲染之前通过预先填充缓存来提前执行其中的一些操作,因为这将使用最常见的着色器/对象组合的子集填充缓存。Arnold 插件(如 MtoA)具有预填充 GPU 缓存菜单命令,并且 kick 具有 -gpu_warm 标志。请注意,预填充缓存最多可能需要 15 分钟。只有在安装新的 Arnold 版本、更新到新的 NVIDIA 驱动程序或更改系统上 GPU 的硬件配置后,才需要重新填充缓存。
GPU 缓存基于 Arnold 核心版本、NVIDIA 驱动程序版本和执行软件的 GPU。因此,如果其中之一发生更改,则您将需要再次运行预填充缓存,以避免渲染过程中的(一次性)延迟。
选择渲染设备
只需单击一下,您就可以轻松地在 CPU 和 GPU 之间切换。您将在 Arnold 插件的渲染设置 > 系统部分中找到一个新的渲染设备设置。
您可以使用 CUDA_VISIBLE_DEVICES
(环境变量) 来限制 Arnold(以及任何其他基于 Cuda 的应用程序)可以看到的 GPU。
匹配 CPU 和 GPU 上的噪声
匹配噪声可能需要一些实验,因为Arnold GPU 仅使用 相机 (AA) 采样。我们建议您还使用自适应采样。以下是一些指导方针:
-
设置最大值 相机 (AA)在 30 到 50 的范围内(根据场景,您可能会接近 100)。通常,最大样本应该是一个大值。大的最大样本意味着质量由低于阈值的噪声控制,而不是通过钳位到最大 AA。
-
将自适应阈值设置为0.015 或 0.02 之类的值。对于无噪声渲染,降低阈值,甚至可能降低到 0.010。
-
将相机 (AA)样本设置为 3 或 4 左右。使用 AA 提高的少数原因之一是运动模糊。相机 (AA)采样数越多,自适应采样带来的加速就越少。
所有纹理都必须适合内存。我们建议您使用平铺和 mip 映射的 TX 纹理。如果内存不足,可以在“渲染设置”中为纹理设置最大分辨率。