GenPBR; A Free Browser/Client-Based PBR Texture Generator & PBR Tool Suite

Hello everyone,

Update (2026): GenPBR has grown a lot since this thread started. The live tool is at genpbr.com/generate — still browser-based and client-side for the public generator, with optional free accounts for higher resolution, saved projects, and API access. Everything below about how the algorithms work and the early UI still applies.


Free PBR texture generator (normal, roughness, metallic, height & AO)

Turn a single albedo/base image into a full metal/rough PBR map set in the browser — no installs, no uploads.

Try it: genpbr.com/generate (no signup for 512×512; free account unlocks 1024×1024 + daily credits)

Focused tools:


What you can generate

Map Use in engines
Normal map Surface detail & lighting response (Unity, Unreal, Blender, Roblox)
Roughness map How glossy vs matte the surface is
Metallic / metalness map Metal vs dielectric regions
Ambient occlusion (AO) Contact shadows & cavity darkening — now supported (was “by request” in the original post)
Height map Displacement / parallax workflows

Export: Download individual maps or batch-export for your pipeline. Upload a diffuse/albedo and generate normals from edge detection — works in both Canvas and WebGL modes.


Key features

  • Image → PBR texture: One upload generates normal, metallic, roughness, AO, and height maps.
  • Two processing modes:
    • Canvas API: CPU-based; works on all devices.
    • WebGL: GPU-accelerated; faster on supported hardware.
  • 3D PBR viewer: Real-time preview with adjustable lighting (GPU recommended).
  • Local material library: Upload, tag, and version your materials.

Free tier: Anonymous 512×512 on /generate; free account unlocks 1024×1024 and daily credits. Paid plans add commercial licensing, API access, and higher monthly limits. (The “free forever” line in the original post reflected the early all-free launch.)

Try the PBR Texture Generator


OLD LINKS (thread history — superseded by genpbr.com)

Try the PBR Texture Generator Here!

WebGL Version (Recommended for GPU)

Early material library: pbr-gen.vercel.app/library


Examples / screenshots

(Examples use exaggerated strength values.)

📺 Canvas comparison video (maps / no maps)

📺 WebGL comparison video / GIF (maps / no maps)


PBR Map Comparison

Another result (Canvas)

3D PBR viewer screenshot

App UI (original launch)




How the algorithms work

🛠️ How the pixel (Canvas) algorithms work

The Canvas version processes each pixel individually on your CPU.

  1. Normal maps: Sobel-style edge detection finds where luminance changes quickly, then encodes surface direction for lighting.
  2. Metallic maps: Brightness/saturation heuristics — shinier regions map to more metallic, duller to less.
  3. Roughness maps: Local color variance — high variation → rougher, similar neighbors → smoother.
🛠️ How the shader (WebGL) algorithms work

The WebGL version uses GPU shaders — same map types, much faster on larger textures.

  1. Normal maps: Neighbor brightness differences → tangent-space normals.
  2. Metallic maps: HSV saturation — less saturated → more metallic (tunable intensity).
  3. Roughness maps: Brightness variance between neighboring pixels.

Why shaders: GPU parallelism handles the vector math needed for game-ready output without blocking the main thread.


Note: Performance depends on hardware and browser. Modern Chrome/Edge/Firefox with a decent CPU/GPU recommended for WebGL.

Feedback welcome — especially requests for map types, export formats, or engine-specific presets (Unity HDRP, Unreal, Roblox SurfaceAppearance, etc.).

20 Likes

Wow, great tool to use. Really getting tired of looking at PBR sites that everyone uses, this actually provides a bit of unique-ness(?) to the PBR.

Can’t wait to use this for my games, thank you for making this.

2 Likes

This is great. I have a collection of several bookmarked websites, some used for normals and some for roughness, etc.

Now I can have it all in one website, amazing.
super useful

2 Likes

Glad you like it and find it useful! I’ve added another “all-in-one” type of tool for people like you.

I’ve just added a Local PBR Material Library to make organizing and managing your PBR materials easier than ever! With this powerful local storage system, you can now:

  • Upload and store your PBR materials for quick access
  • Tag materials for easy searching and filtering
  • Customize sort orders for efficient browsing
  • Store multiple maps (Normal, Metallic, Roughness) for each material
  • Track material iterations with version control

This feature is designed to streamline your workflow and keep everything organized in one place!

Check it out here!

Again, please let me know what you think or if you have any feature requests! :blush:

3 Likes

what a g.

really cool features. just wanted to know, how does the whole library manage to save locally without losing any data? (not a web developer by any means so I really don’t know much)

1 Like

Hey no worries, glad you think it’s cool and I appreciate you checking it out! I added some more features tying all the tools together with the library (along with the 3d preview tool), so you can load/add materials directly to the library without having to save/upload/organize the materials manually.

Here’s a quick explanation of how the local features work with the library:

The PBR Material Library saves your materials locally using an IndexedDB, which is a database system built directly into your browser (I utilize something called opendb to access this database). This system allows the tool to store all your materials (images aren’t stored as pngs or anything, the image is converted to raw data and stored), versions, and tags directly on your device without the need for any internet connection or external servers. You could even download the website locally and continue running it without internet.

This is all handled securely and privately, ensuring your data stays on your machine!

1 Like

does client side means you can run this locally without nodejs/server setup? just html and js/css?

off topic question : how did you learn webgl? especially for local (client brower no server)?

?
this is even a thing?
source?

edit : got source, it is a thing, whats the storage limits?

Hey! To answer your questions:

  1. Local client-side means that once the server sends you the web page, everything can function offline without a connection. The website and your browser simply stores all of the algorithms, functions, etc that power and render the website, these are then built and compiled into static pages that can utilize these functions once the page is loaded/stored. The code that initially serves the frontend and backend (there’s really no backend beyond serving the page/code) is all built in TypeScript using a React framework called Next.js, served to the web by Vercel.

  2. I learned WebGL originally learning GLSL shader programming for other engines, AI tools help me with the mathematics and algorithms a lot, I usually just provide the technique and implementation I want to use in my tools for writing the rendering & transformation logic.

  3. IndexedDBs have no storage limits, but most browsers will ask you to confirm continued use if a website domain begins using over 50MBs of data or so. As mentioned previously, OpenDB is a javascript library I use to access your browser’s Indexed database.

1 Like

Hey everyone! :waving_hand:
I’m excited to announce that PBR-Gen has officially moved from pbr-gen.vercel.app to our new permanent home at GenPBR.com — featuring massive upgrades, new tools, and faster generation than ever before!


:rocket: What’s New

GenPBR has evolved far beyond its original release — it’s now a complete PBR tool suite for artists, developers, and studios.
Here’s what’s new since the original launch:

:brain: Advanced Normal Map Algorithm (v2.3.5)

  • Completely rewritten from scratch for professional-grade results
  • Tangent-space accurate normals with per-pixel vector normalization
  • Eliminated artifacts and excessive saturation from previous versions
  • Smooth, realistic surface depth even at low strength settings
  • Consistent results across Canvas, WebGL, and server-side generation

:free_button: Free Generation for Everyone

  • No login required — generate all maps up to 512×512 at genpbr.com/generate
  • Perfect for quick workflows and testing

:gear: REST API Access (v2.3.0)

Integrate GenPBR directly into your pipelines or tools:

  • Generate PBR maps via a simple REST API
  • Supports Normal, Metallic, Roughness, and Ambient Occlusion maps
  • API key management, usage tracking, and global edge performance
  • Designed for integration with game tools, web apps, and render pipelines

Learn more at genpbr.com/changelog

:puzzle_piece: Upcoming Plugin Support

We’ve deployed backend infrastructure for Blender and Substance plugin integrations — making GenPBR accessible directly inside your favorite 3D software.

:high_voltage: GPU-Accelerated 2× Upscaling (v2.2.0)

  • High-quality bicubic interpolation
  • WebGL-powered GPU acceleration (10–50× faster)
  • Automatic fallback to CPU if GPU unavailable
  • Supports 4K → 8K upscaling in milliseconds

:package: Bulk Upload & Download (v2.1.0)

  • Upload and process up to 10 textures at once (depending on plan)
  • Parallel generation for faster workflow
  • Batch download with progress tracking

:speech_balloon: Feedback System & Dashboard Refinements

  • In-app feedback modal and improved dashboard UX
  • Cleaner navigation and usability improvements

:globe_showing_europe_africa: Why the Move?

Our new home at GenPBR.com gives us:

  • Faster infrastructure and global CDN delivery
  • Room for API integrations, premium features, and plugins
  • Better SEO, reliability, and scalability

All old links (including pbr-gen.vercel.app) now redirect automatically — but please update your bookmarks!


:toolbox: GenPBR At a Glance

Feature Details
:artist_palette: Free PBR Generator Generate Normal, Metallic, Roughness, and AO maps from any base texture, still fully client side
:high_voltage: Dual Engine Modes CPU-based (Canvas) and GPU-based (WebGL) rendering
:magnifying_glass_tilted_left: 3D PBR Viewer Preview materials in real-time 3D
:link: API Access (COMING SOON) Integrate texture generation into your own tools
:wrench: Plugin Support Upcoming support for Blender and other 3D tools
:brain: Industry Algorithms Uses real PBR techniques for professional realism, not AI

:spiral_calendar: Full Changelog

You can find every update, improvement, and bug fix documented at:
:backhand_index_pointing_right: genpbr.com/changelog


:sparkles: Try It Now

Start generating PBR maps instantly:
:link: genpbr.com/generate

BBS has had this tool out for years now, it uses your gpu to generate PBR textures from 1 or 2 textures. I would give it a try before giving information to someone I don’t know.

http://boundingboxsoftware.com/materialize/downloads.php

Pros:

  • No texture size limit
  • Generate almost/every texture map required for true pbr

Cons:

  • Haven’t experienced any

Awesome tutorial here!

1 Like

Hey thanks for the great resources! I haven’t used any alternatives and welcome older and newer tools to the space. I made GenPBR to use for my own workflow originally where it eventually evolved into this.

I have plans to remove the texture size and file size limit but have limitations with the web version. Memory management is a little trickier with a web app, but I’ve made progress on this and hope to remove these limits in the next month or so.

Whatever tools work best for you or anyone out there doesnt matter to me as long as people like the results they are getting. We’ve had 57 people sign up as of this morning alone with over 300 people actively using it daily and a lot of great feedback so i am happy to see people find it useful.