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://www.mzph.cn/news/585068.shtml

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

相关文章

ubuntu20部署Bringing-Old-Photos-Back-to-Life

环境准备&#xff1a; ubuntu20.04 Python 3.8.10 首先将微软的「Bringing-Old-Photos-Back-to-Life」库 clone 到本地&#xff1a; git clone https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life.git cd Face_Enhancement/models/networks/ git clone https:/…

Python 爬虫 教程

python爬虫框架&#xff1a;Scrapyd&#xff0c;Feapder&#xff0c;Gerapy 参考文章&#xff1a; python爬虫工程师&#xff0c;如何从零开始部署ScrapydFeapderGerapy&#xff1f; - 知乎 神器&#xff01;五分钟完成大型爬虫项目 - 知乎 爬虫框架-feapder - 知乎 scrap…

NFC物联网智慧校园解决方案

近场通信(Near Field Communication&#xff0c;NFC)又称近距离无线通信&#xff0c;是一种短距离的高频无线通信技术&#xff0c;允许电子设备之间进行非接触式点对点数据传输交换数据。这个技术由免接触式射频识别(RFID)发展而来&#xff0c;并兼容 RFID&#xff0c;主要用于…

解决VNC连接Ubuntu服务器打开终端出现闪退情况

服务器环境 阿里云ECS服务器 操作系统&#xff1a;Ubuntu 20.0.4 如何使用VNC连接阿里云ECS服务器 1.阿里云官方指导&#xff1a;通过VNC搭建Ubuntu 18.04和20.04图形界面 2.新手入门ECS——ubuntu 20.04安装图形化界面和本地VNC连接 问题描述 使用VNC连接上新申请阿里云服…

leetcode每日一题41

99. 恢复二叉搜索树 中序遍历树&#xff0c;找到逆序的两个数&#xff0c;交换 有两种情况 如果是像示例1一样的&#xff0c;中序遍历后是3&#xff0c;2&#xff0c;1 是连续的两个逆序&#xff0c;那么交换第一&#xff0c;第三个数 如果是像示例2一样&#xff0c;中序遍历后…

Debezium发布历史35

原文地址&#xff1a; https://debezium.io/blog/2018/07/19/advantages-of-log-based-change-data-capture/ 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. 基于日志的变更数据捕获的五个优点 七月 19, 2018 作…

github鉴权失败

问题&#xff1a; 如上图所示 git push 时发生了报错&#xff0c;鉴权失败&#xff1b; 解决方案 Settings->Developer settings->Personal access tokens->Generate new token。创建新的访问密钥&#xff0c;勾选repo栏&#xff0c;选择有效期&#xff0c;为密钥命…

【C#与Redis】--高级主题--Redis 管道

一、引言 1.1 概念介绍 Redis管道是一种用于优化多个命令执行的机制&#xff0c;允许客户端将多个命令一次性发送给服务器&#xff0c;然后一次性接收所有命令的返回结果。这种机制可以减少客户端与服务器之间的网络往返次数&#xff0c;从而提高性能。 1.2 作用 提高性能&…

java 对数转换log_a {c}

1、换底公式 l o g a c l o g x c l o g x a log_a c \frac{log_x c}{log_x a} loga​clogx​alogx​c​ 2、推理过程 有&#xff1a; a b c &#xff0c;证明 l o g a c l o g x c l o g x a 取对数 ( l o g x ) &#xff1a; l o g x a b l o g x c l o g x a b b ∗ …

鸿蒙HarmonyOS-图表应用

简介 随着移动应用的不断发展&#xff0c;数据可视化成为提高用户体验和数据交流的重要手段之一。在HarmonyOS应用开发中&#xff0c;一个强大而灵活的图表库是实现这一目标的关键。而MPChart就是这样一款图表库&#xff0c;它为开发者提供了丰富的功能和灵活性&#xff0c;使得…

【持续更新ing】uniapp+springboot实现个人备忘录系统【前后端分离】

目录 &#xff08;1&#xff09;项目可行性分析 &#xff08;2&#xff09;需求描述 &#xff08;3&#xff09;界面原型 &#xff08;4&#xff09;数据库设计 &#xff08;5&#xff09;后端工程 接下来我们使用uniappspringboot实现一个简单的前后端分离的小项目----个…

Spark作业的调度与执行流程

Apache Spark是一个分布式计算框架&#xff0c;用于处理大规模数据。了解Spark作业的调度与执行流程是构建高效分布式应用程序的关键。本文将深入探讨Spark作业的组成部分、调度过程以及执行流程&#xff0c;并提供丰富的示例代码来帮助大家更好地理解这些概念。 Spark作业的组…

第09章:随堂复习与企业真题(异常处理)

来源&#xff1a;尚硅谷Java零基础全套视频教程(宋红康2023版&#xff0c;java入门自学必备) 基本都是宋老师发的资料里面的内容&#xff0c;只不过补充几个资料里没直接给出答案的问题的答案。 不想安装markdown笔记的app所以干脆在这里发一遍。 第09章&#xff1a;随堂复习…

[Angular] 笔记 16:模板驱动表单 - 选择框与选项

油管视频&#xff1a; Select & Option (Template Driven Forms) Select & Option 在 pokemon.ts 中新增 interface: export interface Pokemon {id: number;name: string;type: string;isCool: boolean;isStylish: boolean;acceptTerms: boolean; }// new interface…

前端图片适配不同屏幕方案

预备知识&#xff1a; 设备独立像素,以下图的iphone12 Pro为例&#xff0c;390*844表示的就是设备独立像素&#xff08;DIP&#xff09;,也可以理解为CSS像素 物理像素&#xff08;设备像素&#xff09;&#xff0c;就是屏幕的分辨率&#xff0c;显示屏就是由一个个物理像素…

QT/C++ 远程数据采集上位机+服务器

一、项目介绍&#xff1a; 远程数据采集与传输 课题要求:编写个基于TCP的网络数据获取与传输的应用程序; 该程序具备以下功能: 1)本地端程序够通过串口与下位机(单片机)进行通信&#xff0c;实现数据采集任务 2)本地端程序能将所获取下位机数据进行保存(如csv文本格式等); 3…

初识隧道代理HTTP:理解基础概念的重要性

嗨&#xff0c;小伙伴们&#xff01;如果你对网络世界充满好奇&#xff0c;那么这篇文章就是为你准备的。我们将一起踏上一段奇妙的旅程&#xff0c;探索一个叫做“隧道代理HTTP”的新领域。但在这之前&#xff0c;我们需要先穿上“基础概念”的防护服&#xff0c;以免被这个复…

axios配置代理

ChatGPT&#xff08;3.5/4.0&#xff09;国内镜像&#xff1a;https://www.atalk-ai.com/ 在Node.js中&#xff0c;你可以使用axios库来发送HTTP请求&#xff0c;并且可以配置它来使用代理服务器。以下是如何配置axios以通过位于127.0.0.1:15236的代理服务器发送请求的例子&am…

MR实战:实现数据去重

文章目录 一、实战概述二、提出任务三、完成任务&#xff08;一&#xff09;准备数据文件1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录 &#xff08;二&#xff09;实现步骤1、Map阶段实现&#xff08;1&#xff09;创建Maven项目&#xff08;2&#xff09;添加相关依赖…

一语道破爬虫,来揭开爬虫面纱

目录 一、爬虫&#xff08;网络蜘蛛(Spider)&#xff09; 1.1、是什么&#xff1a; 1.2、学习的原因 1.3、用在地方&#xff1a; 1.4、是否合法&#xff1a; 1.5、后果 案例&#xff1a; 二、应用领域 三、Robots协议 四、抓包 4.1、浏览器抓包 4.2、抓包工具 常见…