有关分层着色器的现象

以下是在当前分层包中实现的常规基础现象。

混合光泽和漫反射

此现象混合光泽和漫反射,两者都使用相同的染色。

mila_mix_reflective
declare phenomenon color
    "mila_mix_reflective" (

        color   "tint"               default 0.7 0.7 0.7 1.0,

        # Glossy
        scalar  "glossy_weight"      default 0.5, #: min 0 max 1
        scalar  "glossy_roughness"   default 0.4, #: min 0 max 1

        scalar  "direct"             default 1.0, #: min 0 max 1
        scalar  "indirect"           default 1.0  #: min 0 max 1
    )

    ...

    version 1
end declare
tint
是光泽反射和漫反射组件的颜色。
glossy_weight
与漫反射组件混合的光泽的权重,介于 0 和 1 之间。简单的加权混合。
glossy_roughness
是此组合的光泽反射组件的粗糙度。其范围在 0.0(像镜面一样平坦)到 1.0(像漫反射)之间。
direct
是直接照明的倍增(通常为 1.0)
indirect
是间接照明的倍增(通常为 1.0)

在漫反射顶部放置一层光泽反射。

此现象在漫反射顶部放置一层光泽,两者都使用相同的染色。使用菲涅耳折射率定向加权光泽层,以确定方向相关权重。

mila_layer_reflective
declare phenomenon color
    "mila_layer_reflective" (

        color   "tint"               default 0.7 0.7 0.7 1.0,

        # Glossy
        scalar  "glossy_weight"      default 0.5, #: min 0 max 1
        scalar  "glossy_roughness"   default 0.4, #: min 0 max 1
        scalar  "ior"                default 1.4, #: min 1 max 20 softmax 2

        scalar  "direct"             default 1.0, #: min 0 max 1
        scalar  "indirect"           default 1.0  #: min 0 max 1
    )
    ...
     version 1
 end declare
tint
是光泽反射和漫反射组件的颜色。
glossy_weight
在漫反射组件上分层的光泽权重,介于 0 和 1 之间。乘以方向权重。
glossy_roughness
是此组合的光泽反射组件的粗糙度。其范围在 0.0(像镜面一样平坦)到 1.0(像漫反射)之间。
ior
是用于方向相关加权的菲涅耳折射率,乘以 glossy_weight。
direct
是直接照明的倍增(通常为 1.0)
indirect
是间接照明的倍增(通常为 1.0)

混合各向异性光泽和漫反射。

此现象混合光泽和漫反射,两者都使用相同的染色。添加各向异性控制和漫反射粗糙度,优于光泽粗糙度。

mila_mix_reflective_aniso
declare phenomenon color
    "mila_mix_reflective_aniso" (

        color   "tint"               default 0.7 0.7 0.7 1.0,

        # Glossy
        scalar  "glossy_weight"      default 0.5, #: min 0 max 1
        scalar  "glossy_roughness"   default 0.4, #: min 0 max 1

        # Additional Glossy
        scalar  "anisotropy"         default 1.0,
        scalar  "aniso_angle"        default 0.0,
        integer "aniso_channel"      default -1,

        # Diffuse
        scalar  "diffuse_roughness"  default 0.0, #: min 0 max 1

        scalar  "direct"             default 1.0, #: min 0 max 1
        scalar  "indirect"           default 1.0  #: min 0 max 1
    )
    ...
     version 1
 end declare
tint
是光泽反射和漫反射组件的颜色。
glossy_weight
与漫反射组件混合的光泽的权重,介于 0 和 1 之间。简单的加权混合。
glossy_roughness
是此组合的光泽反射组件的粗糙度。其范围在 0.0(像镜面一样平坦)到 1.0(像漫反射)之间。
anisotropy
是表示等向反射的 1.0。实际值是 U 反射率与 V 反射率的比值,这意味着大于 1.0 和小于 1.0 的值均有效,也就是说该值是反射的“U 向量比例因子”。
aniso_angle
定义在 UV 空间内各向异性的旋转,aniso_channel 定义从其衍生 U 和 V 方向的纹理贴图通道。如果将该参数设为 -1,则计算基于对象空间的默认规范方向(与任何纹理坐标空间都无关)。
diffuse_roughness
将 (Oren-Nayar) 粗糙度范围设为 0 到 1,其中 0 是标准的 Lambertian 着色。粗糙度的值越大,在表面上产生的“粉末状”程度就越强。
direct
是直接照明的倍增(通常为 1.0)
indirect
是间接照明的倍增(通常为 1.0)

在漫反射顶部放置一层各向异性光泽反射。

此现象在漫反射顶部放置一层光泽,两者都使用相同的染色。使用菲涅耳折射率定向加权光泽层,以确定方向相关权重。为光泽反射添加各向异性控制,为漫反射添加粗糙度。

mila_layer_reflective_aniso
declare phenomenon color
    "mila_layer_reflective_aniso" (

        color   "tint"               default 0.7 0.7 0.7 1.0,

        # Glossy
        scalar  "glossy_weight"      default 0.5, #: min 0 max 1
        scalar  "glossy_roughness"   default 0.4, #: min 0 max 1
        scalar  "ior"                default 1.4, #: min 1 max 20 softmax 2

        # Additional Glossy
        scalar  "anisotropy"         default 1.0,
        scalar  "aniso_angle"        default 0.0,
        integer "aniso_channel"      default -1,

        # Diffuse
        scalar  "diffuse_roughness"  default 0.0, #: min 0 max 1

        scalar  "direct"             default 1.0, #: min 0 max 1
        scalar  "indirect"           default 1.0  #: min 0 max 1
    )
    ...
     version 1
 end declare
tint
是光泽反射和漫反射组件的颜色。
glossy_weight
在漫反射组件上分层的光泽权重,介于 0 和 1 之间。乘以方向权重。
glossy_roughness
是此组合的光泽反射组件的粗糙度。其范围在 0.0(像镜面一样平坦)到 1.0(像漫反射)之间。
ior
是用于方向相关加权的菲涅耳折射率,乘以 glossy_weight。
anisotropy
是表示等向反射的 1.0。实际值是 U 反射率与 V 反射率的比值,这意味着大于 1.0 和小于 1.0 的值均有效,也就是说该值是反射的“U 向量比例因子”。
aniso_angle
定义在 UV 空间内各向异性的旋转,aniso_channel 定义从其衍生 U 和 V 方向的纹理贴图通道。如果将该参数设为 -1,则计算基于对象空间的默认规范方向(与任何纹理坐标空间都无关)。
diffuse_roughness
将 (Oren-Nayar) 粗糙度范围设为 0 到 1,其中 0 是标准的 Lambertian 着色。粗糙度的值越大,在表面上产生的“粉末状”程度就越强。
direct
是直接照明的倍增(通常为 1.0)
indirect
是间接照明的倍增(通常为 1.0)

在漫反射顶部放置一层光泽反射。

此现象在漫反射顶部放置一层光泽,但是仅漫反射使用染色。使用菲涅耳折射率定向加权光泽层,以确定方向相关权重。

mila_layer_reflective_plastic
declare phenomenon color
    "mila_layer_reflective_plastic" (

        color   "tint"               default 0.7 0.7 0.7 1.0,

        # Glossy
        scalar  "glossy_weight"      default 0.5, #: min 0 max 1
        scalar  "glossy_roughness"   default 0.4, #: min 0 max 1
        scalar  "ior"                default 1.4, #: min 1 max 20 softmax 2

        scalar  "direct"             default 1.0, #: min 0 max 1
        scalar  "indirect"           default 1.0  #: min 0 max 1
    )
    ...
     version 1
 end declare
tint
是仅用于漫反射组件的颜色。
glossy_weight
在漫反射组件上分层的光泽权重,介于 0 和 1 之间。乘以方向权重。
glossy_roughness
是此组合的光泽反射组件的粗糙度。其范围在 0.0(像镜面一样平坦)到 1.0(像漫反射)之间。
ior
是用于方向相关加权的菲涅耳折射率,乘以 glossy_weight。
direct
是直接照明的倍增(通常为 1.0)
indirect
是间接照明的倍增(通常为 1.0)

在漫反射顶部放置一层带油漆碎片的亮光漆反射

此现象为车漆类型的材质提供基础油漆层。它在可以在边缘更改颜色的漫反射顶部放置一层带有油漆碎片的光泽。在此基础上使用光泽或镜面反射组件,根据需要放置尽可能多的透明涂层。

mila_layer_reflective_paint
declare phenomenon color
    color "mila_layer_reflective_paint" 
    (
        color   "tint"                   default 0.8 0.1 0, #diffuse color

        scalar  "edge_weight"            default 0.0,
        color   "edge_color"             default 0 0 0,     #diffuse color at grazing angles
        scalar  "edge_color_bias"        default 1.0,

        scalar  "glossy_weight"          default 0.2,
        color   "glossy_color"           default 0.8 0.1 0,
        scalar  "glossy_roughness"       default 0.6,
        
        scalar  "flake_weight"           default 1.0,
        color   "flake_color"            default 1 1 1,
        scalar  "flake_roughness"        default 0.4,

        scalar  "flake_scale"            default 0.05,
        scalar  "flake_density"          default 0.8,
        scalar  "flake_strength"         default 0.2,

        integer "flake_type"             default 3,       #: enum "distortion1:distortion2:distortion3:cellular1:cellular2:cellular3"
        integer "flake_cell_style"       default 0, 	  #: enum "edgy:circular"
        scalar  "flake_circle_size"      default 0.3,
        
        scalar  "direct"                 default 1.0,
        scalar  "indirect"               default 1.0
    )
    ...
     version 1
 end declare

在光泽透射顶部放置一层各向异性光泽反射。

此现象在光泽透射顶部放置一层各向异性光泽反射,两者都使用相同的染色。使用菲涅耳折射率 (ior) 定向加权光泽反射层,以确定方向相关权重。为光泽反射和透射添加各向异性控制,并为透射重定向(折射)使用相同折射率。

mila_layer_transmissive
declare phenomenon color
    "mila_layer_transmissive" (

        color   "tint"               default 1.0 1.0 1.0 1.0,

        # Glossy
        scalar  "reflective_weight"  default 1.0, #: min 0 max 1
        scalar  "roughness"          default 0.4, #: min 0 max 1
        scalar  "ior"                default 1.5, #: min 0 softmin 1 max 10 softmax 2

        # Additional Glossy
        scalar  "anisotropy"         default 1.0,
        scalar  "aniso_angle"        default 0.0,
        integer "aniso_channel"      default -1,

        # Transmission reuses ior, roughness, anisotropy

        scalar  "direct"             default 1.0, #: min 0 max 1
        scalar  "indirect"           default 1.0  #: min 0 max 1
    )
    ...
     version 1
 end declare
tint
是光泽反射和透射组件的颜色。
reflective_weight
在光泽透射组件上分层的光泽反射权重,介于 0 和 1 之间。乘以方向权重。
roughness
是此组合的光泽反射组件的粗糙度。其范围在 0.0(像镜面一样平坦)到 1.0(像漫反射)之间。
ior
是用于方向相关加权的菲涅耳折射率 (ior),乘以 reflective_weight
anisotropy
是表示等向反射的 1.0。实际值是 U 反射率与 V 反射率的比值,这意味着大于 1.0 和小于 1.0 的值均有效,也就是说该值是反射的“U 向量比例因子”。
aniso_angle
定义在 UV 空间内各向异性的旋转,aniso_channel 定义从其衍生 U 和 V 方向的纹理贴图通道。如果将该参数设为 -1,则计算基于对象空间的默认规范方向(与任何纹理坐标空间都无关)。
direct
是直接照明的倍增(通常为 1.0)
indirect
是间接照明的倍增(通常为 1.0)

在具有颜色吸收的光泽透射顶部放置一层光泽反射

指定吸收与最大距离时,此现象层使用染色作为最大距离颜色在光泽透射顶部放置一层光泽反射。使用菲涅耳折射率 (ior) 定向加权光泽反射层,以确定方向相关权重。

mila_layer_transmissive_distance
declare phenomenon color
    "mila_layer_transmissive_distance" (

        color   "tint"               default 1.0 1.0 1.0 1.0,

        scalar  "max_dist"           default 2.0, #: min 0 softmax 5

        # Glossy
        scalar  "reflective_weight"  default 1.0, #: min 0 max 1
        scalar  "roughness"          default 0.4, #: min 0 max 1
        scalar  "ior"                default 1.5, #: min 0 softmin 1 max 10 softmax 2
                
        # Transmission reuses ior, roughness, anisotropy

        scalar  "direct"             default 1.0, #: min 0 max 1
        scalar  "indirect"           default 1.0 #: min 0 max 1
    )
    ...
     version 1
 end declare
tint
用于通过透射材质上色,如厚有色玻璃。它是 max_distance 处的颜色。
max_distance
tint 一起使用来为透射通过几何体上色。
reflective_weight
在光泽透射组件上分层的光泽反射权重,介于 0 和 1 之间。乘以方向权重。
roughness
是此组合的光泽反射组件的粗糙度。其范围在 0.0(像镜面一样平坦)到 1.0(像漫反射)之间。
ior
是用于方向相关加权的菲涅耳折射率 (ior),乘以 reflective_weight
direct
是直接照明的倍增(通常为 1.0)
indirect
是间接照明的倍增(通常为 1.0)

在具有颜色吸收的镜面反射透射顶部放置一层镜面反射

此现象在镜面反射透射顶部放置一层镜面反射,两者都使用染色。使用菲涅耳折射率 (ior) 定向加权镜面反射层,以确定方向相关权重。使用相同的折射率来确定透射重定向(折射)。

mila_layer_transmissive_clear
declare phenomenon color
    "mila_layer_transmissive_clear" (

        color   "tint"               default 1.0 1.0 1.0 1.0,

        # Specular
        scalar  "reflective_weight"  default 1.0, #: min 0 max 1
        scalar  "ior"                default 1.5, #: min 0 softmin 1 max 10 softmax 2

        scalar  "direct"             default 1.0, #: min 0 max 1
        scalar  "indirect"           default 1.0  #: min 0 max 1
    )
    ...
     version 1
 end declare
tint
用于为镜面反射和透射上色。
reflective_weight
在镜面反射透射组件上放置的镜面反射层的权重,介于 0 和 1 之间。乘以方向权重。
ior
是用于方向相关加权的菲涅耳折射率 (ior),乘以 reflective_weight
direct
是直接照明的倍增(通常为 1.0)
indirect
是间接照明的倍增(通常为 1.0)

混合漫反射和散射组件。

此现象将漫反射与次表面散射结合起来,并且简化了对次表面散射的控制。染色应用于漫反射以及前面和后面的散射染色。前面和后面的颜色应用于灯光散射的方式。scale_conversion 可以影响散射颜色使用的距离。默认距离值为 20 个单位,但是比例转化会影响该距离。

mila_mix_subsurface_scatter
declare phenomenon color
    "mila_mix_subsurface_scatter" (

        # diffuse
        color   "tint"                 default 0.7 0.7 0.7 1.0,
        scalar  "roughness"            default 0.0,
        scalar  "diffuse_weight"       default 0.1, #: min 0 max 1

        # scatter
        scalar  "front_weight"         default 1.0,
        color   "front_color"          default 1.0 0.5 0.25,
        
        scalar  "back_weight"          default 1.0,
        color   "back_color"           default 1.0 0.5 0.25,
        scalar  "back_depth",        # unassigned (zero) means "same as radius"
        
        scalar  "sampling_dist_mult" default 2.0,
        
        scalar  "scale_conversion"      default 1.0,
        
        integer "resolution"           default 1,

        #
        scalar  "direct"               default 1.0, #: min 0 max 1
        scalar  "indirect"             default 1.0  #: min 0 max 1
    )
    ...
     version 1
 end declare
tint
将应用于前面和后面散射以及漫反射组件的色彩。
roughness
将 (Oren-Nayar) 漫反射组件粗糙度范围设置为 0 到 1,其中 0 是标准的 Lambertian 着色。粗糙度的值越大,在表面上产生的“粉末状”程度就越强。
diffuse_weight
是漫反射组件的权重,通常非常小,因为它的默认值为 0.1。
front_weight
是“前”散射的权重(数量)。权重值通常为 1.0
front_color
是一种颜色,使用它可以修改散射半径(设置为 20)。以 R、G、B 比率使用此颜色有效地进行散射。使用比例转化可缩放其效果
back_weight
是“后”散射的权重(数量)。权重值通常为 1.0
back_color
是一种颜色,使用它可以修改散射半径(设置为 20)。以 R、G、B 比率使用此颜色有效地进行散射。使用比例转化可缩放其效果
back_depth
定义散射的“深度”。默认情况下,该值为 0.0,这意味着散射是一致的(在深度和宽度上距离相同)
sampling_dist_mult
是在 front_radius 或 back_radius 中设置的最大半径的倍增,所有采样实际上都来自该半径内。因此,如果这些半径的最大值为 20 个单位,那么将此参数设置为 2.0 时,实际上会在 40 个单元的距离内进行采样,完全忽略该半径之外的所有灯光。如果此值过小,可能会产生可见的散射硬中止。如果此值过大,则大量采样会浪费在贡献非常小的远端采样上,由于衰减是指数级的,且散射半径参数定义为“产生 10% 贡献的距离”,因此最远的采样的贡献是 10% 的幂次方,此参数作为指数(2 = 1%、3 = 0.1%、4 = 0.01% 等)。
scale_conversion
是应用于给定颜色 * 半径测量的除法器,以将给定的值映射至实际场景单位。因此如果将 front_color 设置为 0.5, 0.25, 0.1,当乘以 20 时将变为 10,5,2,将 scale_conversion 设置为 10 将使有效半径使用 1, 0.5, 0.2
resolution
定义灯光存储的实际分辨率。存储在屏幕空间内大致完成,1 表示“与渲染采用同一分辨率”,2 表示“采用渲染二分之一的分辨率”,3 表示“采用渲染三分之一的分辨率”,以此类推,0 适用于特殊情况,即“采用渲染两倍的分辨率”。默认值为 2(二分之一的分辨率),此值通常就足够了。特殊值 -1 是 3.13 中的新增功能,它意味着强力计算,每个交点不会根据以前存储的值进行插值。它对特别静距离的特写镜头非常有用。
direct
是应用于任何投射到着色器的直接照明的倍增
indirect
是应用于任何投射到着色器的间接照明的倍增

混合漫反射与漫反射透射。

此现象将漫反射与漫反射透射结合在一起。染色同时应用于反射和透射。

mila_mix_translucent
declare phenomenon color
    "mila_mix_translucent" (

        color   "tint"               default 0.7 0.7 0.7 1.0,
        scalar  "roughness"          default 0.0, #: min 0 max 1
        scalar  "diffuse_weight"     default 0.1, #: min 0 max 1

        #
        scalar  "direct"             default 1.0, #: min 0 max 1
        scalar  "indirect"           default 1.0  #: min 0 max 1
    )
    ...
     version 1
 end declare
tint
用于为漫反射和透射上色。
roughness
将 (Oren-Nayar) 粗糙度范围设为 0 到 1,其中 0 是标准的 Lambertian 着色。粗糙度的值越大,在表面上产生的“粉末状”程度就越强。
diffuse_weight
与漫反射透射混合的漫反射的权重,介于 0 和 1 之间。
direct
是直接照明的倍增(通常为 1.0)
indirect
是间接照明的倍增(通常为 1.0)

混合三个光泽反射组件。

此现象将三个光泽反射组件结合在一起。染色应用于所有反射组件。每个组件都具有互相独立的权重和粗糙度。

mila_mix_glossy_reflection
declare phenomenon color
    "mila_mix_glossy_reflection" (

        color   "tint"               default 1.0 1.0 1.0 1.0,

        # 
        scalar  "weight1"            default 0.3, #: min 0 max 1
        scalar  "roughness1"         default 0.3, #: min 0 max 1        # 
        scalar  "weight2"            default 0.3, #: min 0 max 1
        scalar  "roughness2"         default 0.4, #: min 0 max 1        # 
        scalar  "weight3"            default 0.4, #: min 0 max 1
        scalar  "roughness3"         default 0.5, #: min 0 max 1        # 

        scalar  "direct"             default 1.0, #: min 0 max 1
        scalar  "indirect"           default 1.0  #: min 0 max 1
    )
    ...
     version 1
 end declare
tint
用于为所有三个光泽反射组件上色。
weight1,2,3
与其他光泽反射混合的光泽反射的权重,介于 0 和 1 之间。所有加起来必须小于 1,否则将被切断。换句话说,它在启用钳制的情况下使用 mila_mix。
roughness1,2,3
将光泽反射粗糙度范围设置为 0 到 1,其中 0 是完美的镜像反射,而 1 是漫反射。
direct
是直接照明的倍增(通常为 1.0)
indirect
是间接照明的倍增(通常为 1.0)

为头发模型放置组件层。

此现象在头发结合光泽反射、透射/透明度和其他光泽反射组件集时对它进行建模,以便在头发中建模主反射 (R)、透射 (TT) 和次反射 (TRT)。染色应用于从次反射产生的颜色,因为该组件对进入发股的灯光进行建模,从而弹离内部表面并重新透射出头发。将该颜色的一半距离计算 (sqrt) 用于透射颜色。主反射不会被染色。主反射和次反射通过移动进行扩散,表示应用于这些组件的法线移动。

mila_layer_hair
declare phenomenon color "mila_layer_hair" (
        color  "tint"         default 0.6 0.4 0.1,
        scalar "shift"        default 0.15,
        scalar "r_weight"     default 1.0, # multiplied by 1.55 ior directional
        scalar "tt_weight"    default 0.4,
        scalar "glint_weight" default 0.6,

        scalar  "direct"             default 1.0, #: min 0 max 1
        scalar  "indirect"           default 1.0  #: min 0 max 1
    )
    ...
     version 1
 end declare
tint
是次光泽反射组件的颜色。还用于计算透射颜色。
shift
是主反射和次反射的法线方向的移动。偏移越大,反射互相扩散开去得越大。值 0 将对齐它们,值 0.15 是默认值,表示典型头发反射扩散。
r_weight
主光泽反射组件的权重。使用 1.55 的菲涅尔 ior 乘以方向权重。
tt_weight
透明组件的权重。如果设置为 1,则不会发生任何次反射。该权重表示在次反射之前使用的能量百分比。其余的能量将转至次反射。
glint_weight
是从常规次反射获取的次反射的闪光部分的权重。闪光是由头发的展平圆柱模型导致的较尖锐的光锥。其余的能量将成为常规次光泽反射的能量。
direct
是直接照明的倍增(通常为 1.0)
indirect
是间接照明的倍增(通常为 1.0)