1
我是OSL的初學者,對其「輻射封閉」感到困惑。OSL中的輻射封閉
僅以漫反射閉合爲例。我們可以直接寫
次=漫射(N)
在OSL文件以使用漫閉合。該文件說「閉包的內部部分留給渲染實現」。但是我知道diffuse是OSL中的一個內置閉包,並且 OSL已經在bsdf_diffsue.cpp中實現了漫射的eval_reflect(),eval_transmit,sample()接口。例如,eval_reflect()情況如下:
Color3 eval_reflect (const Vec3 &omega_out, const Vec3 &omega_in, float& pdf) const
{
float cos_pi = std::max(m_N.dot(omega_in),0.0f) * (float) M_1_PI;
pdf = cos_pi;
return Color3 (cos_pi, cos_pi, cos_pi);
}
因此,似乎沒有別的在外面渲染工作要做。那麼,「閉包的內部部分留給渲染實現」究竟意味着什麼?
任何解釋將不勝感激!謝謝!