Three.js: OutlinePass funktioniert nicht mit Pixelverhältnis 2

Erstellt am 21. Apr. 2017  ·  3Kommentare  ·  Quelle: mrdoob/three.js

Im Beispiel für den Outline-Pass ist das Pixelverhältnis auf 1 eingestellt.
https://github.com/mrdoob/three.js/blob/master/examples/webgl_postprocessing_outline.html#L161

Die Szene ist unscharf und wenn wir die Zeile kommentieren und das Pixelverhältnis des Geräts verwenden, wird die Szene wie im folgenden Screenshot in die linke untere Ecke gequetscht:
image

Three.js-Version
  • [ ] Dev
  • [x] r84
  • [ ] ...
Browser
  • [ ] Alle von ihnen
  • [x] Chrome
  • [ ] Feuerfuchs
  • [ ] Internet Explorer
Betriebssystem
  • [x] Alle
  • [ ] Fenster
  • [ ] Mac OS
  • [ ] Linux
  • [ ] Android
  • [ ] iOS
Hardwareanforderungen (Grafikkarte, VR-Gerät, ...)
Bug

Hilfreichster Kommentar

Es sieht so aus, als würde EffectComposer pixelRatio nicht verarbeiten, das in WebGLRenderer wenn WebGLRenderTarget erstellt

Ich schlage vor, den nächsten Workaround zu verwenden:

  1. Erstellen Sie einen benutzerdefinierten Satzgrößenhandler für effectFXAA :
effectFXAA.setSize = function(width, height) {
    this.uniforms.resolution.value.set(1 / width, 1 / height);
};
  1. Rufen Sie composer.setSize mit vormultipliziertem width und height während der Initialisierung und Größenänderung des Fensters auf:
var size = renderer.getSize();
var pixelRatio = renderer.getPixelRatio();
composer.setSize(width * pixelRatio, height * pixelRatio);

Alle 3 Kommentare

/ping @spidersharma03

Ich werde mal schauen

Es sieht so aus, als würde EffectComposer pixelRatio nicht verarbeiten, das in WebGLRenderer wenn WebGLRenderTarget erstellt

Ich schlage vor, den nächsten Workaround zu verwenden:

  1. Erstellen Sie einen benutzerdefinierten Satzgrößenhandler für effectFXAA :
effectFXAA.setSize = function(width, height) {
    this.uniforms.resolution.value.set(1 / width, 1 / height);
};
  1. Rufen Sie composer.setSize mit vormultipliziertem width und height während der Initialisierung und Größenänderung des Fensters auf:
var size = renderer.getSize();
var pixelRatio = renderer.getPixelRatio();
composer.setSize(width * pixelRatio, height * pixelRatio);
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen