Unity URP世界空间后处理扫描圈效果Shader

实现原理

见这篇文章Unity Shader-深度相关知识总结与效果实现(LinearDepth,Reverse Z,世界坐标重建,软粒子,高度雾,运动模糊,扫描线效果)_puppet_master的专栏-CSDN博客_shader深度

 核心Shader代码


Shader "Universal Render Pipeline/Dejavu/WorldDepthScanCircle"
{Properties{_MainTex("Base (RGB)", 2D) = "white" {}[HDR]_ScanLineColor("_ScanLineColor (default = 1,1,1,1)", color) = (1,1,1,1)_ScanValue("ScanValue", float) = 0_ScanLineWidth("ScanLineWidth", float) = 1_ScanLightStrength("ScanLightStrength", float) = 1}HLSLINCLUDE#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"CBUFFER_START(UnityPerMaterial)float4 _MainTex_ST;half4 _ScanLineColor;float _ScanValue;float _ScanLineWidth;float _ScanLightStrength;float _DistortFactor;float3 _Center;float _Radius;CBUFFER_ENDsampler2D _MainTex;//  sampler2D _ScanTex;TEXTURE2D(_CameraDepthTexture);SAMPLER(sampler_CameraDepthTexture);struct appdata {float4 positionOS : POSITION;float2 uv : TEXCOORD0;UNITY_VERTEX_INPUT_INSTANCE_ID};struct v2f {float4 positionCS : SV_POSITION;float2 uv : TEXCOORD0;float3 viewRayWorld : TEXCOORD1;UNITY_VERTEX_OUTPUT_STEREO};//vertex shaderv2f vert(appdata v){v2f o;UNITY_SETUP_INSTANCE_ID(v);UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);o.positionCS = TransformObjectToHClip(v.positionOS.xyz);float sceneRawDepth = 1;
#if defined(UNITY_REVERSED_Z)sceneRawDepth = 1 - sceneRawDepth;
#endiffloat3 worldPos = ComputeWorldSpacePosition(v.uv, sceneRawDepth, UNITY_MATRIX_I_VP);o.viewRayWorld = worldPos - _WorldSpaceCameraPos.xyz;o.uv = v.uv;return o;}//fragment shaderfloat4 frag(v2f i) : SV_Target{float4 screenCol = tex2D(_MainTex, i.uv);float sceneRawDepth = SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, sampler_CameraDepthTexture, i.uv);float linear01Depth = Linear01Depth(sceneRawDepth, _ZBufferParams);float3 worldPos = _WorldSpaceCameraPos.xyz + (linear01Depth)*i.viewRayWorld;float3 distVector = worldPos - _Center;float distance = sqrt(distVector.x* distVector.x + distVector.z*distVector.z);if (distance > _Radius * _ScanValue && distance < _Radius * _ScanValue + _ScanLineWidth){return screenCol * _ScanLightStrength * _ScanLineColor;}return screenCol;}ENDHLSL//开始SubShaderSubShader{Tags { "RenderPipeline" = "UniversalPipeline"  "RenderType" = "Overlay" "Queue" = "Transparent-499" "DisableBatching" = "True" }LOD 100ZTest Always Cull Off ZWrite OffBlend one OneMinusSrcAlphaPass{Name "ScanLine"//后处理效果一般都是这几个状态//使用上面定义的vertex和fragment shaderHLSLPROGRAM#pragma vertex vert#pragma fragment fragENDHLSL}}//后处理效果一般不给fallback,如果不支持,不显示后处理即可
}

实现效果

工程链接

GitHub - Dejavu0709/StudyForShader 中的DepthScanLine文件夹

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

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

相关文章

前端 重构时需要注意的事项_前端数据层落地实践

源宝导读&#xff1a;天际移动平台经过重构改版&#xff0c;近期正式发布了1.0版本&#xff0c;我们在低代码开发方面做了进一步增强。本文主要围绕前端Model、前端业务逻辑(领域模型)、数据层与视图层解耦(包装器模式)3个方面&#xff0c;给大家分享一下统一数据层方案的设计思…

postconstruct_@PostConstruct注解,你该好好看看

在最近的工作中&#xff0c;get到一个很实用的注解&#xff0c;分享给诸位。痛点做过微信或支付宝支付的童鞋&#xff0c;可能遇到过这种问题&#xff0c;就是填写支付结果回调&#xff0c;就是在支付成功之后&#xff0c;支付宝要根据我们给的地址给我们进行通知&#xff0c;通…

Unity URP运动模糊效果Shader

实现原理 见这篇文章Unity Shader-深度相关知识总结与效果实现&#xff08;LinearDepth&#xff0c;Reverse Z&#xff0c;世界坐标重建&#xff0c;软粒子&#xff0c;高度雾&#xff0c;运动模糊&#xff0c;扫描线效果&#xff09;_puppet_master的专栏-CSDN博客_shader深度…

线性系统的频率响应分析实验报告_动态系统的建模与分析

参考&#xff1a;DR_CAN1.介绍解决一个控制系统的问题&#xff1a;对研究对象进行分析控制器设计测试分析被控对象的物理特性及动态表现&#xff0c;在这个基础上建立数学模型&#xff0c;数学模型可以是动力学模型、热力学模型、流体力学模型和经济学模型等&#xff0c;然后在…

android 生命周期_Android生命周期组件 Lifecycle 源码详解(一)

在上篇文章&#xff1a;warmcheng&#xff1a;Android生命周期组件 Lifecycle 使用详解​zhuanlan.zhihu.com中&#xff0c;我们讲了 Lifecycle 的简单使用&#xff0c;本篇我们来研究下它的源码。 基础环境搭建首先&#xff0c;按照上篇文章所讲&#xff0c;快速搭建环境。添加…

Leetcode1143. 最长公共子序列(c#)

题解&#xff1a;力扣 public class Solution{public int LongestCommonSubsequence(string text1, string text2){int num1 text1.Length;int num2 text2.Length;int[,] dp new int[num1 1, num2 1];for(int i 0; i < num1; i){for(int j 0; j < num2; j){if(t…

telnet到设备里 php_PHP自动生成设备周检修计划

背景维修人员根据设备年度检修计划&#xff0c;然后制订周检修计划(设备年度计划包含设备一年需要维护几次等信息&#xff0c;根据年度计划分解到某一个周去执行)。在这个过程中&#xff0c;大量的excel复制粘贴工作&#xff0c;浪费人力并且容易出错。并且在审核过程中&#x…

通俗讲解:图像傅里叶变换

转自某乎&#xff1a;通俗讲解&#xff1a;图像傅里叶变换 - 知乎 这里我们主要要讲的是二维图像傅里叶变换&#xff0c;但是我们首先来看一张很厉害的一维傅里叶变换动图。 妈耶~厉害哇&#xff01;它把时域和频域解释的很清楚&#xff01; 什么&#xff01;你看不懂&#x…

数据库断线重连_干货分享—Niushop数据库配置

前几期阿牛ger主讲了代码编码规范&#xff0c;整洁规范的代码有利于我们查询和再次开发&#xff0c;也方便我们检测与修复bug&#xff01;这期&#xff0c;阿牛ger主要与大家分享数据库编码配置&#xff1a;数据库配置Niushop数据库配置方式与thinkphp相同&#xff0c;文件路径…

怎么将matlab滤波器系数导出_matlab与FPGA数字信号处理系列(1)——通过matlab工具箱设计FIR数字滤波器...

以99阶FIR低通滤波器为例&#xff0c;学习使用matlab的fdatool工具箱设计滤波器&#xff0c;并将滤波器系数导出到.coe文件&#xff0c;联合Vivado进行FPGA的FIR滤波器设计。本文滤波器参数为&#xff1a;低通FIR滤波器&#xff0c;窗函数设计&#xff0c;采用布莱克曼窗&#…

UGUI 合批原理

转自&#xff1a; UGUI合批原理笔记 - 赵青青 - 博客园 UGUI合批规则图解_时光不染-CSDN博客_ugui合批规则 合批的过程# 网格更新机制# Cavans.SendWillRenderCanvas m_LayoutRebuildQueuem_GraphicRebuildQueueCanvas.BuildBatch 更新所有DrawCall WaitingForJob 子线程网格…

vb.net 设置打印纸张与页边距_装订文档时不想让文字被挡住?在Excel中你可以这样设置打印!...

平时我们在打印文档的时候&#xff0c;通常会把文档左侧的页边距设置的大一点&#xff0c;这样在装订的时候显得美观一点。但如果我们进行双面打印时&#xff0c;文档左右两边的页边距刚好相反&#xff0c;装订时第2页的文本很容易被挡住&#xff0c;这样子反而更难装订了。那么…

c语言 pow优化_c程序代码优化的一些方法

我认为一个好的用于科学计算的程序代码应该&#xff1a;算法漂亮精妙&#xff0c;程序简洁易懂&#xff0c;运算快速&#xff0c;节省内存。这里有的地方是矛盾的&#xff0c;比如简洁vs易懂&#xff0c;时间vs空间&#xff0c;找个平衡吧。目前来看时间要比空间宝贵一些。写程…

CPU Cache原理与示例

转自这篇 CPU Cache&#xff0c;估计也没人看 基础知识 首先&#xff0c;我们都知道现在的 CPU 多核技术&#xff0c;都会有几级缓存&#xff0c;老的 CPU 会有两级内存&#xff08;L1 和 L2&#xff09;&#xff0c;新的CPU会有三级内存&#xff08;L1&#xff0c;L2&#x…

python集合的基本操作不包括_Python基础知识储备,List集合基本操作大盘点

List列表是Python中最基本的数据结构&#xff0c;也是Python中使用频率最高的数据类型&#xff0c;List列表中的元素不需要具有相同类型&#xff0c;使用起来非常方便。现在就来体验一下List列表的基本操作。 list集合基本操作 List的基本操作&#xff08;&#xff0c;copy&…

mysql 恢复root用户_mysql误删root用户恢复方案

linux下误删mysql的root用户&#xff0c;解决方法开始对liunx界面不熟悉&#xff0c;可能由于不小心&#xff0c;把root误删了&#xff0c;怎么办&#xff1f;1. # killall mysqld 干掉所有mysql进程2. # mysqld_safe --skip-grant-tables & 进入mysql安全模式3. 通过…

解决递归栈溢出:尾递归

原文&#xff1a;尾递归_百度百科 尾递归 如果一个函数中所有递归形式的调用都出现在函数的末尾&#xff0c;我们称这个递归函数是尾递归的。当递归调用是整个函数体中最后执行的语句且它的返回值不属于表达式的一部分时&#xff0c;这个递归调用就是尾递归。尾递归函数的特点…

mysql blob hex_数据库的完整备份与恢复 quot;--hex-blobquot; - - ITeye博客

闲言少絮&#xff0c;这个程序利用MySql数据库自带小程序进行数据库的备份和还原。这两个程序分别是&#xff1a;mysql.exe和mysqldump.exe。这两个程序在您安装Mysql数据库的时候会自动安装到数据库的bin目录。这两个程序存在的目录为&#xff1a;C:\Program File\MySQL\MySQL…

python实现多表格合并_用python实现多个表格合并按字段去重

需求 在xx银行项目中遇到的一个需求&#xff0c;是将系统中的8张余额表下载到指定的文件夹中&#xff0c;然后从文件夹中读取这8张余额表&#xff0c;将其合并为一张余额汇总表&#xff0c;在合并的时候要将组合名称重复的多行数据去重&#xff0c;并将其所对应的余额相加 实现…

C# Lambda 和 匿名函数的GC总结

关于Lambda和 匿名函数&#xff0c;闭包的GC&#xff0c;其实可以总结为两条。 为了方便理解&#xff0c;以举例说明&#xff0c;首先我们定义变量&#xff0c;静态变量&#xff0c;以及函数如下&#xff1a; static int staticVariable 0;int variable 0;private void Func…