# Procedural Material Graph (PBR) > Evaluate a seamless procedural material graph and preview it on a sphere. Run a Renderloom Material Nodes graph — noise, Voronoi, bricks, gradients, blends, domain warp, levels, curves and surface-from-height nodes — and get base color, normal, roughness, metallic, ambient occlusion and height maps, a lit sphere and a tiled plane preview, a per-node report and the editable graph. Start from brick, wood, stone, metal or fabric. Part of usefulweb.app (https://usefulweb.app/). Part of [Renderloom](https://renderloom.usefulweb.app/) (ownerApp: renderloom). Results are deterministic calculations from the inputs and the listed assumptions; the API returns exactly what the web page shows. ## Use it - Human interface: https://renderloommaterialgraph.usefulweb.app/ (interactive tool at https://renderloommaterialgraph.usefulweb.app/tool) - JSON API: POST https://renderloommaterialgraph.usefulweb.app/api/v1/calculate with a JSON object of inputs (schema: https://renderloommaterialgraph.usefulweb.app/api/v1/tool) - OpenAPI: https://renderloommaterialgraph.usefulweb.app/openapi.json - MCP (Streamable HTTP): https://renderloommaterialgraph.usefulweb.app/mcp - tool `renderloom_material_graph` ## Inputs - preset (select): Material graph - graph (textarea): Graph JSON (for a custom graph) - Format renderloom-material-graph version 1 (schema at /static/apps/renderloom/material-graph.schema.json). Copy it from Renderloom → Material Nodes. - size (integer): Map size (px) - seed (integer): Graph seed (−1 keeps the graph’s seed) ## Method - Every generator is periodic over the tile: Perlin and value noise wrap their integer lattice indices, simplex noise is sampled on a 4-D torus, Voronoi cells wrap their cell indices, and bricks, waves, ramps and checkers repeat a whole number of times. Warp, blur, normal, occlusion and curvature sample with wrap-around, so every map tiles seamlessly. - Perlin noise uses Ken Perlin’s 2002 Improved Noise with his reference permutation for seed 0 (noise(3.14, 42, 7) = 0.13691995878400012). Other seeds shuffle the permutation deterministically. Octaves double the frequency, so periods stay whole numbers. - Blend modes are the W3C separable formulas shared with the Lumina compositor, on display (sRGB-encoded) values. Curves are monotone Fritsch–Carlson splines. Gray inputs feed color ports as equal RGB; color feeds gray ports through Rec. 709 luma weights. - Normals use wrapped central differences with the height range expressed as a fraction of the tile width (resolution independent, +Y up). Ambient occlusion is horizon based: 1 − strength × mean over 8 directions of the sine of the highest horizon within the radius. Curvature is 0.5 − strength × (ring mean − centre) × depth / radius. - Previews use the glTF 2.0 metallic-roughness BRDF (GGX, separable Smith-GGX visibility, Schlick Fresnel) with one directional light and a dim ambient term. The continuity check compares the steps across the wrap edges with the steps inside the tile. ## Limits - Procedural approximations for games, previews and look development. Height, occlusion and curvature are derived from the generated height field, not measured from real materials. The preview is a single-light illustration.