CesiumGS/cesium

Feature ID Textures ignore sampler wrap mode

Open

#11.574 aperta il 19 ott 2023

Vedi su GitHub
 (3 commenti) (0 reazioni) (0 assegnatari)JavaScript (3324 fork)batch import
category - model/gltfgood first issuetype - bug

Metriche repository

Star
 (11.758 star)
Metriche merge PR
 (Merge medio 26g 3h) (26 PR mergiate in 30 g)

Descrizione

Feature ID textures are allowed to have any wrap mode, but CesiumJS incorrectly overrides this with CLAMP_TO_EDGE.

In GltfLoader there is this chunk of code for feature ID textures:

  const textureInfo = gltfFeatureIdTexture.texture;
  featureIdTexture.textureReader = loadTexture(
    loader,
    gltf,
    textureInfo,
    supportedImageFormats,
    frameState,
    Sampler.NEAREST // Feature ID textures require nearest sampling
  );

The last parameter for that function is samplerOverride, which replaces the original texture.sampler with the provided one. In Sampler.js:

Sampler.NEAREST = Object.freeze(
  new Sampler({
    wrapS: TextureWrap.CLAMP_TO_EDGE,
    wrapT: TextureWrap.CLAMP_TO_EDGE,
    minificationFilter: TextureMinificationFilter.NEAREST,
    magnificationFilter: TextureMagnificationFilter.NEAREST,
  })

Instead of completely replacing the old sampler with the new one, only the minificationFilter and magnificationFilter should be overriden.

Guida contributor