1
\$\begingroup\$

I have the following earth model, it only has continents:

enter image description here

I wanted to add water but as you can see, some of the continents are now hidden due to the water sphere being more round than continents:

enter image description here

I tried the following:

  • downscale water sphere, kinda works but only when it's significantly smaller, overall result is then unconvincing.
  • change shader and render queue offset, does not do anything actually.

I was hoping that maybe there could be a way to render transparent parts of this earth model as a specific color or eventually another material.

Please do not suggest to use another earth model, I wouldn't have asked the question otherwise :)

\$\endgroup\$

2 Answers 2

2
\$\begingroup\$

You can upscale the earth model, subdivide the larger triangles that end up underwater and make sure the new vertices are all the same distance from the center as the existing vertices.

There are 2 ways to add a vertex, in the middle of a triangle where you replace that triangle with 3 new triangles each bordering one of the edges of the old triangle and with the new vertex.

The other is in the middle of an edge between triangles, those 2 triangles then get replaced by 4 triangles each bordering one of the edges of the old triangles that isn't the one you are splitting and again with the new point as the third.

\$\endgroup\$
4
  • \$\begingroup\$ Seems like a good approach though I don't know how to achieve that ! \$\endgroup\$
    – aybe
    Jan 6, 2020 at 0:04
  • \$\begingroup\$ I added a short description of how you can add extra vertices. \$\endgroup\$ Jan 6, 2020 at 13:28
  • \$\begingroup\$ Thank you, I will give it a try :) \$\endgroup\$
    – aybe
    Jan 7, 2020 at 3:22
  • \$\begingroup\$ I have more or less achieved your idea, in a different way, however :) \$\endgroup\$
    – aybe
    Jan 10, 2020 at 8:37
2
\$\begingroup\$

I have been able to achieve it with very little changes:

  • background water sphere uses material with standard shader and Transparent rendering mode
  • continents-only sphere material render queue is set to Overlay

enter image description here

Update:

I just phong tessellated the whole thing and added this to fix the normals:

#pragma vertex:vert ...
#pragma target 4.6

void vert(inout appdata_full v)
{
    float3 normal = normalize(v.vertex.xyz);
    v.vertex.xyz = 0.5 * normal;
    v.normal = normal;
}

And by making making water sphere infinitesimally smaller and using a standard material configuration, all rendering problems are gone and it looks better :)

enter image description here

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .