Redner est un rendu différenciable qui peut prendre les dérivés de rendu des sorties en ce qui concerne les paramètres de scène arbitraires, c'est-à-dire que vous pouvez faire du retour de l'image à votre scène 3D. L'un des principaux usages de Redner est le rendu inverse (d'où le nom Redner) par descente de dégradé. Ce qui distingue Redner est: 1) il calcule les gradients de rendu corrects stochastiques sans aucune approximation en considérant correctement les discontinuités, et 2) il a un mode physiquement - ce qui signifie qu'il peut simuler des photons et produire des phénomènes d'éclairage réalistes, tels que l'ombre et l'illumination mondiale, et il supporte les dérivés de ces caractéristiques correctement. Vous pouvez également utiliser Redner dans un mode de rendu différé rapide pour l'ombrage local: dans ce mode, il a toujours une estimation du gradient correcte et des modèles de matériaux plus élaborés par rapport à la plupart des rendus différenciables.
Pour plus de détails sur le rendu, ce qu'il peut faire et les techniques qu'il utilise pour calculer les dérivés, veuillez jeter un œil au papier: différenciable Monte Carlo Ray à travers l'échantillonnage des bords, Tzu-Mao Li, Miika Aittala, Fredo Durand, Jaakko Lehtinen. Depuis la soumission, nous avons beaucoup amélioré le rendu. En particulier, nous avons mis en œuvre un backend CUDA et accéléré considérablement les dérivés continus en remplaçant la différenciation automatique par des dérivés dérivés manuellement. Voir la thèse de Tzu-Mao Li pour encore plus de détails. Voir également la section "News" ci-dessous pour le Changelog.
Avec Pytorch (n'importe quelle version> = 1.0) ou TensorFlow (version> = 2.0) installé dans votre environnement Python actuel. Pour la version accélérée GPU (Linux et Windows, version CUDA> = 10.0):
pip install redner-gpu
Sinon (Windows, Linux et OS X):
pip install redner
La version Windows ne prend en charge que Pytorch et non TensorFlow en ce moment.
Vous pouvez également construire à partir de la source. Voir le wiki pour les instructions de construction.
Un bon point de départ pour apprendre à utiliser Redner est de regarder le wiki. La documentation de l'API est là. Vous pouvez également jeter un œil aux répertoires des tests (Pytorch et TensorFlow) pour avoir quelques idées.
06/12/2020 - Python 3.8 Prise en charge.
04/01/2020 - Ajout d'un modèle de distorsion de la caméra.
17/03/2020 - package PIP pour Windows! Actuellement uniquement avec le support Pytorch. Le support Tensorflow est en attente avec certains problèmes de compilation.
27/02/2020 - Correction d'un bug dans les dérivés BRDF. Cela affecte le plus la cartographie normale. Merci encore Markus Worchel d'avoir signalé cela.
02/02/2020 - Correction d'un bug sérieux pour le rendu G-Buffer (# 93). Merci Markus Worchel d'avoir signalé cela.
02/01/2020 - La prise en charge préliminaire de Windows pour GPU est à nouveau disponible grâce à Markus Worchel.
01/08/2020 - Améliore considérablement l'utilisation de la mémoire de MIPMapping. Vous pouvez maintenant utiliser de grandes textures (disons 4096x4096) relativement en toute sécurité.
15/12/2019 - Correction d'un bogue lié à GC sur le code de rendu Pytorch en 0.1.30. Veuillez mettre à jour.
12/12/2019 - La prise en charge préliminaire de Windows (CPU uniquement) est disponible grâce à la contribution de Markus Worchel.
12/09/2019 - Ajout de nombreux tutoriels dans Wiki à l'aide de Google Colab. Ajout d'une documentation générée par Sphinx.
12/09/2019 - Correction d'un bug dans le chargeur OBJ Wavefront. Merci Dejan Azinović pour les rapports!
12/01/2019 - Render les systèmes de construction et configurer l'installation de roues Python. Redner est maintenant sur PYPI (https://pypi.org/project/redner-gpu/ et https://pypi.org/project/redner/).
11/04/2019 - Ajout d'un champ "texture générique" dans le matériau qui peut avoir un nombre arbitraire de canaux. Cela peut être utile pour l'application en profondeur où la texture est générée par un réseau, et la sortie est introduite dans un autre réseau pour un traitement ultérieur. Voir test_multichannels.py pour les usages. Merci François Ruty pour la suggestion et l'aide sur la mise en œuvre.
11/04/2019 - Correction de plusieurs bogues dans les chargeurs OBJ / Mitsuba introduits par les changements uv_indices et normal_indices .
10/19/2019 - Ajout de la prise en charge des couleurs du sommet. Voir test_vertex_color.py.
10/08/2019 - Ajout du calcul UV automatique via la bibliothèque Xatlas. Voir la fonction compute_uvs dans forme.py et test_compute_uv.py.
10/08/2019 - légèrement modifié l'interface de classe de forme. L'ordre du constructeur est différent et il faut maintenant des arguments supplémentaires «UV_Indices» et «Normal_Indices» pour traiter avec les coutures dans le mappage UV et le chargement Obj. Voir Pyredner / Shape.py et Tutorial 2.
22/09/2019 - Nous traitons maintenant plus les incohérences entre les normales d'ombrage et les normales de géométrie (au lieu de simplement retourner zéro dans la plupart des cas). Cela aide à rendre les modèles de rendu dans la nature, par exemple, dans ShapeNet.
21/09/2019 - Correction d'un bug de dépassement de tampon sérieux dans le code de rendu différé lorsqu'il n'y a pas de canal de sortie de radiance. Si les choses ne fonctionnaient pas pour vous, réessayez peut-être.
16/08/2019 - Ajout de fichiers Docker pour une installation plus facile. Merci à nouveau Seyoung Park pour la contribution. J'ai également amélioré considérablement le guide d'installation du wiki.
13/08/2019 - Ajout de la prise en charge normale de la carte. Voir tests / test_teapot_normal_map.py.
08/10/2019 - Simplement simplifié le code d'accumulation des dérivés (réduction segmentée -> atomique). Le GPU Backward Pass a également obtenu une accélération de 20 à 30%.
08/07/2019 - Correction d'un bug de texture de rugosité.
27/07/2019 - Prise en charge de Tensorflow 1.14! Actuellement, ne prend en charge que l'exécution impatient. Nous prendrons en charge l'exécution du graphique après que TensorFlow 2.0 devient stable. Voir tests_tensorflow pour des exemples (je recommande de commencer à Tests_tensorflow / test_single_trianggle.py). Les fichiers CMake doivent détecter automatiquement TensorFlow dans Python et installer des fichiers correspondants. Les tutoriels sont des travaux en cours. Beaucoup de remerciements vont à Seyoung Park pour la contribution!
25/06/2019 - Ajout de caméras orthographiques (voir Exemples / Two_D_Mesh.py).
13/05/2019 - Correction de quelques bugs liés aux dérivés de la caméra. Si quelque chose ne fonctionnait pas pour vous auparavant, réessayez peut-être.
28/04/2019 - Ajout de la prise en charge QMC (voir tests / test_qmc.py et la documentation dans pyredner.serialize_scene ()).
04/01/2019 - Prise en charge du multi-GPU (voir pyredner.set_device).
31/03/2019 - Rapporté la méthode d'échantillonnage hiérarchique dans le papier.
02/02/2019 - Le wiki contient désormais une série de tutoriels. Le plan est d'élargir davantage les exemples.
Redner dépend de quelques bibliothèques / systèmes, qui sont tous inclus dans le référentiel:
Le plan de développement actuel est d'améliorer le rendu. Les fonctionnalités suivantes seront ajoutées dans un avenir proche (non répertorié dans un ordre particulier):
@article{Li:2018:DMC,
title = {Differentiable Monte Carlo Ray Tracing through Edge Sampling},
author = {Li, Tzu-Mao and Aittala, Miika and Durand, Fr{'e}do and Lehtinen, Jaakko},
journal = {ACM Trans. Graph. (Proc. SIGGRAPH Asia)},
volume = {37},
number = {6},
pages = {222:1--222:11},
year = {2018}
}
Si vous avez des questions / commentaires / rapports de bogues, n'hésitez pas à ouvrir un problème de github ou un e-mail à l'auteur Tzu-Mao Li ([email protected])