In Metal, Half Float (half, half2, half3, half4, samplers with half precision, etc) are all fast path and native.
Im working on converting some of the metal lygia code to support half float, and frankly its a ton of violations of DRY.
Im not entirely sure if thats 'wrong', but im getting a lot of code like this:
vade#2
which if you look at the commit history, it a lot of repetitious and error prone work.
I don't have a solution but was curious to open the discussion?