- Home /
HDRP shader and code for depth maps
Hi everyone! I'm quite a beginner in unity, and I'm having some issues trying to make my camera render a depth map of a small landscape with some objects in the foreground (for now just cubes) while using HDRP settings. Searching online, I've found some tutorials and documentation that suggest using a custom shader and a script attached to the camera which renders depth. The problem is that these work perfectly only with the built-in render pipeline, not with HDRP. How can I "upgrade" the shader and the scfript to make them work in HDRP? Here is the shader:
Shader "Custom/RenderDepth"
{
Properties
{
_DepthLevel("Depth Level", Range(1, 3)) = 2
}
SubShader
{
UsePass "Legacy Shaders/VertexLit/SHADOWCASTER"
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
uniform sampler2D_float _CameraDepthTexture;
uniform fixed _DepthLevel;
uniform half4 _MainTex_TexelSize;
struct uinput
{
float4 pos : POSITION;
half2 uv : TEXCOORD0;
};
struct uoutput
{
float4 pos : SV_POSITION;
half2 uv : TEXCOORD0;
};
uoutput vert(uinput i)
{
uoutput o;
o.pos = UnityObjectToClipPos(i.pos);
o.uv = MultiplyUV(UNITY_MATRIX_TEXTURE0, i.uv);
return o;
}
fixed4 frag(uoutput o) : COLOR
{
float depth = UNITY_SAMPLE_DEPTH(tex2D(_CameraDepthTexture, o.uv));
depth = pow(Linear01Depth(depth), _DepthLevel);
return depth;
}
ENDCG
}
}
}
And this is the script attached to the camera:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[ExecuteInEditMode]
[RequireComponent(typeof(Camera))]
public class DepthTextureTest : MonoBehaviour
{
public Camera _cam;
public Material mat;
public float DepthLevel = 1.0F;
void Start()
{
_cam.depthTextureMode |= DepthTextureMode.Depth;
}
void Update()
{
}
void OnRenderImage(RenderTexture source, RenderTexture destination)
{
mat.SetFloat("_DepthLevel", DepthLevel);
Graphics.Blit(source, destination, mat);
}
}
From what I understood, HDRP shaders are written differently and include other functions, while the function depthTextureMode doesn't work at all with HDRP. This is an example of the result I would like to obtain:
Thanks in advance