How are the handles rendered, technically.

I’d like to replicate the rendering technique of the editor handles (specifically for translation, the 3 arrows) to have handles at runtime. I realize we can’t currently do this with the Handles class as it’s not exposed at runtime in the UnityEngine assembly. The functionality I’m observing is as follows:

  1. The translation arrows are lit, as in, shaded.
  2. The translation arrows are rendered on top of everything else, as if they’re the last thing rendered.
  3. The translation arrows never seem to change size, regardless of camera zooming in/out.

How can I best replicate this rendering technique?

thanks!

In the absence of an official answer, I was able to come up with the following surface shader that demonstrates the desired behavior:

Shader "Custom/Handles_Shader" {
	Properties {
		_MainColor ("Main Color", Color) = (1, 1, 1, 1)
	}
	SubShader {
		Tags { "RenderType"="Transparent" "Queue"="Overlay" }
		LOD 200
		ZTest Always

		CGPROGRAM
		#pragma surface surf Lambert

		struct Input {
			float4 color : COLOR;
		};
		float4 _MainColor;
		void surf (Input IN, inout SurfaceOutput o) {
			o.Albedo = _MainColor.rgb;
		}
		ENDCG
	} 
	FallBack "Diffuse"
}