The chain
$0.24 for the whole chain, at each model’s list price:
- Anchor texture: $0.04 ($0.04 per image)
- Matching textures x 5: $0.20 ($0.04 per image, 5 jobs)
summer api estimate <model> --input '<json>', or POST /v1/estimate with the same body as the job. Prices come from GET /v1/models and change only when the provider’s price does.
The normal maps cost nothing: the free normal map generator makes them in your browser.
Before you start
Sign in once, so your agent or your terminal can run jobs on your Summer account:- The list of surfaces. Ground, wall, path, wood, roof, rock: one line each, with the material and how worn it is.
- The style sentence. One sentence for the look, such as “Stylized hand-painted game texture, soft painterly detail, muted greens and warm browns”. It goes into every prompt, word for word.
Step 1: one anchor texture, flat and even
The anchor is the texture that sets the look for the whole set. Pick the surface the player sees most, usually the ground. Every word in the prompt has a job:- “Seamless tileable texture” tells the model the picture will repeat.
- “Straight top-down view” (or “straight front view” for walls) removes perspective. A floor that shrinks toward a horizon can never tile.
- “Flat even overcast light, no cast shadows, no vignette” removes baked light. A shadow in one corner becomes a stripe of shadows across the whole floor.
- “No single standout feature” stops the model from adding one hero rock, one flower or one crack. Those are the details the eye catches when they repeat.
- “Spread evenly” and “filled edge to edge” keep detail all the way to the borders, where the seam is.
aspectRatio at 1:1: tiles are square. Set a seed and write it down. On Nano Banana models the same seed and prompt give a similar picture, so you can make small prompt changes without losing the look.
Step 2: the matching set, from the anchor
Separate prompts give separate games: a painterly floor next to a photo-like wall. Instead, send the anchor asreferenceImageUrl on every other texture. The model copies the brush work, palette, light and level of detail from the picture, and the prompt changes only the material.
Start the prompt with “A new texture in exactly the same style, palette, light and level of detail as this picture”, then name the new surface. Keep the same seed and the same seamless words.
Bricks, planks and tiles are patterns with rows. Tell the model the rows run straight and evenly across the picture, or the last row gets cut in half at the edge.
Check the seam before you use it
Never trust a texture from one square. Two quick checks find every seam. Tile it. Repeat the texture three by three and look at the big picture from a distance. With ImageMagick:tileable-texture skill makes the texture, checks it tiled and wires it onto a floor or a wall for you.
Normal maps, for free
The models make the colour texture (the albedo) only. Light on a flat colour texture looks flat. A normal map adds the bumps: the gaps between stones catch shadow, planks get an edge, and the whole surface reacts to your lights. Open the free normal map generator, drop your texture in, and download the normal map. It runs in your browser. Then:- Keep the strength low for stylized art. Painted textures already have light painted in. A strong normal map on top looks noisy.
- Check the direction. Summer Engine reads normal maps with green pointing up. If the bumps look dented, as if light came from below, invert the green channel.
- Make one per texture. A normal map follows its own texture, so the set of six textures needs six normal maps.
Put it in your game
Summer Engine. Drop the PNG files into your project. In the import dock, keep mipmaps on and use VRAM compressed for textures you use in 3D; mipmaps stop the shimmer on a floor seen from far away. Then make aStandardMaterial3D and set its scale to the size of the surface:
uv1_scale of 20 gives one tile per metre. Leave it at 1 and one picture stretches across the whole floor and looks blurry.
Two more settings that help:
- Triplanar mapping (
mat.uv1_triplanar = true) projects the texture from three sides. Use it on rocks, cliffs and generated meshes whose UVs stretch. - Break the repeat. Make three versions of the ground from the same anchor and seed (
numImages: 3), and paint them across the level, or add a second texture at a different scale on the material’s detail layer. The eye stops seeing the grid.
pixel-art skill’s prompt pattern instead, with a named palette and “no anti-aliasing”, and set the texture filter to nearest.
Make a whole biome
A biome is ten to twenty textures: two or three grounds, walls, paths, a cliff, wood, a roof, details. Write one JSONL file, one job per line, every line with the anchor’sfileUrl as referenceImageUrl, the same seed and the same style words:
skybox-panorama skill covers it.
Common problems
Questions
Can I get a full PBR set, with roughness and height? The models make the colour texture. The normal map generator adds the normal map. For most stylized games, colour plus normal is enough; set roughness as one number on the material. What size are the textures? Square pictures at the model’s normal size, usually about 1024 px. For a larger tile, pass bothwidth and height (up to 4096); read the model’s page for the sizes it reaches. On mobile and web, a 1024 px tile with mipmaps is plenty.
Can I make a texture from a photo? Yes. Upload the photo (send a picture) and run step 2 with it as the reference and a prompt that says “a seamless tileable texture of the surface in this photo, straight top-down view, flat even light”.
Can I use the textures in a commercial game? Yes. Every model on the Summer API allows commercial use of what it makes.
