【发布时间】:2013-12-10 20:34:29
【问题描述】:
我正在处理程序纹理,它看起来很好,除了很远之外,小的纹理像素分解成噪声和摩尔纹图案。
我已经着手寻找一种解决方案来平均和量化远距离和近距图案的比例,以便靠近它是完整的细节,而远它是四舍五入以便远距离的一个像素山只代表在那里找到的一种颜色,而不是当时的 10 或 20 种颜色。
很容易通过使用 if 语句舍入体积纹理基于的 World_Position 来做到这一点,即:
if( camera-pixel_distance > 1200 meters ) {wpos = round(wpos/3)*3;}//---round far away pixels
return texturefucntion(wpos);
四舍五入很远的纹理的结果是它们看起来像这样,除了很远: 问题是我必须为各种距离设置大约 5 个条件,并且我必须估计一个随机的良好舍入值
我尝试制作一个函数,将像素的距离切割成距离步长,并将 LOD 分隔符应用于 pixel_worldposition 值以使其在距离处逐渐变圆,但我得到了无意义的结果,实际上 HLSL 完全翻转了。这是尝试:
float cmra= floor(_WorldSpaceCameraPos/500)*500; //round camera distance by steps of 500m
float dst= (1-distance(cmra,pos)/4500)*1000 ; //maximum faraway view is 4500 meters
pos= floor(pos/dst)*dst;//close pixels are rounded by 1000, far ones rounded by 20,30 etc
它返回了我无法理解的无意义模式。
是否有用于平滑和舍入距离纹理伪影的良好记录算法?我可以使用屏幕像素分辨率,结合像素的距离,将每个像素四舍五入为一种颜色,保持颜色稳定?
【问题讨论】:
标签: opengl glsl gpu hlsl antialiasing