我写了一个简单的射线平面相交的阴影example。我在飞机上使用了棋盘格图案,我发现了奇怪的伪像。我知道这缺乏抗锯齿功能,因此我完全期待锯齿状的线条。但是,沿边缘有随机的像素似乎很不正确。我尽力使用Cycles渲染器在Blender中重新创建相同的对象,每个像素1个样本,并且生成的结果更接近我的预期。谁能解释一下?
float intersect(in vec3 ro, in vec3 rd)
{
return -ro.y / rd.y;
}
void mainImage(out vec4 fragColor, in vec2 fragCoord)
{
vec2 uv = ((fragCoord + vec2(0.5)) / iResolution.xy * 2.0 - 1.0) * vec2(16.0 / 9.0, 1.0);
vec3 ro = vec3(0.0, 1.0, 0.0);
vec3 rd = normalize(vec3(uv, 2.0));
float t = intersect(ro, rd);
vec3 col = vec3(0.0, 0.0, 0.0);
if (t >= 0.0)
{
vec3 pos = ro + t * rd;
vec2 tex = floor(pos.xz);
col = vec3(mod(tex.x + tex.y, 2.0));
}
fragColor = vec4(col, 1.0);
}
答案 0 :(得分:1)
如果网格线直接落在采样点上,则浮点误差将确定为该像素选择哪个网格正方形。当您使用整数({{1})时,循环使用随机采样点。将采样点更改为fragCoord + vec2(0.5)
会删除工件。