浏览代码

HDRenderPipeline: Prevent a divide by 0 with Influence mode on LayeredLit.shader

/Add-support-for-light-specular-color-tint
sebastienlagarde 7 年前
当前提交
86cbf617
共有 1 个文件被更改,包括 1 次插入1 次删除
  1. 2
      ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/LitData.hlsl

2
ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/LitData.hlsl


// (baseColor - meanColor) + lerp(meanColor, baseColor0, inheritBaseColor) simplify to
// saturate(influenceFactor * (baseColor0 - meanColor) + baseColor);
// There is a special case when baseColor < meanColor to avoid getting negative values.
float3 factor = baseColor > meanColor ? (baseColor0 - meanColor) : (baseColor0 * baseColor / meanColor - baseColor);
float3 factor = baseColor > meanColor ? (baseColor0 - meanColor) : (baseColor0 * baseColor / max(meanColor, 0.001) - baseColor); // max(to avoid divide by 0)
return influenceFactor * factor + baseColor;
}

正在加载...
取消
保存