feat(paint-slots): concrete-plate finish + try defaults (wall=concrete, slab=wood plank 48, ceiling=soft white)

- material-library: add 'concrete-plate' KTX2 finish (512, fabric/leather-style
  pipeline) + editor-app texture mirror.
- viewer: shared resolveSlotDefaultMaterial(colour|library ref) so a kind's slot
  default can be a catalog finish, not just a flat colour.
- wall default -> library:concrete-plate (interior + exterior).
- slab default -> library:wood-woodplank48 (slab geometry resolves it via the
  shared helper).
- ceiling default -> soft white #f2eee6 (ceiling renders flat-tinted).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Wassim SAMAD
2026-06-17 08:25:48 -04:00
co-authored by Claude Opus 4.8
parent 967a905e3b
commit 737c4e9d1d
12 changed files with 74 additions and 11 deletions
+38
View File
@@ -3860,6 +3860,44 @@ export const MATERIAL_CATALOG: MaterialCatalogItem[] = [
},
},
},
{
id: 'concrete-plate',
label: 'Concrete Plate',
category: 'concrete',
surfaces: ['wall', 'floor'],
description: 'Smooth cast concrete plate',
previewThumbnailUrl: '/material/concrete/concrete_plate/concrete_plate_thumb.webp',
preset: {
maps: {
albedoMap: '/material/concrete/concrete_plate/concrete_plate_basecolor_512.ktx2',
normalMap: '/material/concrete/concrete_plate/concrete_plate_normal_512.ktx2',
roughnessMap: '/material/concrete/concrete_plate/concrete_plate_roughness_512.ktx2',
aoMap: '/material/concrete/concrete_plate/concrete_plate_ao_512.ktx2',
},
mapProperties: {
color: '#ffffff',
roughness: 0.8,
metalness: 0,
repeatX: 0.5,
repeatY: 0.5,
rotation: 0,
wrapS: 'Repeat',
wrapT: 'Repeat',
normalScaleX: 1,
normalScaleY: 1,
emissiveIntensity: 1,
displacementScale: 0,
transparent: false,
flipY: false,
bumpScale: 1,
emissiveColor: '#000000',
aoMapIntensity: 1,
side: 0,
opacity: 1,
lightMapIntensity: 1,
},
},
},
{
id: 'concrete-stucco',
label: 'White Stucco',
+2 -2
View File
@@ -52,8 +52,8 @@ export type WallSurfaceSide = 'interior' | 'exterior'
// May be a `#rrggbb` colour or a `library:<id>` ref. Textures-off still
// collapses to the themed wall role (the escape hatch).
export const WALL_SLOT_DEFAULT: Record<WallSurfaceSide, string> = {
interior: '#ffffff',
exterior: '#ffffff',
interior: 'library:concrete-plate',
exterior: 'library:concrete-plate',
}
export type WallSurfaceMaterialSpec = {