Three.js: OutlinePass ne fonctionne pas avec le ratio de pixels 2

Créé le 21 avr. 2017  ·  3Commentaires  ·  Source: mrdoob/three.js

Dans l'exemple de passe de contour, le rapport de pixels est défini sur 1.
https://github.com/mrdoob/three.js/blob/master/examples/webgl_postprocessing_outline.html#L161

La scène est floue et si nous commentons la ligne et utilisons le ratio de pixels de l'appareil, la scène est comprimée dans le coin inférieur gauche comme la capture d'écran suivante :
image

Version trois.js
  • [ ] Dév
  • [x] r84
  • [ ] ...
Le navigateur
  • [ ] Tous
  • [x] Chrome
  • [ ] Firefox
  • [ ] Internet Explorer
Système d'exploitation
  • [x] Tous
  • [ ] Les fenêtres
  • [ ] macOS
  • [ ] Linux
  • [ ] Android
  • [ ] iOS
Configuration matérielle requise (carte graphique, périphérique VR, ...)
Bug

Commentaire le plus utile

Il semble qu'EffectComposer ne gère pas pixelRatio qui est défini dans WebGLRenderer lors de la création de WebGLRenderTarget .

Je suggère d'utiliser la solution de contournement suivante :

  1. Créez un gestionnaire de taille d'ensemble personnalisé pour effectFXAA :
effectFXAA.setSize = function(width, height) {
    this.uniforms.resolution.value.set(1 / width, 1 / height);
};
  1. Appelez composer.setSize avec width et height prémultipliés lors de l'initialisation et du redimensionnement de la fenêtre :
var size = renderer.getSize();
var pixelRatio = renderer.getPixelRatio();
composer.setSize(width * pixelRatio, height * pixelRatio);

Tous les 3 commentaires

/ping @spidersharma03

j'y jetterais un œil

Il semble qu'EffectComposer ne gère pas pixelRatio qui est défini dans WebGLRenderer lors de la création de WebGLRenderTarget .

Je suggère d'utiliser la solution de contournement suivante :

  1. Créez un gestionnaire de taille d'ensemble personnalisé pour effectFXAA :
effectFXAA.setSize = function(width, height) {
    this.uniforms.resolution.value.set(1 / width, 1 / height);
};
  1. Appelez composer.setSize avec width et height prémultipliés lors de l'initialisation et du redimensionnement de la fenêtre :
var size = renderer.getSize();
var pixelRatio = renderer.getPixelRatio();
composer.setSize(width * pixelRatio, height * pixelRatio);
Cette page vous a été utile?
0 / 5 - 0 notes