As a foreigner living in the US, I've grown acustomed to the 10-15% tip for OK service, and on rare occasions, less (10% or less) for subpar service, more (15-20%) for excellent service. Excellent service can mean doing emergency fixes on my dive equipment, making extra effort to locate the critter I want to photograph, loaning me a back-up when mine fails etc; in short, going the extra mile to make my dive more enjoyable. I won a free trip on Nekton a few years ago and tipped over 20% the cost of the trip because serice was excellent and the ship was only half-full (less tips, but more room for everyone else). I also extend this to trips to Mexico and the Caribbean as there are so many Americans at these places, it has become the norm to tip at the same level. I usually prepare a large stash of $1s and $5 bills for use as tips on these trips for the porter, waiter, bartender, cab driver and DM etc. However I would be angry if they charge me beforehand, before i experience "the service".
That said, I do have some reservations tipping at this level in the Indian Ocean/Asia region, as tipping is not always expected, particularly in rural areas. It also depends on how much the service personnel make and I'll still tip, but lesser, like 5%. On a dive trip to Bali, I was the only diver to give the DM $5 for a US$80 boat dive. My fellow divers (from India and Netherlands) did not tip.
Ultimately, tipping can reflect how one has enjoyed the trip, or how badly one thinks the service person needs the tip, one's economic abilities and how stingy/generous one is, so tip the appropriate amount you deem is reasonable.