Unity 5 upgrade broke lightmapped shader

Disclaimer: I know little to nothing about shaders.

Hey all, I upgraded a project to Unity 5 that was using a custom shader. Unity has force “upgraded” the shader as well, but now it just renders black. Unity was nice enough to tell me what it did, but I have no idea why it would stop working. I also visited the changes on the Upgrade guide for shaders and didn’t see anything that should affect this one (as far as I know)

It gives me three upgrade notes:

// Upgrade NOTE: commented out 'float4 unity_LightmapST', a built-in variable
// Upgrade NOTE: commented out 'sampler2D unity_Lightmap', a built-in variable
// Upgrade NOTE: replaced tex2D unity_Lightmap with UNITY_SAMPLE_TEX2D

The first two seem obvious and harmless enough. The last one also doesn’t seem to be a big issue. Nevertheless, the shader does not render anything but black anymore. These are the only changes according to Git, so Unity isn’t lying.

Here’s the shader with changes noted in comments. Any help is greatly appreciated.

Shader "CPX_Custom/Mobile/Unlit Lightmapped CG" {
   Properties {
      _MainTex ("Base (RGB)", 2D) = "white" {}
   }
   SubShader {
	  Tags { "RenderType"="Opaque" }
      LOD 100
    
    
      Pass {  
        
         CGPROGRAM
         #include "UnityCG.cginc"
         #pragma vertex vertexPass
		 #pragma fragment pixelPass
         uniform sampler2D _MainTex;
  	   // uniform sampler2D unity_Lightmap; 
         uniform float4 _MainTex_ST;
         // uniform float4 unity_LightmapST;
         struct vertexInput{
         	float4 vertex	:	POSITION;
         	float2 texcoord	: 	TEXCOORD0;
         	float2 texcoord1:	TEXCOORD1;
         };
         struct vertexOutput{
         	float4 pos		:	POSITION;
         	float4 UV		:	TEXCOORD0;
         };
         struct pixelOutput{
         	float4 color	: COLOR0;
         };
         vertexOutput vertexPass(vertexInput input){
            vertexOutput output;
            output.UV.xy = input.texcoord;
            output.UV.zw = input.texcoord1 * unity_LightmapST.xy + unity_LightmapST.zw;
            output.pos = mul(UNITY_MATRIX_MVP,input.vertex);
            return output;
         }
         pixelOutput pixelPass(vertexOutput input){
         	pixelOutput output;
         	float4 color = tex2D(_MainTex, TRANSFORM_TEX(input.UV.xy,_MainTex));
     	// USED TO BE: float4 lightMap = float4(DecodeLightmap(tex2D(unity_Lightmap, input.UV.zw)),1.0);
         	float4 lightMap = float4(DecodeLightmap(UNITY_SAMPLE_TEX2D(unity_Lightmap, input.UV.zw)),1.0);
         	output.color = float4(color.rgb*lightMap.rgb,color.a);
         	return output;          
         }
         ENDCG
      }
   }
   // Fallback "Unlit/Texture"
}

This was a false accusation of the shader. The actual problem was that Unity completely changed its lightmapping process and I didn’t realize that huge change, so we lost our lightmaps.