function buildUniformMap(customShader) {
  const uniforms = customShader.uniforms;
  const uniformMap = {};
  for (const uniformName in uniforms) {
    if (uniforms.hasOwnProperty(uniformName)) {
      const uniform = uniforms[uniformName];
      const type = uniform.type;
      //>>includeStart('debug', pragmas.debug);
      if (type === UniformType.SAMPLER_CUBE) {
        throw new DeveloperError(
          "CustomShader does not support samplerCube uniforms",
        );
      }
      //>>includeEnd('debug');

      if (type === UniformType.SAMPLER_2D) {
        customShader._textureManager.loadTexture2D(uniformName, uniform.value);
        uniformMap[uniformName] = createUniformTexture2DFunction(
          customShader,
          uniformName,
        );
      } else {
        uniformMap[uniformName] = createUniformFunction(
          customShader,
          uniformName,
        );
      }
    }
  }
  return uniformMap;
}
A collection of variables used in <code>fragmentShaderText</code>. This
is used only for optimizations in {@link CustomShaderPipelineStage}.
@type {FragmentVariableSets}
@private