【发布时间】:2016-01-25 16:50:32
【问题描述】:
这是我看到的问题的一个着色玩具示例:
https://www.shadertoy.com/view/4dVGzW
我正在通过从地板纹理坐标中采样来对纹理进行采样:
#define GRID_SIZE 20.0
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
vec2 uv = fragCoord.xy / iResolution.xy;
// Sample texture at integral positions
vec2 texUV = floor(uv * GRID_SIZE) / GRID_SIZE;
fragColor = texture2D(iChannel0, texUV).rgba;
}
我看到的错误是在网格方块之间有时会画出 1-2 条像素线。
请注意,我们不仅在 Web 上使用 GLSL ES,而且在 Unity 中使用 HLSL,都发现了这个问题。
floor() 和我不懂的浮点运算有什么关系吗?!我不仅想知道如何解决它,还想知道究竟为什么会发生这种情况?
【问题讨论】:
标签: pixel-shader floor