Log inGet started
← Explore
World media

Bedrock: The Stone and Rock Material Collection

Walk a gallery of 26 seamless, real-scale stone materials, each shown on a floor, a wall, a cube, a sphere and a cylinder beside its reference photo, under six switchable lighting setups. Natural rock (granite, basalt, obsidian, cliff rock, limestone, sandstone), polished and dressed stone (white and dark veined marble, polished granite, cleft slate, travertine), laid and built stone (cobblestones, flagstones, dry-stone wall, ashlar blocks, carved temple stone, river pebbles), weathered and mossy stone, boulder versions that wrap any rough shape, and stylised sets: toon rock, toon cobbles, hand-painted dungeon stone, pixel-art stone and a low-poly cliff. To use them in your own world, install the stoneMaterials package from ZeroMind; it brings the materialLibraryKit material library with it. Then put any stone on anything with a Model by name, e.g. require("~materialLibraryKit.Materials").apply(wall, "granite"), and switch the same wall to toon rock or pixel stone by changing only the name. Every stone is tagged by kind, style, finish and tile size for filtering, and the package includes the gallery scene (stoneMaterials.StonesGallery) and a test suite.

0score
Embed

Embed this world

Paste this code into your own page and the world plays right there.

Updated Oct 24, 2026
materialsstonerockpbrtexturesseamlesstriplanartoonpixel-artlow-polymaterialLibraryKit

Bedrock is the stone shelf of the materialLibraryKit material library, the same library the metals and woods collections plug into. It holds 26 stones, each seamless when tiled, drawn at real-world size (one unit is one metre), physically plausible (no lighting painted into the colour, never metallic, glossy only where the real stone is, like polished marble and obsidian) and light enough for the browser.

Open the world and you are standing in the gallery: every stone in its own bay on a floor tile, a wall, a cube, a sphere, a shader ball and a cylinder, with its reference picture framed beside it. The toolbar switches the lighting for everyone (daylight, overcast, golden hour, moonlight, warm interior, studio), and Materials opens the picker.

The stones

  • Natural rock: granite, basalt, obsidian, cliff rock, limestone, sandstone
  • Polished and dressed: white marble, dark veined marble, polished granite, cleft slate, travertine
  • Laid and built: cobblestones, flagstones, dry-stone wall, ashlar blocks, carved temple stone, river pebbles
  • Weathered and overgrown: mossy stone, eroded sandstone
  • For boulders and rough shapes: cliff rock and mossy stone, projected from three sides so they need no texture layout
  • Stylised: toon rock, toon cobbles, hand-painted dungeon stone, pixel-art stone block, low-poly cliff

Every stone is tagged with its category (stone), kind, style, tile size, roughness and metallic range, texture cost and animated = false, so a world can filter the list: Materials.list({ collection = "stones", style = "toon" }), Materials.list({ collection = "stones", tag = "glossy" }).

Use it

Install stoneMaterials from ZeroMind. That one install brings the material library (materialLibraryKit 1.3.1) with it and nothing else: no copies of the engine's own parts. Then, in any world:

local Materials = require("~materialLibraryKit.Materials")

-- the wall is made on the machine that runs this code; other players do not get it
local wall = entity.spawn("stoneWall", { components = { Model = { model = "cube" } } })
wall.localPosition = { 0, 1, 4 }
wall.localScale = { 2, 2, 0.3 }
local model = wall.component.get("Model")
model.material = Materials.get("ashlarBlocks").material

-- the same wall in a cartoon world: only the name changes
model.material = Materials.get("toonRock").material

A wall a script spawns exists only on the machine that ran the script (in edit mode even with synced = true), so only that machine sees its stone. Materials.apply(target, id) puts a stone on any object with a Model, your own included, and shares the choice with every player whose machine holds the same object, such as the gallery's swatches. To walk round every stone in your own world, run zero scene load stoneMaterials.StonesGallery. The package's README has the full table of stones, their measured scores, and how each was made.

Checked

Every stone passes the library's own checks: seamless when tiled 4 x 4, no shimmer at 30 m under the harshest light (the toon stones are closest, at about 5.3 against a limit of 6), within the browser's per-material limits, and confirmed by the albedo, roughness, metallic and normal views. The checks travel with the package as its test suite.

  • Texture memory: 54.8 MB for all 26 stones, 63.5 MB with the reference pictures.
  • Download: about 73 MB.

Version history

  • 1.2.1 Fixes 1.2.0, which did not work when installed into a new world: its tests did not load, the two boulder stones drew nothing (their shader did not compile on a newer engine), and the first example answered "has no Model to put a material on". 1.2.1 points every reference at the published material library 1.3.0 and records no engine version, the boulder shader takes its lit shading from the engine itself, the gallery's boards use the engine's plain parts, and the first example sets the stone on the object's own Model, which works in every world. The stones are unchanged. It also moves to the material library 1.3.1, which brings no copies of engine parts (1.3.0 did, and the gallery's boards then used a copied Model), and Materials.apply works on objects a world builds itself. If you installed 1.2.1 before 17:45 UTC on 2026-10-24, install it again.
  • 1.2.0 One install of the package brings the published material library 1.3.0 as a dependency, with no copies of it; tests run isolated from other players. Did not work in a new world (fixed in 1.2.1).
  • 1.1.0 Eight stones redone against their references; download halved.
  • 1.0.0 First release: 26 stones, reference pictures, gallery and tests.

Known limits

  • The engine's cube, sphere and cylinder show one texture repeat per face, so a stone is at real scale on them only when the object is sized to the stone's tile size. The gallery's floors and walls, and the boulder stones, are always at real scale.
  • The toon stones have no albedo, roughness or metallic diagnostic views (they shade themselves).
  • Two stones, cliff rock and carved temple stone, come from scans of their reference pictures and can't be re-baked from code.

Comments · 0

Open discussion, no rating attached. Ask questions, swap notes, follow threads.

Sign in to join the discussion.