Skip to content

Step 2: From Black Hole to Continent – Creating a base heightmap

While creating fantasy maps procedurally is entirely possible (you can see my method here), I often found myself wanting more artistic control. The generated mountain ranges were good, but they lacked that final touch of realism. My search for a better way led me to the work of Josh Goff.

Josh has perfected a method of creating a rough heightmap in Photoshop, using specialized brushes and clever tricks to build a coherent and stunningly realistic foundation. By incorporating his approach into my own Gaea workflow, I’ve found it adds a whole new level of realism to my maps. This is where our workflows diverge: while I take this heightmap into Gaea, Josh continues his process in Wilbur and Photoshop. His final maps, though different from a Gaea-based output, are absolutely stunning and demonstrate the incredible artistic control his method provides.

If you’re interested in creating high-resolution maps without needing a Gaea license, I highly recommend his full tutorial, which you can findon his Patreon. With his permission, this blog post is based on the initial heightmap creation section of his process.

If you purchase his full tutorial, you will gain access to the asset pack that contains a wide variety of photoshop brushes and swatches. These can also be purchased for a much lower price separately from the tutorial.

If you would rather put in time than money, you can see how to create your own brushes here

Intro

Would you believe that you can go from a simple black circle to a detailed, realistic continent, all within the same project? Over the course of this tutorial, I’ll guide you through my entire map-making process, from building your initial heightmap and simulating erosion to coloring biomes and adding the fine details that bring a world to life.

Here we will be using Photoshop, however for those who prefer open-source software, I’ve included alternative instructions for GIMP wherever the process differs.

This tutorial is designed for both beginners and experts. If you’re familiar with these tools, some steps might seem slow, but this is to ensure everyone has a fair chance to catch up. Let’s begin!

Part 1: Setting the Stage

First, let’s set up our document in Photoshop. For this tutorial, we’ll focus on a single continent, so a square 1:1 canvas is perfect.  Gaea requires a square input, so if you are looking to work on a world map, you will need to crop to a square region down the line. As mention in the overview, the maximum width of a terrain in Gaea is 2,600m. We can represent areas larger than this, but the further away from this value we go, the less realistic our output will be. A continent the size of North America will be fine

I typically match the resolution of my intended Gaea output resolution (at least 8192×8192), but for the sake of speed, you may want to consider a 5,000 x 5,000 pixel canvas. I recommend this as a minimum size for good detail. Set your resolution to 72 DPI for screen use, or 300 DPI if you plan to print your map. Ensure the color mode is RGB.

Settings for new document
Settings for new document

Part 2: Forging the Continent

This experimental technique is perfect if you haven’t yet decided on the final shape of your landmass. If you already have a world drawn, you can skip to Part 4.

  1. Create the Void: In your blank document, create a new layer. Select the Brush Tool (B), choose a default Hard Round Brush, and simply click once to create a large black circle on your blank layer. This humble black hole will be the fabric of our continent.

  2. Shape the Landmass: Now, let’s morph this circle into something more organic. Navigate to the Smudge Tool in the left toolbar (it’s often grouped with the Blur and Sharpen tools). In the brush menu (right-click), select the “Cloud 2” brush from the asset pack you downloaded.

A Note on Brushes: If you don’t have the asset pack, don’t worry! The specific “Cloud 2” brush isn’t essential. Any brush with a noisy, random texture will work well here. The default cloud brushes in both Photoshop and GIMP are a great starting point. The goal is simply to create a varied, natural-looking edge as you smudge.

  1. Adjust Brush Settings: Open the Brush Settings panel (Window > Brush Settings).

    • Check Shape Dynamics.

    • Set Size Jitter to around 30%.

    • Set Angle Jitter to 100%.

    • Check both Flip X Jitter and Flip Y Jitter. These settings randomize the brush tip, preventing repeating patterns and creating a more natural look.

  2. Smudge! Start clicking and dragging the Smudge tool around the edges of your black circle. Push and pull the shape until you have a vague continental outline. Don’t worry about perfect coastlines yet. You can change the brush size by holding Alt + Right-Click and dragging the mouse.

GIMP Alternative: Smudging GIMP’s Smudge Tool works very similarly.

  1. Select the Smudge Tool.

  2. In the Tool Options, set the brush to your desired cloud brush.

  3. Under “Dynamics,” select a preset like “Basic Dynamics” or create a new one.

  4. Click the configuration icon to edit the dynamics. Enable random Jitter for Size and Angle to achieve the same effect as Photoshop’s Shape Dynamics.

  5. Smudge your shape as described above.

Pro-Tip: The Smudge tool can be very resource-intensive and may lag, especially on large documents. Be patient and let it catch up. If it’s too slow, you can also use the Liquify Filter (Filter > Liquify) to push, pull, and bloat the shape into place. The Warp tool in Liquify is your best friend here.

Part 3: Refining the Coastline

Our smudged shape is soft and blurry. Let’s create some sharp, dynamic coastlines.

  1. Add a Threshold Layer: In the Layers panel, click the half-shaded circle icon and add a Threshold adjustment layer. You’ll immediately see the coastlines become hard-edged. Drag the slider in the Threshold histogram to adjust the coastline. This clips the gray tones created by the smudging, allowing you to “eat away” at or “grow” the landmass. Find a position that looks edgy and interesting.

  2. Fix the Jagged Edges: The threshold effect creates pixelated, aliased edges. To fix this:

    • Create a “stamp visible” layer by pressing CTRL+ALT+SHIFT+E (or CMD+OPTION+SHIFT+E on Mac). This merges everything visible onto a new layer.

    • Go to Filter > Filter Gallery > Sketch > Stamp.

    • Set Light/Dark Balance to around 25 and Smoothness to 1. This will clean up the noisy edge while keeping the rough texture.

GIMP Alternative: Threshold and Smoothing

  1. Threshold: The Threshold tool is available under Colors > Threshold. It works just like in Photoshop.

  2. Stamp Visible: GIMP’s equivalent is Layer > New from Visible.

  3. Smoothing the Edge: GIMP doesn’t have a direct “Stamp” filter equivalent. A good method is to use Select > By Color on the white area, grow the selection slightly (Select > Grow by 1-2 pixels), feather it (Select > Feather by 1-2 pixels), and then fill the selection with black on a new layer behind your landmass. This helps smooth out the harsh aliasing.

  1. Isolate the Landmass: Now, we need to get rid of the white ocean.

    • Go to Select > Color Range and use the eyedropper to select the white background. Drag the Fuzziness slider to full to ensure all white is selected.

    • Click OK and press Backspace to delete the white area.

    • Deselect with CTRL+D (or CMD+D).

You now have your final landmass shape on a transparent background. Don’t forget to rename your layers to stay organized!

Part 4: Adding Fine Detail

The continent shape looks good, but a bit bare. Let’s add smaller details like fjords, islets, and craggy headlands.

  1. Use the Pencil Tool: Create a new layer above your landmass. Select the Pencil Tool (it’s often grouped with the Brush tool). We use the pencil because it doesn’t have anti-aliasing, giving us the same hard edge as our coastline.

  2. Add Details: Using the various terrain and mountain brushes from the asset pack, start painting in black to add details.

    • Use mountain stencils to carve out fjords.

    • Use terrain stencils to add small islands or rough headlands.

    • Remember to use the same Shape Dynamics settings as before to keep things random and natural!

Don’t Have the Brushes? If you don’t have access to the asset pack for the terrain and mountain brushes, you can create your own custom brushes from real-world satellite data! It’s a fantastic way to achieve realistic results. I’ve written a detailed tutorial on the process, which you can find here: How to Forge Mountains with Real-World Data.

  1. Merge Down: Once you are happy with the added details, select both the detail layer and your main landmass layer, right-click, and select Merge Layers.

Please, save your project now!

Landmass shape

Part 5: Planning the Peaks

With our final shape, we can plan our mountain ranges. For realism, consider the basics of tectonic plate movement—when two plates collide, one slides under the other, crumpling the ground and creating a mountain range with a steep side and a shallower side. A quick search on YouTube for “how mountains are formed” will give you all the info you need!

  1. Create a Guides Layer: Add a new layer and name it “Guides.”

  2. Create a Clipping Mask: Hold the ALT (or OPTION) key and click on the line between your “Guides” layer and the landmass layer below it. An arrow will appear, indicating a clipping mask. Now, anything you paint on the guides layer will only appear within the landmass shape.

  3. Sketch the Ranges: Choose a Soft Round Brush and a distinguishable color like red. In the top toolbar, turn the brush Flow down to about 6%. Now, begin sketching where your mountains would form. The low flow means that as you brush over areas more, they will become brighter, indicating taller peaks. Vary your brush size to emulate smaller ridges and larger plateaus.

Red mountain guides

Part 6: Building the Heightmap

A heightmap is a grayscale image where black represents the lowest points (sea level) and white represents the highest points (mountain peaks).

  1. Set up the Base:
    • Hide your “Guides” layer for now.
    • Add a solid colour layer beneath your landmass, and pick a colour to represent the sea (this is to give us something other than grey to look at)
    • Duplicate your final landmass layer (CTRL+J).
    • CTRL-click the layer thumbnail to select the landmass shape.
    • Go to Edit > Fill and choose 50% Gray. This neutral gray will be our base elevation. Rename this layer “Terrain Plate.”
  2. Create the Texture Layer:
    • Create a new layer called “Terrain Texture” underneath the “Terrain Plate.” Fill this entire layer with 50% Gray.
    • Add a Layer Mask to the “Terrain Texture” layer.
    • Double-click the layer to open the Layer Styles menu and check Bevel and Emboss. This will give us a “3D” preview of the texture we’re about to paint. Use these settings for a nice preview:
      • Technique: Chisel Soft
      • Depth: 1000%
      • Size: 1px
      • Angle: 135°
  3. Paint the Texture:
    • Select the layer mask of the “Terrain Texture” layer.
    • Using the terrain brushes from the asset pack (with Shape Dynamics on!), begin clicking on the mask with black and white. Black will carve down, and white will build up. Your goal is to create a varied, textured surface across the entire canvas. Avoid leaving any large flat areas of gray.
    • Once done, set the Fill of the “Terrain Texture” layer to 0%. This hides the gray but keeps the 3D Bevel and Emboss effect visible on the “Terrain Plate” layer below it.

Don’t Have the Brushes? If you don’t have access to the asset pack for the terrain and mountain brushes, you can create your own custom brushes from real-world satellite data! It’s a fantastic way to achieve realistic results. I’ve written a detailed tutorial on the process, which you can find here: How to Forge Mountains with Real-World Data. Just make sure to select areas of terrain that don’t have mountains already!

GIMP Alternative: Faux 3D Preview GIMP doesn’t have Bevel and Emboss layer styles. To get a similar live preview:

  1. Work on your grayscale texture on a separate layer.
  2. To preview it in 3D, you can use the Filters > Map > Bump Map filter. Select your texture layer as the “Bump Map” input and apply it to a 50% gray layer to see the result. This isn’t a live preview, but you can run it periodically to check your work.
  1. Shape with Liquify: Select the “Terrain Texture” layer mask and open the Liquify filter. Use the Warp tool to push the texture around, mimicking tectonic movement and making the ground flow with your planned mountain ranges.
  2. Clean Up: Your texture will have spilled into the ocean. To fix this, CTRL-click your landmass layer thumbnail to make a selection, invert it (CTRL+SHIFT+I), select the “Terrain Texture” layer mask, and fill the selection with black.

Part 7: Adjusting Regional Elevations

Before placing our mountains, we’ll adjust the underlying terrain to create a more dramatic sense of elevation. This involves lowering the lowlands and then uplifting the highlands where our mountains will sit.

  1. Lower the Lowlands:

    • First, we need to select everything except our planned mountain areas. Make your “Guides” layer visible.

    • CTRL-click the “Guides” layer thumbnail to create a selection of your rough mountain areas.

    • Invert the selection by pressing CTRL+SHIFT+I.

    • Now, select the layer mask of your “Terrain Texture” layer. Open the Levels adjustment (CTRL+L).

    • Pull the white output slider (the bottom-right slider) to the left. As you do, the selected areas will darken. A value around 170-180 is a good target. This makes the non-mountain areas lower without removing the texture we created.

    • Deselect with CTRL+D.

  2. Uplift the Highlands:

    • Now let’s raise the ground where the mountains will be. CTRL-click the “Guides” layer thumbnail again to re-select the mountain areas.

    • With the “Terrain Texture” layer mask still selected, open Levels again (CTRL+L).

    • Drag the white input (highlight) slider to the left. This will boost the white levels and make the area look higher. Crucially, only drag the slider to where the histogram data begins to climb. Going further will cause “clipping” and a loss of detail.

    • Next, bring the black output (shadow) slider to the right to a value of around 100. This lifts the shadows, which helps sell the idea that the entire ground level is higher.

    • Take your time with these adjustments. The goal is to make the high elevations more prominent while retaining all the texture information in the mask.

Part 8: Raising the Mountains

Now that we’ve uplifted the foundational terrain, it’s time to add the detailed mountain peaks.

  1. Create Mountain Layer: Create a new layer on top of everything, fill it with 50% Gray, and name it “Mountains.”

  2. Copy Layer Style: Hold ALT and drag the “fx” icon from the “Terrain Texture” layer onto your new “Mountains” layer to copy the Bevel and Emboss settings.

  3. Add and Invert Mask: Add a layer mask to the “Mountains” layer and invert it to black (CTRL+I).

  4. Paint the Mountains:

    • Make sure your “Guides” layer is visible so you know where to paint.

    • Select the layer mask of the “Mountains” layer.

    • Choose a mountain stencil from the asset pack. With white as your color, click once to place a mountain.

    • This next step is crucial for blending: CTRL-click the mountain layer mask thumbnail to select the mountain you just placed. Invert the selection (CTRL+SHIFT+I).

    • Now, choose another mountain stencil and place it. Because of the inverted selection, it will not overlap or stack unnaturally on top of the first one.

    • You must repeat this select-and-invert process for every single mountain piece you add. Yes, it’s time-consuming, but the seamless, professional result is worth it.

Take your time with this step. Use the Puppet Warp tool (Edit > Puppet Warp) on selections of your mask to bend and reshape ranges to fit your guides.

Part 9: Fine-Tuning Mountain Heights

While the main elevations are set, your world will look more realistic with varied peak heights within each range.

  1. Select a Mountain Range: Select the layer mask of the “Mountains” layer. Use the Lasso Tool to draw a rough selection around an entire mountain range you want to adjust.

  2. Feather the Selection: Go to Select > Select and Mask. Use the Feather slider to soften the edge of your selection. This will help the adjustment blend naturally.

  3. Adjust Levels: With the feathered selection active, open Levels (CTRL+L).

    • Drag the white output slider to the left to lower the entire selected range.

    • Drag the white input slider to the left to make it even taller.

    • Repeat this process for different ranges, and even for individual peaks or smaller sections of ranges, to create a natural and varied topography.

Part 10: Adding Variation to the Lowlands

The heightmap is looking great, but the low-lying areas are still a bit flat and uniform. We’ll paint in some contrast to break them up, which will also influence where your rivers flow later on.

  1. Set Up the Brush: Select the Brush Tool (B). In the brush settings, choose a textured brush like one of the cloud brushes. In the Brush Tip Shape window, increase the Spacing percentage. This allows you to click and drag without making sudden, drastic changes.

  2. Use Overlay Mode: This is the most important step. In the top toolbar, change the brush Mode from “Normal” to Overlay. Instead of painting over your existing texture, this will now add or subtract contrast from it. Set the Flow to a low value, below 10%.

  3. Paint the Contrast:

    • Select the layer mask of the “Terrain Texture” layer.

    • You can ALT-click the mask thumbnail to view it directly.

    • Using white as your color, randomly paint in different spots to break up the flat grays. Don’t go too crazy; a little variety is all you need.

    • You can also switch to black to slightly reduce the elevation in certain areas, which is great for emphasizing the steep side of a mountain range or creating a rift valley.

Part 11: Planning the Continental Shelf

After staring at monochrome for a while, it’s easy to lose focus. Let’s switch things up and work with some color to define the continental shelf—the shallow water areas around the landmass. This is a key step where our method starts to diverge from Josh’s, as we’ll prepare this shelf shape to use as its own mask later in Gaea.

  1. Create the Shelf Plate: Find your original “Land Plate” layer (it might be turned off). Duplicate it (CTRL+J) and rename the copy “Shelf Plate.” Drag this layer underneath the original and turn off the “Land Plate” layer for now.

  2. Smudge the Shelf: Select your old friend, the Smudge Tool. Using various brush sizes, start dragging and smearing the edges of the “Shelf Plate” to create an uneven halo around the landmass. Think about how your continent has moved over millennia—add larger smears where tectonic movement might be more obvious, and shorter ones where the continent has settled. The key is to avoid a perfectly even shelf.

  3. Export the shelf: We want to incorporate the shelf later on using Gaea. To do this, we need a black and white image defining the shelf area. You can export the black shelf on a white background
  4. (optional) Add Color:

    • This is not required if you are following a Gaea workflow, but if you want to have a lighter blue for thee shelf, do the following
    • Create a new Solid Color adjustment layer. Using the swatch menu from the asset pack, choose the darker blue for the deep ocean.

    • Create a second Solid Color adjustment layer on top of the first, and choose the lighter blue for the shallow shelf areas.

    • Make an active selection of your “Shelf Plate” layer (CTRL-click its thumbnail).

    • Select the layer mask of the lighter blue color layer.

    • Invert your selection (CTRL+SHIFT+I).

    • Fill the selection with black to hide the light blue in the deep ocean areas.

    • Turn off the “Shelf Plate” layer. You should now see the lighter blue conforming to the shelf shape you created.

This completes the main planning phase, giving us a clear visual of our continent and its surrounding shallows.

Part 12: Final Cleanup and Export

We’re ready to prep our heightmap for the next stage. This involves ensuring all our textures are perfectly contained within the landmass shape.

  1. Clean the Masks:

    • Make an active selection of your final landmass shape layer.

    • Invert the selection (CTRL+SHIFT+I).

    • Select the “Terrain Texture” layer mask and fill the selected (ocean) area with black.

    • Do the exact same thing for the “Mountains” layer mask.

  2. Clean the Mountain Layer:

    • With the same inverted selection active, select the “Mountains” layer itself (not the mask).

    • Press Backspace to delete the gray contents of the layer that are in the ocean.

  3. Copy Masks to New Document:

    • ALT-click your “Terrain Texture” layer mask to view it. Select all (CTRL+A) and copy (CTRL+C).

    • Create a new document (CTRL+N). The dimensions should already match. Paste the terrain mask.

    • Go back and do the same for the “Mountains” layer mask, pasting it as a new layer on top in your new document.

  4. Blend the Layers:

    • On the mountains layer, go to Select > Color Range. Click on the black (non-mountain) area and and adjust the Fuzziness slider to around 150. This will create a soft selection around the base of the mountains.

    • Hit Backspace to delete the selected flat areas, leaving only your mountains on a transparent background.

  5. Balance Exposure: The brightest part of your terrain layer should match the darkest part of your mountains layer.

    • Select the terrain layer and add an Exposure adjustment layer.

    • Clip it to the terrain layer (ALT-click between the layers).

    • Drag the Exposure slider to the left until the terrain seamlessly blends into the base of the mountains, creating a gradual climb from black to pure white.

  6. Save: Save this final combined image as a JPEG or PNG. Name it something like “Heightmap_Rough.”

And there you have it! You’ve successfully created a rough heightmap. In the next phase, we’ll take this file into a terrain generator like Wilbur or Gaea2 to calculate realistic erosion patterns and river systems, bringing your world one step closer to completion.

Leave a Reply

Discover more from Kilroy's Kartography

Subscribe now to keep reading and get access to the full archive.

Continue reading