unity shaderGraph实例-扫描效果

文章目录

效果展示

整体结构

各区域内容

区域1

用场景深度减去顶点的View空间的视野深度(Z值),这里Z值需要乘-1是因为从相机看到的物体顶点的视野深度为-1,而场景深度是正值,所以需要乘-1让两者都为正。

这一步的意义是,用场景中的深度减去sphere的视野深度,当sphere与场景的物体接近时,这个差将会非常接近0,如下图

View空间类似于屏幕坐标,在屏幕正中心永远是(0,0,0),向左为X正,向上为Y正,向摄像机镜头内部为Z正。

区域2

可以用来扩展或缩小范围

区域3

将值钳制在0-1,并四舍五入,这样可以得到非常锐利的扫描边缘,如果不四舍五入则会得到渐变的效果

区域4

用1减去之前的值,目的是反转黑白色,如下

区域5

给白线上一个颜色

区域6

输出颜色,用黑色区域当透明通道

GraphSetttings

改成透明的

注意事项

需要确保相机开启了深度纹理

使用方法

我们可以通过缩放shpere来调节扫描

csharp 复制代码
 using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScannerController : MonoBehaviour
{
    public float speed = 10;
    public float delay_destory_time=5;
    private void Start()
    {
        Destory_Object();
    }
    void Update()
    {
        Vector3 vectorMesh = transform.localScale;
        float growing = this.speed * Time.deltaTime;
        transform.localScale = new Vector3(vectorMesh.x+growing,vectorMesh.y+growing,vectorMesh.z+growing);
    }
    private void Destory_Object()
    {
        Destroy(gameObject,delay_destory_time);
    }
}
相关推荐
4 小时前
Unity开发中常用的洗牌算法
java·算法·unity·游戏引擎·游戏开发
马特说7 小时前
Unity VR手术模拟系统架构分析与数据流设计
unity·系统架构·vr
心前阳光1 天前
Unity WebGL文本输入
unity·游戏引擎·webgl
天涯过客TYGK1 天前
unity A星寻路
unity·游戏引擎
KhalilRuan1 天前
Unity Demo——3D平台跳跃游戏笔记
笔记·游戏·unity·游戏引擎
ttod_qzstudio2 天前
Unity中使用EzySlice实现模型切割与UV控制完全指南
unity
南無忘码至尊2 天前
Unity 实现与 Ollama API 交互的实时流式响应处理
unity·游戏引擎·交互
平行云2 天前
如何实现UE程序大并发多集群的像素流部署
unity·ue5·图形渲染
向宇it3 天前
【unity小技巧】在 Unity 中将 2D 精灵添加到 3D 游戏中,并实现阴影投射效果,实现类《八分旅人》《饥荒》等等的2.5D游戏效果
游戏·3d·unity·编辑器·游戏引擎·材质
向宇it3 天前
Unity Universal Render Pipeline/Lit光照材质介绍
游戏·unity·c#·游戏引擎·材质