U3D log Flash shader 效果(标题流光效果)
整理下用到的shader效果,其中用到最多的,或则很大几率在游戏中会用到的,可能是标题的流光效果,
如果用帧动画实现,不仅资源耗费明显,最终效果也没shader来得逼真,废话不多说,直接上代码了(其实也是根据网上shader小改了下得到的):
Shader "Env/LogoFlash"
{
Properties {
//_MainTex ("Base (RGB)", 2D) = "white" {}
_MainTex ("Base (RGB), Alpha (A)", 2D) = "white" {}
_FlashColor ("Flash Color", Color) = (1,1,1,0)
_Angle ("Flash Angle", Range(0, 180)) = 45
_Width ("Flash Width", Range(0, 1)) = 0.2
_LoopTime ("Loop Time", Float) = 1
_Interval ("Time Interval", Float) = 3
// _BeginTime ("Begin Time", Float) = 2
}
SubShader
{
Tags
{
"Queue"="Transparent"
"RenderType"="Transparent"
}
// Blend SrcAlpha OneMinusSrcAlpha
// AlphaTest Greater 0.1
CGPROGRAM
//#pragma surface surf Lambert alpha exclude_path:prepass noforwardadd
#pragma surface surf Lambert alpha
#pragma target 3.0
sampler2D _MainTex;
float4 _FlashColor;
float _Angle;
float _Width;
float _LoopTime;
float _Interval;
// float _BeginTime;
struct Input
{
half2 uv_MainTex;
};
float inFlash(half2 uv)
{
float brightness = 0;
float angleInRad = 0.0174444 * _Angle;
float tanInverseInRad = 1.0 / tan(angleInRad);
// float currentTime = _Time.y - _BeginTime;
float currentTime = _Time.y;
float totalTime = _Interval + _LoopTime;
float currentTurnStartTime = (int)((currentTime / totalTime)) * totalTime;
float currentTurnTimePassed = currentTime - currentTurnStartTime - _Interval;
bool onLeft = (tanInverseInRad > 0);
float xBottomFarLeft = onLeft? 0.0 : tanInverseInRad;
float xBottomFarRight = onLeft? (1.0 + tanInverseInRad) : 1.0;
float percent = currentTurnTimePassed / _LoopTime;
float xBottomRightBound = xBottomFarLeft + percent * (xBottomFarRight - xBottomFarLeft);
float xBottomLeftBound = xBottomRightBound - _Width;
float xProj = uv.x + uv.y * tanInverseInRad;
if(xProj > xBottomLeftBound && xProj < xBottomRightBound)
{
brightness = 1.0 - abs(2.0 * xProj - (xBottomLeftBound + xBottomRightBound)) / _Width;
}
return brightness;
}
void surf (Input IN, inout SurfaceOutput o)
{
float4 texCol = tex2D(_MainTex, IN.uv_MainTex);
float brightness = inFlash(IN.uv_MainTex);
o.Albedo = texCol.rgb + _FlashColor.rgb * brightness;
//o.Alpha = texCol.a;
o.Alpha = texCol.a * brightness;
}
ENDCG
}
FallBack "Unlit/Transparent GrayscaleEffect"
}
U3D log Flash shader 效果(标题流光效果)相关推荐
- 【Shader Graph】流光效果(模型流光)
ShaderGraph的入门知识和基本操作可以参考:[Shader Graph]Shader Graph入门 流光效果的实现原理和shader代码可以参考:[Unity3d Shader]流光效果(模 ...
- 智慧城市炫酷效果、threejs绘制道路、shader实现道路流光效果
一.先看看效果 二.实现方法: 1.数据准备 // 道路的点数据 // 分为内圈,外圈const pointArr = [220, -220, 0,220, 220, 0,
- UnityShader——流光效果
声明:本文为个人笔记,用于学习研究使用非商用,内容为个人研究及综合整理所得,若有违规,请联系,违规必改. UnityShader学习目录 文章目录 UnityShader学习目录 前言 一.实现原理 ...
- Shader实例(流光实现)
Shader实例(流光实现) 流光效果 首先来看一下流光效果.流光效果是一个非常常见的效果,不仅仅是游戏,一些广告之类的也都会有这种效果.流光的原理还是比较简单的:首先就是需要一张流光图,这张流光图的 ...
- Unity Shader学习案例一: 流光效果
Unity Shader Lab新手宝典简单Shader案例一:流光效果 + 相关基础知识说明 Shader "Samples/Light Flow"//shader名称 {Pro ...
- Shader实现城市建筑整体流光效果
城市建筑整体流光效果 在做可视化城市项目的时候,要实现城市整体流光效果,如下图参考: 实现功能参考图: 实现原理 Pixshader中计算每个像素点在世界坐标系中的位置 像素点的世界坐标位置与地图范围 ...
- CocosCreator Shader学习(二):流光效果
流光效果 原理:在以图片左下角为原点的坐标系中, 假设流光就是一条直线(斜截式:y=kx+b),那么只需要把直线和图片所在矩形的交点全部找出来即可. 顶点着色器代码不用修改. 片元着色器代码如下: C ...
- Unity Shader-边缘检测效果(基于颜色,基于深度法线,边缘流光效果,转场效果)
前言 周末通关了一个小游戏,流程很短,6个小时左右就通关,但是游戏的画风,视角,玩法都比较新奇,对了,游戏的名字也很奇特<12 Is Better Than 6>(12比6好是有什么梗吗? ...
- Android流光动画,android开发自定义TextView文本流光效果——滑动解锁
由于项目需求,需要做一个app锁屏页,其中就有一个需要滑动解锁的文字流光效果.我这里通过自定义Textview来实现: @Override protected void onLayout(boolea ...
最新文章
- 彻底厘清真实世界中的分布式系统
- .Net 基础new关键字的用法
- OTA固件升级对于物联网设备的重要性
- 【CV秋季划】模型优化很重要,如何循序渐进地学习好?
- thymeleaf模板引擎
- kaggle(01)-泰坦尼克号问题
- pdf.js使用方法整理,web页面中pdf在线查看,web页面显示pdf文档
- python爬虫实战教程分享 或许你可以看一下这篇文章
- Unity实现IOS原生分享
- js截屏代码_服务端浏览器截屏
- mysqldump方式导出mysql
- 什么样的简历,面试官一看就知道多少水份!!!
- MySQL-第二篇SQL语句基础(1)语句分类及DDL语句
- 文献管理三剑客之noteexpress打不开 cannot find import; dll may be missing corrupt or worng
- ATV 开发 三 DRM技术简介
- 低代码平台开发 python_低组词_低的多音字组词,低是多音字吗,低组词有哪些
- MAC协议微信自动生成带备注固定收款码免挂机监控协议回调
- TwinCAT3 控制器PLC之间EAP通讯3-从机发送方式2
- winpe加载raid_WinPE安装RAID卡驱动的详细教程
- FileSplit cannot be cast Exception