如何在 WebGL 中本质上 "Chroma Key"?
How to essentially "Chroma Key" in WebGL?
我想知道如何根据颜色设置我绘制的带纹理正方形的 alpha。我使用的是白色背景的红色 Alabama A 的图片。我希望能够切换它以取出红色并通过 A 显示并切换它以取出白色并保留 A。我有 2 个带纹理的正方形。一个是背景,所以我认为我不能在碎片着色器中这样做,因为它会对两个图像都这样做,对吗?在我的主 js 文件中,当我单击切换 HTML 按钮时,我需要能够将 "chroma key" 从红色切换为白色。
那么,如果只有 4 个带颜色的真实点,我该如何更改基于像素的纹理正方形的 alpha?或 6 个点,其中 2 个被使用两次(2 个三角形)。
顺便说一下,这只是二维的。
简洁版本是使用红色或其他颜色作为您的 alpha
使用 alpha 的红色
gl_FragColor = color.rgbr;
使用非红色(例如绿色)作为 alpha
gl_FragColor = color.rgbg;
现在你需要一些方法来 select
uniform bool useRed;
...
gl_FragColor = vec4(color.rgb, useRed ? color.r : color.g);
或者更有创意的方法是混合红色和绿色。
uniform float mixAmount; // 0 = red, 1 = green
...
gl_FragColor = mix(color.rgbr, color.rgbg, mixAmount);
我想知道如何根据颜色设置我绘制的带纹理正方形的 alpha。我使用的是白色背景的红色 Alabama A 的图片。我希望能够切换它以取出红色并通过 A 显示并切换它以取出白色并保留 A。我有 2 个带纹理的正方形。一个是背景,所以我认为我不能在碎片着色器中这样做,因为它会对两个图像都这样做,对吗?在我的主 js 文件中,当我单击切换 HTML 按钮时,我需要能够将 "chroma key" 从红色切换为白色。
那么,如果只有 4 个带颜色的真实点,我该如何更改基于像素的纹理正方形的 alpha?或 6 个点,其中 2 个被使用两次(2 个三角形)。
顺便说一下,这只是二维的。
简洁版本是使用红色或其他颜色作为您的 alpha
使用 alpha 的红色
gl_FragColor = color.rgbr;
使用非红色(例如绿色)作为 alpha
gl_FragColor = color.rgbg;
现在你需要一些方法来 select
uniform bool useRed;
...
gl_FragColor = vec4(color.rgb, useRed ? color.r : color.g);
或者更有创意的方法是混合红色和绿色。
uniform float mixAmount; // 0 = red, 1 = green
...
gl_FragColor = mix(color.rgbr, color.rgbg, mixAmount);