Unity中Shader的混合模式Blend

文章目录

  • 前言
  • 一、混合的作用就是实现各种半透明效果
  • 二、混合操作
  • 三、在 Shader 中暴露两个属性 来调节 混合的效果


前言

Unity中Shader的混合模式Blend


一、混合的作用就是实现各种半透明效果

这里用PS里的混合作为例子

没选择混合效果前,显示的效果是这样
在这里插入图片描述

选择了混合效果后,显示的效果就是这样
在这里插入图片描述

二、混合操作

请添加图片描述

之前代码中写的 Blend one one

第一个 one 代表源颜色
第二个 one 代表目标颜色
BlendOP默认是 + (Add)

混合因子
One:源或目标的完整值
Zero:0
SrcColor:源的颜色值
SrcAlpha:源的Alpha值
DstColor:目标的颜色值
DstAlpha:目标的Alpha值
OneMinusSrcColor:1-源颜色得到的值
OneMinusSrcAlpha:1-源Alpha得到的值
OneMinusDstColor:1-目标颜色得到的值
OneMinusDstAlpha:1-目标Alpha得到的值

常用的几种混合类型
Blend SrcAlpha OneMinusSrcAlpha// Traditional transparency
Blend One OneMinusSrcAlpha// Premultiplied transparency
Blend One One
Blend OneMinusDstColor One // Soft Additive
Blend DstColor Zero // Multiplicative
Blend DstColor SrcColor // 2x Multiplicative

常用的混合操作符有:
Add:源+目标
Sub:源-目标
RevSub:目标-源
Min:源与目标中最小值
Max:源与目标中最大值

随便拿一个混合模式测试一下
Blend SrcAlpha OneMinusSrcAlpha

在这里插入图片描述

三、在 Shader 中暴露两个属性 来调节 混合的效果

暴露的两个属性分别代表:源混合模式 和 目标混合模式
//源混合类型
[Enum(UnityEngine.Rendering.BlendMode)]
_SrcBlend(“Src Blend”,int) = 0
//目标混合类型
[Enum(UnityEngine.Rendering.BlendMode)]
_DstBlend(“DstBlend”,int) = 0

测试代码

Shader "MyShader/P0_9_3"
{
    Properties
    
    {
        //暴露两个属性,分别对应 源混合类型 和 目标混合类型

        //源混合类型
        [Enum(UnityEngine.Rendering.BlendMode)]
        _SrcBlend("Src Blend",int) = 0
        //目标混合类型
        [Enum(UnityEngine.Rendering.BlendMode)]
        _DstBlend("DstBlend",int) = 0

        _MainTex ("Texture", 2D) = "white" {}
    }
    SubShader
    {
        Tags{"Queue" = "Transparent"}

        //混合
        Blend [_SrcBlend][_DstBlend]
        
        

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"
            
            sampler2D _MainTex;
            float4 _MainTex_ST;
            int _SrcBlend;
            int _DstBlend;
            
            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                UNITY_FOG_COORDS(1)
                float4 vertex : SV_POSITION;
            };

           

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);

                return o;
            }

            fixed4 frag (v2f i) : SV_Target
            {
                
                fixed4 col = tex2D(_MainTex, i.uv);
                
                return col;
            }
            ENDCG
        }
    }
}

效果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/101479.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2 | Window 搭建单机 Hadoop 和Spark

搭建单机 Hadoop 和 Spark 环境可以学习和测试大数据处理的基础知识。在 Windows 操作系统上搭建这两个工具需要一些配置和设置,下面是一个详细的教程: 注意: 在开始之前,请确保你已经安装了 Java 开发工具包(JDK),并且已经下载了 Hadoop 和 Spark 的最新版本。你可以从…

GitLab启动失败:fail: alertmanager: runsv not running

问题描述 sudo gitlab-ctl restart ,报错如下 : summergaoubuntu:/etc/gitlab$ sudo gitlab-ctl start fail: alertmanager: runsv not running fail: gitaly: runsv not running fail: gitlab-exporter: runsv not running fail: gitlab-workhorse: run…

一句话画出动漫效果

链接: AI Comic Factory - a Hugging Face Space by jbilcke-hfDiscover amazing ML apps made by the communityhttps://huggingface.co/spaces/jbilcke-hf/ai-comic-factory 选择类型: Japanese 输入提示词: beauty and school love st…

WebSocket(一)

一.什么是WebSocket 【1】WebSocket是一种协议,设计用于提供低延迟,全双工和长期运行的连接。 全双工:通信的两个参与方可以同时发送和接收数据,不需要等待对方的响应或传输完成。 【2】比较 传统通信(http协议&am…

【Linux】文件

Linux 文件 什么叫文件C语言视角下文件的操作文件的打开与关闭文件的写操作文件的读操作 & cat命令模拟实现 文件操作的系统接口open & closewriteread 文件描述符进程与文件的关系重定向问题Linux下一切皆文件的认识文件缓冲区缓冲区的刷新策略 stuout & stderr 什…

【小沐学Unity3d】3ds Max 骨骼动画制作(CAT、Character Studio、Biped、骨骼对象)

文章目录 1、简介2、 CAT2.1 加载 CATRig 预设库2.2 从头开始创建 CATRig 3、character studio3.1 基本描述3.2 Biped3.3 Physique 4、骨骼系统4.1 创建方法4.2 简单示例 结语 1、简介 官网地址: https://help.autodesk.com/view/3DSMAX/2018/CHS https://help.aut…

11.物联网lwip,网卡原理

一。LWIP协议栈内存管理 1.LWIP内存管理方案 (1)堆heap 1.灰色为已使用内存 2.黑色为未使用内存 3.紫色为使用后内存 按照某种算法,把数据放在内存块中 (2)池pool 设置内存池,设置成大小相同的内存块。 2…

element-plus指定el-date-picker的弹出框位置

此处记录一下,通过popper-options指定popper出现的位置

【051】基于Vue、Springboot电商管理系统(含源码、详细论文、数据库)

基于Vue、Springboot、Mysql的前后端分离的电商管理系统,不仅功能完善,还有详细课设报告供查看,这不收藏起来,源码和论文获取见文末结尾 部分报告内容如下(省略图片) c 目录 1 引言 4 1.…

【数学建模】清风数模正课5 相关性分析

相关系数 相关性分析的关键是计算相关系数,在本节课中将会介绍两种常用的相关系数:皮尔逊相关系数(Pearson)和斯皮尔曼相关系数(Spearman)。 它们可以用来衡量两个变量间相关性的大小,对于不同…

深入探讨梯度下降:优化机器学习的关键步骤(一)

文章目录 🍀引言🍀什么是梯度下降?🍀损失函数🍀梯度(gradient)🍀梯度下降的工作原理🍀梯度下降的变种🍀随机梯度下降(SGD)🍀批量梯度下降&#xf…

Java“牵手”京东商品列表数据,关键词搜索京东商品数据接口,京东API申请指南

京东商城是一个网上购物平台,售卖各类商品,包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取京东商品列表和商品详情页面数据,您可以通过开放平台的接口或者直接访问京东商城的网页来获取商品详情信息。以下是两种常用方法的介绍&…

Linux 学习笔记(1)——系统基本配置与开关机命令

目录 0、起步 0-1)命令使用指引 0-2)查看历史的命令记录 0-3)清空窗口内容 0-4)获取本机的内网 IP 地址 0-5)获取本机的公网ip地址 0-6)在window的命令行窗口中远程连接linux 0-7)修改系…

docker安装jenkins

运行jenkins docker run -d \--name jenkins \ --hostname jenkins \-u root \-p 29090:8080 \--restart always \-v D:\springcloud\学习\jekins\jenkins\jks_home:/var/jenkins_home \ jenkins/jenkins获取root登录密码 密码在jekins_home/secrets/initalAdminPassword文件…

设计模式—原型模式(Prototype)

目录 一、什么是原型模式? 二、原型模式具有什么优缺点吗? 三、有什么缺点? 四、什么时候用原型模式? 五、代码展示 ①、简历代码初步实现 ②、原型模式 ③、简历的原型实现 ④、深复制 ⑤、浅复制 一、什么是原型模式&…

Ubuntu学习---跟着绍发学linux课程记录(第二部分)

文章目录 7 文件权限7.1 文件的权限7.2 修改文件权限7.3 修改文件的属主 8、可执行脚本8.2Shell脚本8.3python脚本的创建 9Shell9.1Shell中的变量9.2 环境变量9.3用户环境变量 学习链接: Ubuntu 21.04乌班图 Linux使用教程_60集Linux课程 所有资料在 http://afanihao.cn/java …

单调递增的数字【贪心算法】

单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 public class Solution {public int monotoneIncreasingDigits…

stm32---用外部中断实现红外接收器

一、红外遥控的原理 红外遥控是一种无线、非接触控制技术&#xff0c;具有抗干扰能力强&#xff0c;信息传 输可靠&#xff0c;功耗低&#xff0c;成本低&#xff0c;易实现等显著优点&#xff0c;被诸多电子设备特别是 家用电器广泛采用&#xff0c;并越来越多的应用到计算机系…

【USRP】调制解调系列6:16APSK、32APSK 、基于labview的实现

APSK APSK是&#xff0c;与传统方型星座QAM&#xff08;如16QAM、64QAM&#xff09;相比&#xff0c;其分布呈中心向外沿半径发散&#xff0c;所以又名星型QAM。与QAM相比&#xff0c;APSK便于实现变速率调制&#xff0c;因而很适合目前根据信道及业务需要分级传输的情况。当然…

音频——I2S DSP 模式(五)

I2S 基本概念飞利浦(I2S)标准模式左(MSB)对齐标准模式右(LSB)对齐标准模式DSP 模式TDM 模式 文章目录 DSP formatDSP A时序图逻辑分析仪抓包 DSP B时序图逻辑分析仪抓包 DSP format DSP/PCMmode 分为 Mode-A 和 Mode-B 共 2 种模式。不同芯⽚有的称为 PCM mode 有的称为 DSP m…