UnityShader(十九) AlphaBlend

上代码:

Shader "Shader入门/透明度效果/AlphaBlendShader"
{Properties{_MainTex ("Texture", 2D) = "white" {}_AlphaScale("AlphaScale",Range(0,1))=1.0}SubShader{Tags { "RenderType"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }Pass{ZWrite On ColorMask 0}Pass{Tags{"LightMode"="ForwardBase"}ZWrite Off Blend SrcAlpha OneMinusSrcAlphaCGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"#include "Lighting.cginc"struct appdata{float4 vertex : POSITION;float2 texcoord : TEXCOORD0;float3 normal : NORMAL;};struct v2f{float4 pos : SV_POSITION;float2 uv : TEXCOORD0;float3 normal_world : TEXCOORD1;float3 pos_world : TEXCOORD2;};sampler2D _MainTex;float4 _MainTex_ST;float _AlphaScale;v2f vert (appdata v){v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);o.normal_world = mul(v.normal,unity_WorldToObject);o.pos_world = mul(unity_ObjectToWorld,v.vertex);return o;}fixed4 frag (v2f i) : SV_Target{half3 worldNormal = normalize(i.normal_world);half3 worldLightDir = UnityWorldSpaceLightDir(i.pos_world);// sample the texturefixed4 col = tex2D(_MainTex, i.uv);fixed3 abledo = col.rgb;fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz*abledo;fixed3 diffuse = _LightColor0.rgb*abledo*max(0,dot(worldNormal,worldLightDir));fixed3 final_color = ambient+diffuse;return fixed4(final_color,col.a*_AlphaScale);}ENDCG}}
}

效果:

在代码中我们有两个Pass,首先在第二个Pass中我们实现了AlphaBlend的基础实现,关闭了深度写入和进行了混合,对于上述的混合模式,实际为:

Blend SrcFactor DstFactor(开启混合,并设置混合因子。源颜色【该片元产生的颜色】会乘以SrcFactor,而目标颜色【已经存在于颜色缓存中的颜色】会乘以DstFactor,最后两者相加)

及:DstColor_{new}=SrcAlpha*SrcColor+(1-SrcAlpha)*DstColor_{old}

而对于第一个Pass是开启了深度写入和颜色遮罩进行不输出颜色操作,这样可以解决复杂模型间存在深度的问题效果

ColorMask  RGB|A|0|任何其它的R、G、B

当设置为0时意味着该Pass不写入任何颜色通道,即不会输出任何颜色。 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQLiteC/C++接口详细介绍sqlite3_stmt类简介

返回:SQLite—系列文章目录 上一篇:SQLiteC/C接口详细介绍之sqlite3类(十八) 下一篇:SQLiteC/C接口详细介绍sqlite3_stmt类(一) 预准备语句对象 typedef struct sqlite3_stmt sqlite3_stmt…

Linux下QT界面小程序开发

背景:需要在linux不同环境下可以测试我们的读卡器设备 搭建本地linux开发环境(本来想VS里开发然后通过SSH的方式在linux下编译,但是工具链一直没搞起来,所以我是在ubuntu里安装的QT Creator工具直接开发的)&#xff1b…

【MySQL】3.1MySQL索引的介绍

目录 一、索引的概念 数据库索引 索引的作用 索引的副作用 索引创建的原则(应用场景) 适合建立索引 二、索引的分类和创建 1.普通索引 创建普通索引 1.1直接创建 1.2修改表结构的方式创建普通索引 1.3创建表时创建普通索引 2.唯一索引 2.1…

Vue/Uni-app/微信小程序 v-if 设置出场/退出动画(页面交互不死板,看起来更流畅)

天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/ 在Vue.js中&#xff0c;使用v-if进行条件渲染时设置动画可以通过<transition>组件来实现。 具体操作步骤如下&#xff1a; 包裹条件渲染的元素&#xff1a;您需要将要通过v-if控制显示隐藏的元素包裹在<transition…

Linux信号补充——信号捕捉处理

一、信号的捕捉处理 ​ 信号保存后会在合适的时间进行处理&#xff1b; 1.1信号处理时间 ​ 进程会在操作系统的调度下处理信号&#xff0c;操作系统只管发信号&#xff0c;即信号处理是由进程完成的&#xff1b; ​ 1.信号处理首先进程得检查是否有信号&#xff1b;2.进程…

uniapp开发微信小程序取消原生导航栏+自定义导航栏

1、取消原生导航栏 如图&#xff1a;将页面中的原生导航取消 在page.json中需要取消的页面中加入"navigationStyle": "custom" 例如&#xff1a; {"path": "pages/index/index","style": {"navigationBarTitleText&…

浏览器工作原理与实践--HTTP请求流程:为什么很多站点第二次打开速度会很快

在上一篇文章中我介绍了TCP协议是如何保证数据完整传输的&#xff0c;相信你还记得&#xff0c;一个TCP连接过程包括了建立连接、传输数据和断开连接三个阶段。 而HTTP协议&#xff0c;正是建立在TCP连接基础之上的。HTTP是一种允许浏览器向服务器获取资源的协议&#xff0c;是…

git常见使用

1. 概念 分布式&#xff0c;有远程仓库和本地仓库的概念&#xff0c;因此要注意同步问题git是面向对象的&#xff0c;本质是内容寻址系统。.git目录下有个文件夹objects&#xff0c;存储git库中的对象&#xff0c;git就是根据object建立一种树形结构&#xff0c;将文件和通过h…

超越 GPT-4V 和 Gemini Pro!HyperGAI 发布最新多模态大模型 HPT,已开源

随着AI从有限数据迈向真实世界&#xff0c;极速增长的数据规模不仅赋予了模型令人惊喜的能力&#xff0c;也给多模态模型提供了更多的可能性。OpenAI在发布GPT-4V时就已经明确表示&#xff1a; 将额外模态&#xff08;如图像输入&#xff09;融入大语言模型&#xff08;LLMs&am…

【机器学习-08】参数调优宝典:网格搜索与贝叶斯搜索等攻略

超参数是估计器的参数中不能通过学习得到的参数。在scikit-learn中&#xff0c;他们作为参数传递给估计器不同类的构造函数。典型的例子有支持向量分类器的参数C&#xff0c;kernel和gamma&#xff0c;Lasso的参数alpha等。 ​ 在超参数集中搜索以获得最佳cross validation交叉…

【C语言基础】:字符串函数(二)

文章目录 一、strncpy函数的使用二、strncat函数的使用三、strncmp函数的使用四、strstr函数的使用和模拟实现4.1 strstr函数的使用4.2 strstr函数的模拟实现 五、strtok函数的使用六、strerror函数的使用 上节回顾&#xff1a;【C语言基础】&#xff1a;字符函数和字符串函数 …

基于java+springboot+vue实现的健身房管理系统(文末源码+Lw+ppt)23-523

摘 要 健身房管理的以往工作流程繁杂、多样、管理复杂与设备维护繁琐。而如今计算机已完全能够胜任健身房管理工作&#xff0c;而且更加准确、方便、快捷、高效、清晰、透明&#xff0c;它完全可以克服以上所述的不足之处。这将给查询信息和管理带来很大的方便&#xff0c;从…

Docker部署Alist全平台网盘神器结合内网穿透实现无公网IP访问云盘资源

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-oZuxWTWUiXLx3aQO {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

数据本地性如何助力企业在云上实现高效机器学习

分享嘉宾&#xff1a; Lu Qiu, Shawn Sun 本文将讨论数据本地性对于在云上进行高效机器学习的重要性。首先对比现有解决方案的利弊&#xff0c;并综合考虑如何通过数据本地性来降低成本和实现性能最大化。其次会介绍新一代的Alluxio设计与实现&#xff0c;详细说明其在模型训练…

刷题28-30(力扣0322/0078/0221)

0322. 零钱兑换 题目&#xff1a; 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1 。你可以…

一文带你看懂 前后端之间图片的上传与回显

一文带你看懂 前后端之间图片的上传与回显 前言 看了很多类似的文章&#xff0c;发现很多文章&#xff0c;要不就是不对&#xff0c;要不就是代码写的不通俗易懂&#xff0c;所以有了这篇文章&#xff0c;我将会从原理到实战&#xff0c;带你了解 实战包含前端 原生 vue3 rea…

Gold Effects

HDRP、URP、LWRP和标准支持 完全可定制的金币效果。几乎每个属性都是可调整的,您可以更改这些效果的颜色、渐变、噪波纹理和整体形状。支持HDRP、URP和LWRP,当然也支持标准渲染器。易于拖放设置,带有定制示例的演示场景。使用标准Unity Animator为箱子制作动画,因此您可以轻…

Python爬虫与数据可视化源码免费领取

引言 作为一名在软件技术领域深耕多年的专业人士&#xff0c;我不仅在软件开发和项目部署方面积累了丰富的实践经验&#xff0c;更以卓越的技术实力获得了&#x1f3c5;30项软件著作权证书的殊荣。这些成就不仅是对我的技术专长的肯定&#xff0c;也是对我的创新精神和专业承诺…

电子科技大学链时代工作室招新题C语言部分---题号H

1. 题目 最有操作的一道题&#xff0c;有利于对贪心算法有个初步了解。 这道题的开篇向我们介绍了一个叫汉明距离的概念。 汉明距离指的就是两个相同长度的字符串的不同字符的个数。 例如&#xff0c;abc和acd&#xff0c;b与c不同&#xff0c;c与d不同&#xff0c;所以这两个…

每周一算法:迭代加深A*

题目链接 AcWing 180. 排书 题目描述 给定 n n n 本书&#xff0c;编号为 1 ∼ n 1\sim n 1∼n。 在初始状态下&#xff0c;书是任意排列的。 在每一次操作中&#xff0c;可以抽取其中连续的一段&#xff0c;再把这段插入到其他某个位置。 我们的目标状态是把书按照 1 ∼…