Reproducible benchmark · 2026-09-03
Image-to-PBR benchmark: PLAYTEX AI vs GenPBR 2.7
This test does not establish that either product is better. It publishes the raw outputs from one three-crop, default-settings run. Border-pixel deltas and encoded metallic values are descriptive diagnostics, not texture-quality verdicts. The two timing sets are not comparable. Anonymous access and output-channel counts describe product scope, not output quality.
Tested by justhim on . Versioned edition: 2026-09-03.
Download input-photo set (.zip)Download full results (.zip)Measurements (.json)Measurements (.csv)Exact settings (.json)Citation fileSHA-256 manifest

Results at a glance
| Question | PLAYTEX AI | GenPBR 2.7 | Supported interpretation |
|---|---|---|---|
| Anonymous 512px generation | Free plan can generate/preview, but repository entitlement contract disables download. | $0 public generator, no account used; free-output license is non-commercial with attribution. | Access-policy difference only; not texture quality |
| Shared-map opposing-border pixel delta | 17.172% | 14.560% | Descriptive statistic; no seam-quality or product verdict |
| Mean encoded metallic value on wood | 19.712% | 35.342% | Descriptive statistic; no calibrated accuracy verdict |
| Observed processing timer | 504.127 ms median, core only | 466 ms median, browser result update | Not comparable; no faster-product conclusion |
| Output channels at tested defaults | 7: albedo, normal, metallic, emission, roughness, height, AO | 5 derived maps: normal, metallic, roughness, height, AO | Output-scope difference; channel count is not map quality |
| Commercial entry listed on test date | $9/month Starter; up to 2048px PBR maps and engine packages in the repository entitlement contract. | $9.99/month Starter; commercial rights listed on official pricing page. | Not like-for-like; licenses and bundles differ |
The table reports observations without ranking the products. A lower opposing-border delta can come from flatter output and does not prove a better tile. The processing timers use different boundaries and cannot be used to call either product faster.
Neutral wood crop
Lower-glare section used as the baseline wood case.

| Map | PLAYTEX AI | GenPBR |
|---|---|---|
| normal | 23.737% | 5.124% |
| metallic | 6.042% | 13.487% |
| roughness | 4.946% | 21.278% |
| height | 18.378% | 14.298% |
| ao | 18.315% | 7.227% |
Wood metallic output: PLAYTEX AI mean 17.181% with 99.733% of pixels above 0.10; GenPBR mean 34.400% with 99.999% above 0.10.
Source-to-height luminance correlation: PLAYTEX AI 0.9999; GenPBR 0.8611. This describes carryover; it is not a correctness score.



Glare hotspot crop
Tests whether photographed lighting is carried into derived maps.

| Map | PLAYTEX AI | GenPBR |
|---|---|---|
| normal | 24.579% | 5.845% |
| metallic | 3.995% | 9.113% |
| roughness | 4.670% | 26.781% |
| height | 12.675% | 8.990% |
| ao | 11.320% | 8.188% |
Wood metallic output: PLAYTEX AI mean 22.367% with 99.984% of pixels above 0.10; GenPBR mean 44.503% with 100.000% above 0.10.
Source-to-height luminance correlation: PLAYTEX AI 0.9999; GenPBR 0.9190. This describes carryover; it is not a correctness score.



Dark edge and trim crop
Tests strong boundary contrast and repeat-edge behavior.

| Map | PLAYTEX AI | GenPBR |
|---|---|---|
| normal | 19.000% | 4.037% |
| metallic | 8.138% | 31.732% |
| roughness | 13.782% | 18.769% |
| height | 44.127% | 35.709% |
| ao | 43.883% | 7.819% |
Wood metallic output: PLAYTEX AI mean 19.588% with 99.732% of pixels above 0.10; GenPBR mean 27.123% with 68.735% above 0.10.
Source-to-height luminance correlation: PLAYTEX AI 1.0000; GenPBR 0.9821. This describes carryover; it is not a correctness score.



Methodology
- Crop three 512×512 PNG inputs from the same first-party 1080×1440 phone photo. Do not retouch the crops.
- Run PLAYTEX AI reference build
2ae3dbaf971b21895a84697b5775fa0509cfedf5with material classdielectric, presetwood, and the checked-in defaults. - Run the public GenPBR 2.7 anonymous generator in Canvas CPU mode with every visible control left at its default.
- Save the unedited PNG outputs. Regenerate the neutral and glare normals and compare SHA-256 hashes.
- Measure opposite-edge RGB delta, decoded normal length, metallic leakage for a dielectric subject, and source/height luminance correlation.
Read the full method, settings, hardware, metric definitions, and limitations.
Exact machine-readable settings
{
"benchmark": {
"edition": "2026-09-03",
"tester": "justhim",
"testedAt": "2026-09-03T09:00:00-05:00",
"sourcePhoto": "/images/image-to-texture/phone-wood-source.webp",
"sourcePhotoSha256": "eb05ba5741f461bb23dd4d0306e42113cb2390cdcc935d03216db1d3d411326f",
"inputContract": "Three 512×512 PNG crops from one first-party phone photo; no retouching after crop.",
"machine": {
"operatingSystem": "Microsoft Windows 11 Home build 26200",
"cpu": "AMD Ryzen 5 5600X 6-Core Processor (12 logical processors)",
"memory": "31.9 GB",
"gpu": "NVIDIA GeForce RTX 5070",
"node": "v24.13.1"
}
},
"products": {
"playtex": {
"name": "PLAYTEX AI PBR Map Generator",
"version": "reference build 2ae3dbaf971b21895a84697b5775fa0509cfedf5",
"committedAt": "2026-09-03T04:57:47-05:00",
"implementationFiles": {
"src/constants/defaults.ts": "b53b66cbdfd47d922f17c7b796a151255b9926a88cb2cac79aafd069fd0bcee7",
"src/lib/imageProcessing.ts": "0871f380b6d76d92dc56990a2fb9612be872f58832076ac98854a5921a5e4a1f",
"src/lib/materialHeuristics.ts": "3b85034a18e1f04e4e65f8c48c6aa1092320ef82032e9ed11f77cb59d78547f1",
"src/lib/pbrCalibration.ts": "61b0b46705e6a1a68b3ddfb259df54eee02ea580ac43a0655cbfa5cfe262251a",
"src/lib/pbrGenerationCore.ts": "96aa5cfbeba5af7d22bc2e9d0432b5b717d350b6dcb6152a01f3957d178c9349",
"src/lib/processingSettings.ts": "5f3f6b6e7727abfc1fd0fcfc0f300479a956e528d4e9b3ed8176d74d26b93f6a"
},
"execution": "Direct synchronous reference-core call using the repository implementation.",
"inputResolution": "512×512",
"outputResolution": "512×512",
"materialClass": "dielectric",
"materialPreset": "wood",
"requestedMaps": [
"albedo",
"normal",
"metallic",
"emission",
"roughness",
"height",
"ao"
],
"settings": {
"albedo": {
"brightness": 0,
"contrast": 1,
"saturation": 1,
"hueShift": 0,
"gamma": 1
},
"normal": {
"strength": 5,
"blur": 0,
"detail": 1,
"invertX": false,
"invertY": false,
"format": "opengl",
"seamless": false,
"edgeEmphasis": 0.5,
"microDetailScale": 1,
"heightToNormalInfluence": 0.3
},
"metallic": {
"mode": "smart",
"threshold": 128,
"contrast": 1,
"clampMin": 0,
"clampMax": 255,
"sourceChannel": "luminance"
},
"emission": {
"threshold": 200,
"mode": "solid",
"color": "#ffffff",
"gradientColors": [
"#ff0000",
"#ffff00",
"#00ff00",
"#00ffff",
"#0000ff"
],
"gradientIntensities": [
1,
1,
1,
1,
1
],
"intensity": 1,
"glowRadius": 0,
"sourceMode": "luminance",
"softThreshold": 0.2,
"falloffCurve": "smooth",
"invertOutput": false,
"colorMatch": false
},
"roughness": {
"source": "luminance",
"blackPoint": 0,
"whitePoint": 255,
"contrast": 1,
"outputMode": "roughness",
"clampMin": 0,
"clampMax": 255,
"invertOutput": false,
"responseCurve": "linear"
},
"height": {
"strength": 1,
"blur": 0,
"midpointBias": 0,
"clampMin": 0,
"clampMax": 255,
"parallaxSafe": false
},
"ao": {
"radius": 2,
"intensity": 1,
"edgeOcclusionBoost": false,
"heightAwareAO": false
},
"global": {
"seamAwareProcessing": false,
"mapConsistencyLock": true,
"powerOfTwoLock": false
}
},
"repetitions": "One warm-up, then five measured generations per crop.",
"deterministicAcrossMeasuredRuns": {
"wood-neutral": true,
"glare-hotspot": true,
"dark-edge": true
},
"pricingAsOfTest": {
"free": {
"monthlyPriceUsd": 0,
"download": false,
"maxMapResolutionPx": 512,
"licenseScope": "noncommercial_public"
},
"mapper": {
"monthlyPriceUsd": 3,
"download": true,
"maxMapResolutionPx": 2048,
"licenseScope": "personal"
},
"starter": {
"monthlyPriceUsd": 9,
"download": true,
"maxMapResolutionPx": 2048,
"enginePackageExport": true,
"licenseScope": "standard_commercial"
}
},
"exportFormats": [
"PNG map files",
"ZIP material set",
"engine package on Starter+"
]
},
"genpbr": {
"name": "GenPBR",
"version": "2.7 (page header observed on test date)",
"url": "https://genpbr.com/generate",
"execution": "Public anonymous generator in the Codex in-app Chromium browser.",
"renderingMode": "Canvas CPU • Universal",
"inputResolution": "512×512",
"outputResolution": "512×512",
"maps": [
"normal",
"metallic",
"roughness",
"height",
"ao"
],
"settings": {
"normalStrength": 5,
"metallicIntensity": 0.8,
"roughnessIntensity": 2,
"aoIntensity": 2,
"aoRadius": 12,
"heightContrast": 1,
"heightBrightness": 0,
"invertHeight": false
},
"repetitions": "One captured generation per crop; glare and neutral normal maps were regenerated and SHA-256 matched the first capture.",
"observedAnonymousPriceUsd": 0,
"pricingAsOfTest": {
"freeAccount": "$0; non-commercial use only; attribution required.",
"starterMonthly": "$9.99/month; commercial rights listed."
},
"observedControls": [
"Download All",
"per-map download",
"Regen"
],
"documentedFormats": [
"PNG",
"ZIP archive",
"MaterialX"
],
"requiredFreeOutputAttribution": "Textures generated with GenPBR — genpbr.com",
"pricingSource": "https://genpbr.com/pricing",
"licensingSource": "https://genpbr.com/licensing"
}
}
}Sources and attribution
- GenPBR public generator
- GenPBR official pricing
- GenPBR official licensing
- PLAYTEX AI pricing
- PLAYTEX AI editorial policy and corrections process
Textures generated with GenPBR — genpbr.com