赞
踩
本篇文章采用模板测试实现多重传送门效果。开发所用Unity版本为2021.3.20f1c1,采用Unity的通用渲染管线(Universal Render Pipeline,URP)进行开发,所以模型资源素材所用材质需要支持URP。
实现原理简介参见:PICO4 传送门效果开发小结之原理篇。
为了便于操作,我们可以直接创建URP 3D项目。
参见:PICO SDK 配置,此处不再赘述。
参见:PICO 视频透视,此处不再赘述。注意:取消勾选URP资产的HDR选项。
可以依据需求创建多个传送门,这里以创建两个为例。
以传送门1为例,可以找一个传送门模型或者特效作为可视参照,在门的两端制作模板测试Shader依附物和Underlay“开洞”Shader依附物。依附物可以采用Unity自带的Quad制作,这里将观看虚拟世界的Quad表示为Quad[See Virtual],将观看真实世界的Quad表示为Quad[See Reality]。
Quad[See Virtual]材质采用模板测试Shader制作,代码如下。
- Shader "MixedReality/StencilTest"
- {
- Properties
- {
- [IntRange] _StencilID ("Stencil ID", Range(0, 255)) = 0
- }
- SubShader
- {
- Tags
- {
- "RenderType"="Opaque"
- "Queue"="Geometry"
- "RenderPipeline"="UniversalPipeline"
- }
-
- Pass
- {
- Blend Zero One
- ZWrite Off
-
- Stencil
- {
- Ref [_StencilID]
- Comp Always
- Pass Replace
- Fail Keep
- }
- }
- }
- }

将Quad[See Virtual]材质的Stencil ID属性修改为1,便于后续进行条件比较。
Quad[See Reality]材质采用Underlay“开洞”Shader制作,代码可参照PICO SDK自带Shader,从以下目录找到。
代码如下。
- Shader "MixedReality/UnderlayHole"
- {
- SubShader
- {
- Tags {"Queue" = "Geometry+1" "RenderType" = "Transparent"}
- LOD 200
-
- Pass
- {
- //Cull Front
- Cull Back
-
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
-
- #include "UnityC

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。