Трассировка лучей: используйте только один луч вместо лучей отражения и преломления.

Сейчас я пытаюсь понять трассировщик лучей, разработанный Кевином Бисоном (smallpt: http://www.kevinbeason.com/smallpt/), и если я правильно понимаю код, он случайным образом выбирает либо отражать, либо преломлять луч (если поверхность и отражающая, и преломляющая).

Строки 71-73:

return obj.e + f.mult(depth>2 ? (erand48(Xi)

Кто-нибудь может объяснить недостатки использования только одного луча вместо обоих? Я никогда не слышал об этой технике, и мне любопытно, каков компромисс, учитывая, что она приводит к огромному снижению сложности.

5
задан Olivier Moindrot 11 April 2019 в 20:24
поделиться