【发布时间】:2018-10-16 03:02:01
【问题描述】:
我有一个 32 位 64x64 PNG 图像,它显示了一些不同颜色的形状:
当我在浏览器中以较大尺寸显示此图像时,形状开始变得模糊:
这是一个问题,因为当我尝试使用着色器替换特定颜色时,模糊像素与我尝试替换的颜色不匹配。例如,在这里我想将红色换成白色像素,但我仍然得到一个红色轮廓:
在这个例子中我的着色器是一个片段着色器做一个直接的像素交换:
<script id="fragmentShader" type="x-shader/x-fragment">
uniform sampler2D texture1;
varying vec2 vUv;
void main() {
vec4 tColor = texture2D( texture1, vUv );
vec4 maskColor = vec4(1.0, 0.0, 0.0, 1.0);
vec4 newColor = vec4(0.0, 1.0, 0.0, 0.5);
if (tColor.rgb == maskColor.rgb){
gl_FragColor = newColor;
}
else {
gl_FragColor = tColor;
}
}
</script>
如何避免我的图像出现这种像素化?令人困惑的是,如果我在 Paint .Net 中放大原始图像,形状周围的边框看起来很完美,没有像素化/模糊/模糊:
我错过了什么?
【问题讨论】:
标签: image-processing three.js 2d fragment-shader