线性光模式的 Alpha 混合层

2024-03-01

我正在重新创建一些 Photoshop 混合,并尝试使用线性光模式。在 Photoshop 中,您将有一个不透明度为 100% 的背景图层,然后是一个不透明度为 50% 的顶层,其混合模式设置为“线性光”。

我确实找到了有关如何进行线性光混合的信息,但它仅在两个图层都为 100% 不透明度时才有效。

下面是执行线性光模式的着色器代码,当图层都为 100% 不透明度时,它给出与 Photoshop 相同的结果:

#define BlendLinearDodgef           BlendAddf
#define BlendLinearBurnf            BlendSubstractf

#define BlendAddf(base, blend)      min(base + blend, 1.0)
#define BlendSubstractf(base, blend)    max(base + blend - 1.0, 0.0)


#define BlendLinearLightf(base, blend)  (blend < 0.5 ? BlendLinearBurnf(base, (2.0 * blend)) : BlendLinearDodgef(base, (2.0 * (blend - 0.5))))

我看过http://en.wikipedia.org/wiki/Alpha_compositing http://en.wikipedia.org/wiki/Alpha_compositing但我仍然遇到问题。

如何使混合模式适用于半透明图层?


您应该阅读PDF spec https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/pdf_reference_archives/PDFReference.pdf了解当 Alpha 值不是 100% 时如何使用混合模式。特别是,请参阅第 7.2 节“基本合成计算”。第 414 页上的公式应该解释您需要什么:

Cr= (1-as/ar) * Cb + (as/ar) * [(1-ab) * Cs + ab * B(Cb,Cs)]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

线性光模式的 Alpha 混合层 的相关文章

  • 哪个对缓存最友好?

    我试图很好地掌握面向数据的设计以及如何在考虑缓存的情况下进行最佳编程 基本上有两种情况我无法完全确定哪个更好以及为什么 是拥有一个对象向量更好 还是拥有对象原子数据的多个向量更好 A 对象向量示例 struct A GLsizei mInd
  • 纹理openGl。 C++、qt

    我试图用草纹理覆盖我的地形 由高度图制成 但它没有按预期工作 我什至无法在简单的 GL QUAD 上获取纹理 结果是多色网络 void GLWidget initializeGL glEnable GL TEXTURE 2D 在 QGLwi
  • CPU 到 GPU 法线映射

    我正在创建一个地形网格 然后这个答案 https stackoverflow com a 5284527 1356106我正在尝试将 CPU 计算法线迁移到基于着色器的版本 以便通过降低网格分辨率并使用在片段着色器中计算的法线贴图来提高性能
  • glutPostRedisplay 不在循环内工作

    我试图让一个人在 y 轴上跳跃 所以我使用 2 秒的循环 第一秒它应该向下移动并弯曲膝盖 第二秒它应该向上移动 然后在起始位置完成 现在我刚刚开始让这个人在第一秒内跪下并弯曲膝盖 我还没有编写动画的其余部分 问题是 glutPostRedi
  • QOpenGLFunctions 缺少重要的 OpenGL 函数

    QOpenGLFunctions 似乎缺少重要的函数 例如 glInvalidateFramebuffer 和 glMapBuffer 据我了解 QOpenGLFunctions 加载桌面 OpenGL 函数和 ES 函数的交集 如果是这样
  • 可选择的圆形图像视图,如 Google+

    如何创建一个可选择的循环ImageView就像当前用于个人资料图片的 Google 应用程序一样 这就是我所指的 上图未选中 下图已选中 我尝试一比一复制个人资料图片 到目前为止我的工作 loadedImage is the Bitmap显
  • OpenGL z轴指向哪里?

    我正在尝试了解 OpenGL 坐标系 我到处都看到它被描述为右撇子 但这与我的经验不符 我尝试绘制一些形状和 3 d 对象 我发现 z 轴显然指向 屏幕 而 x 指向右侧 y 指向上方 这是左手坐标系的描述 我缺少什么 编辑 例如 http
  • 阻止 OpenGL.framework 在 Cocoa 应用程序中加载

    我的应用程序链接到这些框架 Cocoa Framework AppKit Framework CoreData Framework Foundation Framework 请注意 OpenGL Framework 是NOT已链接 但是 设
  • 对齐坐标系

    Let s say I have 2 coordinate systems as it is shown in image attached 如何对齐这个坐标系 我知道我需要将第二个坐标系围绕 X 平移 180 度 然后将其平移到第一个坐标
  • Eclipse 标记 OpenGL 函数无法解析

    我尝试在 Eclipse C C 中使用一些 OpenGL 函数 一些 标准 函数如 GlClear 可以被 eclipse 识别 而其他函数如 glBindBuffer 和 glEnableVertexAttribArray 则不能 它们
  • 使用draw()而不是eventloop时的pyglet

    我正在尝试用 pyglet 画一个圆 但当我使用 draw 函数而不是 app run 循环时 它是不可见的 有什么建议我可以做什么吗 谢谢 from math import from pyglet gl import window pyg
  • glBlitFramebuffer 渲染缓冲区和渲染全屏纹理哪个更快?

    哪个更快更高效 使用 OpenGL 纹理作为 CUDA 表面并在四边形上渲染 新样式 使用渲染缓冲区作为 CUDA 表面并使用 glBlitFramebuffer 进行渲染 None
  • NV_path_rendering替代方案[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我刚刚观看了 Siggraph 2012 的一个非常令人印象深刻的演示 http nvidia fullviewmedia com sig
  • 如何在 GTX 560 及更高版本上使用 OpenGL 进行立体 3D?

    我正在使用在 Windows 7 上运行的开源触觉和 3D 图形库 Chai3D 我重写了该库以使用 Nvidia nvision 执行立体 3D 我将 OpenGL 与 GLUT 一起使用 并使用 glutInitDisplayMode
  • PyQt5 的 OpenGL 模块和版本控制问题(调用不正确的 _QOpenGLFunctions_(ver))

    我一直在努力得到PyQt5 helloGL 示例代码 https github com baoboa pyqt5 blob master examples opengl hellogl py编译 当我尝试构建解决方案时 我得到 Traceb
  • 为什么拥有单独的投影矩阵但结合模型和视图矩阵会有好处?

    当您学习 3D 编程时 您会被告知用 3 个变换矩阵来思考是最简单的 模型矩阵 该矩阵对于每个模型都是独立的 它根据需要旋转和缩放对象 最后将其移动到 3D 世界中的最终位置 模型矩阵将模型坐标转换为世界坐标 视图矩阵 对于大量对象 如果不
  • GL_CULL_FACE使所有对象消失

    我正在尝试在 openGL3 3 中创建一些简单的多边形 我有两种类型的对象 具有以下属性 对象 1 10 个顶点 按顺序在下面列出 存储在GL ARRAY BUFFER并使用GL TRIANGLE FAN v x y z w v 0 0
  • GLSL NVidia 方形神器

    当 GLSL 着色器在以下 GPU 上生成不正确的图像时 我遇到了问题 GT 430 GT 770 GTX 570显卡760 但在这些上正常工作 英特尔高清显卡 2500英特尔高清4000英特尔4400显卡740MRadeon HD 631
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • OpenGL缓冲区更新[重复]

    这个问题在这里已经有答案了 目前我正在编写一个模拟水的程序 以下是我所做的步骤 创建水面 平面 创建VAO 创建顶点缓冲区对象 在其中存储法线和顶点 将指针绑定到此 VBO 创建索引缓冲区对象 然后我使用 glDrawElements 渲染

随机推荐

  • 在 Bluehost 上部署 Ruby on Rails

    这里有人知道如何在 Bluehost 上部署 Ruby 应用程序吗 我对此有很大的问题 每次我将文件放入域名指向的文件夹中时 当我尝试访问该网站时 它总是会出现 403 错误 太痛苦了 这指示 https my bluehost com c
  • 在处理发生时动态刷新 JTextArea?

    我正在尝试创建一个非常简单的 Swing UI 当处理在后台进行时 该 UI 通过 JTextArea 将信息记录到屏幕上 当用户单击按钮时 我希望每次调用 textArea append someString n 立即显示在 UI 中 目
  • python 2.x 中的 textinput() 等效项

    我需要在 python 的海龟中接受用户的信息 但是 turtle textinput 函数仅适用于 3 x 及更高版本 我可以在 2 X 版本中使用替代方案吗 这是什么textinput实际上是 import tkSimpleDialog
  • Jetty - 设置系统属性[重复]

    这个问题在这里已经有答案了 我在 Jetty 上运行 webapp 应用程序的配置来自运行 Jetty 的同一服务器上的文件 在应用程序内部 我依靠系统属性来获取文件的路径 以便我可以解析它 例如 final String loc Syst
  • 如何在任何 Web 服务器(Apache 或 Mongrel 或任何其他服务器)中运行简单的 ruby​​ 脚本

    我觉得很有趣的是 当我搜索与 Ruby 相关的内容时 所有与 Ruby on Rails 相关的结果都会弹出 那么没人再使用原始红宝石了吗 然而 我是红宝石新手 今天早上我只是想在网络服务器中运行一个简单的 hello world ruby
  • 仅当 varchar 包含有效日期时,如何将其转换为日期?

    我正在寻找有关 SQL Server Management Studio 的我认为非常有用的信息 我有一个带有 type 列的表varchar存储日期 数字和字符串 这些日期以以下格式存储 dd mm aaaa 我有一个搜索匹配行的查询 一
  • 使用 Bash 脚本构建 SQL 更新语句

    对于最近的项目 我需要循环遍历 3 列的 csv ignore csv 行 acctnum errcode date 按此顺序 列命名在这里并不重要 它只是为了上下文 并使用这些变量来构建 SQL 语句 CSV 可能有 500 行 也可能有
  • android twitter outh教程回调问题

    尝试以下教程 http www androidsdkforum com android sdk development 3 oauth twitter html http www androidsdkforum com android sd
  • 如何将 Windows 窗体窗体的大小调整为小于 132x38? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 当我将无边框表单调整为较小的宽度和高
  • 填充滚动 Flex 容器的 100% 宽度

    我有一个水平滚动元素 overflow x scroll 与包含弹性项目的弹性容器 我正在尝试将背景应用于弹性容器 但正如您在下面的示例中看到的 尝试向左 向右滚动 背景仅应用于视口的可见部分 橙色 有没有什么方法可以将其扩展到全宽 而不必
  • 如何在创建多维数组后立即为其分配多个值 - 在 C 中?

    我正在用 C 进行编程 想知道是否可以一次将多个值分配给多维数组 我尝试过一些技术 但都失败了 我不感兴趣循环遍历数组来分配值 我想要快速的方式为数组中的所有索引分配新值 我正在使用的数组 ary 4 4 来自另一个的 memcpy 将覆盖
  • 有人在 php 5.6 上测试过 Codeigniter 2.2 吗?

    只是想知道 有人在 PHP 5 6 上测试过 CodeIgniter 应用程序吗 我们正在将服务器从 5 3 3 升级到 5 6 当前运行的是 CodeIgniter 2 2 这样可以吗 如果是 如果您发布反馈意见 我将非常感激您遇到了哪些
  • 无法访问 wp-admin

    我意识到这个问题过去曾出现过 但我一直无法找到解决我的问题的方法 我的 wp admin 在我的本地主机上工作正常 但是 当我迁移到实时服务器时 我无法再访问它 如果我确实访问 mysite wp admin 则会收到 404 错误 我尝试
  • cassandra 中 TTL 的最大值

    我们可以分配给 TTL 的最大值是多少 在 cassandra 的 java 驱动程序中 TTL 设置为 int 这是否意味着它仅限于 Integer MAX 2 147 483 647 秒 最大 TTL 实际上是 20 年 从org ap
  • as.Date() 不考虑 POSIXct 时区

    好吧 这里有一个微妙的 怪癖 在 r as Date 函数中从带有时区的 POSIXct 转换而来 我想知道这是否是一个错误 gt as POSIXct 2013 03 29 tz Europe London 1 2013 03 29 GM
  • 两个音频信号之间的时间延迟估计

    我有两个不同麦克风对同一信号进行的两段音频录音 例如 以 WAV 格式 但其中之一的录制有延迟 例如几秒钟 在某种波形查看器中查看这些信号时 很容易通过视觉识别这种延迟 即只需发现每个信号中的第一个可见峰值并确保它们具有相同的形状 sour
  • 如何使用 System.IO.Abstraction 模拟 FileStream?

    我正在尝试使用系统 IO 抽象 https github com System IO Abstractions System IO Abstractions项目与 System IO Abstraction TestingHelpers 一
  • 在带有或不带有 try/catch 的 SQL 中使用 Unique Key 作为验证数据完整性的有效方法

    我有一个包含一些列的表 并且我在其中 3 列上设置了唯一键 以确保表中没有重复项 现在我想知道是否使用 try catch 吞下重复项引发的异常并继续更新插入下一行foreach是个好方法吗 try sqlWrite ExecuteNonQ
  • 如果已经运行android,如何防止服务再次运行

    单击按钮后我想使用方法启动服务startService new Intent currentActivity this MyService class 但如果服务正在运行 我不想调用此方法来避免运行已经在运行的服务 这是怎么可能的 我正在使
  • 线性光模式的 Alpha 混合层

    我正在重新创建一些 Photoshop 混合 并尝试使用线性光模式 在 Photoshop 中 您将有一个不透明度为 100 的背景图层 然后是一个不透明度为 50 的顶层 其混合模式设置为 线性光 我确实找到了有关如何进行线性光混合的信息