Unity 半透明shader以及扩展(外发光内发光)

2024-01-15 11:08

本文主要是介绍Unity 半透明shader以及扩展(外发光内发光),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

半透shader什么时候用到呢

1.如果主角被东西挡住,摄像机要不拉近要不把挡住的物体半透

2.很多游戏用到残影,一般残影都是半透的,然后慢慢透明

从左到右

1.使用标准材质球

2.使用半透材质球

3.使用外发光的半透材质球

4.使用内发光和外发光的材质球

shader比较简单直接上代码

这些都是surface shader

1.半透shader

Shader "Snoopy/AlphaBase"
{Properties{_MainTex("Particle Texture", 2D) = "white" {}_Color("Color", Color) = (1,1,1,1)}SubShader{Tags{ "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" }//这里加一个pass为了不会穿透叠自己的颜色,可以取消这个pass看看效果Pass{ZWrite OnColorMask 0}CGPROGRAM//使用alpha通道#pragma surface surf Lambert alphastruct Input{float2 uv_MainTex;};sampler2D _MainTex;fixed4 _Color;void surf(Input IN, inout SurfaceOutput o){float4 col = tex2D(_MainTex, IN.uv_MainTex);o.Albedo = col.rgb * _Color.rgb;o.Alpha = _Color.a;}ENDCG}Fallback "VertexLit"
}

2.外发光的半透shader

Shader "Snoopy/AlphaRimBase"
{Properties{_MainTex("Particle Texture", 2D) = "white" {}_Color("Color", Color) = (1,1,1,1)_RimColor("Rim Color", Color) = (0.5,0.5,0.5,0.5)_RimPower("Rim Power", Range(0.0,5.0)) = 2.5}SubShader{Tags{ "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" }Pass{ZWrite OnColorMask 0}CGPROGRAM#pragma surface surf Lambert alphastruct Input{float3 viewDir;float2 uv_MainTex;};sampler2D _MainTex;float4 _Color;float4 _RimColor;float _RimPower;void surf(Input IN, inout SurfaceOutput o){float4 col = tex2D(_MainTex, IN.uv_MainTex);o.Albedo = col.rgb * _Color.rgb;//边缘高光half rim = 1.0 - saturate(dot(normalize(IN.viewDir), o.Normal));o.Emission = _RimColor.rgb * pow(rim, 6 - _RimPower);o.Alpha = _Color.a;}ENDCG}Fallback "VertexLit"
}

3.外发光和内发光的半透shader

Shader "Snoopy/AlphaRimPro"
{Properties{_MainTex ("Particle Texture", 2D) = "white" {}_RimColor ("Rim Color", Color) = (0.5,0.5,0.5,0.5)_InnerColor ("Inner Color", Color) = (0.5,0.5,0.5,0.5)_InnerColorPower ("Inner Color Power", Range(0.0,1.0)) = 0.5_RimPower ("Rim Power", Range(0.0,5.0)) = 2.5_AlphaPower ("Alpha Rim Power", Range(0.0,8.0)) = 4.0_AllPower ("All Power", Range(0.0, 10.0)) = 1.0_InnerAlphaBase ("Inner Alpha Base", Range(0.0, 1.0)) = 1.0}SubShader{Tags{ "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" }Pass{// 开启深度写入ZWrite On// 设置颜色通道的写掩码,0为不写入任何颜色ColorMask 0}CGPROGRAM#pragma surface surf Lambert alphastruct Input{float3 viewDir;float2 uv_MainTex;INTERNAL_DATA};sampler2D _MainTex;float4 _RimColor;float _RimPower;float _AlphaPower;float _AlphaMin;float _InnerColorPower;float _AllPower;float4 _InnerColor;float _InnerAlphaBase;void surf (Input IN, inout SurfaceOutput o){float4 col = tex2D (_MainTex, IN.uv_MainTex);o.Albedo = col.rgb;half rim = 1.0 - saturate(dot (normalize(IN.viewDir), o.Normal));o.Emission = _RimColor.rgb * pow (rim, _RimPower)*_AllPower+(_InnerColor.rgb*2*_InnerColorPower);o.Alpha = (_InnerAlphaBase + (pow (rim, _AlphaPower))*_AllPower) * col.a;}ENDCG}
Fallback "VertexLit"
} 

工程下载地址

链接:https://pan.baidu.com/s/11LTiIW0lIosNqokpucq6SQ 
提取码:td8s 

这篇关于Unity 半透明shader以及扩展(外发光内发光)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/608686

相关文章

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

C#和Unity中的中介者模式使用方式

《C#和Unity中的中介者模式使用方式》中介者模式通过中介者封装对象交互,降低耦合度,集中控制逻辑,适用于复杂系统组件交互场景,C#中可用事件、委托或MediatR实现,提升可维护性与灵活性... 目录C#中的中介者模式详解一、中介者模式的基本概念1. 定义2. 组成要素3. 模式结构二、中介者模式的特点

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

Java常用注解扩展对比举例详解

《Java常用注解扩展对比举例详解》:本文主要介绍Java常用注解扩展对比的相关资料,提供了丰富的代码示例,并总结了最佳实践建议,帮助开发者更好地理解和应用这些注解,需要的朋友可以参考下... 目录一、@Controller 与 @RestController 对比二、使用 @Data 与 不使用 @Dat

Spring组件初始化扩展点BeanPostProcessor的作用详解

《Spring组件初始化扩展点BeanPostProcessor的作用详解》本文通过实战案例和常见应用场景详细介绍了BeanPostProcessor的使用,并强调了其在Spring扩展中的重要性,感... 目录一、概述二、BeanPostProcessor的作用三、核心方法解析1、postProcessB

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

UE5 半透明阴影 快速解决方案

Step 1: 打开该选项 Step 2: 将半透明材质给到模型后,设置光照的Shadow Resolution Scale,越大,阴影的效果越好