以下是分层包中当前应用的辅助对象着色器:
混合其他着色器与分层着色器当前不建议使用,因为它不使用共享灯光列表,能够使用 LPE 多过程控制等。将来可能会部分用到它。所有参与分层着色树的着色器(即插入 mila_layer 或 mila_mix 的任何着色器)必须能够正确地参与内部分层通信,以传递组件权重和其他数据。
declare shader
color
"mila_adapter" (
color "input",
array struct "passes" {
string "path",
color "output",
boolean "comp"
}
)
version 1
apply texture
end declare
虽然不建议使用,但是要使用此着色器,请将某个其他非分层着色器插入到其输入中。它会(而且也能够)将着色器变为使用分层着色器系统的对象。
必须遵循的一些规则:
Mia 材质使用光泽度作为输入参数。此小型辅助对象着色器只是反转光泽度,以生成由 mila_glossy_* 着色器使用的表面粗糙度。
declare shader scalar "mila_get_roughness" (
scalar "glossiness"
)
apply texture
version 1
end declare
许多旧的 mental ray 凹凸贴图着色器只是修改法线 - mila_layers 和 mila_mix 着色器需要将修改后的法线作为向量输入。
此小型辅助对象着色器仅调用某些着色器(通常为凹凸着色器),然后返回修改后的法线。
declare shader vector "mila_get_normal" (
shader "shader"
)
apply texture
version 1
end declare
若要将此着色器与 3ds Max DCC 应用程序一起使用,请使用将实际纹理着色器(例如 max_Bitmap)插入到的着色器 max_Bump(随 3ds Max 一起提供)。
示例:
max_Bitmap => max_Bump.Map => mila_get_normal.shader => mila_layer.components[x].bump
declare shader
struct {
vector "normal",
color "color"
}
"mila_flakes_adapter" (
color "tint",
shader "flakeshader"
)
apply texture
version 1
end declare
构建此着色器仅仅是为了与车漆库中的 mi_flakes_bump 着色器进行交互。该着色器具有非常特殊的行为,它将获取一种颜色,对其进行修改,然后返回该颜色并通过单项操作修改法线。
此辅助对象着色器获取指定颜色并调用 flakeshader(必须是 mi_flakes_bump 的实例),并将修改后的颜色和法线作为单独的输出返回,以连接到分层着色器的相应输入。
该着色器在汽车组件组合中辅助模拟影响法线更改和可见性因子的油漆碎片。
有关使用案例,请参见此处的车漆示例。
declare shader
struct {
vector "normal",
scalar "visibility"
}
"mila_bump_flakes" (
scalar "weight" default 1.0,
scalar "density" default 0.5,
scalar "perturbation" default 0.8,
scalar "scale" default 0.2,
integer "type" default 0,
integer "cell_style" default 0, #: enum "edgy:circular"
scalar "circle_size" default 0.5
)
apply texture
version 4
end declare
该着色器移动基础头发的各个组件的法线:主反射 (R)、透射 (TT)、次反射 (TRT)、次反射闪光右和左光锥 (TRT Glint R/L)。
declare shader
vector "mila_shift_normal" (
integer "mode" default 0, #: enum "hair_R:hair_TT:hair_TRT:hair_TRT_glint_R:hair_TRT_glint_L"
scalar "u_offset" default 0.0,
scalar "v_offset" default 1.0
)
version 1
apply texture
end declare
该着色器移动最底层的法线以便从带状更改为圆柱形的头发形状几何体。在 mental ray 中,头发建模为朝向摄影机/眼睛的带状。这是一种通过更改法线模拟圆柱几何体的方法。如果为头发管使用完全建模的几何体则不需要。
declare shader
vector "mila_hair_base_normal" (
)
version 1
apply texture
end declare
该着色器采用颜色的平方根,对一半距离的头发颜色吸收非常有用。
declare shader
color "mila_color_sqrt" (
color "color"
)
version 1
apply texture
end declare
该着色器从根部和发梢创建头发染色。
declare shader
color "mila_hair_color" (
color "base_color" default 0.3 0.3 0.2 1,
scalar "base_noise" default 0,
color "tip_color" default 0.6 0.6 0.4 1,
scalar "tip_noise" default 0
)
version 1
apply texture
end declare
该着色器从根部和发梢创建头发色彩标量。
declare shader
scalar "mila_hair_scalar" (
scalar "base_scalar" default 0.,
scalar "base_noise" default 0,
scalar "tip_scalar" default 1,
scalar "tip_noise" default 0
)
version 1
apply texture
end declare
该着色器可以从标量构成向量,方法是为矢量的 X、Y、Z 通道重复标量值。
declare shader
vector "mila_scalar_to_vector" (
scalar "scale"
)
version 1
apply texture
end declare
该着色器可代替物理光,因为它还添加了进行纹理贴图以及分割典型灯光集成的颜色和强度的功能。
declare shader color "mila_light" ( color "color", scalar "intensity", scalar "cone", scalar "threshold",# accuracy threshold for optimization scalar "cos_exp" # cosine exponent (disc&rectangle) ) version 1 apply light end declare