本文实例为大家分享了Unity3D Shader实现扫描显示的具体代码,供大家参考,具体内容如下
通过Shader实现,从左向右的扫描显示,可自定义扫描颜色、宽度、速度。
效果图如下
编辑器界面如下
Shader源码如下
Shader "XM/ScanEffect" { Properties { _MainTex("Main Tex", 2D) = "white"{} _lineColor("Line Color", Color) = (0,0,0,0) _lineWidth("Line width", Range(0, 1.0)) = 0.1 _rangeX("Range X", Range(0,1.0)) = 1.0 } SubShader { Tags { "Queue" = "Transparent" } ZWrite Off Blend SrcAlpha OneMinusSrcAlpha Cull back Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "Lighting.cginc" sampler2D _MainTex; float4 _MainTex_ST; float4 _lineColor; float _lineWidth; float _rangeX; struct a2v { float4 vertex : POSITION; float4 texcoord : TEXCOORD0; }; struct v2f { float4 pos : SV_POSITION; float2 uv : TEXCOORD0; }; v2f vert(a2v v) { v2f o; o.pos = mul(UNITY_MATRIX_MVP, v.vertex); o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); return o; } fixed4 frag(v2f i) : SV_TARGET { fixed4 col = tex2D(_MainTex, i.uv); if(i.uv.x > _rangeX) { clip(-1); } else if (i.uv.x > _rangeX - _lineWidth) { float offsetX = i.uv.x - _rangeX +_lineWidth; fixed xAlpha = offsetX / _lineWidth; col = col * (1 - xAlpha) + _lineColor * xAlpha; } return col; } ENDCG } } FallBack "Diffuse" }
代码调用如下
using UnityEngine; using System.Collections; public class ScanEffect : MonoBehaviour { //默认扫描线的宽 [Range(0,1)] public float _defaultLineW = 0.2f; //扫描的速度 [Range(0, 1)] public float _showSpeed = 0.02f; private MeshRenderer _render; private void Awake() { _render = GetComponent<MeshRenderer>(); SetX(0); SetLineWidth(0); } public void SetLineWidth(float val) { _render.material.SetFloat("_lineWidth", val); } public void SetX(float val) { _render.material.SetFloat("_rangeX", val); } public void Show() { StopCoroutine("Showing"); StartCoroutine("Showing"); } public void Hide() { StopCoroutine("Showing"); SetX(0); SetLineWidth(0); } private IEnumerator Showing() { float deltaX = 0; float deltaWidth = _defaultLineW; SetX(deltaX); SetLineWidth(deltaWidth); while (true) { if (deltaX != 1) { deltaX = Mathf.Clamp01(deltaX + _showSpeed); SetX(deltaX); } else { if (deltaWidth != 0) { deltaWidth = Mathf.Clamp01(deltaWidth - _showSpeed); SetLineWidth(deltaWidth); } else { break; } } yield return new WaitForEndOfFrame(); } } public void OnGUI() { if (GUILayout.Button("Show")) { Show(); } if (GUILayout.Button("Hide")) { Hide(); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍Unity3D Shader实现扫描显示效果(2),包括了Unity3D Shader实现扫描显示效果(2)的使用技巧和注意事项,需要的朋友参考一下 上一篇使用的方式是对UV进行剪裁,如果用于模型的话,会出现一些问题。本篇使用的方式是对模型进行模型空间的剪裁,可设置剪裁方向。效果如下: 设置界面如下: mode用于设置剪裁方向。 clip用于设置剪裁值。 shader实现如下: 以上
本文向大家介绍Android实现支付宝AR扫描动画效果,包括了Android实现支付宝AR扫描动画效果的使用技巧和注意事项,需要的朋友参考一下 支付宝AR扫描效果动画实现,具体内容如下 之前一个网友说想要一个支付宝扫描动画的效果demo,所以又花了点时间做了下这个东西,先看效果图 说一下实现的思路,如图中最外围的蓝色的是用两个相距180°的圆弧实现的,再往里又是两个红色的圆弧再往里面是一个红色的圆
本文向大家介绍Django实现分页显示效果,包括了Django实现分页显示效果的使用技巧和注意事项,需要的朋友参考一下 Django中提供了一个类Paginator专门用来管理和处理分页数据,所以我们在使用之前先导入好相应的类,,另外这里我们也导入了待会会用到的处理异常的两个类 EmptyPage和PageNotAnInteger: 接着编写好视图函数test: 接下来我们完成前端页面的逻辑,这里
本文向大家介绍Android仿微信雷达扫描效果的实现方法,包括了Android仿微信雷达扫描效果的实现方法的使用技巧和注意事项,需要的朋友参考一下 本文主要给大家介绍的是关于Android实现微信雷达扫描效果的相关内容,分享出来供大家参考学习,下面来看看详细的介绍: 废话不多说 先上图(用AS录制的 转换工具不是很好 所以看得效果不是很好) 效果图 示例代码 Activity 代码 Activit
实时扫描可根据 Burp 的子工具中的请求和响应自动执行一些扫描操作。 您可以使用实时扫描来审计漏洞, 或是吧观察到的资源添加到 Burp 的 Target 工具的站点地图(Site map) 实时扫描配置 实时扫描需要配置以下内容才可以进行使用: 工具范围 - 您可以选择要检查其流量的工具,以选择由实时扫描处理的项目。 URL范围 - 您可以根据URL来定义实时扫描处理的项目。 您可以选择包含所
本文向大家介绍python实现扫描日志关键字的示例,包括了python实现扫描日志关键字的示例的使用技巧和注意事项,需要的朋友参考一下 我们在压力测试过程会收集到很多log,怎样快速从中找到有用信息呢?让python脚本帮我们做这部分工作吧! 废话不说,上代码 环境:win10 + python2.7.14 countTime.py 关键字及被扫描的日志路径信息,记录到文件中,以逗号+空格隔开,如