Unity 流光shader的思路

news2024/9/22 1:05:02

先看一下直线方程:

1.x+0.5y=0:

2.x+0.5y=20:

 3.由上面的函数图像可以看出 z=x+ky (k是常量),表示所有斜率为k的直线集合,z是直线在x轴的截距,每个z的取值都确定一条唯一的斜率为k的直线。

4.那么给z一个取值范围就可以画出一条斜的条纹,下面我们根据这个思路,用shader在图片上画一条静态的条纹光线:

float _Speed; 
float _Width; 
float _Angle; 	//光的倾斜角度
float _Intensity;  //光的强度
float4 _LightColor; //光的颜色

fixed4 frag (v2f i) : SV_Target
{
	fixed4 col = tex2D(_MainTex, i.uv);
	float z = i.uv.x + i.uv.y * _Angle;
	if(z>0.6&& z<0.8){
		float3 target = _LightColor.rgb + col.rgb;
		col.rgb = lerp(col.rgb, target, _Intensity);
	}
	
	return col;
}

 效果如下:

 让光线动起来就简单了只需要让z随着时间不断增加或减少,完整代码如下:

Shader "Unlit/liuguang"
{
	Properties
	{
		_MainTex ("Texture", 2D) = "white" {}
		
		// 速度 默认左->右
		_Speed ("Speed", range(-2, 2)) = 1.04
		
		// 宽度
		_Width ("Width", range(1, 10)) = 5.83

		// 角度
		_Angle ("Angle", range(-1, 1)) = 0.33

		// 亮度
		_Intensity ("Intensity", range(0, 1)) = 0.51

		_LightColor ("LightColor", Color) = (1,1,1,1)

	}
	SubShader
	{
		Tags { "RenderType"="Opaque" }
		LOD 100

		Pass
		{
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag
			
			#include "UnityCG.cginc"

			struct appdata
			{
				float4 vertex : POSITION;
				float2 uv : TEXCOORD0;
			};

			struct v2f
			{
				float2 uv : TEXCOORD0;
				float4 vertex : SV_POSITION;
			};

			sampler2D _MainTex;
			
			v2f vert (appdata v)
			{
				v2f o;
				o.vertex = UnityObjectToClipPos(v.vertex);
				o.uv = v.uv;
				return o;
			}
			
			float _Speed; 
			float _Width; 
			float _Angle; 	//光的倾斜角度
			float _Intensity;  //光的强度
			float4 _LightColor; //光的颜色
			fixed4 frag (v2f i) : SV_Target
			{
				fixed4 col = tex2D(_MainTex, i.uv);
				float z = i.uv.x + i.uv.y * _Angle;
				//z + _Time.w * _Speed 可以修改光流动方向,也可以通过_Speed的正负改变
				float flowX = sin(z - _Time.w * _Speed);
				if(flowX>0.1&& flowX<0.1+_Width*0.1){
					float3 target = _LightColor.rgb + col.rgb;
					col.rgb = lerp(col.rgb, target, _Intensity);
				}
				
				return col;
			}
			ENDCG
		}
	}
}

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

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

相关文章

vulnhub系列:devguru

vulnhub系列&#xff1a;devguru 靶机下载 一、信息收集 nmap扫描存活&#xff0c;根据mac地址寻找IP nmap 192.168.23.0/24nmap扫描端口&#xff0c;开放端口&#xff1a;22、80、8585 nmap 192.168.23.147 -p- -sV -Pn -O访问80端口 dirb目录扫描&#xff0c;存在 git 源…

c shell 脚本学习使用

1.cd /进入该目录等 2.rm -rf filename 删除文件 3、ctrl allt 打开终端窗口 4、ls 查看该路径下的文件 5 mkdir filename 创建文件夹 6、sudo chmod 777 filename 给予权限 首先对于vcs而言&#xff0c;建立其脚本有以下几个步骤: 1、setup synopsys_sim.setu…

mysql中log

目录 MySQL 日志系统概述 日志类型 日志的作用和重要性 Mermaid图示 1. Undo Log 和 Redo Log 的协同工作图 2. Redo Log 确保持久性的流程图 Undo Log&#xff08;回滚日志&#xff09; 事务的原子性&#xff08;Atomicity&#xff09;保障 事务回滚机制 MVCC&#…

MySQL的初步认识

目录 1、MySQL的定义 2、数据库操作 2.1 创建数据库 2.2 查看数据库 2.3 选中数据库 2.4 删除数据库 3、数据表的操作 3.1 创建表 3.2 查看所有表 3.3 查看指定表结构 3.4 删除表 1、MySQL的定义 数据库技术主要是用来解决数据处理的非数值计算问题&#xff0c;数据处…

植物大战僵尸融合版

1.这是植物大战僵尸融合版 2.百度网盘 链接&#xff1a;https://pan.baidu.com/s/1yUytNeloiQs5tlss16fVOg 提取码&#xff1a;yspa 时间从2024年8月14号开始分享30天&#xff0c;10个人访问&#xff0c;先来先得。

项目管理软件中的项目集是什么?项目集管理哪些人适合学习?

在现今的数字化时代&#xff0c;项目管理软件已经成为企业高效运作不可或缺的工具。其中&#xff0c;项目集这一概念在项目管理领域内越来越受到重视。那么&#xff0c;项目管理软件中的项目集究竟是什么呢&#xff1f;它又适合哪些人进行学习和应用呢&#xff1f; 项目、大项目…

生信技能56 - 去除重复BAM文件的窗口reads计数方法

1. 输入去除重复的BAM文件 一般采用BWA MEM比对到参考基因组,对得到的BAM文件去除PCR重复,将去除重复的BAM文件作为窗口reads计数的输入文件。 去除重复方法参考本人文章: 生信软件23 - Samtools和GATK去除PCR重复方法汇总 2. 窗口文件制作 左到右列分别为: 染色体名…

RCE-无字母数字webshell命令执行

目录 1.源码 2.题目解析 3.利用方法 3.1 PHP7下如何实现 3.2PHP5下如何实现 3.2.1 shell下可以利用. 来执行任意脚本 3.2.2 Linux文件名支持用glob通配符代替 1.题目源码 <?php if(isset($_GET[code])){$code $_GET[code];if(strlen($code)>35){die(&q…

pytorch 3 计算图

计算图结构 分析&#xff1a; 起始节点 ab 5 - 3ac 2b 3d 5b 6e 7c d^2f 2e最终输出 g 3f - o&#xff08;其中 o 是另一个输入&#xff09; 前向传播 前向传播按照上述顺序计算每个节点的值。 反向传播过程 反向传播的目标是计算损失函数&#xff08;这里假设为…

看demo学算法之 线性回归模型

嗨&#xff01;今天我们来聊聊如何用Python构建一个简单的线性回归模型。这个过程就像给数据配对舞一样&#xff0c;让它们在舞池里找到最佳位置。准备好了吗&#xff1f;让我们开始吧&#xff01;&#x1f680; 第一步&#xff1a;数据准备 首先&#xff0c;我们要准备一些数…

基因家族Motif 分析

一、名词解释 Motif分析是一种在生物信息学和计算生物学中广泛应用的技术&#xff0c;用于识别DNA、RNA或蛋白质序列中具有生物学功能的短保守序列模式&#xff08;motif&#xff09;。这些motif通常与特定的生物学功能相关&#xff0c;如DNA中的转录因子结合位点、RNA中的剪接…

vue项目名修改、webstorm和idea创建的项目重命名、重构项目、修改项目名称

一、需求 就是创建了一个项目&#xff0c;后期需要重命名&#xff0c;怎么办&#xff1f;----> 直接修改&#xff1f;肯定不行&#xff0c;因为里面有些配置也需要修改&#xff0c;假如你只改文件夹名称的话&#xff0c;里面配置都没修改&#xff0c;后期可能会出问题。 二…

专栏十七:如何选择你的单细胞亚群的分辨率--chooseR

好久没更,没想到还是有小伙伴订阅,那就更一个最近看到的问题 1.缘起 是因为在文章Single-cell RNA sequencing and spatial transcriptomics reveal cancer-associated fibroblasts in glioblastoma with protumoral effects(https://doi.org/10.1172/JCI147087.)中看到 也…

机械行业数字化生产供应链产品解决方案(三)

在机械行业数字化生产供应链产品解决方案中&#xff0c;通过融合物联网&#xff08;IoT&#xff09;技术、数据分析平台与智能自动化系统&#xff0c;实现生产设备和供应链的全方位数字化管理&#xff0c;能够实时监控生产过程、预测维护需求并优化生产调度&#xff0c;同时利用…

FPGA资源评估

FPGA资源评估 文章目录 FPGA资源评估前言一、资源评估1.1 资源有哪些1.2 资源统计 二、 FPGA 的基本结构三、 更为复杂的 FPGA 架构 前言 一、资源评估 大家在项目中一般会要遇到需要资源评估的情况&#xff0c;例如立了新项目&#xff0c;前期需要确定使用什么FPGA片子&…

06 集合

1.集合类的体系结构 接口:Colltion(单列) List(可重复) Set(不可重复) Map(双列) 实现类: ArrayList,LinkedList HashSet,TreeSet HashMap 2. Collection集合 Collection集合概述 1.是单列集合的顶层接口 2.JDK不提供该接口的任何直接实现,提供具体的子接口(Set和List)实…

Leetcode JAVA刷刷站(11)盛最多水的容器

一、题目概述 二、思路方向 这个问题是经典的“盛最多水的容器”问题&#xff0c;通常使用双指针法来解决。基本思路是&#xff0c;我们初始化两个指针&#xff0c;一个指向数组的起始位置&#xff0c;另一个指向数组的末尾位置。然后&#xff0c;我们计算当前两个指针所指向…

工业智能网关在汽车制造企业的应用价值及功能-天拓四方

随着工业互联网的飞速发展&#xff0c;工业智能网关作为连接物理世界与数字世界的桥梁&#xff0c;正逐渐成为制造业数字化转型的核心组件。本文将以一家汽车制造企业的实际使用案例为蓝本&#xff0c;深入解析工业智能网关在实际应用中的价值、功能及其实操性。 一、背景与挑…

Java语言程序设计——篇十三(1)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f333;&#x1f333;&…

Leetcod编程基础0到1-基础实现内容(个人解法)(笔记)

以下为个人解法&#xff0c;欢迎提供不同思路 1768. 交替合并字符串 题目&#xff1a;给你两个字符串 word1 和 word2 。请你从 word1 开始&#xff0c;通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长&#xff0c;就将多出来的字母追加到合并后字符串的末尾&…