[Bug] - N8AO works incorrectly with adaptiveDpr

Ouverte
#280 2 commentaires 1 réaction 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
35/100
Type d'issue
Bug
Clarté
À clarifier
Activité
À l'abandon
Stack technique
react, three.js, typescript

Piste de recherche

Commencez par le comportement de N8AOPostPass décrit dans l’issue et reproduisez le cas en faisant passer la DPR du renderer de 2 à 1 dans les configurations react-postprocessing et three indiquées. Suivez la manière dont ses valeurs de taille sont mises à jour ; c’est terminé lorsque adaptiveDpr ne produit plus de réflexions intempestives après la transition de DPR.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Hey everyone! I seems found a bug in N8AO related to AdaptiveDpr

We found a strange effect in our application after adding N8AO to EffectComposer - sometimes it started to add weird 'reflections' to the materials, and we couldn't understand where it's coming from

image

This is how it looks like: On the surface of the model you can see "reflection" from grid, which should't be present (but it's not only about grid but any objects can appear as reflection).

After debugging for a while I've noticed that this happens on my machine when DPR value is changed. If we (or system) change dpr from 2 to 1, N8AO started to add this 'reflections'. As I can see class has size values which are half of the initial renderer size (if I understand correctly)

Снимок экрана 2024-04-23 в 10 16 47

If I manually call setSize(width, height) method on N8AOPostPass instance and upscale this values back to dpr=2 values this bug disappears. So it's either should always keep initial values or there is some error in calculation after updating render size

Steps to reproduce
Lest say screen size is 1000x500 with dpr=2. initial values of renderer is 2000x1000px, dpr=2, we set dpr to 1, values are updated to 1000x500, bug appears. If I set values manually by calling setSize() on N8AOPostPass instance to setSize(2x1000, 2x500) it starts working correctly again

versions

"@react-three/drei": "^9.97.5",
"@react-three/fiber": "^8.15.16",
"@react-three/postprocessing": "^2.16.2",
"postprocessing": "^6.35.3",
"three": "^0.161.0",

Can anyone help with this? I can help with fix if you can explain a bit more of how it works. Thanks in advance

Langage dominant
TypeScript
Étoiles
1.4k
Forks
134
Merge moyen
4 min
PR mergées (30 j)
4

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de pmndrs/react-postprocessing

Toutes les issues de pmndrs/react-postprocessing

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.