跳转至

五个问答题

1.补全Shader: (1)菲涅尔函数Fresnel__Schilick,其中F0为基础反射率

vec3 F0 = vec3(0.04);
//金属介质,反射率应该提升
F0 = mix(F0, surfaceColor.rgb, metalness);
vec3 fresnelSchlick(float cosTheta, vec3 F0)
{
    return F0 + (1.0 - F0) * pow(1.0 - cosTheta, 5.0);
}
题目给的是:
vec3 fresnelSchlick(float specularColor, float3 h,float3 v)
{
    return specularColor + (1.0 - specularColor) * ???:
}
很明显cos角度可以通过半程向量和视角方向计算(Blinn-Phong)。 所以
vec3 fresnelSchlick(float specularColor, float3 h,float3 v)
{
    return specularColor + (1.0 - specularColor) * pow(1-dot(h,v),5)
}
作用:描述的是被反射的光线对比光线被折射的部分所占的比率,这个比率会随着我们观察的角度不同而不同。

(2)