Get Started →

Advanced Search & Filtering

Premium PBR Textures for Real-Time Engines

Interactive Demo

Filter by Material Properties, Not Just Keywords

GrainStack's search engine understands PBR material science. Instead of guessing which texture matches your asset, set precise constraints on roughness, albedo hue, and normal map intensity — then browse only the textures that fit.

Start by entering a keyword like "concrete" or "weathered steel", then tighten the results using the three core PBR sliders. Each slider maps directly to the physical properties stored in our metadata pipeline, so a roughness range of 0.72–0.88 will return only textures whose measured microfacet distribution falls within that band. Combine multiple filters for surgical precision: for example, metalness ≥ 0.90 + albedo warm tone + normal intensity 0.6–0.8 isolates brushed brass and copper sheets while excluding chrome and anodized aluminum.

Roughness Range

Set minimum and maximum roughness values (0.00–1.00). Use a narrow band like 0.35–0.42 to find satin-finish plastics, or open the range to 0.00–1.00 for broad exploration. Values are averaged across the full albedo map, so specular hotspots don't skew results.

Albedo Color Picker

Pick a target hex color — for instance #8B7355 for warm oak or #2C3E50 for slate blue. The engine computes per-pixel Euclidean distance in Lab color space and returns textures whose dominant hue falls within your tolerance radius. Adjust the tolerance slider from ±5 (exact match) to ±30 (broad family).

Normal Map Intensity

Control how much surface relief your texture carries. Low intensity (0.0–0.3) yields subtle grain and fine scratches; medium (0.3–0.6) captures visible tool marks and fabric weave; high (0.6–1.0) delivers deep gouges, heavy stucco, and pronounced tile grout. This filter reads the RMS gradient of the normal map, not the baked scale factor, so results stay consistent across engines.

How Tags Work

Tagging System & Semantic Labels

Every texture in GrainStack is tagged by our curators using a controlled vocabulary of 340+ material descriptors. Tags are not free-text — they are hierarchical, mutually exclusive where appropriate, and cross-referenced with the numeric PBR data.

A single texture may carry tags across four axes: material type (e.g., concrete_cast, wood_oak, metal_brass), surface finish (e.g., polished, brushed, weathered, chipped_paint), use case (e.g., flooring, exterior_wall, prop_hard_surface), and seamless behavior (e.g., seamless_4k, bordered_tile). When you apply a filter like "roughness 0.70–0.90," the engine also boosts textures tagged matte or unpainted in the ranking algorithm, because those labels correlate strongly with high-roughness surfaces.

You can also combine tags with operators. The query wood_oak AND weathered NOT painted returns aged oak planks that have never received a topcoat — ideal for historical game environments or architectural visualization. Tag suggestions appear in real time as you type, and you can save custom tag bundles for recurring projects.

Material Type Tags

Granular identifiers like stone_granite, glass_frosted, leather_cordovan, and fabric_velvet. Each maps to a node in our taxonomy tree, so searching stone automatically includes granite, marble, limestone, and slate unless you narrow it further.

Finish & Wear Tags

Descriptive labels such as scratched, oxidized, powder_coated, hand_sanded, and thermal_cracked. These are applied by curators who inspect each texture at 100% zoom and verify the wear pattern matches the label's definition.

Resolution & Channel Tags

Technical tags like 4k_uhd, 8k_print, ao_baked, height_channel, and opacity_alpha. Filter by channel availability to ensure your exported set includes every map your renderer requires — no surprise missing specular or curvature passes.

Results Preview

What a Filtered Search Looks Like

Here is a real search session: finding a weathered concrete texture with specific roughness and a cool-gray albedo tone for a sci-fi corridor floor.

Query: concrete  |  Roughness: 0.65–0.80  |  Albedo target: #6B7B8D (tolerance ±12)  |  Normal intensity: 0.40–0.60  |  Tags: weathered seamless_4k

Results: 14 textures matched. Sorted by relevance score (PBR match weight 60%, tag overlap 25%, curator rating 15%).

GS-CON-0412 — "Harbor Dock Slab"

Roughness: 0.73 · Albedo peak: #6A7A8C · Normal RMS: 0.51 · Tags: concrete_cast weathered seamless_4k flooring · Curator rating: 4.8/5 · 4096×4096 · 6-channel set (albedo, roughness, normal, metalness, AO, height)

GS-CON-0587 — "Subway Platform Tile"

Roughness: 0.68 · Albedo peak: #718092 · Normal RMS: 0.44 · Tags: concrete_poured sealed seamless_4k flooring · Curator rating: 4.5/5 · 4096×4096 · 5-channel set (albedo, roughness, normal, metalness, AO)

GS-CON-0299 — "Foundations Block"

Roughness: 0.78 · Albedo peak: #657588 · Normal RMS: 0.57 · Tags: concrete_formed weathered stained exterior_wall · Curator rating: 4.3/5 · 4096×4096 · 6-channel set · Note: subtle efflorescence pattern in albedo

Each result card displays the measured PBR values inline so you can compare at a glance. Click any card to open the full preview modal, where you can inspect the texture in a lit 3D viewport, toggle individual channels, and download a tailored package (PNG, EXR, or KTX2) with your chosen sRGB or linear color space.

Open Search Interface   View Full Tag Taxonomy