文章目录

  • 前言
  • 一、混合模式
    • 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. ATS 5.3.0中自定义日志格式文件logs_xml.config解读
  2. pandas.describe()参数含义
  3. 代码详解|如何快速从硬盘里找到小电影?
  4. sphinx是支持结果聚类的
  5. sort uniq命令
  6. oracle一行拆多行函数,Oracle 实现多行转换成一行 使用oracle 10g collect函数
  7. php与c有什么区别,.c与.cpp文件的一点区别
  8. 《PowerShell 3.0 Advanced Admin handbook》已于今日上市
  9. Loj#2769-「ROI 2017 Day 1」前往大都会【最短路树,斜率优化】
  10. idea历史版本下载
  11. LwIP之动态内存堆
  12. 精简linux (二)背景图片的设置 网络功能的实现
  13. 使用 github + jekyll 搭建个人博客
  14. go mod机制详解
  15. 上帝叫我牵一只蜗牛去散步
  16. 网上发现的一个 《Flashflex大全》
  17. Redis工具类封装RedisUtils
  18. 开脑洞:数字文明的等级
  19. 12.嵌入式控制器EC实战 SMBus概述
  20. 检查DNT.config中Dbtype节点数据库类型是否正确,例如:SqlServer、Access、MySql

热门文章

  1. 烟草仓库监控有多重要?给你支一招
  2. 战神笔记本电脑自带access吗_科技犬盘点:多款新品笔记本、台式机发布 选AMD还是英特尔?...
  3. netty既做服务端又做客户端_背景墙别搞那么复杂!这样做既好看,性价比又高...
  4. 华为66W充电器插头有火花怎么回事?这样做可以避免!
  5. javscript之原生ajax请求的封装
  6. java 抛出异常继续执行_java – 如何在抛出异常后继续执行程序?
  7. [源码]Android安卓应用手势锁图案解锁的实现
  8. metisMenu导航插件
  9. 用户可以改变计算机功能键吗,键盘上的功能键可以由程序设计者来改变吗,计算机一级题...
  10. 爬虫项目三:这才是B站爬虫的正确姿势,视频、评论、弹幕全部拿下