问题标签 [color-blending]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1823 浏览

opengl - 在 glBlendFunc() 中使用 GL_SRC1_COLOR

我正在使用 glBindFragDataLocationIndexed() 并在片段着色器中编写两种颜色。以下是我的代码:

片段着色器是:

OGL3.3 规范说:

我已将 GL_SRC_COLOR、GL_SRC1_COLOR 作为输入传递给 glBlendFunc()。我不确定结果是否正确。请查找附件图片。此外,如果我通过 GL_ONE,GL_ONE ,则仅渲染第一个纹理,根本没有第二个纹理的迹象。如何验证我的其余代码是否正常(并且混合是否正确完成)?

以下分别是纹理 1、纹理 2 和结果。

纹理 1 纹理 2 结果

0 投票
1 回答
419 浏览

ios - 重复 iOS kCGBlendModeSoftLight 混合

我正在尝试使用着色器复制 CoreGraphics kCBBlendModeSoftLight 混合。(我已经实现了一些其他的 CG 混合模式)

问题是,虽然 Photoshop 的柔光混合有很多(不同的)描述,但我对 CoreGraphics 的版本很感兴趣。

有谁知道 CG 中用于确定混合结果的确切公式?

0 投票
1 回答
1115 浏览

opengl - 从顶点/片段着色器中修改 glBlendColor

在使用子像素渲染(LCD,字形位图格式为 RGB(不是 alpha))时,我正在使用混合函数对从 freetype 库获得的字形进行着色:

我将 RGB 格式的纹理上传到 GPU 并使用以下混合:

r,g,b 是所需的字形颜色。只要字形都是相同的颜色(我使用的是单个顶点缓冲区),这效果很好。我现在想为每个字形设置不同的颜色,然后,我需要在着色器中指定不同的混合颜色,但我认为这是不可能的。有谁知道如何做到这一点(如果可行的话)?

相关项目可在此处获得

我想在某些时候我找到了“正确”的着色器,但实际上它是错误的(参见问题 48

0 投票
1 回答
333 浏览

c# - 什么样的颜色混合才能使前景色与背景色不同?

假设我知道背景颜色并且我想相应地更改前景色以使文本与背景不同。例如,如果当前文本颜色(前景色)为红色,对于用户的某些更改,背景色也变为红色或接近红色(这将使文本难以辨认),在这种情况下,我想使用更改前景色一些颜色混合配方,使其与背景色不同,并保持易读性。

希望你能帮忙,谢谢。

0 投票
1 回答
1378 浏览

canvas - WebGL 绘制具有不同混合模式的 2d 对象

我试图弄清楚如何在 WebGL 中进行混合模式。到目前为止,我使用的是原生 HTML5 Canvas 绘图功能,您可以使用这些功能,例如:

现在,出于性能原因,我正在尝试将其移植到 WebGL。但是,我很难理解如何影响 WebGL 中的混合模式。据我了解,顶点着色器决定哪些不同的纹理/多边形可见,然后为这些纹理/多边形的可见部分的每个像素调用片段着色器。但是,如果我有一个混合模式,比如打火机(它采用底层颜色和新覆盖颜色的每个组件中的较高一个),我会对顶点着色器和片段着色器在这种情况下的作用感到困惑.

更进一步,在我现在使用 WebGL 绘制的 Pixi.js 库中,我相信只有在所有对象都被绘制到帧缓冲区之后才会调用顶点和片段着色器,换句话说:只有在放置所有对象之后。(这个库使用的着色器可以在这里找到)

有人可以解释如何在 WebGL 中正确使用混合模式吗?

0 投票
0 回答
394 浏览

java - OpenGL位图-字体颜色混合抗锯齿

我给自己写了一个程序,它可以从任何已安装的字体生成位图字体到 png。我使用 png 有两个原因: 1. 保留 alpha 值 2. 它是一种开放格式

它还生成一个 xml 文件,以便我可以读取单个字符。此位图字体的导出版本使用白色字体颜色以允许简单的颜色混合。但是,当我在导出位图字体时使用抗锯齿时,我的颜色混合会变得很难看,因为抗锯齿的边框保护器会导致字体的原始白色导致半色边缘。

有谁知道如何在不使用实时字体渲染器或不得不放弃抗锯齿的情况下避开这种效果。

编辑1:

如您所见,当我使用橙色进行混合时,我得到一个白色边框。

如您所见,当我使用橙色进行混合时,我得到一个白色边框。

对于黑色,此边框不可见,因为黑色是 0f 0f 0f 1f (RBGA)。第二个混合颜色与白色有一些相似之处,它会留下由抗锯齿产生的半透明像素引起的“白化”边框。

编辑2:

这是一些代码,显示了我如何将图像加载到 gl 以及如何初始化 gl:

初始化GL:

将图像加载到 gl:

0 投票
6 回答
11618 浏览

java - 如何正确混合两种 int 颜色

我正在尝试混合两种编码为整数的颜色。这是我的小功能:

一切似乎都运行良好,但某些参数会产生错误的颜色。例如:

我的猜测是,无论是乘以浮动比率还是强制转换都应该归咎于此,但我无法弄清楚它们有什么问题......

那么在java中混合两种颜色的正确方法是什么?

0 投票
1 回答
110 浏览

java - 添加混合模式奇怪的工件

这是我用于添加混合方法的代码:

现在,如果我像这样遍历我的两个像素数组:

结果应该看起来像这样(在paint.NET上转载):

在此处输入图像描述

相反,它看起来像这样:

在此处输入图像描述

我的问题是:为什么会有颜色混合的椭圆形手工艺品,我该如何解决这个问题?此外,我也无法复制多重混合模式,可能出于同样的原因......

0 投票
1 回答
387 浏览

optimization - 这种并行处理颜色分量的颜色混合技巧如何工作?

我看到这个 Java 代码非常有效地在两种 RGB888 颜色之间进行了 50% 的完美混合:

这显然相当于单独提取和平均通道。像这样的东西:

但是第一种方法效率更高。我的问题是:这个魔法是如何工作的?我还能用它做什么?还有更多类似的技巧吗?

0 投票
1 回答
728 浏览

opacity - GIMP 不会使用不透明度和绘画工具完全混合颜色

我陷入了一个混合问题,似乎只有在我开始混合而没有任何颜色时才开始。我正在画一套灰色的西装,并使用阴影来真实地捕捉光线。出于某种原因,当我在浅灰色上用深灰色绘画时,例如 20% 的不透明度,有足够的笔触,我正在绘画的颜色将与颜色选择器中的颜色相匹配。在相反的情况下(从浅到深),绘画工具永远不会与颜色选择器中的颜色完全融合,它总是一两个阴影。无论我在该区域上划多少次,它都不会成为我选择的颜色。它让我目瞪口呆,削弱了我制作光影和显示深度的能力。

我已经尝试过使用谷歌搜索并弄乱每个可能的选项,取消选择所有选项,三次检查我所在的图层,但我似乎找不到其他人遇到这个问题......