Developing tiling environment textures for games

Our video game development company runs independent projects, jointly creates games with the client and provides additional operational services. Expertise of our team allows us to cover all gaming platforms and develop an amazing product that matches the customer’s vision and players preferences.
Showing 1 of 1 servicesAll 242 services
Developing tiling environment textures for games
Medium
~3 business days
FAQ
Our competencies
What are the stages of Game Development?
Latest works
  • image_games_mortal_motors_495_0.webp
    Game development for Mortal Motors
    663
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    A turn-based strategy game set in a fantasy setting, With Fire and Sword
    859
  • image_games_second_team_604_0.webp
    Game development for the company Second term
    490
  • image_games_phoenix_ii_606_0.webp
    3D animation - teaser for the game Phoenix 2.
    533

Developing Tiling Environment Textures for Games

Environment is 80% of what a player sees. Walls, floors, ceilings, ground — thousands of square meters of surfaces that must look convincing. Covering them with unique textures is impossible: VRAM is not infinite, and an artist team is not rubber. The solution is tileable textures, but made correctly.

"Correctly" here doesn't mean "seamless." Seamlessness is a minimum requirement. A correct tiling environment texture is: physically accurate by PBR values, with no visible repetition pattern at any screen resolution or camera distance, with a complete set of maps for the rendering pipeline.

Where Repetition Pattern Comes From and How to Remove It

A 2048x2048 tileable texture at real-world scale of 2×2 meters in a 100×100 meter game level tiles 50×50 times. When viewed from height or diagonally, the repeating element — a crack, spot, characteristic stone — becomes visible immediately.

There are three working approaches for production:

Scatter + Splatter overlay. On top of the tileable base, add a second layer with large scale (x0.1–0.3 from the base UV) and low opacity. The second layer is the same or similar texture, but at a different scale. Mathematically this destroys the pattern: the eye can't find a repetition point when two tileable patterns with different frequencies overlay.

Stochastic sampling in the shader. In Unreal Engine 5 this is the MF_StochasticSampling function, available natively. In Unity — custom HLSL in ShaderGraph: take three samples with different hashed UV coordinates and blend by weights. Overhead is minimal (3–5% GPU time on fragment shader), result is complete pattern elimination.

Vertex Painting with multiple tileable layers. For Landscape in Unreal and terrain in Unity, this is the standard approach: four to eight tileable materials blend via vertex paint with masks. Each material is independent, one pattern doesn't coincide with another.

The third approach requires the most resources, but gives maximum control over material distribution on the level.

What Goes into a Complete Map Set for Environment Texture

For deferred rendering (Unreal Engine 5, Unity HDRP), a tileable environment texture is a set:

  • Albedo (Base Color) — without lighting, without shadows, without AO. Only diffuse color of the surface
  • Normal Map — in DirectX space for Unreal, OpenGL for Unity (different Y axes are a constant source of errors when transferring textures between engines)
  • Roughness — the most critical map for "feel" of the material
  • Metallic — for environment almost always 0 everywhere, metallic zones are masked
  • Ambient Occlusion — baked from high-poly or procedural, adds dark zones in crevices independent of dynamic lighting
  • Height Map — for Parallax Occlusion Mapping on large surfaces where depth illusion is needed (stone masonry, tiling, brick)
  • Displacement — for Tessellation in Unreal, giving real geometric deformation

For mobile platforms the set is reduced: Normal + packed (Roughness R, Metallic G, AO B). Height and Displacement are completely removed (tessellation on mobile is unacceptable for performance).

Physically Correct Values for Typical Environment Materials

This is not abstract theory. Incorrect roughness and albedo values are the most common reason why a level looks "flat" or "plastic," even with good lighting.

Working ranges for typical surfaces:

Material Albedo (sRGB) Roughness Metallic
Old asphalt 50–80 0.90–0.95 0
Polished concrete 100–130 0.70–0.80 0
Rough stone 80–120 0.88–0.95 0
Dry soil 100–140 0.92–0.98 0
Wooden boards (old) 90–130 0.82–0.90 0
Metal plate 160–200 0.25–0.45 0.92–0.98

Albedo below 30 (pure black) and above 240 (pure white) in PBR pipeline is physically incorrect: such materials don't exist in nature.

Creating Tileable Textures in Substance Designer

The graph for an environment material in Substance Designer is built around several principles:

Multi-level noise. Macro noise (large tonal and color variations) + Micro noise (fine surface texture, pores, grain). Without micro noise the surface looks plastic at close range. Without macro noise — flat at a great distance.

Procedural weathering. Dirt, moss, cracks — all through masks based on Position (vertical dirt accumulation at the bottom), Curvature (wear on edges), AO (accumulation in crevices). This makes the material convincing without manual painting.

Grayscale-first approach. First build a complete Height/Luminance graph, then add color via Color Mask. This allows correcting material form without affecting color and vice versa.

Task Scale Estimated Timeline
One environment material (complete map set) 2–4 days
Set for one biome (5–8 materials) 2–3 weeks
Complete library for a level (15+ materials) 4–8 weeks
Revision and re-assembly of existing materials by agreement

Cost is calculated after analyzing the specification: number of materials, target engine, platform and parameterization requirements.