原来的代码是这样的:
float x = (2 * (i + 0.5 ) / (float)scene.width - 1) * imageAspectRatio * scale;
float y = (1 - 2 * (j + 0.5) / (float)scene.height) * scale;
真的很简单,把下面代码中的0.5
改成get_random_float()
float x = (2 * (i + get_random_float() ) / (float)scene.width - 1) * imageAspectRatio * scale;
float y = (1 - 2 * (j + get_random_float()) / (float)scene.height) * scale;
原来的代码是在像素的中心点采样的,现在我们在整个像素中随机采样,思路类似SSAA, 得益于spp的存在,都不用多加一层循环了。
现在锯齿是没有了,但是不可避免的出现毛边,一开始我还以是因为spp不够,拉到512,边依然是毛糙的。
我的EPSILON = 0.01,测试下来好像与epsilon无关。
This post has received 1 vote up.
Attachments:
You must be
logged in to view attached files.