I am tring to use half vector to calculate highlight, but it's wrong result, I can't find what's wro

This is right way, it produce right result
7080700--842503--upload_2021-4-27_10-20-24.png

Now, I want to use half vector to do same thing, It produce a pure black result
7080700--842509--upload_2021-4-27_10-21-52.png

I found the problem, halfDir was a float value, it should be float3. omg