文章目录

  • 前言
  • 一、混合模式
    • 1.说明
    • 2.常用公式
  • 二、问题
  • 总结
  • 参考

前言

本文介绍unity渲染中的透明度混合,和透明度混合相关问题。

一、混合公式

1.说明

unity上,Blend Src Dst, 其中Src是指当前片元着色器输出的颜色,Dst是指缓存区中的颜色,src 可以简单理解为当前输出的颜色,dst表示上一次渲染的颜色(背景颜色)。

混合方程:

C¯result=C¯source∗Fsource+C¯destination∗Fdestination

C¯source:源颜色向量。这是来自纹理的本来的颜色向量。
C¯destination:目标颜色向量。这是储存在颜色缓冲中当前位置的颜色向量。
Fsource:源因子。设置了对源颜色的alpha值影响。
Fdestination:目标因子。设置了对目标颜色的alpha影响。

公式解析:

假设混合方式为:Blend SrcAlpha OneMinusSrcAlpha
1)假设贴图有一个不透明红色点, Color(1,0,0,1),该点背景色为不透明蓝色 Color(0,0,1,1)。最终颜色 = (1,0,0)* 1 +(0,0,1)(1 - 1) = (1,0,0)

2)假设贴图有一个半透明红色点, Color(1,0,0,0.8),该点背景色为不透明蓝色 Color(0,0,1,1)最终颜色 = (1,0,0) 0.8 +(0,0,1)(1 - 0.8) = (0.8,0,0.2)而假如0.8变为0.2时,最终颜色 = (1,0,0) 0.2+(0,0,1)*(1 - 0.2) = (0.2,0,0.8)

OpenGL混合参考链接​learnopengl-cn.readthedocs.io

1.常用公式

类似PS上的效果:
Blend SrcAlpha OneMinusSrcAlpha 正常
Blend OneMinusDstAlpha One 柔和相加(Soft Addtive)
Blend DstColor Zero 正片叠底(Multiply),即相乘
Blend DstColor SrcColor 两倍相乘(2x Multiply)

BlendOp Min
Blend One One 变暗(Darken)

BlendOp Max
Blend One One 变亮(Lighten)

Blend OneMinusDstColor One 滤色(Screen)
Blend One One 线性减淡(Linear Dodge)

二、问题

解决Unity在线性空间下,UI对于带Alpha半透明的贴图,在混合颜色时就会出现错误。(备注:Unity线性空间下的sRGB选项不会对Alpha进行处理)。

混合公式:
Gamma空间下的Alpha混合公式:color = (A.rgb * A.a) + (B.rgb * (1 - A.a))
Linear空间下的Alpha混合公式:color = ((A.rgb ^ 2.2 * A.a) + (B.rgb ^ 2.2 * (1 - A.a))) ^(1 / 2.2)

解决步骤:
1)所有UI素材取消勾选sRGB选项,得到的混合公式为:color = ((A.rgb * A.a) + (B.rgb * (1 - A.a))) ^(1 / 2.2) ;
2)然后在输出的颜色上做一次pow(2.2),可以用后处理实现,Universal Render Pipeline管道中可以在BlitPass中做处理。

总结

透明度混合可以实现很多复杂的效果,选择不同的混合模式,可以解决很多渲染上显示问题,比如RT在UI上的显示问题,RT上的特效和UI结合显示的问题等。

参考

混合 - LearnOpenGL-CN​learnopengl-cn.readthedocs.io

【UnityShader】Blend混合模式 与 20余种颜色混合模式代码实现(多图预警)​www.bilibili.com

unity物体设置透明度_透明度混合(Alpha blending)相关推荐

  1. unity物体设置透明度_URP自学笔记5. 透明度混合与透明度测试

    1.概述 本节中我们回顾一下两种透明方法,透明度混合与透明度测试.透明度混合用于实现半透明,透明度测试则用于实现消融效果之类"消失"效果. 2.透明度混合 透明度混合是一种混合方式 ...

  2. php设置背景为透明,css如何设置背景颜色透明?css设置背景颜色透明度的两种方法介绍...

    在网页布局中有时为了网页的整体美观,可能需要将网页中的某些部分设置为背景颜色透明,那么如何设置背景颜色透明呢?本篇文章就来给大家介绍一下css设置背景颜色透明的方法. 在css中设置背景颜色透明的方法 ...

  3. css 透明度_如何在网页控制透明度

    文字描边 透明度在网页是一个很重要的属性,非常多的特效都需要控制透明度来完成. 01 语法 通过修改元素透明度 opacity:数值; opacity属性取值范围为0.0~1.0,0.0表示完全透明, ...

  4. HTML+CSS---定位(相对定位--绝对定位--固定定位--设置元素的层叠顺序)---表单---设置光标样式---透明度(opacity属性定义元素的不透明度--IE的半透明滤镜)---外边线

    文章目录 定位 静态定位(static) 相对定位(relative) 绝对定位(absolute) 固定定位(fixed) 设置元素的层叠顺序 表单 设置光标样式 透明度 opacity属性定义元素 ...

  5. css如何设置背景颜色透明?css设置背景颜色透明度的两种方法介绍

    在网页布局中有时为了网页的整体美观,可能需要将网页中的某些部分设置为背景颜色透明,那么如何设置背景颜色透明呢?本篇文章就来给大家介绍一下css设置背景颜色透明的方法. 在css中设置背景颜色透明的方法 ...

  6. CSS设置元素的透明度(不透明度)

    CSS3 opacity 属性 作用: 设置元素的透明度 语法: 1. object.style.opacity=0.52. opacity: value|inherit; 参数: value: 指定 ...

  7. html如何设置文本框透明度,div设置透明度

    #a{ background:#FFCC33; filter:alpha(opacity:0); width: 300px; heig#a{background:#FFCC33; filter:alp ...

  8. 【无标题】Unity随手记——给Scene窗口内的物体设置SelectIcon

    由于开发项目,某个Scene场景内会有很多的静态物体.我们在Hierarchy窗口中选中后,虽然有三维坐标显示在物体上,但是也很难分辨. 于是unity提供了给编辑物体设置icon. 这些icon大家 ...

  9. 浅谈设置父元素透明度不影响子元素透明度

    浅谈设置父元素透明度不影响子元素透明度 筱葭 2017-03-15 10:50:00  11970  收藏 2 展开 设置父元素opacity:0.5,子元素不设置opacity,子元素会受到父元素o ...

最新文章

  1. python使用sklearn中的make_classification函数生成分类模型(classification)需要的仿真数据、使用pandas查看生成数据的特征数据、目标数据
  2. 洛谷P4206 聪聪与可可
  3. python复制文件夹到另一个目录_【python】复制文件到另一个相同目录的文件夹中...
  4. MYSQL数据库学习十七 日志管理
  5. sql server 2008安装_性能不够?基于时序数据库的Zabbix 5.2安装指南
  6. http协议报文体_HTTP协议扫盲(七)请求报文之 GET、POST-FORM 和 POST-FILE
  7. 图谱实战 | 医学知识图谱的价值与应用场景
  8. 根据url提取网站域名的方法小结
  9. 英雄互娱:中止代理的《NBA LIVE》在中国大陆地区所有推广活动
  10. JQuery插件,轻量级表单模型验证
  11. python如何保存计算数据_python – 在scikit-learn中保存新数据的特征向量
  12. java找不到符号或方法,java 找不到符号解决方法
  13. 如何通过给MM修电脑培养感情
  14. Kalman Fuzzy Actor-Critic Learning Automaton Algorithm for the Pursuit-Evasion Differential Game
  15. Python中的while循环
  16. CTF 你就是长不了
  17. 使用Seam-gen生成基础项目骨架
  18. 在线预览文档 Office Online
  19. 保存相片是什么图像格式?
  20. vue动态面包屑导航

热门文章

  1. Android 文字特效 动画 艺术字 框架 一定有你想要的效果
  2. 雪碧图的概念及优缺点,以及行盒的简述
  3. PHP echo可写入内容详解
  4. 《java学习之路》第一章:初识java第二节:helloworld
  5. 听韩顺平聊PHP初学者如何变身大牛
  6. mysql查询某个数据库中所有的表名 列名 字段长度
  7. CentOS7安装gradle
  8. ASP连EXECL及导入导出ACCESS操作SQL
  9. 华为云-身份证识别-OCR
  10. CardView 简介和使用