npx skills add ...
npx skills add enzed/r3f-skills --skill r3f-textures
Configure textures in React Three Fiber, including color spaces, UV channels, sampling, video, and render targets. Use for texture appearance or memory issues; use loader guidance for model-loading workflows.
npx skills add enzed/r3f-skills --skill r3f-textures
Inspect installed Three.js, Fiber, Drei, and renderer versions first. Examples target Fiber 9 / React 19 and Three.js r185 with WebGL. Preserve correctly configured assets rather than resetting every texture.
| Texture content | Color-space annotation |
|---|---|
| PNG/JPEG base color or emissive color | SRGBColorSpace |
| Roughness, metalness, normal, AO, alpha/masks | NoColorSpace |
| Linear HDR/EXR lighting data | Preserve loader-provided linear metadata |
NoColorSpace is not another name for LinearSRGBColorSpace: scalar/vector data has no color space. Do not blanket-convert every map to sRGB.
Mount under Suspense inside Canvas. The file path is an application asset, not a file provided by this skill.
Fiber handles common built-in color map props, and glTF loaders set texture metadata. Explicit annotation is especially important for custom shader uniforms or manually created textures.
useTexture/useLoader cache by loader and URL inputs. The same source can return the same Texture object. Repeat, offset, wrapping, filters, and colorSpace changes can affect every consumer.texture.channel = 0 selects uv, 1 selects uv1, then uv2 and uv3. Choose the actual geometry attribute; AO/light maps no longer universally require copying uv into uv2.texture.needsUpdate. Offset/repeat changes use the texture matrix and do not normally require re-uploading image data.flipY=false. Do not flip already configured glTF maps again.useVideoTexture when its lifecycle fits. Check autoplay/muting, CORS, user gestures, and source cleanup; changing video resolution may require a new texture. Do not promise autoplay succeeds on every browser.needsUpdate; data textures should keep data color-space semantics. Creating a texture in a frame loop leaks work/resources unless deliberately managed.Environment/useEnvironment) rather than assigning a regular 2D image without a suitable mapping/PMREM workflow.Test a known color swatch, data maps under changing lights, texture orientation, repeated mounts, and two consumers with different UV transforms. Inspect GPU texture counts; they are counts, not byte-accurate memory measurements.