Unity中URP下的添加雾效支持

文章目录

  • 前言
  • 一、URP下Shader支持雾效的步骤
    • 1、添加雾效变体
    • 2、在Varying结构体中添加雾效因子
    • 3、在顶点着色器中,我们使用内置函数得到雾效因子
    • 4、在片元着色器中,把输出颜色 和 雾效因子混合输出
  • 二、在Unity中打开雾效
  • 三、测试代码


前言

我们使用之前的棋盘格作为测试Shader来添加雾效。

  • Unity中 URP 下的棋盘格Shader

一、URP下Shader支持雾效的步骤

1、添加雾效变体

#pragma multi_compile_fog

2、在Varying结构体中添加雾效因子

float fogCoord : TEXCOORD2;

3、在顶点着色器中,我们使用内置函数得到雾效因子

o.fogCoord = ComputeFogFactor(o.vertexCS.z);

4、在片元着色器中,把输出颜色 和 雾效因子混合输出

col.rgb = MixFog(col,i.fogCoord);


二、在Unity中打开雾效

在这里插入图片描述
在这里插入图片描述

请添加图片描述

请添加图片描述


三、测试代码

Shader "MyShader/URP/P3_8"
{Properties{_Repeat("Repeat",Float) = 0_Color("Color",Color) = (1,1,1,1)}SubShader{Tags{"PenderPipeline"="UniversalPipeline""RenderType"="Opaque""Queue"="Geometry"}Cull FrontPass{HLSLPROGRAM#pragma vertex vert#pragma fragment frag#pragma multi_compile_fog#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"struct Attribute{float3 vertexOS : POSITION;float2 uv : TEXCOORD0;};struct Varying{float3 vertexOS : TEXCOORD0;float4 vertexCS : SV_POSITION;float2 uv : TEXCOORD1;float fogCoord : TEXCOORD2;};CBUFFER_START(UnityPerMaterial)float _Repeat;float4 _Color;CBUFFER_ENDVarying vert(Attribute v){Varying o;o.vertexOS = v.vertexOS;o.vertexCS = TransformObjectToHClip(v.vertexOS);o.uv = v.uv * _Repeat;o.fogCoord = ComputeFogFactor(o.vertexCS.z);return o;}half4 frag(Varying i) : SV_Target{/*half4 col1;half4 col2;if(i.uv.x < 0.5)col1 = 0;elsecol1 = 0.5;if(i.uv.y < 0.5)col2 = 0;elsecol2 = 0.5;*/half4 col;float2 uv = floor(i.uv * 2) * 0.5;col = frac(uv.x + uv.y) * 2;float mask = i.vertexOS.y;col = col * _Color + mask;col.rgb = MixFog(col,i.fogCoord);return col;}ENDHLSL}}SubShader{Tags{"RenderType"="Opaque""Queue"="Geometry"}Cull FrontPass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float3 vertexOS : POSITION;float2 uv : TEXCOORD0;};struct v2f{float3 vertexOS : TEXCOORD0;float4 vertexCS : SV_POSITION;float2 uv : TEXCOORD1;};float _Repeat;float4 _Color;v2f vert(appdata v){v2f o;o.vertexOS = v.vertexOS;o.vertexCS = UnityObjectToClipPos(v.vertexOS);o.uv = v.uv * _Repeat;return o;}half4 frag(v2f i) : SV_Target{half4 col;float2 uv = floor(i.uv * 2) * 0.5;col = frac(uv.x + uv.y) * 2;float mask = i.vertexOS.y;col = col * _Color + mask;return col;}ENDCG}}
}

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

DDR终端匹配电阻的长度多少合适?

上次我们对不加端接电阻和加端接电阻之后的仿真结果做了分析之后我们得出在DDR采用菊花链拓扑结构的时候是需要加端接电阻的&#xff0c;这次我们看看DDR末端的端接电阻距离最后一片DDR远一点效果好一些还是近一点效果好一些。 本次采用的案例依旧是我们上期的DDR3一拖八正反贴…

【赠书第14期】AI短视频制作一本通:文本生成视频+图片生成视频+视频生成视频

文章目录 前言 1 前期准备 2 拍摄与录制 3 后期编辑 4 技巧与注意事项 5 推荐图书 6 粉丝福利 前言 随着智能技术的迅猛发展&#xff0c;AI 短视频制作成为了一种新兴而创新的表达方式&#xff0c;广泛应用于社交媒体、广告营销、教育培训等领域。本文将介绍 AI 短视频…

最新版本Vue3的学习笔记-第一章

1. Vue3简介 2020年9月18日&#xff0c;Vue.js发布版3.0版本&#xff0c;代号&#xff1a;One Piece&#xff08;n 经历了&#xff1a;4800次提交、40个RFC、600次PR、300贡献者 官方发版地址&#xff1a;Release v3.0.0 One Piece vuejs/core 截止2023年10月&#xff0c;最新…

32阵元 MVDR和DREC DOA估计波束方向图对比

32阵元 MVDR和DREC DOA估计波束方向图对比 一、原理 MVDR原理&#xff1a;https://zhuanlan.zhihu.com/p/457528114 DREC原理&#xff08;无失真响应特征干扰相消器&#xff09;&#xff1a;http://radarst.ijournal.cn/html/2019/3/201903018.html 主要参数&#xff1a; 阵…

文件监控-IT安全管理软件

文件监控和IT安全管理软件是用于保护企业数据和网络安全的工具。这些工具可以帮助企业监控文件的变化&#xff0c;防止未经授权的访问和修改&#xff0c;并确保数据的安全性和完整性。 一、具有哪些功能 文件监控软件可以实时监控文件系统的活动&#xff0c;包括文件的创建、修…

Docker之网络配置

目录 1.网络概念 网络相关的有ip,子网掩码,网关,DNS,端口号 1.1 ip是什么? ip是唯一定位一台网上计算机 Ip地址的分类: IPV4: 4字节32位整数&#xff0c;并分成4段8位的二进制数&#xff0c;每8位之间用圆点隔开&#xff0c;每8位整数可以转换为一个0~255的十进制整数 【例…

JVM 常用知识和面试题

1. 什么是JVM内存结构&#xff1f; jvm将虚拟机分为5大区域&#xff0c;程序计数器、虚拟机栈、本地方法栈、java堆、方法区&#xff1b; 程序计数器&#xff1a;线程私有的&#xff0c;是一块很小的内存空间&#xff0c;作为当前线程的行号指示器&#xff0c;用于记录当前虚拟…

web前端开发JQuery轮播图,双向兼容手搭挡和自动挡

效果展示&#xff1a; html界面 展示&#xff1a; 轮播图及图片资源&#xff08;百度网盘&#xff09;&#xff1a; http://链接&#xff1a;https://pan.baidu.com/s/1A3TLkcD08yaNMA4XcaMPCQ?pwd4332 提取码&#xff1a;4332 注意事项&#xff1a; 引用JQuery文件地址和图…

Hive讲课笔记:内部表与外部表

文章目录 一、导言二、内部表1.1 什么是内部表1.1.1 内部表的定义1.1.2 内部表的关键特性 1.2 创建与操作内部表1.2.1 创建并查看数据库1.2.2 在park数据库里创建student表1.2.3 在student表插入一条记录1.2.4 通过HDFS WebUI查看数据库与表 三、外部表2.1 什么是外部表2.2 创建…

Android 13 动态启用或禁用IPV6

介绍 客户想要通过APK来控制IPV6的启用和禁用&#xff0c;这里我们通过广播的方式来让客户控制IPV6。 效果展示 adb shell ifconfig 这里我们用debug软件&#xff0c;将下面节点置为1 如图ipv6已被禁用了 echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6 修改 接下来…

Linux中proc文件系统相关介绍

proc虚拟文件系统的工作原理 linux 内核是一个非常庞大、非常复杂的一个单独的程序&#xff0c;对于这样一个程序来说调试是非常复杂的。像kernel这样庞大的项目&#xff0c;给里面添加或者修改一个功能是非常麻烦的&#xff0c;因为添加一个功能可能会影响其他已经有的功能。…

ubuntu 开机自报IP地址(用于无屏幕小车-远程连接)

目录 1.环境安装2.代码3.打包成可执行文件4.开启开机自启 1.环境安装 sudo apt-get install espeak #先安装这个库 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyttsx32.90 #再安装pyttsx3 pyinstaller pip install -i https://pypi.tuna.tsinghua.edu.cn/si…

第四章 Consul服务注册与发现

Consul服务注册与发现 gitee:springcloud_study: springcloud&#xff1a;服务集群、注册中心、配置中心&#xff08;热更新&#xff09;、服务网关&#xff08;校验、路由、负载均衡&#xff09;、分布式缓存、分布式搜索、消息队列&#xff08;异步通信&#xff09;、数据库…

关于Unity使用图片字体示例

1.使用TexturePacker打包图集 下载地址 TexturePacker - Create Sprite Sheets for your game! 2.准备好数字图 3. 导入图片 4. 打包图集需要的设置 将重心点设置为左下方 点击回车 > 后点击回 >到精灵列表 选择导出的格式 导出后的内容 >导入unity 导入 >…

初步认识API安全

一、认识API 1. 什么是API API(应用程序接口)&#xff1a;是一种软件中介&#xff0c;它允许两个不相关的应用程序相互通信。它就像一座桥梁&#xff0c;从一个程序接收请求或消息&#xff0c;然后将其传递给另一个程序&#xff0c;翻译消息并根据 API 的程序设计执行协议。A…

Xamarin开发:商场促销(策略设计模式)

Xamarin开发:商场促销&#xff08;策略设计模式&#xff09; 一、介绍二、需求分析三、实现四、需求分析问题1解决方案问题2解决方案 五、增加新需求六、代码优化与分析总结 一、介绍 本文引用《大话设计模式》第二章节的内容进行学习分析&#xff0c;仅供学习使用 这里接着我…

【Redis前奏曲】初识Redis

文章目录 一.Redis的一些特性(优点)1. 在内存中存储数据2. 可编程的3. 可扩展的4.持久化5. 聚集(集群)6. 高可用Redis快的原因 二. 使用案例1.数据库2. 缓存3. 消息队列 一.Redis的一些特性(优点) 我们在上一篇博客中说到,Redis是一个在内存中存储数据的中间件.用作数据库,数据…

深度解析TB用户购物行为:系统搭建与优化

深度解析TB用户购物行为&#xff1a;系统搭建与优化 引言系统搭建数据集技术选型 系统功能1. 用户维度分析2. 产品维度分析3. 聚类结果分析 创新点系统优化与展望优化展望 结语 引言 在电商时代&#xff0c;了解用户购物行为并从中提取有价值的信息对于企业制定营销策略和优化…

MySQL 8.0 InnoDB Tablespaces之General Tablespaces(通用表空间/一般表空间)

文章目录 MySQL 8.0 InnoDB Tablespaces之General Tablespaces&#xff08;通用表空间/一般表空间&#xff09;General tablespaces&#xff08;通用表空间/一般表空间&#xff09;通用表空间的功能通用表空间的限制 创建通用表空间&#xff08;一般表空间&#xff09;创建语法…

键盘字符(#键)显示错误

当屏幕上显示的键与键盘上按下的键不同时&#xff0c;尤其是 # 键。大多数情况下&#xff0c;此错误是由于 raspbian 和 NOOBS 软件的默认英国键盘配置所致。 解决方案&#xff1a; 要解决此问题&#xff0c;您需要将配置更改为您自己的键盘或语言的配置。这可以通过转到树莓派…