1. 加

这里要讲讲三原色和三基色:三原色一般指的是红、绿、蓝三种,简称 RGB,这是加色系。就是光源只含有特定的波段,本身就是色光,将不同颜色的光加在一起形成新的颜色。典型的例子是显示屏,关系如下:

显然,shader 中颜色的加法运算符合加色系规律。当我们把颜色相加时,会形成新的颜色,并且颜色会往白色靠拢。颜色的混合规律符合三原色规律。

2.乘

讲完三原色,再讲讲三基色:一般指的是颜料三原色,在纯白光照射下颜色为绛红、黄、青,简称 CMYK,属于减色系它们本身不发光,靠反光被看见。由于材料吸收特定波段的光,所以只有不被吸收的部分反射了回来。加上的颜色越多吸收的光也越多。

当我们使用乘法来做颜色混合时,其规律符合三基色的混合规律,这个时候为是减色系。两个颜色相乘,会算出两个颜色中 RGB 值的乘积并合成一个新的颜色。而且颜色总会越来越暗,回不到原来的白色。通常将颜色和一个值相乘,来弱化这个颜色。

3. 减

单纯的颜色相减似乎没有意义,不过通过1.0-color可以实现颜色的反相。

混合

混合模式:

  • 正常(Normal):编辑或绘制每个像素,使其成为结果色。这是默认模式。(在处理位图图像或索引颜色图像时,“正常”模式也称为阈值。)
  • 溶解(Dissolve):编辑或绘制每个像素,使其成为结果色。但是,根据任何像素位置的不透明度,结果色由基色或混合色的像素随机替换。

  • 变暗(Darken):查看每个通道中的颜色信息,并选择基色或混合色中较暗的颜色作为结果色。将替换比混合色亮的像素,而比混合色暗的像素保持不变。
  • 正片叠底(Multiply):查看每个通道中的颜色信息,并将基色与混合色进行正片叠底。结果色总是较暗的颜色。任何颜色与黑色正片叠底产生黑色。任何颜色与白色正片叠底保持不变。当您用黑色或白色以外的颜色绘画时,绘画工具绘制的连续描边产生逐渐变暗的颜色。这与使用多个标记笔在图像上绘图的效果相似。
  • 颜色加深(Color Burn):查看每个通道中的颜色信息,并通过增加二者之间的对比度使基色变暗以反映出混合色。与白色混合后不产生变化。
  • 线性加深(Linear Burn):查看每个通道中的颜色信息,并通过减小亮度使基色变暗以反映混合色。与白色混合后不产生变化。
  • 深色(Darker Color):比较混合色和基色的所有通道值的总和并显示值较小的颜色。“深色”不会生成第三种颜色(可以通过“变暗”混合获得),因为它将从基色和混合色中选取最小的通道值来创建结果色。

  • 变亮(Lighten):查看每个通道中的颜色信息,并选择基色或混合色中较亮的颜色作为结果色。比混合色暗的像素被替换,比混合色亮的像素保持不变。
  • 滤色(Screen):查看每个通道的颜色信息,并将混合色的互补色与基色进行正片叠底。结果色总是较亮的颜色。用黑色过滤时颜色保持不变。用白色过滤将产生白色。此效果类似于多个摄影幻灯片在彼此之上投影。
  • 颜色减淡(Color Dodge):查看每个通道中的颜色信息,并通过减小二者之间的对比度使基色变亮以反映出混合色。与黑色混合则不发生变化。
  • 线性减淡/添加(Linear Dodge):查看每个通道中的颜色信息,并通过增加亮度使基色变亮以反映混合色。与黑色混合则不发生变化。
  • 浅色(Lighter Color):比较混合色和基色的所有通道值的总和并显示值较大的颜色。“浅色”不会生成第三种颜色(可以通过“变亮”混合获得),因为它将从基色和混合色中选取最大的通道值来创建结果色。

  • 叠加(Overlay):对颜色进行正片叠底或过滤,具体取决于基色。图案或颜色在现有像素上叠加,同时保留基色的明暗对比。不替换基色,但基色与混合色相混以反映原色的亮度或暗度。
  • 柔光(Soft Light):使颜色变暗或变亮,具体取决于混合色。此效果与发散的聚光灯照在图像上相似。如果混合色(光源)比 50% 灰色亮,则图像变亮,就像被减淡了一样。如果混合色(光源)比 50% 灰色暗,则图像变暗,就像被加深了一样。使用纯黑色或纯白色上色,可以产生明显变暗或变亮的区域,但不能生成纯黑色或纯白色。
  • 强光(Hard Light):对颜色进行正片叠底或过滤,具体取决于混合色。此效果与耀眼的聚光灯照在图像上相似。如果混合色(光源)比 50% 灰色亮,则图像变亮,就像过滤后的效果。这对于向图像添加高光非常有用。如果混合色(光源)比 50% 灰色暗,则图像变暗,就像正片叠底后的效果。这对于向图像添加阴影非常有用。用纯黑色或纯白色上色会产生纯黑色或纯白色。
  • 亮光(Vivid Light):通过增加或减小对比度来加深或减淡颜色,具体取决于混合色。如果混合色(光源)比 50% 灰色亮,则通过减小对比度使图像变亮。如果混合色比 50% 灰色暗,则通过增加对比度使图像变暗。
  • 线性光(Linear Light):通过减小或增加亮度来加深或减淡颜色,具体取决于混合色。如果混合色(光源)比 50% 灰色亮,则通过增加亮度使图像变亮。如果混合色比 50% 灰色暗,则通过减小亮度使图像变暗。
  • 点光(Pin Light):根据混合色替换颜色。如果混合色(光源)比 50% 灰色亮,则替换比混合色暗的像素,而不改变比混合色亮的像素。如果混合色比 50% 灰色暗,则替换比混合色亮的像素,而比混合色暗的像素保持不变。这对于向图像添加特殊效果非常有用。
  • 实色混合(Hard Mix):将混合颜色的红色、绿色和蓝色通道值添加到基色的 RGB 值。如果通道的结果总和大于或等于 255,则值为 255;如果小于 255,则值为 0。因此,所有混合像素的红色、绿色和蓝色通道值要么是 0,要么是 255。此模式会将所有像素更改为主要的加色(红色、绿色或蓝色)、白色或黑色。

  • 差值(Difference):查看每个通道中的颜色信息,并从基色中减去混合色,或从混合色中减去基色,具体取决于哪一个颜色的亮度值更大。与白色混合将反转基色值;与黑色混合则不产生变化。
  • 排除(Exclusion):创建一种与“差值”模式相似但对比度更低的效果。与白色混合将反转基色值。与黑色混合则不发生变化。
  • 减去(Subtract):查看每个通道中的颜色信息,并从基色中减去混合色。在 8 位和 16 位图像中,任何生成的负片值都会剪切为零。
  • 划分(Divide):查看每个通道中的颜色信息,并从基色中划分混合色。

  • 色相(Hue):用基色的明亮度和饱和度以及混合色的色相创建结果色。
  • 饱和度(Saturation):用基色的明亮度和色相以及混合色的饱和度创建结果色。在无 (0) 饱和度(灰度)区域上用此模式绘画不会产生任何变化。
  • 颜色(Color):用基色的明亮度以及混合色的色相和饱和度创建结果色。这样可以保留图像中的灰阶,并且对于给单色图像上色和给彩色图像着色都会非常有用。
  • 明度(Luminosity):用基色的色相和饱和度以及混合色的明亮度创建结果色。此模式创建与“颜色”模式相反的效果。

shader-颜色的计算相关推荐

  1. OpenGL Compute Shader Particle System计算着色器粒子系统的实例

    OpenGL Compute Shader Particle System计算着色器粒子系统 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include &l ...

  2. OpenGL Compute Shader Image Processing计算着色器图像处理的实例

    OpenGL Compute Shader Image Processing计算着色器图像处理 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include & ...

  3. 简单易懂的颜色透明度计算

    颜色和不透明度 (alpha) 值以十六进制表示法表示. 任何一种颜色的值范围都是 0 到 255(00 到 ff). 对于 alpha,00 表示完全透明,ff 表示完全不透明. 表达式顺序是&qu ...

  4. 计算机中的颜色——快速计算颜色的色相值

    在之前的文章中,给定一个颜色,它的色相值计算如下: 由公式可知,计算色相时要分为六种情况,计算略显复杂.有没有简单的计算方法呢?来看看下面这个图 上面这个图,表示纯色的色相分布,把纯色分为六个部分.仔 ...

  5. Cocos Shader 颜色渐变效果

    美术设计了个渐变的文字,发现cocos creater里没有这个效果,所以用shader实现 效果: 代码如下 CCEffect %{techniques:- passes:- vert: vsfra ...

  6. js react根据几个颜色点计算区间任意数值对应颜色

    一般用于生成地图上点颜色的. 示例: const cm=new ColorRangeMaker({color:[[80,163,186],[234,199,54],[217,78,93]],value ...

  7. GPU处理图像 Shader的入门

    from:http://www.jianshu.com/p/8687a040eb48 字数2901 阅读316 评论0 喜欢3 Shader着色器 Shader出现在OpenGL ES 2.0中,允许 ...

  8. Unity Shader入门精要学习笔记 - 第6章 开始 Unity 中的基础光照

    转自冯乐乐的<Unity Shader入门精要> 通常来讲,我们要模拟真实的光照环境来生成一张图像,需要考虑3种物理现象. 首先,光线从光源中被发射出来. 然后,光线和场景中的一些物体相交 ...

  9. OSG与opengl的shader结合

    1.OpenGL(3.3)可编程管线 可编程管线可以理解为一系列的三维顶点经过加工变成二维离散的像素点.并且允许在特定的着色阶段自有配置(顶点着色,几何着色,片源着色). 这里主要介绍一下几何着色,几 ...

  10. Unity Shader: 优化GPU代码--用step()代替if else等条件语句。

    普通的卡通着色Shader: 先看一个Shader,卡通着色.由于卡通着色需要对不同渲染区域进行判定,比较适合做案例. Shader "Unlit/NewToonShading" ...

最新文章

  1. docker安装kafka消息队列
  2. Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a cl
  3. 教你快速写出多线程Junit单元测试用例 - GroboUtils
  4. 收敛标准对卷积核数量最优值的影响
  5. 声明对象_静态变量(使用同一个类声明的对象可以共享一个值)
  6. web前端开发---弃Hbuilder编辑器到Atom插件推荐,快捷键,快速编辑html 使用
  7. 从竞品数据搜集切入,NiucoData要做商业情报追踪分析工具
  8. inspect python模块_Python inspect模块:仅限关键字参数
  9. 制炭机行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  10. 利用百度地图API,在浏览器中找到自己的位置
  11. python 区块链_Python 模拟简单区块链
  12. iis7网站可用php吗,在IIS7下面添加对PHP网页的支持
  13. 程序员为了讨好大舅子,竟自学自动化编程
  14. PS初学者(非设计专业人士)的碎碎念
  15. htc magic 刷机
  16. 固态硬盘是什么接口_今天说事儿—固态硬盘接口,防你入坑
  17. 台式计算机硬盘主要有哪两种接口,台式机硬盘和笔记本硬盘都有哪些区别?
  18. 室内监控与室外监控有什么区别 如何选择合适的监控摄像机
  19. 计算机的英文原词“computer”
  20. 高职计算机应用专业的课程有哪些,高职计算机应用专业课程优化与整合

热门文章

  1. linux系统能个好用,linux有哪些版本?linux哪个版本比较好用?优缺点有些什么(图文)...
  2. php 自动加载 知乎,wordpress复制文章自动添加版权和原文链接 仿知乎版权功能
  3. 汇编语言:定时器实现数码管0-99
  4. java 文件checksum_计算文件Checksum的几种方法
  5. 育儿:自制身高仪和照片墙
  6. 集电极开路输出OC门(讲的最明白的一篇文章)
  7. 库卡机器人Officelite运行EthernetKRL进行通讯
  8. 安徽高考 文科可以报计算机专业吗,2019安徽高考多少分能上安医大? 文科前14000名理科前37000名可报...
  9. web常见页面错误盘点
  10. 调研发现,近30年来中国ICT产业发展关键是产业良好的营商环境