CesiumGS/cesium

Feature ID Textures ignore sampler wrap mode

Open

#11 574 ouverte le 19 oct. 2023

Voir sur GitHub
 (3 commentaires) (0 réactions) (0 assignés)JavaScript (3 324 forks)batch import
category - model/gltfgood first issuetype - bug

Métriques du dépôt

Stars
 (11 758 stars)
Métriques de merge PR
 (Merge moyen 26j 3h) (26 PRs mergées en 30 j)

Description

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.

Guide contributeur