Dokumen ini memberikan gambaran umum tentang dua proyek berbeda: gRPC/Spring, starter Spring Boot untuk gRPC, dan Mitsuba 3, sistem rendering berorientasi penelitian. Bagian gRPC/Spring merinci fitur-fiturnya, petunjuk penggunaan, dan informasi kompatibilitas. Bagian Mitsuba 3 mencakup instalasi, penggunaan, fitur, dan kontributornya. Kedua bagian menyertakan contoh kode dan tautan ke dokumentasi lebih lanjut.
Survei - gRPC/Musim Semi
Pengguna gRPC/Spring yang terhormat, untuk meningkatkan pengalaman pengguna
grpc-ecosystem/grpc-spring, kami telah mengembangkan survei ini sebagai sarana
membangun jalur komunikasi langsung. Masukan Anda sangat kami hargai.
Pemula Boot Musim Semi gRPC
BACA: Bahasa Inggris | tidak
Dokumentasi: Bahasa Inggris | tidak
Fitur
Konfigurasikan dan jalankan server gRPC secara otomatis dengan implementasi @GrpcService Anda
Secara otomatis membuat dan mengelola saluran dan stub grpc Anda dengan @GrpcClient
Mendukung varian grpc-java lainnya (mis
gRPC reaktif (RxJava),
grpc-kotlin, ...)
Mendukung Keamanan Musim Semi
Mendukung Musim Semi Cloud
Mendukung Spring Sleuth sebagai solusi penelusuran terdistribusi
(Jika berani-instrumentasi-grpc ada)
Mendukung pencegat server/klien gRPC global dan khusus
Dukungan metrik otomatis (berbasis mikrometer/aktuator)
Juga berfungsi dengan grpc-netty (tanpa bayangan).
Versi
Versi terbaru adalah 3.1.0.RELEASE yang dikompilasi dengan spring-boot 3.2.4 dan spring-cloud 2023.0.0
tetapi juga kompatibel dengan berbagai macam versi lainnya.
Ikhtisar semua versi dan versi perpustakaannya masing-masing dapat ditemukan di dokumentasi kami.
Catatan: Proyek ini juga dapat digunakan tanpa Spring-Boot, namun memerlukan beberapa konfigurasi kacang manual.
Penggunaan
Server gRPC + Klien
Untuk menambahkan ketergantungan menggunakan Maven, gunakan yang berikut ini:
Untuk menambahkan ketergantungan menggunakan Gradle:
Server gRPC
Untuk menambahkan ketergantungan menggunakan Maven, gunakan yang berikut ini:
Untuk menambahkan ketergantungan menggunakan Gradle:
Beri anotasi pada implementasi antarmuka server Anda dengan @GrpcService
Secara default, server grpc akan mendengarkan port 9090. Ini dan lainnya
pengaturan
dapat diubah melalui mekanisme properti Spring. Server menggunakan grpc.server. awalan.
Lihat dokumentasi kami untuk lebih jelasnya.
Klien gRPC
Untuk menambahkan ketergantungan menggunakan Maven, gunakan yang berikut ini:
Untuk menambahkan ketergantungan menggunakan Gradle:
Beri anotasi pada bidang stub klien grpc Anda dengan @GrpcClient(serverName)
Jangan gunakan bersamaan dengan @Autowired atau @Inject
Catatan: Anda dapat menggunakan nama server grpc yang sama untuk beberapa saluran dan juga stub yang berbeda (bahkan dengan yang berbeda
pencegat).
Kemudian Anda dapat mengirim pertanyaan ke server Anda seperti ini:
Dimungkinkan untuk mengkonfigurasi alamat target untuk setiap klien secara individual.
Namun dalam beberapa kasus, Anda hanya dapat mengandalkan konfigurasi default.
Anda dapat menyesuaikan pemetaan url default melalui kacang NameResolver.Factory. Jika Anda tidak mengkonfigurasi kacang itu,
maka uri default akan ditebak menggunakan skema default dan namanya (misal: dns:/
):
Ini dan lainnya
pengaturan
dapat diubah melalui mekanisme properti Spring. Klien menggunakan grpc.client.(serverName). awalan.
Lihat dokumentasi kami untuk lebih jelasnya.
Berjalan dengan grpc-netty (tanpa bayangan).
Pustaka ini mendukung grpc-netty dan grpc-netty-shaded.
Yang terakhir mungkin mencegah konflik dengan versi grpc yang tidak kompatibel atau konflik antar perpustakaan yang memerlukan versi netty berbeda.
Catatan: Jika netty yang diarsir ada di classpath, maka perpustakaan ini akan selalu lebih memilihnya daripada netty grpc-netty yang tidak diarsir.
Anda dapat menggunakannya dengan Maven seperti ini:
dan seperti ini saat menggunakan Gradle:
Contoh-Proyek
Baca selengkapnya tentang contoh proyek kami di sini.
Pemecahan masalah
Lihat dokumentasi kami untuk bantuan.
Berkontribusi
Kontribusi selalu diterima! Silakan lihat CONTRIBUTING.md untuk panduan rinci.
contoh:
Penyaji Mitsuba 3
Dokumentasi
Video tutorial
Linux
macOS
jendela
PyPI
Peringatan
Saat ini terdapat sejumlah besar pekerjaan tidak terdokumentasi dan tidak stabil yang terjadi
cabang utama. Kami sangat menyarankan Anda menggunakan kami
rilis terbaru
sampai pemberitahuan lebih lanjut.
Jika Anda sudah ingin mencoba perubahan yang akan datang, silakan lihat
panduan porting ini.
Ini harus mencakup sebagian besar fitur baru dan perubahan penting yang akan datang.
Perkenalan
Mitsuba 3 adalah sistem rendering berorientasi penelitian untuk cahaya maju dan mundur
simulasi transportasi dikembangkan di EPFL di Swiss.
Ini terdiri dari perpustakaan inti dan satu set plugin yang mengimplementasikan fungsionalitas
mulai dari bahan dan sumber cahaya hingga algoritma rendering lengkap.
Mitsuba 3 dapat ditargetkan ulang: ini berarti implementasi yang mendasarinya dan
struktur data dapat bertransformasi untuk menyelesaikan berbagai tugas berbeda. Untuk
Misalnya, kode yang sama dapat mensimulasikan transpor RGB skalar (klasik satu sinar pada satu waktu).
atau transportasi spektral diferensial pada GPU. Ini semua didasarkan pada
Dr.Jit, kompiler just-in-time (JIT) khusus yang dikembangkan khusus untuk proyek ini.
Fitur Utama
Lintas platform: Mitsuba 3 telah diuji di Linux (x86_64), macOS
(aarch64, x8664), dan Windows (x8664).
Performa tinggi: Kompiler Dr.Jit yang mendasarinya menggabungkan kode rendering
menjadi kernel yang mencapai kinerja canggih dengan menggunakan
backend LLVM yang menargetkan CPU dan backend CUDA/OptiX
menargetkan GPU NVIDIA dengan akselerasi perangkat keras ray tracing.
Python pertama: Mitsuba 3 terintegrasi secara mendalam dengan Python. Bahan,
tekstur, dan bahkan algoritma rendering penuh dapat dikembangkan dengan Python,
yang dikompilasi oleh sistem JIT (dan secara opsional dibedakan) dengan cepat.
Hal ini memungkinkan eksperimen yang diperlukan untuk penelitian dalam grafik komputer dan
disiplin ilmu lainnya.
Diferensiasi: Mitsuba 3 adalah penyaji yang dapat dibedakan, artinya itu
dapat menghitung turunan dari keseluruhan simulasi sehubungan dengan masukan
parameter seperti pose kamera, geometri, BSDF, tekstur, dan volume. Dia
mengimplementasikan algoritma rendering terdiferensiasi terbaru yang dikembangkan di EPFL.
Spektral & Polarisasi: Mitsuba 3 dapat digunakan sebagai monokromatik
penyaji, penyaji berbasis RGB, atau penyaji spektral. Setiap varian bisa
secara opsional memperhitungkan efek polarisasi jika diinginkan.
Video tutorial, dokumentasi
Kami telah merekam beberapa video YouTube yang memberikan pengenalan lembut
Mitsuba 3 dan Dr.Jit. Selain itu, Anda dapat menemukan buku catatan Juypter lengkap
mencakup berbagai aplikasi, panduan cara kerja, dan dokumentasi referensi
di readthedocs.
Instalasi
Kami menyediakan roda biner yang telah dikompilasi sebelumnya melalui PyPI. Menginstal Mitsuba dengan cara ini semudah menjalankannya
pip instal mitsuba
pada baris perintah. Paket Python mencakup tiga belas varian secara default:
skalar_rgb
skalar_spektral
skalarspektralterpolarisasi
llvmadrgb
llvmadmono
llvmadmono_polarized
llvmadspectral
llvmadspectral_polarized
cudaadrgb
cudaadmono
cudaadmono_polarized
cudaadspectral
cudaadspectral_polarized
Dua yang pertama melakukan simulasi klasik satu sinar pada satu waktu menggunakan RGB
atau representasi warna spektral, sedangkan dua yang terakhir dapat digunakan untuk invers
rendering pada CPU atau GPU. Untuk mengakses varian tambahan, Anda perlu melakukannya
kompilasi versi khusus Dr.Jit menggunakan CMake. Silakan lihat
dokumentasi
untuk rincian tentang ini.
Persyaratan
Piton >= 3.8
(opsional) Untuk komputasi pada GPU: driver Nvidia >= 495.89
(opsional) Untuk komputasi vektor/paralel pada CPU: LLVM >= 11.1
Penggunaan
Berikut adalah contoh sederhana "Hello World" yang menunjukkan betapa sederhananya merender a
adegan menggunakan Mitsuba 3 dari Python:
# Impor perpustakaan menggunakan alias "mi"impor mitsuba sebagai mi# Atur varian renderermi.setvariant('scalarrgb')# Muat scene = mi.loaddict(mi.cornellbox())# Render sceneimg = mi. render(adegan)# Tulis gambar yang dirender ke file EXRmi.Bitmap(img).write('cbox.exr')
Tutorial dan contoh buku catatan yang mencakup berbagai aplikasi dapat ditemukan
dalam dokumentasi.
Tentang
Proyek ini dibuat oleh Wenzel Jakob.
Fitur-fitur penting dan/atau perbaikan pada kode disumbangkan oleh
Sébastien Speierer,
Nicolas Roussel,
Merlin Nimier-David,
Delio Vicini,
Tizian Zeltner,
Baptiste Nicolet,
Miguel Crespo,
Vincent Leroy, dan
Ziyi Zhang.
Saat menggunakan Mitsuba 3 dalam proyek akademik, harap kutip:
@software{Mitsuba3,title = {Mitsuba 3 renderer},author = {Wenzel Jakob dan Sébastien Speierer dan Nicolas Roussel dan Merlin Nimier-David dan Delio Vicini dan Tizian Zeltner dan Baptiste Nicolet dan Miguel Crespo dan Vincent Leroy dan Ziyi Zhang},catatan = {https://mitsuba-renderer.org},versi = {3.1.1},tahun = 2022}