工作原因,又把Unity3D捡起来了,需要实现一个深度相机。网上查了查资料,整理如下。
参考:http://williamchyr.com/2013/11/unity-shaders-depth-and-normal-textures/
我的代码在:
https://github.com/NianLi71/Camera-Util-Unity3D/tree/master/DepthCamera
一、如下建立场景,做一排cube放入一个CubeRow中。放好MainCamera位置,然后复制出DepthCamera,这样两个相机的位置视角一致,方便后续调试。
新建一个shader,参考链接中的地址,输入代码:
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "Custom/DepthGrayscale" {
SubShader {
Tags { "RenderType"="Opaque" }
Pass{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _CameraDepthTexture;
struct v2f {
float4 pos : SV_POSITION;
float4 scrPos:TEXCOORD1;
};