code: function formatArguments (userArgs, defaultArgs) {
    return defaultArgs.map((input, index) => {
      var typedArg = {}
  
      // if there is a user input at a certain index, create a uniform for this variable so that the value is passed in on each render pass
      // to do (possibly): check whether this is a function in order to only use uniforms when needed
  
      counter.increment()
      typedArg.name = input.name + counter.get()
      typedArg.isUniform = true
  
      if (userArgs.length > index) {
      //  console.log("arg", userArgs[index])
        typedArg.value = userArgs[index]
        // if argument passed in contains transform property, i.e. is of type generator, do not add uniform
        if (userArgs[index].transform) typedArg.isUniform = false
  
        if (typeof userArgs[index] === 'function') {
          typedArg.value = (context, props, batchId) => (userArgs[index](props))
        } else if (userArgs[index].constructor === Array) {
        //  console.log("is Array")
          typedArg.value = (context, props, batchId) => seq(userArgs[index])(props)
        }
      } else {
        // use default value for argument
        typedArg.value = input.default
      }
      // if input is a texture, set unique name for uniform
      if (input.type === 'texture') {
        // typedArg.tex = typedArg.value
        var x = typedArg.value
        typedArg.value = () => (x.getTexture())
      } else {
        // if passing in a texture reference, when function asks for vec4, convert to vec4
        if (typedArg.value.getTexture && input.type === 'vec4') {
          var x1 = typedArg.value
          typedArg.value = src(x1)
          typedArg.isUniform = false
        }
      }
      typedArg.type = input.type
      return typedArg
    })
  }
docs: when possible, reformats arguments to be the correct type creates unique names for variables requiring a uniform to be passed in (i.e. a texture) returns an object that contains the type and value of each argument to do: add much more type checking, validation, and transformation to this part