You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
1.7 KiB

// Colormaps texture generated using this python script:
// from PIL import Image
// import matplotlib.cm as cm
// import numpy as np
// names = ['viridis', 'plasma', 'inferno', 'jet', 'rainbow', 'coolwarm', 'flag', 'gray']
// def cm_array(m, size=256):
// return cm.ScalarMappable(cmap=getattr(cm, m)).to_rgba(range(size), bytes=True).reshape(1, size, 4)
// Image.fromarray(np.vstack(map(cm_array, names)), mode='RGBA').save('colormaps.png')
// print ','.join(map(lambda x: x.title(), names))
Shader "Custom/Depth" {
Properties {
[PerRendererData]
_MainTex ("MainTex", 2D) = "black" {}
[HideInInspector]
_Colormaps ("Colormaps", 2D) = "" {}
_DepthScale("Depth Multiplier Factor to Meters", float) = 0.001
_MinRange("Min Range(m)", Range(0, 10)) = 0.15
_MaxRange("Max Range(m)", Range(0, 20)) = 10.0
[KeywordEnum(Viridis,Plasma,Inferno,Jet,Rainbow,Coolwarm,Flag,Gray)]
_Colormap("Colormap", Float) = 0
}
SubShader {
Tags { "QUEUE"="Transparent" "IGNOREPROJECTOR"="true" "RenderType"="Transparent" "PreviewType"="Plane" }
Pass {
ZWrite Off
Cull Off
Fog { Mode Off }
CGPROGRAM
#pragma vertex vert_img
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
sampler2D _Colormaps;
float4 _Colormaps_TexelSize;
float _Colormap;
float _MinRange;
float _MaxRange;
float _DepthScale;
half4 frag (v2f_img pix) : SV_Target
{
// [0..1] -> ushort -> meters
float z = tex2D(_MainTex, pix.uv).r * 0xffff * _DepthScale;
z = (z - _MinRange) / (_MaxRange - _MinRange);
if(z <= 0)
return 0;
return tex2D(_Colormaps, float2(z, 1 - (_Colormap + 0.5) * _Colormaps_TexelSize.y));
}
ENDCG
}
}
FallBack Off
}