Specular Map

414 阅读1分钟

原文

  • 在Specular工作流中,颜色越亮高光越强,黑色表示没有高光。
  • 高光反射规定了金属的反射率值和非金属的F0。使用RGB贴图可以在贴图中创建不同反射率的电介质材质。
  • 高光度也可影响材质的光泽度
  • 高光度(Specular)也深受粗糙度影响。 image.png
  • render
    • diffuse
    • specular image.png image.png image.png
#ifdef USE_SPECULARMAP //定义
    uniform sampler2D specularMap; 
#endif

// 
#ifdef USE_SPECULARMAP
    vec4 texelSpecular = texture2D( specularMap, vUv );
    specularStrength = texelSpecular.r; // 读取r通道的值作为高光强度
#else
    // 计算outgoingLight
#ifdef ENVMAP_BLENDING_MULTIPLY  //multiply 是mix 啥是 outgoingLight
    outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );
#elif defined( ENVMAP_BLENDING_MIX )
    outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );
#elif defined( ENVMAP_BLENDING_ADD )  // add
    outgoingLight += envColor.xyz * specularStrength * reflectivity;
#endif