gpt4 book ai didi

opengl - 高级摩尔纹,HLSL/GLSL 程序纹理着色器中的图案减少 - 抗锯齿

转载 作者:行者123 更新时间:2023-12-01 19:56:55 26 4
gpt4 key购买 nike

我正在研究程序纹理,它看起来不错,除了很远之外,小纹理像素分解成噪声和莫尔图案。

我已经着手寻找一种解决方案,对远处和近处的图案的比例进行平均和量化,以便近处的图案具有完整的细节,而远处的图案则被四舍五入,以便远处的一个像素山只代表那里发现的一种颜色,而不是该点的 10 或 20 种颜色。

通过使用 if 语句对体积纹理所基于的 World_Position 进行舍入即可轻松完成此操作,即:

    if( camera-pixel_distance > 1200 meters ) {wpos = round(wpos/3)*3;}//---round far away pixels
return texturefucntion(wpos);

舍入远处纹理的结果是它们看起来像这样,除了非常远的地方:这样做的问题是我必须为不同的距离制定大约 5 个 if 条件,并且我必须估计一个随机的良好舍入值

我尝试创建一个函数,将像素的距离切割成距离步长,并对 Pixel_worldposition 值应用 LOD devider,使其在距离上逐渐变圆,但我得到了无意义的结果,实际上 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

它返回了我无法理解的无意义模式。

是否有用于平滑和舍入距离纹理伪影的良好记录算法?我可以使用屏幕像素分辨率与像素距离相结合,将每个像素舍入为一种保持稳定颜色的颜色吗?

最佳答案

您熟悉 GLSL(我假设是 HLSL)函数 dFdx()dFdy()fwidth() 吗?它们是专门为了解决这个问题而设计的。来自 GLSL Spec :

genType dFdy (genType p) Returns the derivative in y using local differencing for the input argument p. These two functions are commonly used to estimate the filter width used to anti-alias procedural textures.

genType fwidth (genType p) Returns the sum of the absolute derivative in x and y using local differencing for the input argument p, i.e.: abs (dFdx (p)) + abs (dFdy (p));

关于opengl - 高级摩尔纹,HLSL/GLSL 程序纹理着色器中的图案减少 - 抗锯齿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20204561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com