材质

材质着色器 dgs_materialdielectric_material 实现不同的反射和折射物理模型。

漫反射-光泽-镜面反射材质

dgs_material 材质着色器可以模拟镜子、亮光漆或塑料、各向异性的光泽材质(如拉丝金属)、漫反射材质(如纸张)、半透明材质(如磨砂玻璃)以及这些材质的任意组合。此着色器不能用作阴影着色器,因为阴影只能沿直光线进行计算,这与 DGS 材质的定义不相符。使用全局照明可以对 DGS 对象中处于部分阴影的对象进行照明。

dgs_material
color "dgs_material" (
    color           "diffuse",
    color           "glossy",
    color           "specular",
    scalar          "shiny",
    scalar          "shiny_u",
    scalar          "shiny_v",
    scalar          "transp",
    scalar          "ior",
    array light     "lights"
    integer         "mode")
diffuse
与灯光返回的颜色、基于入射光方向和灯光方向的点积的权重相乘后,与每个灯光的结果相加。
glossy
提供光泽高光的颜色。
specular
提供镜面反射的颜色。
shiny
确定等向光泽反射的宽度,使用的方式类似于 Phong 反射指数:5 表示很宽,100 表示很窄。如果 shiny 为非零值,则忽略下列五个各向异性参数。
shiny_u
shiny_v
用于各向异性光泽反射。它们指定光泽反射的宽度为第一个导数 U 和 V 方向。(必须在应用此着色器的多边形或自由形式曲面上启用或指定导数。)常规的 shiny 参数必须未定义或设定为 0。
transp
指定透明度(如果 ior 为 1)或折射率(如果 ior 不为 1)。它还通过 1 - transp 公式间接指定反射率。镜面反射透射与折射相同,而光泽透射和漫反射透射则为半透明。
ior
材质的折射率。金属通常比玻璃的折射率高。
lights
列出用于灯光列表的灯光实例。
mode
控制要使用哪些灯光,请参见灯光列表

对于等向反射,请使用 shiny 参数,并保留参数 shiny_u 和 shiny_v 未定义。如果 shiny 参数未定义或为零,着色器将检查 shiny_u 和 shiny_v 是否已定义且为非零值,如果是,则计算各向异性反射。曲面 U 方向用作各向异性拂刷方向。

电介质材质

dielectric_material 着色器是基于物理的材质着色器,可用于模拟玻璃、水和其他液体等电介质。该着色器对电介质界面使用菲涅尔公式。这意味着,透射穿过表面的大多数光形成垂直入射方向的角,而被表面反射的大多数光形成掠射角,从而模拟了真实的电介质行为。该着色器还使用比尔定律吸收穿过介质的光。这意味着光在两个电介质材质表面之间透射时会发生指数衰减。

支持以下两种类型的电介质界面:电介质-空气模拟电介质材质与空气之间的界面,如玻璃-空气;电介质-电介质模拟两种电介质材质之间的界面,如玻璃-水。

若要实现物理校正模拟,请务必使用正确的表面界面。对一玻璃杯白兰地酒建模时,需要三个不同的界面:玻璃-空气、玻璃-白兰地酒和白兰地酒-空气。电介质材质使用表面的法线来区分界面任一侧上的介质。对于电介质-空气界面,法线指向空气。对于电介质-电介质界面,法线指向“外部”的电介质材质。若要使用电介质材质,模型法线必须正确定向,除非 ignore_normals 参数设定为 true。此着色器不能用作阴影着色器。

dielectric_material
color "dielectric_material" (
    color           "col",
    scalar          "ior",
    color           "col_out",
    scalar          "ior_out",
    boolean         "ignore_normals"
    scalar          "phong_coef",
    array lights    "lights",
    integer         "mode")
col
穿越一个单位的材质后剩余的那部分光所对应的“持久性”系数。因此,0.9 表示每单位长度的材质会吸收 10% 的光。长度是以世界坐标进行测量的。
ior
电介质材质的折射率。
col_out
若已指定,材质是电介质-电介质界面,并且 col_out 是外部电介质材质的持久性系数。
ior_out
与 col_out 结合使用,用以描述外部电介质材质。
ignore_normals
通常,光线是进入还是离开对象取决于法线的方向(朝向还是背离入射光线)。如果对象的建模较差且法线不可信,可以设定此标志以使电介质材质着色器计算光线进入和离开对象的次数,而不依靠法线的方向。
pcoef
用于计算规格化 Phong 高光的 Phong 系数,该系数还用于生成区域光源的虚设印象。如果此要素为零,则不会有虚设高光,且只有反射光线碰到明亮对象时才可以创建高光效果。
lights
列出用于灯光列表的灯光实例。
mode
控制要使用哪些灯光,请参见灯光列表

路径材质

path_material 着色器实现路径光线跟踪。与分布式光线跟踪相反,对于每次光线碰撞,当使用路径光线跟踪时,至多一条光线被反射或折射。如果跟踪深度限制足够大,大多数间接照明效果会计算正确。但是,结果是噪波过多,且需要极高的采样数才能获得高质量的图像。

请注意,最终聚集和全局照明设置不会影响具有 path_material 的曲面:漫反射间接照明组件通过按照朗伯 (Lambertian) 分布式方向反射至多一条光线来计算。无 path_material_photon 着色器。若要实现渲染加速,应禁用最终聚集和光子发射。可能需要高于使用光子的场景中的跟踪深度设置。

path_material
color "path_material" (
    color           "diffuse",
    color           "glossy",
    color           "specular",
    scalar          "shiny",
    scalar          "shiny_u",
    scalar          "shiny_v",
    scalar          "transp",
    scalar          "ior",
    array light     "lights",
    integer         "mode")

参数及其含义与 dgs_material 着色器的参数和含义相同。

Copyright © 1986, 2015 NVIDIA ARC GmbH. All rights reserved.