一、简述
首先通过PICO SDK透视开启接口开启透视;然后通过HLSL 着色器创建材质赋值于球体,并将球体作为主相机的子物体包裹相机,此处着色器包含_InvertedAlpha 和_FadeDirection 两种参数,分别用来控制球体透明度和淡入淡出方向;最后通过脚本来控制着色器的两种参数值。
二、实现过程
1、创建项目
创建Built-in 3D或者URP 3D均可。
2、环境搭建
1)PICO SDK配置
参见:PICO开发者文档
2)MRTK3配置
3)过渡球体创建
在Main Camera下创建Sphere物体包裹相机,删除碰撞体,并创建PassthroughFader材质赋予Sphere。其中,PassthroughFader材质所用Shader如下。
Shader "MixedReality/PassthroughFader"
{
Properties
{
[HideInInspector] _MainTex("Texture", 2D) = "white" {}
_InvertedAlpha("Inverted Alpha", float) = 1
_FadeDirection("Fade Direction", Int) = 4
[HideInInspector] [Enum(UnityEngine.Rendering.CompareFunction)] _ZTest("ZTest", Float) = 4
[HideInInspector] [Enum(UnityEngine.Rendering.BlendOp)] _BlendOpColor("Blend Color", Float) = 2
[HideInInspector] [Enum(UnityEngine.Rendering.BlendOp)] _BlendOpAlpha("Blend Alpha", Float) = 3
}
SubShader
{
Tags
{
"RenderType"="Transparent" "Queue"="Transparent-1"
}
LOD 100
Pass
{
Cull Off
ZTest[_ZTest]
BlendOp[_BlendOpColor], [_BlendOpAlpha]
Blend Zero One, One One
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata {
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
float3 normal : NORMAL;
UNITY_