Ce document donne un aperçu de deux projets distincts : gRPC/Spring, un démarreur Spring Boot pour gRPC, et Mitsuba 3, un système de rendu orienté recherche. La section gRPC/Spring détaille ses fonctionnalités, ses instructions d'utilisation et ses informations de compatibilité. La section Mitsuba 3 couvre son installation, son utilisation, ses fonctionnalités et ses contributeurs. Les deux sections incluent des exemples de code et des liens vers une documentation supplémentaire.
Enquête - gRPC/Spring
Chers utilisateurs de gRPC/Spring, afin d'améliorer l'expérience utilisateur de
grpc-ecosystem/grpc-spring, nous avons développé cette enquête comme moyen de
établir une ligne de communication directe. Vos commentaires sont très appréciés.
Démarreur de démarrage à ressort gRPC
README : anglais | Chine
Documentation : anglais | Chine
Caractéristiques
Configure et exécute automatiquement le serveur gRPC avec vos implémentations @GrpcService
Crée et gère automatiquement vos canaux et stubs grpc avec @GrpcClient
Prend en charge d'autres versions grpc-java (par exemple
gRPC réactif (RxJava),
grpc-kotlin, ...)
Prend en charge la sécurité Spring
Prend en charge Spring Cloud
Prend en charge Spring Sleuth en tant que solution de traçage distribuée
(Si brave-instrumentation-grpc est présent)
Prend en charge les intercepteurs serveur/client gRPC globaux et personnalisés
Prise en charge métrique automatique (basée sur un micromètre/actionneur)
Fonctionne également avec grpc-netty (non ombré)
Versions
La dernière version est la 3.1.0.RELEASE, elle a été compilée avec spring-boot 3.2.4 et spring-cloud 2023.0.0
mais il est également compatible avec une grande variété d’autres versions.
Un aperçu de toutes les versions et de leurs versions de bibliothèque respectives peut être trouvé dans notre documentation.
Remarque : ce projet peut également être utilisé sans Spring-Boot, mais cela nécessite une configuration manuelle du bean.
Usage
Serveur gRPC + Client
Pour ajouter une dépendance à l'aide de Maven, utilisez ce qui suit :
Pour ajouter une dépendance à l'aide de Gradle :
Serveur gRPC
Pour ajouter une dépendance à l'aide de Maven, utilisez ce qui suit :
Pour ajouter une dépendance à l'aide de Gradle :
Annotez vos implémentations d'interface serveur avec @GrpcService
Par défaut, le serveur grpc écoutera le port 9090. Ceux-ci et d'autres
paramètres
peut être modifié via le mécanisme de propriété de Spring. Le serveur utilise le grpc.server. préfixe.
Reportez-vous à notre documentation pour plus de détails.
Client gRPC
Pour ajouter une dépendance à l'aide de Maven, utilisez ce qui suit :
Pour ajouter une dépendance à l'aide de Gradle :
Annotez un champ de votre stub client grpc avec @GrpcClient(serverName)
Ne pas utiliser avec @Autowired ou @Inject
Remarque : Vous pouvez utiliser le même nom de serveur grpc pour plusieurs canaux ainsi que différents stubs (même avec des
intercepteurs).
Ensuite, vous pouvez envoyer des requêtes à votre serveur comme ceci :
Il est possible de configurer l'adresse cible pour chaque client individuellement.
Cependant, dans certains cas, vous pouvez simplement vous fier à la configuration par défaut.
Vous pouvez personnaliser le mappage d'URL par défaut via les beans NameResolver.Factory. Si vous ne configurez pas ce bean,
alors l'URI par défaut sera deviné en utilisant le schéma par défaut et le nom (par exemple : dns:/
) :
Ceux-ci et d'autres
paramètres
peut être modifié via le mécanisme de propriété de Spring. Les clients utilisent grpc.client.(serverName). préfixe.
Reportez-vous à notre documentation pour plus de détails.
Exécuter avec (non ombré) grpc-netty
Cette bibliothèque prend en charge à la fois grpc-netty et grpc-netty-shaded.
Ce dernier pourrait empêcher les conflits avec des versions grpc incompatibles ou les conflits entre les bibliothèques qui nécessitent différentes versions de netty.
Remarque : si le netty ombré est présent sur le chemin de classe, alors cette bibliothèque le privilégiera toujours par rapport à celui non ombré grpc-netty.
Vous pouvez l'utiliser avec Maven comme ceci :
et comme ceci lorsque vous utilisez Gradle :
Exemples de projets
En savoir plus sur nos exemples de projets ici.
Dépannage
Reportez-vous à notre documentation pour obtenir de l'aide.
Contribuer
Les contributions sont toujours les bienvenues ! Veuillez consulter CONTRIBUTING.md pour des directives détaillées.
exemple:
Moteur de rendu Mitsuba 3
Documentation
Vidéos tutorielles
Linux
Mac OS
Fenêtres
PyPI
Avertissement
Il existe actuellement un grand nombre de travaux non documentés et instables en cours dans
la branche principale. Nous vous recommandons fortement d'utiliser notre
dernière version
jusqu'à nouvel ordre.
Si vous souhaitez déjà tester les modifications à venir, veuillez consulter
ce guide de portage.
Il devrait couvrir la plupart des nouvelles fonctionnalités et des modifications majeures à venir.
Introduction
Mitsuba 3 est un système de rendu orienté recherche pour la lumière directe et inverse
simulation de transport développée à l'EPFL en Suisse.
Il se compose d'une bibliothèque principale et d'un ensemble de plugins qui implémentent des fonctionnalités
allant des matériaux et sources de lumière aux algorithmes de rendu complets.
Mitsuba 3 est reciblable : cela signifie que les implémentations sous-jacentes et
les structures de données peuvent se transformer pour accomplir diverses tâches différentes. Pour
Par exemple, le même code peut simuler à la fois le transport RVB scalaire (classique un rayon à la fois)
ou transport spectral différentiel sur le GPU. Tout cela s'appuie sur
Dr.Jit, un compilateur spécialisé juste à temps (JIT) développé spécifiquement pour ce projet.
Principales caractéristiques
Multiplateforme : Mitsuba 3 a été testé sur Linux (x86_64), macOS
(aarch64, x8664) et Windows (x8664).
Hautes performances : le compilateur Dr.Jit sous-jacent fusionne le code de rendu
en noyaux qui atteignent des performances de pointe en utilisant
un backend LLVM ciblant le CPU et un backend CUDA/OptiX
ciblant les GPU NVIDIA avec l’accélération matérielle du lancer de rayons.
Python d'abord : Mitsuba 3 est profondément intégré à Python. Matériels,
des textures, et même des algorithmes de rendu complets peuvent être développés en Python,
que le système compile JIT (et éventuellement différencie) à la volée.
Cela permet l'expérimentation nécessaire à la recherche en infographie et
d'autres disciplines.
Différenciation : Mitsuba 3 est un moteur de rendu différenciable, ce qui signifie qu'il
peut calculer les dérivées de l'ensemble de la simulation par rapport à l'entrée
des paramètres tels que la pose de la caméra, la géométrie, les BSDF, les textures et les volumes. Il
implémente des algorithmes de rendu différenciables récents développés à l'EPFL.
Spectral et polarisation : Mitsuba 3 peut être utilisé comme monochromatique
rendu, un rendu basé sur RVB ou un rendu spectral. Chaque variante peut
éventuellement tenir compte des effets de polarisation si vous le souhaitez.
Vidéos tutorielles, documentation
Nous avons enregistré plusieurs vidéos YouTube qui fournissent une introduction douce
Mitsuba 3 et Dr Jit. Au-delà de cela, vous pouvez trouver des cahiers Juypter complets
couvrant une variété d'applications, de guides pratiques et de documentation de référence
sur readthedocs.
Installation
Nous fournissons des roues binaires précompilées via PyPI. Installer Mitsuba de cette façon est aussi simple que d'exécuter
pip installer mitsuba
sur la ligne de commande. Le package Python comprend treize variantes par défaut :
scalaire_rgb
scalaire_spectral
scalarspectralpolarisé
llvmadrgb
lvmadmono
llvmadmono_polarized
llvmadspectral
llvmadspectral_polarized
cudaadrgb
cudaadmono
cudaadmono_polarized
cudaadspectral
cudaadspectral_polarized
Les deux premiers effectuent une simulation classique d'un rayon à la fois en utilisant soit un RVB
ou représentation spectrale des couleurs, tandis que les deux derniers peuvent être utilisés pour l'inverse
rendu sur le CPU ou le GPU. Pour accéder à des variantes supplémentaires, vous devrez
compilez une version personnalisée de Dr.Jit à l'aide de CMake. Veuillez consulter le
documentation
pour plus de détails à ce sujet.
Exigences
Python >= 3,8
(facultatif) Pour le calcul sur le GPU : driver Nvidia >= 495.89
(facultatif) Pour le calcul vectorisé/parallèle sur le CPU : LLVM >= 11.1
Usage
Voici un exemple simple de « Hello World » qui montre à quel point il est simple de restituer un
scène utilisant Mitsuba 3 de Python :
# Importez la bibliothèque en utilisant l'alias "mi" import mitsuba as mi# Définir la variante du renderermi.setvariant('scalarrgb')# Charger une scènecene = mi.loaddict(mi.cornellbox())# Rendre la scèneimg = mi. render(scene)# Écrit l'image rendue dans un fichier EXR mi.Bitmap(img).write('cbox.exr')
Des didacticiels et des exemples de cahiers couvrant une variété d'applications peuvent être trouvés
dans la documentation.
À propos
Ce projet a été créé par Wenzel Jakob.
Des fonctionnalités et/ou améliorations importantes du code ont été apportées par
Sébastien Speierer,
Nicolas Roussel,
Merlin Nimier-David,
Délio Vicini,
Tizian Zeltner,
Baptiste Nicolet,
Miguel Crespo,
Vincent Leroy, et
Ziyi Zhang.
Lorsque vous utilisez Mitsuba 3 dans des projets académiques, veuillez citer :
@software{Mitsuba3,title = {Mitsuba 3 renderer},author = {Wenzel Jakob et Sébastien Speierer et Nicolas Roussel et Merlin Nimier-David et Delio Vicini et Tizian Zeltner et Baptiste Nicolet et Miguel Crespo et Vincent Leroy et Ziyi Zhang},note = {https://mitsuba-renderer.org},version = {3.1.1},année = 2022}