function getGlslComputeSt(batchTable) {
  const stride = batchTable._stride;

  // GLSL batchId is zero-based: [0, numberOfInstances - 1]
  if (batchTable._textureDimensions.y === 1) {
    return (
      `${
        "uniform vec4 batchTextureStep; \n" +
        "vec2 computeSt(float batchId) \n" +
        "{ \n" +
        "    float stepX = batchTextureStep.x; \n" +
        "    float centerX = batchTextureStep.y; \n" +
        "    float numberOfAttributes = float("
      }${stride}); \n` +
      `    return vec2(centerX + (batchId * numberOfAttributes * stepX), 0.5); \n` +
      `} \n`
    );
  }

  return (
    `${
      "uniform vec4 batchTextureStep; \n" +
      "uniform vec2 batchTextureDimensions; \n" +
      "vec2 computeSt(float batchId) \n" +
      "{ \n" +
      "    float stepX = batchTextureStep.x; \n" +
      "    float centerX = batchTextureStep.y; \n" +
      "    float stepY = batchTextureStep.z; \n" +
      "    float centerY = batchTextureStep.w; \n" +
      "    float numberOfAttributes = float("
    }${stride}); \n` +
    `    float xId = mod(batchId * numberOfAttributes, batchTextureDimensions.x); \n` +
    `    float yId = floor(batchId * numberOfAttributes / batchTextureDimensions.x); \n` +
    `    return vec2(centerX + (xId * stepX), centerY + (yId * stepY)); \n` +
    `} \n`
  );
}
Gets a function that will update a uniform map to contain values for looking up values in the batch table.

@returns {BatchTable.updateUniformMapCallback} A callback for updating uniform maps.