[Shader] normal vector and model matrix inverse

Hi guys !! I am learning “Specular Reflection” shader
I got confused about this problem

o.normalDir = normalize(mul(float4(i.normal, 0.0), unity_WorldToObject).xyz);

this is exactly what it have to be (theory)

but when i fixed it like this !!

o.normalDir = normalize(i.normal);


The 2nd one has to be wrong !!

Any answers for this ??? Thank for reading my question !!

Full shader code

answer.unity3d.com was really quiet as usual …

this is my answer - stackoverflow

p/s: support Dan guys !! awesome channel 3