I notcied strange behaviour when I made shader which used model space in calculations. If it was no scale on object it was fine, but when I added scale it went wrong. So I started to experiment with it, I have made simple shader which is applied to sphere and changes it's vertices:

v2f o;

float3 n = normalize(v.vertex.xyz);

float3 vv = n * 10.25;

float4 nv = float4(vv,1);

o.pos = mul(glstate.matrix.mvp, nv);

// normally this is: o.pos = mul(glstate.matrix.mvp, v.vertex);

It getting vertex, computing normal (object is sphere, so it is simple normalize) and scales normal by 10.25 (just a number). Then resulting vertex is multiplied by MVP matrix as usual.

What was strange for me: resulting spehere is not affected by scale value set in the editor, but if I replacing my vertex by the original v.vertex it works fine. So for me it looks like unity scales vertices somewhere before vertex shader and MVP matrix doesn't contain scale.

Am I correct or it is some misunderstanding here? Also if it is so, is it any way to change this. Thanks.