CC0 · PBR · PNG

Free seamless textures for games and 3D

In short

Grab3D offers 36 free seamless PBR textures in 7 groups, from wood planks and linen to cobblestone, grass and painted metal. Every texture tiles in both directions, has a fixed size in metres and comes as base colour, normal (OpenGL and DirectX), roughness, AO and height maps in 4K, 2K and 1K, released under CC0.

Textures
36 · 7 categories
Maps
Base color, Normal (GL + DX), Roughness, AO, Height
Resolutions
2K, 1K (plus 4K for 1)
All downloads
567 MB
License
CC0 1.0
basecolor · 1K
Cozy Wood PlanksCozy Light Oak PlanksCozy Linen FabricCozy Linen Fabric CreamCozy CobblestoneCozy Stone SlabsCozy Brick WallCozy White Brick WallCozy GrassCozy Flower MeadowCozy ConcreteCozy Board Formed Concrete

01Texture categories

The textures share one look: soft pastel colours, clean shapes and little noise, so they sit well next to low poly and cozy 3D models. Each page shows the material on a test scene and in an example room with models from the library, lists its tile size and offers ZIP downloads per resolution, 1 of them also in 4K.

  • Wood textures

    6 seamless wood textures: planks, parquet and shingles

    • 6 textures
  • Fabric textures

    7 seamless fabrics: linen, plaid, knit and carpet

    • 7 textures
  • Stone textures

    5 seamless stone textures: cobbles, slabs, walls and gravel

    • 5 textures
  • Brick and roof textures

    5 seamless textures for walls and roofs: brick, tiles, slate

    • 5 textures
  • Ground textures

    6 seamless ground textures: grass, soil, sand, snow, leaves

    • 6 textures
  • Concrete and tile textures

    5 seamless textures: concrete, pavers, bathroom tiles, terrazzo

    • 5 textures
  • Metal textures

    2 painted metal textures: diamond plate and riveted panels

    • 2 textures

03Using the textures

Tiling and real scale

Each texture page states how many metres one tile covers, for example 2 × 2 m for plank floors or 25 cm for linen. Divide the object size in metres by the tile size and use the result as UV repeat: a 6 m floor with a 2 m tile repeats 3 times. With UVs in metres (world aligned or box mapped), the scale is simply 1 divided by the tile size.

Normal maps: OpenGL or DirectX

Every download contains two normal maps. normal_gl follows the OpenGL convention (green channel Y+) for Blender, Godot, Unity and three.js. normal_dx is the same map with the green channel inverted (Y-) for Unreal Engine and other DirectX style tools. Picking the wrong one makes bumps look like dents.

Blender

Use a Principled BSDF. Load the base colour as sRGB and every other map as Non-Color. Connect normal_gl through a Normal Map node in tangent space. For real relief, add a Displacement node with the height map, midlevel 0 and the scale from the texture page in metres. Blender ignores the AO map when rendering, so it can stay out.

Godot 4

Create a StandardMaterial3D. Albedo texture = base colour, roughness texture = roughness with the channel set to Red or Gray, enable the normal map with normal_gl and ambient occlusion with the AO map. The height map can drive parallax through the heightmap option. Set the tiling with UV1 scale.

Unity (URP or Built-in)

Base Map = base colour, Normal Map = normal_gl with texture type Normal map, Occlusion = AO. Unity works with smoothness, not roughness: invert the roughness map (1 minus roughness) and store it in the alpha channel of the metallic map, or use a Shader Graph with a One Minus node. The height map serves as parallax map. Set tiling in the material.

Unreal Engine

Use normal_dx, the DirectX convention Unreal expects, and import it with the Normalmap compression setting. Turn off sRGB on roughness, AO and height, keep it on for the base colour. Multiply a TexCoord node by the number of repeats to set the tiling from the tile size in metres.

three.js

MeshStandardMaterial with map, normalMap, roughnessMap, aoMap and, on finely subdivided geometry, displacementMap. Set map.colorSpace to SRGBColorSpace, wrapS and wrapT to RepeatWrapping and repeat.set(x, y) on every texture. normalMap uses normal_gl, displacementScale is the height range in metres.

In every download

  • Six PBR maps: base colour, normal OpenGL, normal DirectX, roughness, ambient occlusion and height
  • PNG files, base colour in sRGB, data maps linear, height map in 16 bit grey
  • Seamless in both directions, one fixed tile size in metres per texture
  • One ZIP per resolution, so you only download the size you need
  • README with scale, map formats and engine setup, LICENSE with the CC0 text, preview render

Questions and answers

Are these seamless textures really free?

Yes. All textures are released under CC0 1.0. Download them without an account and use them in commercial games, renders, client work or your own asset packs, no attribution needed.

What does seamless mean for a texture?

The right edge continues the left edge and the top continues the bottom, in every map. Placed side by side, the tiles form one continuous surface without visible lines, which is what large floors, walls and terrain need.

Which resolution should I download?

2K is a good default for games and renders. 1K is enough for mobile, web and small objects. 4K exists for close-up renders where it is offered. All resolutions are scaled from the same source, so they look identical apart from detail.

Are the textures photo scans?

No, they are stylized: soft colours, simple shapes and little noise. That makes them a match for low poly, cartoon and cozy games, while photoreal projects are better served by scanned materials.

Can I use the textures in a 2D game?

Yes. The base colour maps are seamless images on their own and work as ground or wall tiles in a tilemap. For ready made 2D tiles with collision, the Grab3D tilesets are the better start.