Skip to main content
skill CX Codex

3d-high-resolution-textures — Claude Code skill: sharp PBR materials

Picks texture resolution and PBR maps so close-up surfaces stay sharp without blowing up GPU memory.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add MengTo/Skills --skill 3d-high-resolution-textures -a claude-code
Open on GitHub

What 3d-high-resolution-textures does

The skill works from the camera view backward. You identify hero surfaces, their nearest camera distance and projected pixel coverage, then estimate tile size from visible UV coverage instead of stamping 4K or 8K on every map. A reference table splits maps by role: base color and emissive stay in sRGB, while normal, roughness, metalness, AO and height carry numerical data and get no color-space conversion.

Sampling and delivery come next. Mipmaps and minification filtering for static textures, anisotropic filtering for grazing-angle floors and roofs, capped by renderer.capabilities.getMaxAnisotropy(). Foliage cutouts need padded atlas cells and edge color bled into transparent texels, or distant cards show dark fringes against the sky. Loading runs progressively: opening-view maps first, then hero surfaces, then optional rooms scheduled by scene visibility or camera distance.

The budget math is the part people skip. A 4096² RGBA8 texture with a full mip chain is roughly 85.3 MiB of GPU storage before driver overhead, so a small compressed download can still produce a large allocation. Budget the whole material set and concurrent upgrades, not file size.

What it helps with

  • match texture resolution to the nearest camera view
  • assemble a coherent PBR map set for wood, stone or fabric
  • fix dark fringes on distant foliage mip levels
  • plan GPU memory budget across a full material set
  • stream textures as the camera approaches instead of loading everything upfront

Example prompts for the agent

  • estimate the resolution needed for a close-up oak beam and lay out base color, normal and roughness maps
  • check seams and grain direction on the normal map under a moving light
  • set up chapter-based texture scheduling and estimate total GPU memory

How to install 3d-high-resolution-textures

1Skills CLI (Vercel)

npx skills add MengTo/Skills --skill 3d-high-resolution-textures -a claude-code

2Manually: put the files in place

~/.claude/skills/3d-high-resolution-textures/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/3d-high-resolution-textures/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about 3d-high-resolution-textures

How do I install 3d-high-resolution-textures in Claude?

Run npx skills add MengTo/Skills --skill 3d-high-resolution-textures -a claude-code. The skill lands at ~/.claude/skills/3d-high-resolution-textures/SKILL.md.

What does 3d-high-resolution-textures do?

It guides high-resolution material work: resolution chosen from visible UV coverage, correct color spaces per map, mipmaps, anisotropic filtering and progressive asset delivery.

Which renderer does it target?

The guidance uses Three.js examples such as color management, KTX2Loader and renderer.capabilities.getMaxAnisotropy(). Map configuration should be checked against the installed renderer version.

Source text

SKILL.md · MIT
---
name: 3d-high-resolution-textures
description: Build sharp, physically coherent high-resolution materials for 3D rendering with appropriate PBR maps, texel density, UV direction, mipmaps, anisotropic filtering, and progressive asset delivery. Use for detailed wood, stone, fabric, foliage, and architectural close-ups without excessive download or GPU memory costs.
---

# 3D High-Resolution Textures

Make materials hold up at the closest intended camera view. Specify visible surface detail, mapping scale, and delivery cost together.

## Choose resolution from the view

Identify hero surfaces, their nearest camera distance, projected pixel coverage, and target render scale. A texture need depends on visible UV coverage: if a surface spans 1200 physical pixels while showing half a tile, a roughly 2400-pixel-wide tile is a useful starting estimate. Inspect the result rather than assigning 4K or 8K to every map.

Use higher resolution for readable close-up albedo/normal details and lower resolution for smooth roughness or distant surfaces when they look equivalent. Match texel density across connected surfaces. Upscaling a small source cannot invent captured detail; obtain a better source or author appropriate procedural detail when necessary.

## Build a coherent PBR material

| Map | Role | Color interpretation |
| --- | --- | --- |
| Base color, emissive color | Surface color or emitted color | sRGB for ordinary PNG/JPEG/WebP color artwork |
| Normal, roughness, metalness, AO, height | Numerical material data | No color-space conversion |
| HDR lighting image | Radiance for environment lighting | Use the format/loader's linear HDR interpretation |

Keep lighting calculations linear and apply final output conversion once. Configure maps according to the material and renderer version; see [Three.js color management](https://github.com/mrdoob/three.js/blob/dev/manual/pages/color-management.html).

Use base color without baked directional highlights when dynamic lighting is expected. Orient wood grain along the member, stone scale to actual units, and woven fibers to fabric construction. Share tiling transforms across maps belonging to one material. Check tangent-space normal convention and seams under a moving light. Verify the AO UV channel supported by the installed renderer rather than blindly duplicating an obsolete attribute name.

Combine broad color variation, mid-scale structure, and subtle microdetail. Keep bump/normal intensity plausible. Normal and bump maps alter shading; silhouette detail requires geometry or displacement with enough vertices. Wood, stone, and cloth are generally dielectric surfaces, so increasing metalness to make them shiny is not a material fix.

## Preserve detail during sampling

Enable mipmaps and appropriate minification filtering for ordinary static textures. Use anisotropic filtering for grazing-angle floors, roofs, and timber, capped by `renderer.capabilities.getMaxAnisotropy()`. Compare moderate values before assigning the maximum everywhere; anisotropy improves oblique sampling, not missing source detail.

For foliage cutouts, pad atlas cells, bleed edge color into transparent texels, and preserve alpha coverage across mip levels. Inspect distant cards against a bright sky for dark fringes or disappearing leaves. Do not threshold every mip blindly; choose a method compatible with alpha testing or alpha-to-coverage.

## Deliver detail progressively

- Load the opening view's essential maps first. Use a small useful placeholder or lower-resolution variant, then promote near-visible hero surfaces without changing their UV scale or material identity.
- Queue optional rooms and detail views shortly before the camera reaches them. DOM `loading="lazy"` does not schedule WebGL texture requests; use scene visibility, camera distance, or chapter state explicitly.
- Deduplicate requests and cache texture variants by full asset identity plus sampling/color settings. Do not key by a filename suffix that may collide.
- Keep assets external and cacheable. WebP/AVIF can reduce network bytes for color imagery; inspect data maps for compression artifacts. They usually decode to uncompressed GPU textures. KTX2/Basis can also reduce GPU storage where supported; configure and verify the transcoder and fallback. See [KTX2Loader](https://threejs.org/docs/pages/KTX2Loader.html).
- Dispose superseded GPU textures when no material still references them. Reusing image bytes across separate WebGL contexts does not share the GPU allocation.

A 4096² RGBA8 texture with a full mip chain is approximately 85.3 MiB in GPU storage before driver overhead. A small compressed download can therefore still produce a large allocation. Budget the entire material set, decoded CPU images, and concurrent upgrades, not just file size.

For procedural maps, bake stable assets ahead of time where useful. Cache shared noise/height fields, process large work in bounded batches or workers, and avoid millions of canvas drawing calls during startup. Yielding around one huge synchronous operation does not divide its stall.

## Verify

Inspect close-up and grazing-angle views at the intended display resolution, then compare the same material farther away. Check seams, grain direction, alpha rims, normal orientation, and color under neutral and final lighting. Record opening bytes separately from total assets, requested dimensions, estimated GPU memory, texture promotion hitches, and missing assets on mobile.

Read [REFERENCES.md](REFERENCES.md). In Seijaku, inspect `barUV`, `assetTex`, the leaf mip/bleed preparation, shared procedural fields, and chapter-based texture scheduling. Those patterns explain its material detail better than source dimensions alone.

© MengTo · MIT · MengTo/Skills

Similar skills

Everything for Game dev and 3D: Unity, Unreal, Godot, Blender →

From the same set148

web-technique-to-skill Turns a visual or interaction technique you already built into a reusable web-design skill, with a demo that proves both the mechanism and the visual fidelity. CX Codex +1 1,100installs add-mouse-driven-orbit Adds subtle mouse-driven orbit and parallax to Three.js hero sections without OrbitControls. Useful for cinematic headers that react to cursor movement. CX Codex +1 1,200installs 3d-virtual-tour A skill for building virtual tours through a 3D scene: authored camera paths, room navigation, orbit inspection. Useful for architectural walkthroughs and showrooms in Three.js. CX Codex +1 527installs 3d-retina-resolution Keeps 3D canvases sharp on Retina and HiDPI displays, including fixed 200% rendering. Useful for blurry WebGL previews and display-density changes. CX Codex +1 512installs 3d-sky-rays A skill that adds crepuscular rays to a Three.js scene, shaped by roofs and foliage. Useful for golden-hour architectural shots. CX Codex +1 506installs 3d-sky-background Builds camera-correct 3D skies with procedural atmosphere, horizon haze, aligned sun lighting, and coherent environment reflections. CX Codex +1 505installs 3d-falling-leaves A skill for Three.js and similar scenes: it walks the agent through falling leaves in world space, with tumble, sideways drift and instance recycling. CX Codex +1 499installs 3d-four-seasons Adds four-season transitions to a 3D scene by blending foliage, lighting, snow, and particles via uniforms without rebuilding the world. CX Codex +1 497installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor