在pbr移植到osg中时,有时发现发黑,原因是光线方向和模型方向相反,在max(dot(N,L),0)计算是,自然就是0了
也很简单,取绝对值即可,即:改为max(abs(dot(N,L)),0)
虽然不一定正确,但是效果起码出来了。
另外,传递浮点时,一定要加上f,比如
ss->addUniform(new osg::Uniform(“metallic”, 1.0f));//金属度
而不是
ss->addUniform(new osg::Uniform(“metallic”, 1.0));//金属度