Scrub the grapefruit and blood oranges with warm soapy water to remove any excess wax, then dry the fruit. Put the sugar into a medium bowl and zest the grapefruit and blood oranges directly into the sugar. Use your fingers to rub the zest into the sugar until evenly distributed and fragrant.
Supreme the grapefruit and oranges: Cut the tops and bottoms off of all the fruits, then cut the white pith away from the outside of the fruit. Over a bowl, carefully cut the wedges of fruit away from the membrane, letting the fruit and juices fall into the bowl. Remove any seeds that have fallen in and gently break up the fruit into 1/2-inch pieces.
Sift the flour, baking soda, and salt together in a bowl. In the bowl of a stand mixer fitted with the paddle attachment, or in a large bowl with an electric mixer, mix the butter on medium speed for about 2 minutes. Add half of the sugar and zest mixture and turn the mixer up to medium high. Mix for 2 minutes, then add the remaining sugar and mix for 4 minutes, making sure to scrape down the bottom and sides of the bowl with a rubber spatula periodically. The butter and sugar should be very light, fluffy, and fragrant.
Add the eggs one at a time, mixing for about 30 seconds after each addition. Periodically stop the mixer and scrape the bottom and sides of the bowl to ensure even mixing.
On low speed, add the sour cream (and vanilla, if using) followed by the flour mixture, and mix until just combined. Remove the bowl from the mixer and gently fold in the fruit segments and juices. Pour the batter into the prepared pan and tap the pan lightly on the counter to remove any large air bubbles.
Bake the cake until it is golden and a cake tester inserted in the center comes out clean, 60 to 75 minutes, depending on the pan. Let the cake cool in the pan for 20 minutes, then carefully unmold it onto a rack to cool a bit more before glazing.