Creating procedural materials for graphics

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
Creating procedural materials for graphics
Complex
~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
    670
  • 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
    860
  • 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

Creating Procedural Materials for Graphics

A procedural material is an algorithm, not a file with pixels. It generates a texture at runtime or at baking stage from mathematical operations: noises, geometric shapes, logical masks. For game production this means one principal advantage: parameterization. Want wet asphalt instead of dry? One parameter. Need a rusty pipe instead of new? Another parameter. No need to redraw the texture.

That's what makes procedural materials indispensable for projects with large amounts of environment variation.

Substance Designer: Graph as a Production Tool

Substance Designer is the standard tool for creating procedural tileable materials. The work logic: instead of layers in Photoshop — a node graph where each node performs a mathematical operation on an image. Shape → Transform → Blend → Warp → Level — this is the basic sequence for any structural material (brick, tile, metal with pattern).

Key nodes used in every serious material:

Tile Generator — foundation for regular structures. Parameters: number of elements by X/Y, offset between rows, random rotation, size variation. This is how you control brick density in brickwork or gravel on a road.

Flood Fill + Flood Fill to Random Color/Grayscale — isolation of separate elements for independent modification. For example, each brick gets a random Normal Map variant from a set of templates. This destroys perfect repetitiveness without losing seamlessness.

Directional Warp and Warp — deformation for organic surfaces: wood, bark, skin, rock. Without Warp procedural materials look mathematical, not natural.

Histogram Scan — critically important node for range calibration. All PBR values should fall into physically correct ranges: albedo 30–240, roughness 0–1, metallic 0 or 1 (virtually binary). Histogram Scan with Position and Width parameters allows precise range setting.

Example from practice: for an open-world RPG 15 variations of stone masonry were needed for different biomes (tropics, tundra, desert). Instead of 15 separate texture sets, one parametric graph was created with variables: stone size, shape variation, edge softness degree, moss/dirt type in joints, weathering intensity. All 15 variations — export with different parameter values in one day. Versus three weeks of manual work.

Procedural Materials in Engines

Substance Designer exports .sbsar files — a compiled graph that can be loaded into Unity or Unreal and have parameters controlled at runtime.

In Unity this is done via Substance for Unity plugin (Allegorithmic, later Adobe). Substance parameters are available via ProceduralMaterial.SetProceduralFloat() or through the Inspector. On mobile platforms .sbsar generates textures at app startup — this loads the CPU, so for mobile usually pre-baked PNG variants are exported and swapped via Texture2D swap.

In Unreal Engine 5 Substance is integrated as a native plugin with Blueprint support. Parameters can be changed at runtime via Blueprint → Set Substance ParamRender Async. Asynchronous rendering is important — synchronous texture generation on CPU can cause noticeable frame drops.

For runtime generation on mobile devices, an alternative to .sbsar is custom shaders in ShaderGraph (Unity) or Material Graph (Unreal), which calculate the procedural material on the GPU. This is faster, but limited in complexity: basic patterns (Voronoi for stone, Perlin for organic, geometric patterns via math nodes) work well, complex multi-layer materials do not.

Limitations and Trade-offs

Procedural materials are not a silver bullet. A unique hand-painted hero prop always looks richer than a procedural equivalent for comparable effort. The procedural approach is justified where variations, scale, or dynamic change is needed.

Another nuance: a graph in Substance Designer is hard to maintain without documentation. Three months later, opening your own 200-node graph without comments is almost like reading undocumented code. Therefore production graphs are always accompanied by descriptions of key parameters and logic.

Stages of Work on a Procedural Material

Task Scale Estimated Timeline
One basic tileable material (Substance Designer graph) 2–4 days
Complex organic material (bark, rock, skin) 4–8 days
Parametric set (one graph with 5–10 variations) 5–10 days
Integration of .sbsar into engine with runtime control 2–4 days

We start with analyzing visual references and defining key variability parameters. Then a prototype in Substance Designer, coordinating ranges with the art director, refinement and export for the target engine.

Cost is determined after analyzing requirements: number of materials, required parameterization level, target platform.