效果展示

下图是Game窗口里面显示的两个不同物体的cutin拼接起来的效果,当然可以自由调整斜切的角度,以及拍摄的内容


原理说明

基本原理还是使用的RenderTexture,将相机照射的内容都拼接起来,相信基本的使用RenderTexture实现左右分屏显示不同的内容,应该是比较简单的了;但是,要实现上面这种不规则的切屏,相对来说就比较困难了。
所谓拼接,本质上还是指我们只想把一个相机照射的内容的某一部分显示出来,另外的部分我们不想展示出来,顺着这个思路,我们可以尝试着用几个面片去遮挡整个屏幕,然后只留下我们不想遮挡的那部分,然后多复制几组面片,分别打开各个部分,最后把所有部分看到的内容拼起来就是一个完整的屏幕了。

比如上面的效果,我就用了两个斜着的面片去挡住了镜头,然后想显示左边,我就把左边的面片隐藏,同理,右边也是一样。
但是使用默认材质是无法这样做出来,摄像机照到的只会是一边白,一边有内容的(相机使用Clear Depth,会叠加最上层和下一层相机照射的内容)

我们希望的是,白的那一部分是“透明的”,也就是我们能够通过这部分去看到下一层的相机照到的内容。
而这只需要我们再Shader里面去开启深度写入,然后剔除掉一部分的深度信息即可,具体Shader如下

Shader "Custom/CutInMask"
{Properties{_Stencial ("Stencial ID", Float) = 100_StencialComp ("Stencial Compression", Float) = 8_StencialOp ("Stencial Operation", Float) = 2}SubShader{Tags{"RenderType" = "Opaque""Queue" = "Geometry-500"}Lighting OffZWrite OnColorMask 0Stencil{Ref[_Stencil]Comp[_StencilComp]Pass[_StencilOp]}Pass{CGPROGRAM#pragma vertex vert#pragma fragment fragfixed4 vert(float4 v : POSITION) : SV_POSITION{return UnityObjectToClipPos(v);}fixed4 frag() : SV_TARGET{return float4(0,0,0,0);}ENDCG   }}
}

这个Shader里面的顶点和片元着色器并不重要,就是最基础的坐标转换和输出颜色(颜色是啥都不重要,因为都会被剔除掉),然后将这个Shader放到一个材质上,就可以在场景中看到效果了。测试场景如下,两个一模一样的遮罩物体,然后一个打开一个,都用相机去照自己想看的物体(两个相机都得是Depth only)

Unity 实现游戏中多相机屏幕CutIn效果相关推荐

  1. Unity制作游戏中的场景

    Unity制作游戏中的场景 1.2.3  场景 在Unity中,场景(Scene)就是游戏开发者制作游戏时,所使用的游戏场景.它是一个三维空间,对应的三维坐标轴分别是X轴.Y轴和Z轴本文选自Unity ...

  2. Unity实现游戏中坦克运动控制(一)

    Unity实现游戏中坦克运动控制(一) 导入模型 控制上下左右移动 导入模型 导入坦克模型资源文件,一般包含fbx格式模型文件和tga格式的贴图文件.一般导入的模型由3dmax制作,与unity中单位 ...

  3. [Unity基础]游戏中的数学

    一.坐标系 1.世界坐标系:使用左手坐标系,即z轴方向跟人眼向前看的方向一致(右手坐标系z轴方向跟人眼向前看的方向相反) 2.本地坐标系 3.屏幕坐标系:左下为原点,右上为屏幕宽高 4.界面坐标系:左 ...

  4. Unity制作游戏中改名系统(第一次改名免费、改名提示、充值获得改名次数等 )

    Unity游戏制作中UI界面名字修改 游戏名称修改 简单粗暴直接上代码 关于充值系统的概念 游戏名称修改 现在网络游戏中名字是标新立异.展示自己独一无二的个性的方式之一,名字越来越烧,操作越来越低,也 ...

  5. Unity - 2D游戏中掉帧严重问题解决

    目的:解决unity2D中游戏掉帧严重问题 这个问题的出现一开始我并不知道什么原因,于是在unity-profiler中寻找答案. 一开始我发现这个问题 然后我在网站上搜索"Animator ...

  6. unity 给图片边缘_Unity Shader 屏幕后效果——边缘检测

    关于屏幕后效果的控制类详细见之前写的另一篇博客: 这篇主要是基于之前的控制类,实现另一种常见的屏幕后效果--边缘检测. 概念和原理部分: 首先,我们需要知道在图形学中经常处理像素的一种操作--卷积. ...

  7. 游戏中实现鼠标拖尾效果

    游戏中使用Trail Renderer这个通过设置参数来实现拖尾效果,通过在update中吧鼠标的点击的路径给怪哉这个得物体. 转载于:https://www.cnblogs.com/qinshuai ...

  8. Unity开发游戏中全面屏手机的屏幕适配

    很多人可能把全面屏跟曲面屏混淆,其实这是两个不同的概念. 一般手机的屏幕纵横比为16:9,如1080x1920.1440x2560等,其比值为1.777777--,全面屏手机出现之前,Android中 ...

  9. unity实现游戏中拍照功能(自动生成小照片)

    之前我写过一篇博客 是关于获取相机的实时渲染画面的 地址 然后这次结合插值等的小技巧实现一个稍微完整的拍照功能 可以看到上边的效果 推荐大家先看上边地址的博客 然后我给给出代码 using Syste ...

最新文章

  1. canvas做一个简单气泡图
  2. c# 调matlab传字符串_C# Matlab 相互调用
  3. Python3算法基础练习:编程100例( 21~ 25)
  4. 时序分析:Kalman滤波(状态空间)
  5. JS,JQuery杂谈
  6. mybatis扩展ResultMap
  7. html无法显示null打开,js出现null错误的原因?
  8. xsd 生成 java 类_如何从Java类生成XSD
  9. shell 调试脚本设置
  10. 正/负相比例放大中压摆率对电路带宽的影响分析
  11. 解决 Web、软件 视频播放黑屏
  12. 随手写的一些好用的功能(不定时更新)
  13. 基于卷积和递归神经网络的物联网流量分类器
  14. 英语手记——持续更新
  15. python isidentifier_【我们一起自学Python】-字符串操作
  16. QT学习(六)——Lamda表达式的使用
  17. Python3 创建文件夹
  18. Allegro教学:关于dangling connection的解释
  19. centos8 安装mysql8(二)
  20. 怎样做一个企业网站建设规划书?

热门文章

  1. android逆向开发工程师需要掌握的技能
  2. 【开发技术】2万字详细介绍Docker 和 web项目的部署监控,docker部署,拉取kafana,prometheus镜像监控
  3. HP路由器和交换机日志分析
  4. ISME:二型糖尿病患者中与牙周炎相关的龈下菌群
  5. 关于网线,你了解多少?
  6. 奔跑的微信,失控的张小龙
  7. labview声音信号采集和分离
  8. android如何编程红外遥控,全志A20[android教程]-红外遥控器调试
  9. 计算机专业硕士学费,2015计算机工程硕士专业学费汇总
  10. win11 超神软件