在 webgl 中合成颜色和纹理
Compositing colors and textures in webgl
如何在webgl中进行颜色合成?我不确定到底要搜索什么,也许我漏掉了一个词。我希望能够绘制颜色或纹理作为叠加层。例如,我在这里尝试添加不透明度为 0.2 的黑色叠加层,但我没有直接使用颜色,而是减去了不透明度。如果我想使用不同的颜色作为叠加层,我将不得不使用不同的解决方法。如何在不使用任何解决方法的情况下 overlay/composite 不同的颜色或纹理? Shadertoy link
void mainImage( out vec4 fragColor, in vec2 fragCoord ) {
vec2 uv = fragCoord/iResolution.xy;
vec4 col = texture(iChannel0, uv);
vec4 overlay = vec4(0., 0., 0., 0.2);
col -= overlay.a;
fragColor = col;
}
如果你想把纹理颜色加深到黑色,你可以使用一个简单的乘法:
vec4 col = texture(iChannel0, uv);
col *= 0.8; // 20% darker
或者,如果您想使用一种颜色,您也可以将它们相乘
vec4 col = texture(iChannel0, uv);
vec4 tint = vec4(1.0, 0.5, 0.0, 1.0); // Orange
col *= tint;
有很多方法可以将颜色混合在一起。在颜色之间创建平滑渐变的另一种方法是 by using the mix()
function。没有人回答。
如何在webgl中进行颜色合成?我不确定到底要搜索什么,也许我漏掉了一个词。我希望能够绘制颜色或纹理作为叠加层。例如,我在这里尝试添加不透明度为 0.2 的黑色叠加层,但我没有直接使用颜色,而是减去了不透明度。如果我想使用不同的颜色作为叠加层,我将不得不使用不同的解决方法。如何在不使用任何解决方法的情况下 overlay/composite 不同的颜色或纹理? Shadertoy link
void mainImage( out vec4 fragColor, in vec2 fragCoord ) {
vec2 uv = fragCoord/iResolution.xy;
vec4 col = texture(iChannel0, uv);
vec4 overlay = vec4(0., 0., 0., 0.2);
col -= overlay.a;
fragColor = col;
}
如果你想把纹理颜色加深到黑色,你可以使用一个简单的乘法:
vec4 col = texture(iChannel0, uv);
col *= 0.8; // 20% darker
或者,如果您想使用一种颜色,您也可以将它们相乘
vec4 col = texture(iChannel0, uv);
vec4 tint = vec4(1.0, 0.5, 0.0, 1.0); // Orange
col *= tint;
有很多方法可以将颜色混合在一起。在颜色之间创建平滑渐变的另一种方法是 by using the mix()
function。没有人回答。