本文使用shader语法

已知颜色A与颜色B,颜色B覆盖在颜色A上,最终输出的结果为颜色C。
A为缓存色,B为当前色,C为输出色

【正常透明度混合】-

描述:正常透明度混合
公式:当前颜色 x 当前透明度 +(1 - 当前透明度)x 缓存颜色
shader:fixed4 C = B x B.a + A x (1 - B.a);

【正片叠底】-

描述:颜色叠加,使像素重合部分的颜色更暗。像素覆盖顺序随意调换不会改变结果
公式:当前颜色 x 缓存颜色
shader:fixed4 C = A * B;

【滤色】-

描述:与正片叠底相反,重合部分的像素更亮
公式:1 - (1-当前颜色)x (1-缓存颜色)
shader代码:fixed4 C = 1 - (1 - A) * (1 - B);

【叠加】 - -

描述:结合滤色与正片叠底,基色的像素重合部分比较亮的会更亮,比较暗的会跟暗
公式:如果当前颜色 <= 0.5 返回1,否则返回 0 该值记做 w;
w x 缓存色 x 当前色 x 2 + (1 - w) x (1 - (1 - 缓存色) x (1 - 当前色) x 2)
shader代码:
if(A > 0.5){
fixed4 C = 1 - 2 * (1 - A) * (1 - B);
}else{
fixed4 C = 2AB;
}

【反色】

描述:取得与缓存色相反的颜色
公式:1 - 缓存颜色
shader代码:fixed4 C = 1 - A;

【变暗】-

描述:缓存颜色 x 缓存颜色与当前颜色中最小的那个
公式:缓存颜色 x min(缓存颜色,当前颜色)
shader代码:fixed4 C =A * min(A,B) ;

【变亮】-

描述:缓存颜色 x 缓存颜色与当前颜色中最大的那个
公式:缓存颜色 x max(缓存颜色,当前颜色)
shader代码:
fixed4 C =A * max(A, B) ;

【减色】

描述:缓存颜色减掉当前颜色的值
公式:缓存颜色 - 当前颜色
shader代码:fixed4 C = A - B;

【划分】

描述:缓存颜色除当前颜色的值
公式:缓存颜色 / 当前颜色
shader代码: fixed4 C = A / B ;

【颜色加深】

描述:
公式:缓存颜色 - ((1 - 缓存颜色) x (1 - 当前颜色)) / 缓存颜色
shader代码:fixed4 C = A - ((1-A) * (1-B)) / B;

【颜色减淡】

描述:
公式:缓存颜色 + ((缓存颜色 x 当前颜色) / (1 - 当前颜色))
shader代码:fixed4 C = A + (A * B) / (1 - B);

【线性加深】

描述:
公式:当前颜色 + 缓存颜色 - 1
shader代码:fixed4 C = B + A -1;

【线性减淡】

描述:
公式:缓存颜色 + 当前颜色
shader代码:fixed4 C = A + B;

【强光】

描述:
公式:如果当前色 <= 0.5 返回1,否则返回0,记作w;
w x 缓存色 x 当前色 x 2 + (1 - w) x (1 - (1 - 缓存色) x (1 - 当前色) x 2);
shader代码:
fixed4 ifFlag= step(B, fixed4(0.5, 0.5, 0.5, 0.5));
fixed4 C = ifFlag * A * B * 2 + (1 - ifFlag) * (1 - (1 - A) * (1 - B) * 2);

【柔光】

描述:
公式:如果当前色 <= 0.5 返回1,否则返回0,记作w;
w x 缓存色 x 当前色 x 2 + (1 - w) x (1 - (1 - 缓存色) x (1 - 当前色) x 2);
shader代码:
fixed4 ifFlag = step(B, fixed4(0.5, 0.5, 0.5, 0.5));
fixed4 C = ifFlag * (A * B * 2 + A * A * (1 - B * 2)) + (1 - ifFlag) * (A * (1 - B) * 2 + sqrt(A) * (2 * B - 1));

【亮光】

描述:
公式:如果当前色 <= 0.5 返回1,否则返回0,记作w;
w x (缓存色 - (1 - 缓存色) x (1 - 2 x 当前色) / (2 x 当前色)) + (1 - w) x (缓存色 + 缓存色 x (2 x 当前色 - 1) / (2 x (1 - 当前色)));
shader代码:
fixed4 ifFlag = step(B, fixed4(0.5, 0.5, 0.5, 0.5));
fixed4 C = ifFlag * (A - (1 - A) * (1 - 2 * B) / (2 * B)) + (1 - ifFlag) * (A + A * (2 * B - 1) / (2 * (1 - B)));

【点光】

描述:
公式:如果当前色 <= 0.5 返回1,否则返回0,记作w;
w x (min(缓存色, 2 x 当前色)) + (1 - w) x (max(缓存色, ( 当前色 x 2 - 1)));
shader代码:
fixed4 ifFlag = step(B, fixed4(0.5, 0.5, 0.5, 0.5));
fixed4 C = ifFlag * (min(A, 2 * B)) + (1 - ifFlag) * (max(A, ( B * 2 - 1)));

【线性光】

描述:
公式:缓存色,+ 2 x 当前色 - 1;
shader代码: fixed4 C=A+2*B-1;

【实色混合】

描述:
公式:如果当前色 + 缓存色 <= 1 返回1,否则返回0,记作w;
w x (0) + (1 - w) x (1);
shader代码:
fixed4 ifFlag = step(A + B, fixed4(1, 1, 1, 1));
fixed4 C = ifFlag * (fixed4(0, 0, 0, 0)) + (1 - ifFlag) * (fixed4(1, 1, 1, 1));

【深色】

描述:
公式:如果当前色的rgb分量 + 缓存色 <= 1 返回1,否则返回0,记作w;
w x (0) + (1 - w) x (1);
shader代码:
fixed4 ifFlag = step(B.r + B.g + B.b, A.r + A.g + A.b);
fixed4 C = ifFlag * (B) + (1-ifFlag)*(A);

颜色制式

RGBA :红、绿、蓝、透明度
HSL: hue(色相)、saturation(饱和度)、lightness(亮度)
HSV: hue(色相)、saturation(饱和度)、value(色调)
HSB: hue(色相)、saturation(饱和度)、brightness(明度)

颜色转换

参考文章 https://www.bilibili.com/read/cv1874791/ 该文章有预览图挺不错的

计算机图形学 Unity ShaderLab 颜色混合运算相关计算方法相关推荐

  1. 基于python win32setpixel api 实现计算机图形学相关操作

    最近读研期间上了计算机可视化的课,老师也对计算机图形学的实现布置了相关的作业.虽然我没有系统地学过图形可视化的课,但是我之前逆向过一些游戏引擎,除了保护驱动之外, 因为要做透视 ,接触过一些计算机图形 ...

  2. 学界 | 清华AMiner团队发布53页计算机图形学研究报告

    来源:AI科技评论 摘要:清华 AMiner 团队近日发布新一期研究报告--<计算机图形学研究报告>,报告全文共 53 页,从概念.技术.人才.会议.应用及相应趋势详细介绍了计算机图形学的 ...

  3. [转知乎] 2018计算机图形学研究报告

    原文地址:https://zhuanlan.zhihu.com/p/42717450 报告内容速览 概述篇:计算机图形学概念 / 发展历史 / 中国计算机图形学发展/ 著名公司 技术篇:计算机图形学总 ...

  4. 2018计算机图形学研究报告(附PDF下载)

    来源:AMiner 本文约6000字,建议阅读10分钟. 报告包括概述篇.技术篇.人才篇.会议篇.应用篇.趋势篇,本文截取概述篇部分内容. PPT版本报告: https://static.aminer ...

  5. 计算机图形学基础及应用大纲,《计算机图形学》教学大纲

    <计算机图形学>教学大纲 课程编号:1504P1113课程类型:专业选修 课程名称:计算机图形学 英文名称:Computer Graphics 学 分:2.5适用专业:信息与计算科学 一. ...

  6. 计算机图形学的应用虚拟现实相关,虚拟现实技术中计算机图形学的应用——三维计算机图形.doc...

    虚拟现实技术中计算机图形学的应用--三维计算机图形 虚拟现实技术中计算机图形学的应用 --三维计算机图形 近年来虚拟头盔的发展越来越快.目前,这个虚拟头盔仅在瑞士圣约翰公园能够让体验者进入虚拟3D世界 ...

  7. 计算机图形学的应用虚拟现实相关,虚拟现实技术中计算机图形学的应用——三维计算机图形...

    虚拟现实技术中计算机图形学的应用--三维计算机图形 虚拟现实技术中计算机图形学的应用 --三维计算机图形 近年来虚拟头盔的发展越来越快.目前,这个虚拟头盔仅在瑞士圣约翰公园能够让体验者进入虚拟3D世界 ...

  8. Unity图形学之ShaderLab入门基础

    文章来源: 学习通http://www.bdgxy.com/ 普学网http://www.boxinghulanban.cn/ 智学网http://www.jaxp.net/ 表格制作excel教程h ...

  9. 8、计算机图形学——纹理的相关问题及解决办法

    一.纹理映射的相关问题 1.1.小纹理大像素 大纹理小像素简单说就是纹理很小,但是被平铺在了一块像素超过纹理贴图大小的区域上,这样就会导致一个纹理像素要对应多个屏幕像素,导致纹理失真走样 如下图所示 ...

最新文章

  1. spring cloud (一):大话 Spring Cloud
  2. Android Studio 插件开发详解四:填坑
  3. (转)jQuery 基础
  4. 学习响应式BootStrap来写融职教育网站,Bootsrtap第三天nav布局
  5. C语言试题七十六之请编写函实现百钱买百鸡
  6. 老鸟对菜鸟的一些建议
  7. java2017下载_Download Java for OS X 2017-001
  8. 常用网页设计html特殊符号转义字符编码查询对照表
  9. [练习]QQ登陆界面-测试用例的编写
  10. OnlyOffice在线部署
  11. css linux 等宽字体,css 等宽字体有哪些
  12. 无界鼠标 (Mouse without Borders) 一套键鼠控制多台电脑的工具(可跨电脑拷贝/拖放文件)
  13. 关于socket阻塞与非阻塞情况下的recv、seng、read、write返回值问题
  14. 为图片添加LOMO效果
  15. 误发邮件怎么办?发错邮件如何撤回?/
  16. 猿辅导教研团队重磅推出人文博雅系列课程 2023年必读书单公布
  17. Java基础-OOP 面向对象编程
  18. java vbs_一键定位配置JAVA SDK 环境变量 VBS脚本全自动操作正式开源
  19. Java 8: 元空间(Metaspace)
  20. 什么蓝牙耳机好看?2022高颜值蓝牙耳机排行榜

热门文章

  1. 1.STM32F4工程新建学习
  2. 高速电路设计基本概念之——IBIS和SPICE模型
  3. 腾讯PGC最大规模调整涉及5个VP:“王者荣耀之父”主管 QQ
  4. AIoT时代存储如何升级?长江存储发布高速闪存芯片UFS 3.1
  5. homeassistant mysql_二、(可选)安装MariaDB替换homeassistant数据库
  6. 一个简单的扑克牌小程序
  7. .Net下的分库分表帮助类——用分库的思想来分表 - 秋夜 - 博客园
  8. Jetson Nano通过笔记本实现网络连接
  9. 洛谷 P2832 行路难
  10. Vue3.0源码解读 - 响应式系统