【发布时间】:2014-08-09 19:16:32
【问题描述】:
我检查了filter-width GLSL 函数的结果,方法是在相机周围的平面上将其涂成红色。
结果是一个奇怪的模式。我认为这将是相对于距离在相机周围延伸的平面上的圆形渐变。更远的像素均匀地表示更远距离的像素之间更远的 UV 坐标。
为什么fwidth(UV) 不是作为与相机距离函数的简单渐变?我不明白如果不是这样它会如何正常工作,因为我想根据它们之间的 UV 坐标的幅度来消除锯齿像素。
float width = fwidth(i.uv)*.2;
return float4(width,0,0,1)*(2*i.color);
近处 = 黑色,远处 = 红色。
结果:
上述来自 fwidth 的模式是轴对齐的,并且有 1 个对称轴。它无法抗锯齿 2 轴棋盘或柏林噪声的 n 轴纹理或径向棋盘:
float2 xy0 = float2(i.uv.x , i.uv.z) + float2(-0.5, -0.5);
float c0 = length(xy0); //sqrt of xx+yy, polar coordinate radius math
float r0 = atan2(i.uv.x-.5,i.uv.z-.5);//angle polar coordinate
float ww =round(sin(c0* freq) *sin(r0* 50)*.5+.5) ;
与轴无关的别名模式:
【问题讨论】:
标签: opengl graphics textures glsl antialiasing