用双pass解决渲染透明的穿插问题

Shader "Unlit/AlphaBlend_2pass"
{Properties{_Color("Main Tint",Color)=(1,1,1,1)_MainTex ("Texture", 2D) = "white" {}_AlphaScale("Alpha Scale",Range(0,1))=1}SubShader{Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }Pass{Tags{"LightMode"="ForwardBase"}ZWrite Off   //关闭写入深度Cull FrontBlend SrcAlpha OneMinusSrcAlphaCGPROGRAM#pragma vertex vert#pragma fragment frag#include "Lighting.cginc"fixed4 _Color;sampler2D _MainTex;float4 _MainTex_ST;fixed _AlphaScale;struct a2v{float4 vertex : POSITION;float3 normal:NORMAL;float4 texcoord : TEXCOORD0;};struct v2f{float4 pos : SV_POSITION;float3 worldNormal:TEXCOORD0;float3 worldPos:TEXCOORD1;float2 uv:TEXCOORD2;};v2f vert (a2v v){v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.worldNormal = UnityObjectToWorldNormal(v.normal);o.worldPos=mul(unity_ObjectToWorld,v.vertex).xyz;o.uv=TRANSFORM_TEX(v.texcoord,_MainTex);return o;}fixed4 frag (v2f i) : SV_Target{fixed3 worldNormal=normalize(i.worldNormal);fixed3 worldLightDir=normalize(UnityWorldSpaceLightDir(i.worldPos));fixed4 texColor=tex2D(_MainTex,i.uv);fixed3 albedo=texColor.rgb*_Color.rgb;fixed3 ambient=UNITY_LIGHTMODEL_AMBIENT.xyz*albedo;fixed3 diffuse=_LightColor0.rgb*albedo*max(0,dot(worldNormal,worldLightDir));return fixed4(ambient+diffuse,texColor.a*_AlphaScale);   //重点texColor.a*_AlphaScale}ENDCG}Pass{Tags{"LightMode"="ForwardBase"}ZWrite Off   //关闭写入深度Cull BackBlend SrcAlpha OneMinusSrcAlphaCGPROGRAM#pragma vertex vert#pragma fragment frag#include "Lighting.cginc"fixed4 _Color;sampler2D _MainTex;float4 _MainTex_ST;fixed _AlphaScale;struct a2v{float4 vertex : POSITION;float3 normal:NORMAL;float4 texcoord : TEXCOORD0;};struct v2f{float4 pos : SV_POSITION;float3 worldNormal:TEXCOORD0;float3 worldPos:TEXCOORD1;float2 uv:TEXCOORD2;};v2f vert (a2v v){v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.worldNormal = UnityObjectToWorldNormal(v.normal);o.worldPos=mul(unity_ObjectToWorld,v.vertex).xyz;o.uv=TRANSFORM_TEX(v.texcoord,_MainTex);return o;}fixed4 frag (v2f i) : SV_Target{fixed3 worldNormal=normalize(i.worldNormal);fixed3 worldLightDir=normalize(UnityWorldSpaceLightDir(i.worldPos));fixed4 texColor=tex2D(_MainTex,i.uv);fixed3 albedo=texColor.rgb*_Color.rgb;fixed3 ambient=UNITY_LIGHTMODEL_AMBIENT.xyz*albedo;fixed3 diffuse=_LightColor0.rgb*albedo*max(0,dot(worldNormal,worldLightDir));return fixed4(ambient+diffuse,texColor.a*_AlphaScale);   //重点texColor.a*_AlphaScale}ENDCG}}Fallback "TransParent/VertexLit"
}

Unity3d之shader透明模式双pass解决方案相关推荐

  1. unity 2020 怎么写shader使其接受光照?_Shader从入门到跑路:阶段性自我小测2(屏幕后处理、替换渲染、双Pass渲染)...

    以下是一些可供读者自我检测的问题,同上次一样,笔者不会提供答案,但如果实在想不明白依然可以私信笔者问思路.经某些读者建议,每题加上了分数,供各位自检. 练习1:使用第5章讲到的屏幕后处理效果,对屏幕颜 ...

  2. beoplay耳机序列号查询_BO Beoplay E8评测:真正无线耳机,可自定义EQ设置和透明模式!...

    B&O Beoplay E8无线耳机评测 Bang&Olufsen,这是一个你知道的名字,在音频方面可能是可靠的.鉴于有多少手机制造商选择它们作为其优质音频合作伙伴,因此了解其子公司B ...

  3. 热门!!Squid缓存加速——传统及透明模式服务搭建

    一.缓存代理概述 1. Web代理的工作机制 2.代理的基本类型 3.使用代理的好处 二.squid传统模式 [squid服务器] 1.设置主机名 2.编译安装squid 3.优化路径 4.创建squ ...

  4. 防火墙工作在哪个层_Stratix 5950工业防火墙透明模式使用

    工业防火墙为工业网络安全中必不可少的部分,工业控制的二层网络的安全,Stratix5950工业防火墙提供了Transparent(透明)工作模式. 透明模式介绍 1.透明模式:透明模式的工业防火墙,接 ...

  5. 保险双录政策再开放,菊风推出泛金融视频双录解决方案

    继中国银保监会消保局下发<保险销售行为可回溯管理办法(征求意见稿)>,从个别省市推行的保险销售"双录"到全国版保险"双录"实施开来.2021年岁末, ...

  6. ASA防火墙透明模式ACL总结

    1.在透明模式下,ASA默认允许IP单播数据包从高安全级别接口(inside)进入到低安全级别接口(outside) 2.二层的ARP报文允许在两个接口直接通行,不需要ACL 3.组播和广播默认不允许 ...

  7. 简述CISCO防火墙透明模式

    随着计算机技术的发展和进步,以及互联网的普及,网络安全问题已经日益突出地摆在用户的面前,使用CISCO网络防火墙可以有效地阻止来自外部网络的***,帮助用户防止跨越权限的数据访问,并且可以通过在防火墙 ...

  8. OPCDA通信--工作在透明模式下的CISCO ASA 5506-X防火墙配置

    inside OPCSERVER 一台 outside OPCCLIENT 一台 route模式 配置没成功,放弃,采用透明模式 !----进入全局配置-- configure terminal !- ...

  9. MySQL5.7默认打开ONLY_FULL_GROUP_BY模式问题与解决方案

    MySQL5.7默认打开ONLY_FULL_GROUP_BY模式问题与解决方案 参考文章: (1)MySQL5.7默认打开ONLY_FULL_GROUP_BY模式问题与解决方案 (2)https:// ...

最新文章

  1. 重拾强化学习的核心概念_强化学习的核心概念
  2. 使用LocalTestServer对HTTP调用进行单元测试
  3. minheight能继承吗_民法典亮点盘点 | 侄子能继承叔叔的遗产吗?
  4. hbase数据读取优化_read读取优化_HBase最佳实践_HBase开发指南_云数据库 HBase - 阿里云...
  5. Leetcode题目practice
  6. linux shell 学习时遇到的一些问题([: 11: y: unexpected operator)
  7. mac word无法显示仿宋字体解决方案
  8. 为什么原理图中元器件下面有红色波浪线?
  9. 申请德国农工大学计算机案例,【2014】德州农工大学:腼腆男的春天
  10. Java 学习 多态练习 1. 设计一个接口 接口叫做Mortal,其中有一个方法叫做die 在主方法中首先实例化出一个Hero对象:盖伦然后实例化出3个对象,分别是ADHero,APHero
  11. 当443端口被占用时如何解决?
  12. python查询文章中的高频词汇
  13. forward和redirect的区别是什么?
  14. GitLab提交或拉取代码问题
  15. /opt/MegaRAID/MegaCli/MegaCli64
  16. java 参考中文站
  17. iacr是什么会议_什么才算计算机的顶级会议?
  18. 韩语初学者如何选择教材?
  19. radmin显示不能连接到服务器,关于Radmin安装失败或无法显示远程桌面的处理方法...
  20. 弹性地基梁板实用计算_桥梁支架设计计算,看这里!

热门文章

  1. 图深度学习,入门教程七,残差多层图注意力模型
  2. php签到怎么做,如何制作签到小程序-小程序签到功能实现-签到小程序
  3. Python 中求小于这个数的所有素数
  4. threejs绘制风羽
  5. 显示器显示“输入信号超出范围”怎么调整
  6. c语言如何输出前导0
  7. 实现js动态创建img并使用canvas画线连接
  8. 计算机ping使用的端口,如何用ping来测试端口(port)?
  9. 北师大计算机网络教育考试,2018年北京师范大学教育学部408计算机学科专业基础综合之计算机网络考研仿真模拟五套题...
  10. android平板触控笔,产品轻体验系列 篇一:买平板到底要不要买配件?华为MatePad10.8磁吸键盘/触控笔体验...