返回

以波长依赖的次表面散射解锁真实的 V-Ray 渲染

前端

在逼真的 3D 渲染世界中,材料的真实性至关重要。V-Ray 渲染器通过其强大的 OSL 着色器为艺术家提供了定制材料的灵活性,从而提升了这一真实性。在这里,我们将深入探讨一种独特的 OSL 着色器,它利用波长依赖的次表面散射,将 V-Ray 渲染提升到一个新的水平。

该着色器受到 Tony Reynolds 备受推崇的皮肤着色器启发,它利用红、绿、蓝波长对次表面散射进行调制。这种创新方法带来了一系列令人惊叹的好处:

  • 增强皮肤渲染: 该着色器模拟了皮肤对不同波长的光的独特反应,产生了令人惊叹的真实皮肤质感。

  • 提升材料多样性: 通过调整波长依赖性参数,艺术家可以创建广泛的材料,从牛奶般半透明的表面到不透明的岩石。

  • 优化渲染性能: 该着色器的高效算法可优化渲染时间,同时保持出色的视觉质量。

设置 OSL 着色器

  1. 在 V-Ray 材质编辑器中创建新材质。
  2. 选择“OSL”选项卡。
  3. 将以下 OSL 代码粘贴到代码编辑器中:
shader sss_wavelength_dependent(
    float scattering_coefficient = 0.5,
    color scattering_color = color(1,1,1),
    float scattering_distance = 1.0,
    float absorption_coefficient = 0.1,
    color absorption_color = color(0,0,0),
    float absorption_distance = 1.0,
    float wavelength_red = 0.65,
    float wavelength_green = 0.55,
    float wavelength_blue = 0.45,
    float wavelength_sensitivity_red = 1.0,
    float wavelength_sensitivity_green = 1.0,
    float wavelength_sensitivity_blue = 1.0
) {
    // 计算波长依赖的散射和吸收系数
    float scattering_coefficient_red = scattering_coefficient * wavelength_sensitivity_red;
    float scattering_coefficient_green = scattering_coefficient * wavelength_sensitivity_green;
    float scattering_coefficient_blue = scattering_coefficient * wavelength_sensitivity_blue;
    
    float absorption_coefficient_red = absorption_coefficient * wavelength_sensitivity_red;
    float absorption_coefficient_green = absorption_coefficient * wavelength_sensitivity_green;
    float absorption_coefficient_blue = absorption_coefficient * wavelength_sensitivity_blue;
    
    // 计算对特定波长的次表面散射
    color sss_red = sss(scattering_coefficient_red, scattering_color, scattering_distance, absorption_coefficient_red, absorption_color, absorption_distance, wavelength_red);
    color sss_green = sss(scattering_coefficient_green, scattering_color, scattering_distance, absorption_coefficient_green, absorption_color, absorption_distance, wavelength_green);
    color sss_blue = sss(scattering_coefficient_blue, scattering_color, scattering_distance, absorption_coefficient_blue, absorption_color, absorption_distance, wavelength_blue);
    
    // 合并颜色以获得最终结果
    return sss_red + sss_green + sss_blue;
}

自定义着色器

调整着色器的参数以匹配所需的材料属性:

  • Scattering Coefficient: 影响材料的整体散射量。
  • Scattering Color: 决定了散射光的颜色。
  • Absorption Coefficient: 控制材料对光的吸收量。
  • Absorption Color: 定义了吸收光的颜色。
  • Wavelength Sensitivity: 调整材料对特定波长的敏感性。

结论

V-Ray 渲染器的波长依赖次表面散射 OSL 着色器是艺术家释放渲染真实性的强大工具。通过模拟材料对不同波长的独特反应,它带来了增强皮肤渲染、提升材料多样性和优化渲染性能等一系列好处。通过了解其设置和自定义选项,你可以掌握这种着色器的力量,将其提升为你的 3D 渲染工作流程中不可或缺的工具。