小编Ive*_*ate的帖子

以到最近边缘的距离为函数的着色矩形会在对角线上产生奇怪的结果

我试图根据每个像素到最近矩形边缘的距离来为 ShaderToy/GLSL 中的矩形着色。然而,在它的对角线上可以看到一个奇怪的(较暗的)结果: vec3 伴侣=vec3(maxc);

我使用矩形 UV 坐标,并使用以下代码:

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    // Normalized pixel coordinates (from 0 to 1)
    vec2 uv = fragCoord/iResolution.xy;

    vec2 uvn=abs(uv-0.5)*2.0;
    float maxc=max(uvn.y,uvn.x);

    vec3 mate=vec3(maxc);

    fragColor = vec4(mate.xyz,1);
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,错误似乎来自max(uvn.y,uvn.x);代码行,因为它没有像人们期望的那样平滑地插入颜色值。为了进行比较,这些是通过采样 uvn.y 和 uvn.x 获得的图像,而不是这两者之间的最大值:

vec3 伴侣=vec3(uvn.y); vec3 伴侣=vec3(uvn.x);

您可以通过以下 URL 试用着色器: https: //www.shadertoy.com/view/ldcyWH

shader opengl-es glsl webgl

3
推荐指数
1
解决办法
1716
查看次数

标签 统计

glsl ×1

opengl-es ×1

shader ×1

webgl ×1