Comment tout le monde compte-t-il les «rayons par seconde»?

8

Récemment, je développe un traceur de chemin Monte-Carlo. Pour mesurer les performances de mon traceur, j'ai décidé de mettre en place un mécanisme simple pour compter le nombre de rayons qu'il peut tracer en une seconde. Puis vient le problème, il y a deux façons de définir un seul rayon:

  1. Un rayon complet, c'est-à-dire partant de la caméra et rebondissant autour de la scène jusqu'à ce qu'elle se termine.

  2. Le rayon provient de chaque point d'intersection.

Bien que de nombreuses personnes utilisent des «rayons par seconde» pour mesurer les performances du traceur de rayons / chemin, la façon dont elles reconnaissent les «rayons» n'est pas claire pour moi. Peut-être que quelqu'un sait?

D01phiN
la source
1
J'ai vu les deux, malheureusement. Je n'aime pas le rayon par seconde comme signifiant exclusivement les rayons primaires et je suggère plutôt des "chemins par seconde" ou des "échantillons par seconde". "Rayon complet" n'est pas un nom que vous trouverez ailleurs: un rayon est un segment de ligne illimité. "Rayons par seconde" est mal spécifié pour un traceur de trajectoire: les rayons d'ombre comptent-ils, par exemple? C'est une métrique utile pour un framework d'accélération (ie Embree ou OptiX) mais pas un moteur de rendu.
Karl Schmidt
En outre, sachez que les échantillons par seconde ne sont toujours pas une excellente mesure des performances réelles, car la qualité des échantillons variera énormément en fonction des détails d'implémentation. C'est probablement la meilleure chose que vous puissiez faire pour commencer, car les meilleures solutions impliquent des estimations de variance assez complexes.
Karl Schmidt
@KarlSchmidt Je pense que vous devriez poster ces commentaires comme réponse;)
Nathan Reed
Probablement une bonne idée, oui. :)
Karl Schmidt

Réponses:

4

J'ai vu les deux, malheureusement. Je n'aime pas les rayons par seconde car ils signifient exclusivement des rayons primaires et je suggérerais plutôt des "chemins par seconde" ou mieux encore des "échantillons par seconde". "Rayon complet" n'est pas un terme courant: un rayon est un segment de ligne (potentiellement illimité) et une séquence de rayons est un chemin.

Les rayons par seconde dans votre deuxième sens de la projection totale des rayons ne sont pas bien spécifiés pour un traceur de trajectoire: les rayons d'ombre comptent-ils, par exemple? C'est une mesure utile pour évaluer une structure d'accélération ou un cadre de test d'intersection (c'est-à-dire Embree ou OptiX) mais je l'éviterais pour un moteur de rendu.

Enfin, sachez que les échantillons par seconde ne sont toujours pas une excellente mesure des performances réelles, car la qualité des échantillons variera énormément en fonction des détails de mise en œuvre. C'est probablement la meilleure chose que vous puissiez faire pour commencer, car les meilleures solutions impliquent des estimations de variance assez complexes.

Karl Schmidt
la source
Très bonne réponse. Pour ajouter à cela, puisqu'il est difficile de trouver une métrique qui soit universellement significative, je vous suggère de choisir celle qui est la plus logique / la plus honnête pour votre cas d'utilisation, et assurez-vous d'expliquer ce que vous entendez par votre terminologie.
Alan Wolfe
Ouais, merci d'avoir éclairci mes pensées! Actuellement, je choisis les "échantillons par seconde" car il est facile à comprendre et difficile à comprendre à l'OMI. Je vais éventuellement implémenter quelque chose qui peut calculer la variance et mesurer les performances de rendu en fonction de cela.
D01phiN