R3f Textures

作者 enzed4a11805f0973無授權條款128 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫5 週前更新

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.

AI 產生的概覽

指導 React Three Fiber 中的紋理設定:色彩空間、UV 通道、取樣、視訊和算繪目標。

功能
此技能為 React Three Fiber 應用程式中的紋理設定提供參考指引,涵蓋色彩空間標註、紋理快取與所有權、UV 通道、取樣與篩選、視訊紋理以及算繪目標。它包含載入顏色貼圖的程式碼範例和驗證紋理行為的檢查清單。它產出的是建議和範例,而非可執行指令碼。
適用情境
當你在 React Three Fiber 專案中處理紋理外觀、色彩空間正確性或紋理記憶體問題時使用。它也適用於處理 UV 通道、包裹模式、篩選、視訊紋理或算繪目標。
執行需求
需要一個包含 Three.js、Fiber、Drei 和算繪器的 React Three Fiber 專案;此技能會檢查已安裝的版本。它不附帶指令碼,只有說明和一個參考文件。

React Three Fiber 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.

Color versus data

Texture contentColor-space annotation
PNG/JPEG base color or emissive colorSRGBColorSpace
Roughness, metalness, normal, AO, alpha/masksNoColorSpace
Linear HDR/EXR lighting dataPreserve 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.

Load a color map

Mount under Suspense inside Canvas. The file path is an application asset, not a file provided by this skill.

tsx
import { useTexture } from '@react-three/drei'import { SRGBColorSpace } from 'three'
export default function Example() {  const map = useTexture('/textures/checker.png', (texture) => {    // This URL is consistently used as a color texture by all consumers.    texture.colorSpace = SRGBColorSpace    texture.needsUpdate = true  })  return (    <mesh>      <planeGeometry args={[3, 3]} />      <meshStandardMaterial map={map} roughness={1} />    </mesh>  )}

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.

Cache and ownership

  • 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.
  • Clone the Texture object before per-instance configuration. Reuse the underlying image where possible; separately dispose only the clone you own. Do not dispose the cached source from an individual consumer.
  • Do not clear a loader cache during render. Cache eviction and GPU disposal are separate operations and require knowing that no active consumer still needs the resource.
  • Avoid replacing the uniform/texture object every frame; update offsets or owned values directly. On a demand loop, invalidate after imperative changes.

UVs and sampling

  • 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.
  • Repeat outside [0, 1] requires RepeatWrapping or MirroredRepeatWrapping. Offset/repeat/rotation are texture transforms; atlas animations generally do not need React state per frame.
  • Wrapping, color-space, and upload configuration changes may need texture.needsUpdate. Offset/repeat changes use the texture matrix and do not normally require re-uploading image data.
  • For pixel art, use nearest filtering deliberately. For minified surfaces, mipmaps reduce shimmer; cap anisotropy to the renderer's supported maximum and the scene's needs.
  • Power-of-two dimensions are not a universal WebGL2 requirement. Size textures for screen coverage, memory, compression-format constraints, and quality rather than an obsolete blanket rule.
  • Download size is not GPU memory size. Consider KTX2/Basis where supported; configure renderer capability detection and host decoder/transcoder assets deliberately.
  • For a replacement glTF color map, match the model's UV/orientation conventions; a manually loaded texture commonly needs flipY=false. Do not flip already configured glTF maps again.

Specialized textures

  • Prefer 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.
  • Canvas/DataTexture content changes need needsUpdate; data textures should keep data color-space semantics. Creating a texture in a frame loop leaks work/resources unless deliberately managed.
  • For render targets, read offscreen rendering [blocked]. Never sample from a texture while rendering into that same target.
  • Keep environment maps on a lighting path (Environment/useEnvironment) rather than assigning a regular 2D image without a suitable mapping/PMREM workflow.

Verify

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.

Sources

來源與署名

來源:enzed/r3f-skills位於skills/r3f-textures提交4a11805

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架