Blender has something called "smooth shading", or "mesh smoothing." As you can see the two meshes on the left are flat shaded and their smooth shaded versions are on the right:

Smooth shading gives low poly cubes the impression that they are rounded.
Is there a way to do this in Godot?
I tried playing with diffuse modes but they all had a hard edge to them.

Use Edge Split modifier instead of the Normals Auto Smooth Object Data Property and apply the modifier. Congrats you now have split normals in an exportable form.

    Megalomaniak
    Thank you for the response! I solved my problem by simply enabling smooth shading in blender and then those changes translated to Godot on export.
    I made the false assumption that shading was separate from the mesh. I guess shading is a property of the mesh?
    Can anyone explain what that property is? and how it works?
    Thanks!

      Smooth shading is just the way the normals are exported (normals are the "direction" of the polygon face, but don't have to match the vertex). Normals are exported when you export the mesh.

      itgiawa Thank you for the response! I solved my problem by simply enabling smooth shading in blender and then those changes translated to Godot on export.
      I made the false assumption that shading was separate from the mesh. I guess shading is a property of the mesh?
      Can anyone explain what that property is? and how it works?
      Thanks!

      What @cybereality said but to add more context, yes you need to shade smooth the mesh, because the mesh can either be shaded completely flat where all normals are split or completely smooth where all adjacent faces corner vertex normals are merge(along with the vertices being merged too) that's it. From there on to have selective splits you actually have to separate/split the vertices/edges. That is modify the actual geometry itself.

      Each DCC be it blender or maya or what have you might offer novel solutions to do custom data for splitting normals but being novel solutions they aren't really exportable to other applications. Not without some further custom handling on the importer side in the other application. And game engines being optimized for performance many usually don't support such novel solutions at all. So handling it via direct geometry manipulation is the way to go.

      For further info see http://wiki.polycount.com/wiki/VertexNormal