ShadeSH9 always zero

I’m trying to write a per-pixel cel shader that uses ambient light. In my ForwardBase pass fragment shader I do

final.rgb += ShadeSH9(half4(UnityObjectToWorldNormal(f.normal), 1));

but whenever I disable all light except ambient in the scene, everything is drawn black. Everything in my scene uses my shader, and the lighting setup is a skybox with a sun directional light, and nothing else. I also tried to multiply instead of add in the line above and the result was black, so the ShadeSH9 call returns zero. The ambient intensity varies in script but is never zero. Any ideas what I could be doing wrong here?

Something I just found out as well: if you haven’t got Tags { "LightMode" = "ForwardBase" } at the beginning of your pass (before CGPROGRAM), ShadeSH9 will return zero.

I think I know! the ShadeSH9 can only sample a skybox is it is baked! try baking the scene and see if the ShadeSH9 picks up something