【发布时间】:2019-12-31 18:24:50
【问题描述】:
我正在尝试为网站上的图像创建 rgb 偏移效果。我有基本功能,但问题是通道与纹理的 uv 偏移。因此,如果图像尺寸不同,则每个图像的偏移量在视觉上是不同的。
这是我的片段着色器。
uniform sampler2D texture;
varying vec2 vUv; // vertex uv
void main() {
vec2 uv = vUv;
float red = texture2D(texture, vec2(uv.x, uv.y - .1)).r;
float green = texture2D(texture, uv).g;
float blue = texture2D(texture, vec2(uv.x, uv.y + .1)).b;
float alpha = texture2D(texture, uv).a;
gl_FragColor = vec4(vec3(red, green, blue), alpha);
}
以及它在页面上的呈现方式。
如何在不传入统一值的情况下标准化 uv 偏移量?
【问题讨论】:
-
为什么不使用额外的制服?使用代表图像分辨率的
vec2制服应该很容易解决此问题。 -
如果这是唯一的方法,我可以,我想知道是否有办法在不使用任何额外制服的情况下做到这一点?我仍在尝试掌握着色器。
-
穿制服是正常的,可以说是明智的做法。特别是对于这种情况。不过,传入纹理分辨率可能是错误的解决方案。没有理由硬编码不需要硬编码的东西。
标签: three.js glsl shader fragment-shader