首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于物理的渲染:环境光在BRDF中的作用

基于物理的渲染:环境光在BRDF中的作用
EN

Stack Overflow用户
提问于 2017-03-04 03:00:34
回答 1查看 475关注 0票数 3

我正在尝试弄清楚我的BRDF方法是否正确。

代码语言:javascript
复制
// Calculate sun BRDF color
vec3 sunBrdf = brdf(tsLightSourceDir, tsEyeDir,
                    tsNormal, vtsTangent, vtsBinormal,
                    albedo.rgb,
                    NdotL, NdotV,
                    tRoughness, tMetallic, specular);

// brdf multiplied by incoming sun radiance -> color
vec3 irradiance = sunAmbientRadiance + sunDiffuseRadiance * NdotL;
vec3 brdfColor  = sunBrdf * irradiance;

// Add base ambient color
vec3 ambientColor = albedo.rgb * sunAmbientRadiance;
resultColor = ambientColor;

resultColor += brdfColor;

// Interpolate by shadow
resultColor = mix(ambientColor,
                  resultColor,
                  shadowAmount);

我的问题是:我添加了2倍的环境光。在计算环境光颜色时为1倍,通过将其与进入BRDF的光量相加为1倍。

我不知道这是否正确,因为在我看来,BRDF需要环境光,因为它是到达表面的照明的一部分。但另一方面,它已经通过与反照率颜色相乘并添加为基色来计算。

任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-04 06:51:34

正确的公式是这样的(在我看来):

vec3照度= sunDiffuseRadiance * NdotL;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42586533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档