照明

Lambert

根据给定的环境和漫反射 RGB 颜色(忽略 Alpha)以及灯光列表执行朗伯 (Lambertian) 照明。

mib_illum_lambert
color "mib_illum_lambert" (
    color           "ambience",
    color           "ambient",
    color           "diffuse",
    integer         "mode",
    array light     "lights")
ambience
环境色的倍增。其理念是环境色和漫反射颜色可以源于同一个子着色器结果(例如纹理映射器),并可减少环境光亮度以避免丢失照明效果。
ambient
恒定颜色偏移。
diffuse
与灯光返回的颜色、基于入射光线方向和灯光方向的点积的权重相乘后,与每个灯光的结果相加。
mode
控制要使用哪些灯光,请参见灯光列表
lights
列出用于灯光列表的灯光实例。

Phong

根据给定的环境、漫反射和镜面反射 RGB 颜色、镜面反射指数和灯光列表执行 Phong 照明。

mib_illum_phong
color "mib_illum_phong" (
    color           "ambience",
    color           "ambient",
    color           "diffuse",
    color           "specular",
    scalar          "exponent",
    integer         "mode",
    array light     "lights")
ambience
环境色的倍增。其理念是环境色和漫反射颜色可以源于同一个子着色器结果(例如纹理映射器),并可减少环境光亮度以避免丢失照明效果。
ambient
恒定颜色偏移。
diffuse
与灯光返回的颜色、基于入射光线方向和灯光方向的点积的权重相乘后,与每个灯光的结果相加。
specular
提供镜面反射高光的颜色。
exponent
控制镜面反射高光的宽度。值越小,高光的大小越大。
mode
控制要使用哪些灯光,请参见灯光列表
lights
列出用于灯光列表的灯光实例。

Ward

根据给定的环境、漫反射颜色和光泽 RGB 颜色、两个光泽度参数、两个方向向量和灯光列表执行 Ward 照明。

mib_illum_ward
color "mib_illum_ward" (
    color           "ambience",
    color           "ambient",
    color           "diffuse",
    color           "glossy",
    scalar          "shiny_u",
    scalar          "shiny_v",
    vector          "u",
    vector          "v",
    integer         "mode",
    array light     "lights")
ambience
环境色的倍增。其理念是环境色和漫反射颜色可以源于同一个子着色器结果(例如纹理映射器),并可减少环境光亮度以避免丢失照明效果。
ambient
恒定颜色偏移。
diffuse
与灯光返回的颜色、基于入射光线方向和灯光方向的点积的权重相乘后,与每个灯光的结果相加。
glossy
也是每个灯光相加。它是根据 Ward 各向异性光泽反射模型计算的光泽颜色。
shiny_u
shiny_v
分别控制 u 和 v 方向上的光泽高光宽度。值越小,高光的大小越大。
u
v
各向异性材质中的拂刷方向。它们必须相互垂直并垂直于曲面法线,且采用单位长度。这些向量由用于控制这些输入参数的 mib_texture_rotate 着色器生成。
mode
控制要使用哪些灯光,请参见灯光列表
lights
列出用于灯光列表的灯光实例。

使用表面导数的 Ward

根据给定的环境、漫反射和光泽 RGB 颜色、两个光泽度参数和灯光列表执行 Ward 照明。与 mib_illum_ward 唯一不同的是,其拂刷方向是从表面导数得出的。

mib_illum_ward_deriv
color "mib_illum_ward_deriv" (
    color           "ambience",
    color           "ambient",
    color           "diffuse",
    color           "glossy",
    scalar          "shiny_u",
    scalar          "shiny_v",
    integer         "mode",
    array light     "lights")
ambience
环境色的倍增。其理念是环境色和漫反射颜色可以源于同一个子着色器结果(例如纹理映射器),并可减少环境光亮度以避免丢失照明效果。
ambient
恒定颜色偏移。
diffuse
与灯光返回的颜色、基于入射光线方向和灯光方向的点积的权重相乘后,与每个灯光的结果相加。
glossy
也是每个灯光相加。它是根据 Ward 各向异性光泽反射模型计算的光泽颜色。
shiny_u
shiny_v
分别控制 u 和 v 方向上的光泽高光宽度。u 方向是表面的第一个导数(从 state 读取),v 是垂直的。u 和 v 都位于垂直于曲面法线的平面上。
mode
控制要使用哪些灯光,请参见灯光列表
lights
列出用于灯光列表的灯光实例。

Cook-Torrance

根据给定的环境、漫反射和镜面反射 RGB 颜色、粗糙度、三个波长的折射率和灯光列表执行 Cook-Torrance 照明。Cook-Torrance 照明具有非镜面反射峰值和角度色移。

mib_illum_cooktorr
color "mib_illum_cooktorr" (
    color           "ambience",
    color           "ambient",
    color           "diffuse",
    color           "specular",
    scalar          "roughness",
    color           "ior",
    integer         "mode",
    array light     "lights")
ambience
环境色的倍增。其理念是环境色和漫反射颜色可以源于同一个子着色器结果(例如纹理映射器),并可减少环境光亮度以避免丢失照明效果。
ambient
恒定颜色偏移。
diffuse
与灯光返回的颜色、基于入射光线方向和灯光方向的点积的权重相乘后,与每个灯光的结果相加。
specular
与反射颜色相乘的因子。
roughness
表面的平均微面坡度。控制镜面反射高光的宽度。
ior
采用三个不同波长(红、绿、蓝)时材质的折射率。金属通常比玻璃的折射率高。值必须大于或等于 1.0;较小的值被钳制为 1.0。
mode
控制要使用哪些灯光,请参见灯光列表
lights
列出用于灯光列表的灯光实例。

Blinn

执行 Blinn 照明,与 Cook-Torrance 照明类似,但没有角度色移。它只需要值为 1 的折射率。

mib_illum_blinn
color "mib_illum_blinn" (
    color           "ambience",
    color           "ambient",
    color           "diffuse",
    color           "specular",
    scalar          "roughness",
    scalar          "ior",
    integer         "mode",
    array light     "lights")
ambience
环境色的倍增。其理念是环境色和漫反射颜色可以源于同一个子着色器结果(例如纹理映射器),并可减少环境光亮度以避免丢失照明效果。
ambient
恒定颜色偏移。
diffuse
与灯光返回的颜色、基于入射光线方向和灯光方向的点积的权重相乘后,与每个灯光的结果相加。
specular
提供镜面反射高光的颜色。
roughness
表面的平均微面坡度。控制镜面反射高光的宽度。
ior
材质的折射率。金属通常比玻璃的折射率高。
mode
控制要使用哪些灯光,请参见灯光列表
lights
列出用于灯光列表的灯光实例。

头发

在头发几何体上执行照明,与 Phong 相似。头发需要专用着色器,因为它们不对常规三角形着色,而对程序扁平带状几何体着色。请注意,专用着色器应该用于可以处理头发几何体上着色或纹理贴图差异的参数连接。

mib_illum_hair
color "mib_illum_hair" (
    color           "ambience",
    color           "ambient",
    color           "diffuse",
    color           "specular",
    scalar          "exponent",
    integer         "mode",
    array light     "lights")
ambience
环境色的倍增。
ambient
恒定颜色偏移。
diffuse
与灯光返回的颜色、基于入射光线方向和灯光方向的点积的权重相乘后,与每个灯光的结果相加。
specular
提供镜面反射高光的颜色。
exponent
控制镜面反射高光的宽度。
mode
控制要使用哪些灯光,请参见灯光列表
lights
列出用于灯光列表的灯光实例。

灯光列表

以上所有照明着色器都有 mode 参数和 lights 参数,控制用于照明的一组灯光。可以使用 lights 参数中给定的灯光实例或要着色的几何体实例的灯光列表来执行照明。使用指定给场景对象的灯光列表允许共享一个公用着色器,即使对象具有不同的灯光关系也允许。根据以下可能的 mode 参数值使用灯光:

0
使用 lights 参数照明;如果未指定灯光,则使用实例灯光列表;如果未指定实例灯光列表,则使用场景中的所有灯光。这是默认设置。
1
在包含模式下使用指定的灯光照明,即,对各个灯光实例组中的所有灯光实例求值
2
在排除模式下使用指定的灯光照明,即,使用除指定灯光之外的所有灯光
4
忽略任何指定的灯光并使用实例灯光列表照明。如果未指定实例灯光列表,则使用场景中的所有灯光实例。

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