问题标签 [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.
iphone - 我想模仿 iOS 中的 Photoshop 图层“柔光”混合
在 Photoshop 中,可以使用许多不同的方式将图层与其下方的图层混合,即正常、溶解、变暗、柔光等。我想在 iOS 中使用核心图形 api 以编程方式复制这种效果。有任何想法吗?
c# - 手动混合颜色
我有一个我正在尝试优化的问题。我正在复制 OpenGL 函数,我当前的问题是光栅化 n 点形状并根据点混合颜色。
栅格存储在长度为 Screen.Width * Screen.Height * 3 的 1 个暗淡字节数组中
我的实现很慢,我想稍微优化一下(嗯,很多)。我访问形状中的每个像素并获取与每个点的距离(使用 Sqrt(x^2 + y^2),这似乎是缓慢的地方)并使用距离和顶点的颜色来确定那个颜色特定像素。
我知道有一种更快的方法可以做到这一点。任何帮助都会很棒!哦,我正在使用 C# 顺便说一句。
opengl-es - GLSL 中的纹理和颜色?
我不知道如何使用 OpenGL ES 2.0 获得与 OpenGL ES 1.1 类似的结果。我想实际使用一个 Sampler2D(将我的纹理与 Alpha 通道混合到帧缓冲区)并设置一个颜色。纹理应该以颜色绘制 - 就像在 OpenGL ES 1.1 中我的 FragmentShader 看起来像这样:
但是“+ colorVarying”部分用黑色破坏了我的alpha通道(因为我还添加了colorVarying,如果AlphaValue为0)并产生奇怪的渐变效果......纹理和颜色通道如何在固定功能管道中结合?我对 glColor4f 的替换是:
我正在使用 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 如果这在某种程度上相关......
对于颜色 1.0、0.0、1.0、1.0,这是我现在得到的:
我想得到:
一些想法来实现这一点?任何帮助,将不胜感激。
c++ - OpenGL - 具有多个纹理的蒙版
我根据以下概念在 OpenGL 中实现了遮罩:
- 面具由黑色和白色组成。
- 前景纹理应该只在蒙版的白色部分可见。
- 背景纹理应该只在蒙版的黑色部分可见。
我可以使用 glBlendFunc() 使白色部分或黑色部分按预期工作,但不能同时使用两者,因为前景层不仅融合到蒙版上,还融合到背景层上。
有没有人知道如何以最好的方式做到这一点?我一直在网上搜索并阅读有关片段着色器的内容。这是要走的路吗?
opengl - 透明天空盒+透明高度图的OpenGL混合问题
这是我的问题。
在我渲染一个带有 6 个透明多边形(GL_BLEND、源 GL_ONE、目标 GL_ONE)的立方体天空盒之后,我在一切之前渲染了一个正交四边形(填充视口)(每个角落都有顶点着色)。效果很好,天空盒由下面的四边形着色,由它自己的 UV 贴图纹理着色。
当我添加高度图(GL_BLEND,GL_ONE,...)时,问题就出现了。高度图与 + 下的天空盒与四边形混合。
我想要的是与正交四边形混合但不与天空盒混合的高度图。我不想通过高度图看到天空盒。
我敢肯定还有另一种方法可以做到这一点。
是否可以先渲染正交四边形和天空盒(就像现在一样)然后使用特殊混合来渲染高度图,该混合减去天空盒而不是正交四边形与某种多通道混合?
非常感谢 !
迪米特里
filter - OpenAL 同步
我是音频编程的新手,所以如果我没有使用正确的术语,请原谅......
我有两个流缓冲区,我希望它们同时完全同步播放。我想控制流之间的混合比例。我确信它就像播放两个源并改变它们的增益一样简单,但我读到有人在做一些技巧,比如有 2 个通道缓冲而不是两个单通道。然后他们从单一来源播放,但控制通道之间的混合。我读到的文章不是关于 OpenAL 的,所以我的问题是:OpenAL 甚至可以做到这一点吗?
我想我不必这样做,但现在我很好奇,想学习如何设置它。我想设置 alFilter 吗?Creative 的文档是“包含多个数据通道的缓冲区将在没有 3D 空间化的情况下播放。” 读到这个我想我需要一个缓冲电平的预传递,然后让源输出混合单声道信号。
我想我会问另一个问题。OpenAL 是否足够灵活,可以做这样的技巧?
我手动解码我的流,所以我意识到在输入缓冲区之前自己进行混合是多么容易,但是我将无法实时更改混合因子,因为我已经缓冲了一秒钟左右的流.
iphone - UIImage 边缘的 Alpha 混合
我有两张矩形图像:一张是前景,另一张是背景。我正在尝试混合前景图像的边缘,以使前景图像看起来像是背景图像的“一部分”。换句话说,我正在尝试应用透明效果,前景图像的不透明度从图像中心的 100% 降低到边缘的 0%。我发现这个操作有时用不同的名称来引用,例如:alpha compositing、alpha blending、edge feathering 或 edge contrast。这是我试图获得的效果的更详细描述:http ://en.wikipedia.org/wiki/Alpha_compositing
我查看了 CGContext 文档,但我没有找到任何开箱即用的功能。
有没有办法使用 CGContext 甚至 OpenGL 来做到这一点?有没有办法在非矩形图像上做到这一点?我知道,所有图像都是矩形的,但我的意思是一个图像,比方说,一个圆圈,周围有一个透明区域。
c# - XNA 渲染多个 Alpha 问题
我在尝试将多个 alpha 对象重叠渲染时遇到问题。目前,如果我在另一个 alpha 对象之上渲染一个 alpha 对象,则会显示顶部 alpha 对象,但底部对象不会,直到您经过/绕过第一个对象。我正在尝试获得加法混合效果,因此顶部对象显示其后面还有另一个透明对象。你如何在 XNA 中做到这一点?我当前的渲染状态设置是:
android - OpenGLES混合粒子但不是背景
我有下一个过程:
问题 - 当我绘制粒子时,它们还与背景混合并变得非常明亮。
我需要的只是将粒子与(2)混合在一起,然后使用(1)与背景混合。
不工作的解决方案:
- 将效果绘制到纹理上而不是应用它可以正常工作……但速度极慢。
- 先画粒子效果再画背景,看起来还可以……但我不能画场景对象,因为它们需要在背景和效果之间
这是显示差异的屏幕。右边的期望结果,左边的粒子与背景混合。
图像:
我将不胜感激任何帮助...
最新更新: 我能够得到我想要的颜色......但是......(似乎这种方式会让我无处可去)我已经用 alpha = 0 渲染了背景,而不是使用 GL11Ext 中的混合函数:glBlendFuncSeparate(GL10.GL_SRC_ALPHA, GL10.GL_DST_ALPHA,GL10.GL_ONE,GL10.GL_ONE);
GL10.GL_SRC_ALPHA, GL10.GL_DST_ALPHA - 颜色只有在有 alpha 时才会混合(bg 现在没有)
GL10.GL_ONE, GL10.GL_ONE - 所有写入粒子的 alpha 设置为最大值以模拟加法混合
如您所见,它工作正常...除了粒子图像具有 alpha 0 的黑色填充区域 ..以及结果图像中黑色具有 alpha 1 的问题,所以我无法以任何方式替换它...
EDIT_2 简单的一般问题:我需要绘制一个红色(0xff0000)发光(加法混合)效果。在黑色背景上没关系,但如果我选择绿色(0x00ff00),结果颜色将接近 0xffff00
有任何想法吗?
c++ - 在openGL中正确混合的问题
我正在尝试在 2d tilemap 上绘制 2d 角色精灵,但是当我绘制角色时,他身后有奇怪的东西。这不在精灵中,所以我认为它是混合的。
这就是我的openGL的设置方式:
我应该如何设置它才能正常工作(即在他身后绘制没有奇怪东西的精灵。
这就是我所说的:http: //i.stack.imgur.com/cmotJ.png
PS:我需要能够将透明/半透明图像彼此叠放,并且它们后面的内容也可见