If youโve ever needed to turn a simple image into a full PBR texture set (BaseColor, Normal, Roughness, AO, etc.), you know how time-consuming it can be.
So I built something to fix that.
๐ Get it here: https://gum.new/gum/cmk79c11p001u04jvfyqz3jbu
๐ฏ What is PBR Texture Generator Pro?
PBR Texture Generator Pro โ Blending Visuals is a desktop tool designed for:
๐ฎ Game developers (Unity / Unreal)
๐จ 3D artists (Blender, Maya, Houdini)
๐งฑ Environment & material designers
It converts a single image into a complete physically based rendering (PBR) texture set โ automatically.
โก Key Features
๐ง Smart Map Generation
From one input image, the tool generates:
Base Color
Normal Map (via Sobel gradients)
Height / Displacement
Roughness
Metallic
Ambient Occlusion
โ๏ธ Real-Time Material Controls
Fine-tune your textures with intuitive sliders:
Height Strength โ Controls displacement intensity
Normal Strength โ Boosts surface detail
Roughness Contrast โ Adjusts material sharpness
AO Strength โ Deepens shadows
Metallic Threshold โ Defines metal vs non-metal
๐ Batch Processing Mode
Process entire folders effortlessly:
Select a directory
Generate full PBR sets for each image
Errors wonโt interrupt the batch
๐ Seamless Texture Tiling
Create tileable textures for games and environments:
Uses mirrored borders
Eliminates visible seams
Perfect for repeating surfaces
๐งช Multiple Output Formats
Choose the format that fits your pipeline:
8-bit PNG โ Fast previews
16-bit PNG โ High-quality maps
EXR (OpenEXR) โ HDR, linear workflow
โก GPU Acceleration (Auto-Detect)
The app detects CUDA support automatically:
USE_CUDA = cv2.cuda.getCudaEnabledDeviceCount() > 0
GPU available โ Faster processing
No GPU โ Safe CPU fallback
๐ฅ๏ธ Built With
This project combines a powerful stack:
Tkinter + ttkbootstrap โ Modern desktop UI
OpenCV โ Image processing engine
NumPy โ Fast numerical operations
OpenEXR โ High-dynamic-range output
๐งฉ How It Works (Under the Hood)
๐๏ธ Height Map
height = cv2.normalize(gray * height_strength.get(), None, 0, 65535, cv2.NORM_MINMAX)
๐ Normal Map (Sobel Filter)
sobelx = cv2.Sobel(gray, cv2.CV_32F, 1, 0)
sobely = cv2.Sobel(gray, cv2.CV_32F, 0, 1)
๐ Ambient Occlusion
ao = cv2.GaussianBlur(255 - gray, (21, 21), 0)
๐ชจ Roughness
rough = cv2.equalizeHist(gray)
๐งฒ Metallic Map
_, metal = cv2.threshold(gray, metal_threshold.get(), 255, cv2.THRESH_BINARY)
๐งต Clean UI + Threaded Processing
No freezing, no lag.
The generator runs in a separate thread, keeping the UI responsive:
threading.Thread(target=start, daemon=True).start()
Includes:
โ
Live progress bar
โ
Scrollable logs
โ
Cancel anytime
๐งฐ Real-World Use Cases
Game-ready materials (Unreal / Unity)
Blender rendering pipelines
Texture libraries
Procedural prototyping
Environment art
๐ฆ Why This Tool?
Most tools either:
Require node setups (slow)
Are expensive
Or overcomplicated
This one is:
โก Fast
๐ง Smart
๐ฅ๏ธ Offline
๐ฏ Focused
๐ Final Thoughts
If you're working with materials, textures, or 3D pipelines, this tool can save you hours of manual work.
๐ Try it here: https://gum.new/gum/cmk79c11p001u04jvfyqz3jbu

Top comments (0)