Dieses Dokument bietet einen Überblick über zwei unterschiedliche Projekte: gRPC/Spring, ein Spring Boot-Starter für gRPC, und Mitsuba 3, ein forschungsorientiertes Rendering-System. Im Abschnitt zu gRPC/Spring werden die Funktionen, Gebrauchsanweisungen und Kompatibilitätsinformationen detailliert beschrieben. Der Abschnitt „Mitsuba 3“ behandelt Installation, Verwendung, Funktionen und Mitwirkende. Beide Abschnitte enthalten Codebeispiele und Links zu weiterer Dokumentation.
Umfrage – gRPC/Spring
Liebe gRPC/Spring-Benutzer, um die Benutzererfahrung von zu verbessern
grpc-ecosystem/grpc-spring, wir haben diese Umfrage als Mittel entwickelt
Aufbau einer direkten Kommunikationslinie. Ihr Feedback wird sehr geschätzt.
gRPC Spring Boot Starter
README: Englisch | 中文
Dokumentation: Englisch | 中文
Merkmale
Konfiguriert und führt den gRPC-Server automatisch mit Ihren @GrpcService-Implementierungen aus
Erstellt und verwaltet Ihre GRPC-Kanäle und Stubs automatisch mit @GrpcClient
Unterstützt andere grpc-Java-Varianten (z. B
Reaktives gRPC (RxJava),
grpc-kotlin, ...)
Unterstützt Spring-Security
Unterstützt Spring Cloud
Unterstützt Spring Sleuth als verteilte Tracing-Lösung
(Wenn brave-instrumentation-grpc vorhanden ist)
Unterstützt globale und benutzerdefinierte gRPC-Server/Client-Interceptors
Automatische metrische Unterstützung (Mikrometer-/Aktuator-basiert)
Funktioniert auch mit (nicht schattiertem) grpc-netty
Versionen
Die neueste Version ist 3.1.0.RELEASE. Sie wurde mit Spring-Boot 3.2.4 und Spring-Cloud 2023.0.0 kompiliert
Es ist aber auch mit einer Vielzahl anderer Versionen kompatibel.
Eine Übersicht aller Versionen und ihrer jeweiligen Bibliotheksversionen finden Sie in unserer Dokumentation.
Hinweis: Dieses Projekt kann auch ohne Spring-Boot verwendet werden, hierfür ist jedoch eine manuelle Bean-Konfiguration erforderlich.
Verwendung
gRPC-Server + Client
Um eine Abhängigkeit mit Maven hinzuzufügen, verwenden Sie Folgendes:
So fügen Sie eine Abhängigkeit mit Gradle hinzu:
gRPC-Server
Um eine Abhängigkeit mit Maven hinzuzufügen, verwenden Sie Folgendes:
So fügen Sie eine Abhängigkeit mit Gradle hinzu:
Kommentieren Sie Ihre Serverschnittstellenimplementierung(en) mit @GrpcService
Standardmäßig überwacht der GRPC-Server Port 9090. Diese und andere
Einstellungen
kann über den Eigenschaftsmechanismus von Spring geändert werden. Der Server verwendet den grpc.server. Präfix.
Weitere Einzelheiten finden Sie in unserer Dokumentation.
gRPC-Client
Um eine Abhängigkeit mit Maven hinzuzufügen, verwenden Sie Folgendes:
So fügen Sie eine Abhängigkeit mit Gradle hinzu:
Kommentieren Sie ein Feld Ihres grpc-Client-Stubs mit @GrpcClient(serverName)
Nicht in Verbindung mit @Autowired oder @Inject verwenden
Hinweis: Sie können denselben GRPC-Servernamen für mehrere Kanäle und auch verschiedene Stubs (auch mit unterschiedlichen) verwenden
Abfangjäger).
Dann können Sie Anfragen wie folgt an Ihren Server senden:
Es besteht die Möglichkeit, die Zieladresse für jeden Client individuell zu konfigurieren.
In manchen Fällen können Sie sich jedoch einfach auf die Standardkonfiguration verlassen.
Sie können die Standard-URL-Zuordnung über NameResolver.Factory-Beans anpassen. Wenn Sie diese Bean nicht konfigurieren,
Dann wird die Standard-URI mithilfe des Standardschemas und des Namens (z. B. dns:/) erraten.
):
Diese und andere
Einstellungen
kann über den Eigenschaftsmechanismus von Spring geändert werden. Die Clients verwenden grpc.client.(serverName). Präfix.
Weitere Einzelheiten finden Sie in unserer Dokumentation.
Läuft mit (nicht schattiertem) grpc-netty
Diese Bibliothek unterstützt sowohl grpc-netty als auch grpc-netty-shaded.
Letzteres könnte Konflikte mit inkompatiblen GRPC-Versionen oder Konflikte zwischen Bibliotheken verhindern, die unterschiedliche Versionen von Netty erfordern.
Hinweis: Wenn das schattierte Netty im Klassenpfad vorhanden ist, bevorzugt diese Bibliothek es immer gegenüber dem nicht schattierten grpc-netty.
Sie können es mit Maven wie folgt verwenden:
und so bei der Verwendung von Gradle:
Beispielprojekte
Lesen Sie hier mehr über unsere Beispielprojekte.
Fehlerbehebung
Weitere Informationen finden Sie in unserer Dokumentation.
Mitwirken
Beiträge sind immer willkommen! Detaillierte Richtlinien finden Sie unter CONTRIBUTING.md.
Beispiel:
Mitsuba Renderer 3
Dokumentation
Tutorial-Videos
Linux
MacOS
Windows
PyPI
Warnung
Derzeit gibt es hier eine große Menge undokumentierter und instabiler Arbeiten
der Hauptzweig. Wir empfehlen Ihnen dringend, unsere zu verwenden
neueste Version
bis auf Weiteres.
Wenn Sie die bevorstehenden Änderungen bereits ausprobieren möchten, schauen Sie sich bitte um
dieser Portierungsanleitung.
Es sollte die meisten kommenden neuen Funktionen und Breaking Changes abdecken.
Einführung
Mitsuba 3 ist ein forschungsorientiertes Rendering-System für Vorwärts- und Rückwärtslicht
Transportsimulation, entwickelt an der EPFL in der Schweiz.
Es besteht aus einer Kernbibliothek und einer Reihe von Plugins, die Funktionen implementieren
von Materialien und Lichtquellen bis hin zu kompletten Rendering-Algorithmen.
Mitsuba 3 ist retargetierbar: Das bedeutet, dass die zugrunde liegenden Implementierungen und
Datenstrukturen können sich verändern, um verschiedene Aufgaben zu erfüllen. Für
Beispielsweise kann derselbe Code beide skalaren (klassischen, jeweils einen Strahl gleichzeitig ausführenden) RGB-Transporte simulieren
oder differenzieller spektraler Transport auf der GPU. Darauf baut alles auf
Dr.Jit, ein spezialisierter Just-in-Time(JIT)-Compiler, der speziell für dieses Projekt entwickelt wurde.
Hauptmerkmale
Plattformübergreifend: Mitsuba 3 wurde unter Linux (x86_64) und macOS getestet
(aarch64, x8664) und Windows (x8664).
Hohe Leistung: Der zugrunde liegende Dr.Jit-Compiler verschmilzt Rendering-Code
in Kernel, die modernste Leistung erzielen
ein LLVM-Backend, das auf die CPU abzielt, und ein CUDA/OptiX-Backend
zielt auf NVIDIA-GPUs mit Raytracing-Hardwarebeschleunigung ab.
Python zuerst: Mitsuba 3 ist tief in Python integriert. Materialien,
Texturen und sogar vollständige Rendering-Algorithmen können in Python entwickelt werden,
die das System im laufenden Betrieb JIT-kompiliert (und optional differenziert).
Dies ermöglicht die Experimente, die für die Forschung in der Computergrafik erforderlich sind
andere Disziplinen.
Differenzierung: Mitsuba 3 ist ein differenzierbarer Renderer, d. h. er
kann Ableitungen der gesamten Simulation in Bezug auf die Eingabe berechnen
Parameter wie Kameraposition, Geometrie, BSDFs, Texturen und Volumina. Es
implementiert aktuelle differenzierbare Rendering-Algorithmen, die an der EPFL entwickelt wurden.
Spektral & Polarisation: Mitsuba 3 kann monochromatisch verwendet werden
Renderer, RGB-basierter Renderer oder Spektralrenderer. Jede Variante kann
Berücksichtigen Sie optional die Auswirkungen der Polarisation, falls gewünscht.
Tutorial-Videos, Dokumentation
Wir haben mehrere YouTube-Videos aufgenommen, die eine sanfte Einführung bieten
Mitsuba 3 und Dr.Jit. Darüber hinaus finden Sie komplette Juypter-Notizbücher
Es umfasst eine Vielzahl von Anwendungen, Anleitungen und Referenzdokumentationen
auf readthedocs.
Installation
Wir stellen vorkompilierte Binärräder über PyPI bereit. Mitsuba auf diese Weise zu installieren ist so einfach wie das Ausführen
pip install mitsuba
auf der Kommandozeile. Das Python-Paket enthält standardmäßig dreizehn Varianten:
scalar_rgb
Skalar_Spektral
skalarspektralpolarisiert
llvmadrgb
llvmadmono
llvmadmono_polarized
llvmadspectral
llvmadspectral_polarized
cudaadrgb
cudaadmono
cudaadmono_polarized
cudaadspectral
cudaadspectral_polarized
Die ersten beiden führen eine klassische Einzelstrahl-Simulation mit entweder einem RGB durch
oder spektrale Farbdarstellung, wobei die beiden letzteren für die Umkehrung verwendet werden können
Rendern auf der CPU oder GPU. Um auf zusätzliche Varianten zugreifen zu können, müssen Sie Folgendes tun
Kompilieren Sie eine benutzerdefinierte Version von Dr.Jit mit CMake. Bitte beachten Sie die
Dokumentation
Einzelheiten hierzu finden Sie hier.
Anforderungen
Python >= 3.8
(optional) Für Berechnung auf der GPU: Nvidia-Treiber >= 495,89
(optional) Für vektorisierte / parallele Berechnung auf der CPU: LLVM >= 11.1
Verwendung
Hier ist ein einfaches „Hello World“-Beispiel, das zeigt, wie einfach es ist, ein zu rendern
Szene mit Mitsuba 3 aus Python:
# Importieren Sie die Bibliothek mit dem Alias „mi“import mitsuba as mi# Legen Sie die Variante des Renderers festmi.setvariant('scalarrgb')# Laden Sie eine Szenescene = mi.loaddict(mi.cornellbox())# Rendern Sie die Szeneimg = mi. render(scene)# Schreiben Sie das gerenderte Bild in eine EXR-Dateimi.Bitmap(img).write('cbox.exr')
Es stehen Tutorials und Beispiel-Notebooks für eine Vielzahl von Anwendungen zur Verfügung
in der Dokumentation.
Um
Dieses Projekt wurde von Wenzel Jakob erstellt.
Wesentliche Funktionen und/oder Verbesserungen am Code wurden von beigesteuert
Sébastien Speierer,
Nicolas Roussel,
Merlin Nimier-David,
Delio Vicini,
Tizian Zeltner,
Baptiste Nicolet,
Miguel Crespo,
Vincent Leroy und
Ziyi Zhang.
Wenn Sie Mitsuba 3 in akademischen Projekten verwenden, geben Sie bitte Folgendes an:
@software{Mitsuba3,title = {Mitsuba 3 renderer},author = {Wenzel Jakob und Sébastien Speierer und Nicolas Roussel und Merlin Nimier-David und Delio Vicini und Tizian Zeltner und Baptiste Nicolet und Miguel Crespo und Vincent Leroy und Ziyi Zhang},Anmerkung = {https://mitsuba-renderer.org},Version = {3.1.1},Jahr = 2022}