Este documento proporciona una descripción general de dos proyectos distintos: gRPC/Spring, un iniciador Spring Boot para gRPC, y Mitsuba 3, un sistema de renderizado orientado a la investigación. La sección gRPC/Spring detalla sus características, instrucciones de uso e información de compatibilidad. La sección Mitsuba 3 cubre su instalación, uso, características y contribuyentes. Ambas secciones incluyen ejemplos de código y enlaces a documentación adicional.
Encuesta - gRPC/Spring
Estimados usuarios de gRPC/Spring, para mejorar la experiencia de usuario de
grpc-ecosystem/grpc-spring, hemos desarrollado esta encuesta como un medio para
establecer una línea directa de comunicación. Apreciamos mucho sus comentarios.
Arrancador de arranque de primavera gRPC
LÉAME: Inglés | 中文
Documentación: Inglés | 中文
Características
Configura y ejecuta automáticamente el servidor gRPC con sus implementaciones de @GrpcService
Crea y administra automáticamente sus canales y resguardos de grpc con @GrpcClient
Admite otras versiones de grpc-java (p. ej.
gRPC reactivo (RxJava),
grpc-kotlin, ...)
Soporta seguridad de resorte
Soporta nube de primavera
Admite Spring Sleuth como solución de seguimiento distribuido
(Si valiente-instrumentación-grpc está presente)
Admite interceptores de cliente/servidor gRPC globales y personalizados
Soporte métrico automático (basado en micrómetro/actuador)
También funciona con grpc-netty (no sombreado)
Versiones
La última versión es 3.1.0.RELEASE y se compiló con spring-boot 3.2.4 y spring-cloud 2023.0.0.
pero también es compatible con una gran variedad de otras versiones.
Puede encontrar una descripción general de todas las versiones y sus respectivas versiones de biblioteca en nuestra documentación.
Nota: Este proyecto también se puede utilizar sin Spring-Boot, sin embargo, eso requiere alguna configuración manual del bean.
Uso
Servidor gRPC + Cliente
Para agregar una dependencia usando Maven, use lo siguiente:
Para agregar una dependencia usando Gradle:
Servidor gRPC
Para agregar una dependencia usando Maven, use lo siguiente:
Para agregar una dependencia usando Gradle:
Anote las implementaciones de la interfaz de su servidor con @GrpcService
De forma predeterminada, el servidor grpc escuchará el puerto 9090. Estos y otros
ajustes
se puede cambiar a través del mecanismo de propiedades de Spring. El servidor utiliza grpc.server. prefijo.
Consulte nuestra documentación para obtener más detalles.
Cliente gRPC
Para agregar una dependencia usando Maven, use lo siguiente:
Para agregar una dependencia usando Gradle:
Anote un campo de su código auxiliar de cliente grpc con @GrpcClient(serverName)
No lo use junto con @Autowired o @Inject
Nota: Puede utilizar el mismo nombre de servidor grpc para múltiples canales y también diferentes stubs (incluso con diferentes
interceptores).
Luego puede enviar consultas a su servidor así:
Es posible configurar la dirección de destino para cada cliente individualmente.
Sin embargo, en algunos casos, puedes confiar simplemente en la configuración predeterminada.
Puede personalizar la asignación de URL predeterminada a través de los beans NameResolver.Factory. Si no configura ese bean,
luego, la uri predeterminada se adivinará utilizando el esquema predeterminado y el nombre (por ejemplo: dns:/
):
Estos y otros
ajustes
se puede cambiar a través del mecanismo de propiedades de Spring. Los clientes utilizan grpc.client.(serverName). prefijo.
Consulte nuestra documentación para obtener más detalles.
Ejecutando con grpc-netty (no sombreado)
Esta biblioteca admite grpc-netty y grpc-netty-shaded.
El último podría evitar conflictos con versiones de grpc incompatibles o conflictos entre bibliotecas que requieren diferentes versiones de netty.
Nota: Si el netty sombreado está presente en el classpath, entonces esta biblioteca siempre lo favorecerá sobre el grpc-netty no sombreado.
Puedes usarlo con Maven así:
y así al usar Gradle:
Proyectos de ejemplo
Lea más sobre nuestros proyectos de ejemplo aquí.
Solución de problemas
Consulte nuestra documentación para obtener ayuda.
Contribuyendo
¡Las contribuciones siempre son bienvenidas! Consulte CONTRIBUTING.md para obtener pautas detalladas.
ejemplo:
Renderizador Mitsuba 3
Documentación
Vídeos tutoriales
linux
Mac OS
ventanas
PyPI
Advertencia
Actualmente hay una gran cantidad de trabajo indocumentado e inestable en
la rama maestra. Le recomendamos encarecidamente que utilice nuestro
último lanzamiento
hasta nuevo aviso.
Si ya desea probar los próximos cambios, eche un vistazo a
esta guía de portabilidad.
Debería cubrir la mayoría de las nuevas funciones y los cambios importantes que se avecinan.
Introducción
Mitsuba 3 es un sistema de renderizado de luz directa e inversa orientado a la investigación
Simulación de transporte desarrollada en EPFL en Suiza.
Consiste en una biblioteca central y un conjunto de complementos que implementan funciones.
que van desde materiales y fuentes de luz hasta algoritmos de renderizado completos.
Mitsuba 3 es reorientable: esto significa que las implementaciones subyacentes y
Las estructuras de datos pueden transformarse para realizar varias tareas diferentes. Para
Por ejemplo, el mismo código puede simular transporte RGB escalar (clásico de un rayo a la vez)
o transporte espectral diferencial en la GPU. Todo esto se basa en
Dr.Jit, un compilador especializado justo a tiempo (JIT) desarrollado específicamente para este proyecto.
Características principales
Multiplataforma: Mitsuba 3 ha sido probado en Linux (x86_64), macOS
(aarch64, x8664) y Windows (x8664).
Alto rendimiento: el compilador Dr.Jit subyacente fusiona el código de renderizado
en núcleos que logran un rendimiento de última generación utilizando
un backend LLVM dirigido a la CPU y un backend CUDA/OptiX
dirigido a GPU NVIDIA con aceleración de hardware de trazado de rayos.
Python primero: Mitsuba 3 está profundamente integrado con Python. materiales,
Se pueden desarrollar texturas e incluso algoritmos de renderizado completos en Python.
que el sistema compila JIT (y opcionalmente diferencia) sobre la marcha.
Esto permite la experimentación necesaria para la investigación en gráficos por ordenador y
otras disciplinas.
Diferenciación: Mitsuba 3 es un renderizador diferenciable, lo que significa que
Puede calcular derivadas de toda la simulación con respecto a la entrada.
parámetros como la pose de la cámara, la geometría, los BSDF, las texturas y los volúmenes. Él
implementa algoritmos de representación diferenciables recientes desarrollados en EPFL.
Espectral y polarización: Mitsuba 3 se puede utilizar como monocromático
renderizador, renderizador basado en RGB o renderizador espectral. Cada variante puede
Opcionalmente, tenga en cuenta los efectos de la polarización si se desea.
Vídeos tutoriales, documentación.
Hemos grabado varios vídeos de YouTube que proporcionan una suave introducción.
Mitsuba 3 y Dr.Jit. Más allá de esto puedes encontrar cuadernos Juypter completos.
que cubre una variedad de aplicaciones, guías prácticas y documentación de referencia
en readthedocs.
Instalación
Proporcionamos ruedas binarias precompiladas a través de PyPI. Instalar Mitsuba de esta manera es tan sencillo como ejecutar
instalar pip mitsuba
en la línea de comando. El paquete Python incluye trece variantes por defecto:
escalar_rgb
escalar_espectral
escalarespectralpolarizado
llvmadrgb
llvmadmono
llvmadmono_polarizado
llvmadspectral
llvmadspectral_polarizado
cudaadrgb
cudaadmono
cudaadmono_polarizado
cudaadspectral
cudaadspectral_polarizado
Los dos primeros realizan la simulación clásica de un rayo a la vez usando un RGB
o representación de color espectral, mientras que los dos últimos se pueden utilizar para representación inversa.
renderizado en la CPU o GPU. Para acceder a variantes adicionales, deberá
compilar una versión personalizada de Dr.Jit usando CMake. Por favor vea el
documentación
para obtener detalles sobre esto.
Requisitos
Pitón >= 3.8
(opcional) Para cálculo en la GPU: controlador Nvidia >= 495,89
(opcional) Para cálculo vectorizado/paralelo en la CPU: LLVM >= 11.1
Uso
A continuación se muestra un ejemplo sencillo de "Hola mundo" que muestra lo sencillo que es representar un
escena usando Mitsuba 3 de Python:
# Importar la biblioteca usando el alias "mi" importar mitsuba como mi # Establecer la variante de renderermi.setvariant('scalarrgb')# Cargar una escena = mi.loaddict(mi.cornellbox())# Renderizar la escenaimg = mi. render(scene)# Escribe la imagen renderizada en un archivo EXRmi.Bitmap(img).write('cbox.exr')
Se pueden encontrar tutoriales y cuadernos de ejemplo que cubren una variedad de aplicaciones.
en la documentación.
Acerca de
Este proyecto fue creado por Wenzel Jakob.
Funciones y/o mejoras significativas al código fueron aportadas por
Sébastien Speierer,
Nicolás Roussel,
Merlín Nimier-David,
Delio Vicini,
Tizian Zeltner,
Bautista Nicolet,
Miguel Crespo,
Vicente Leroy y
Ziyi Zhang.
Cuando utilice Mitsuba 3 en proyectos académicos, cite:
@software{Mitsuba3,title = {Mitsuba 3 renderer},autor = {Wenzel Jakob y Sébastien Speierer y Nicolas Roussel y Merlin Nimier-David y Delio Vicini y Tizian Zeltner y Baptiste Nicolet y Miguel Crespo y Vincent Leroy y Ziyi Zhang},nota = {https://mitsuba-renderer.org},versión = {3.1.1},año = 2022}