This is right way, it produce right result
Now, I want to use half vector to do same thing, It produce a pure black result
I found the problem, halfDir was a float value, it should be float3. omg