Este documento fornece uma visão geral de dois projetos distintos: gRPC/Spring, um iniciador Spring Boot para gRPC, e Mitsuba 3, um sistema de renderização orientado para pesquisa. A seção gRPC/Spring detalha seus recursos, instruções de uso e informações de compatibilidade. A seção Mitsuba 3 cobre sua instalação, uso, recursos e contribuidores. Ambas as seções incluem exemplos de código e links para documentação adicional.
Pesquisa - gRPC/Spring
Caros usuários do gRPC/Spring, para melhorar a experiência do usuário do
grpc-ecosystem/grpc-spring, desenvolvemos esta pesquisa como um meio de
estabelecendo uma linha direta de comunicação. Seu feedback é muito apreciado.
Iniciador de inicialização gRPC Spring
LEIA-ME: Inglês | 中文
Documentação: Inglês | 中文
Características
Configura e executa automaticamente o servidor gRPC com suas implementações @GrpcService
Cria e gerencia automaticamente seus canais e stubs grpc com @GrpcClient
Suporta outros sabores grpc-java (por exemplo
gRPC reativo (RxJava),
grpc-kotlin, ...)
Suporta Spring-Security
Suporta Spring Cloud
Suporta Spring Sleuth como solução de rastreamento distribuído
(Se corajoso-instrumentação-grpc estiver presente)
Suporta interceptores de servidor/cliente gRPC globais e personalizados
Suporte métrico automático (baseado em micrômetro/atuador)
Também funciona com grpc-netty (não sombreado)
Versões
A versão mais recente é 3.1.0.RELEASE e foi compilada com spring-boot 3.2.4 e spring-cloud 2023.0.0
mas também é compatível com uma grande variedade de outras versões.
Uma visão geral de todas as versões e suas respectivas versões de biblioteca pode ser encontrada em nossa documentação.
Nota: Este projeto também pode ser usado sem Spring-Boot, porém isso requer alguma configuração manual do bean.
Uso
Servidor gRPC + Cliente
Para adicionar uma dependência usando Maven, use o seguinte:
Para adicionar uma dependência usando Gradle:
Servidor gRPC
Para adicionar uma dependência usando Maven, use o seguinte:
Para adicionar uma dependência usando Gradle:
Anote suas implementações de interface de servidor com @GrpcService
Por padrão, o servidor grpc escutará a porta 9090. Esses e outros
configurações
pode ser alterado através do mecanismo de propriedades do Spring. O servidor usa o grpc.server. prefixo.
Consulte nossa documentação para obter mais detalhes.
Cliente gRPC
Para adicionar uma dependência usando Maven, use o seguinte:
Para adicionar uma dependência usando Gradle:
Anote um campo do stub do seu cliente grpc com @GrpcClient(serverName)
Não use em conjunto com @Autowired ou @Inject
Nota: Você pode usar o mesmo nome de servidor grpc para vários canais e também stubs diferentes (mesmo com diferentes
interceptadores).
Então você pode enviar consultas ao seu servidor assim:
É possível configurar o endereço de destino para cada cliente individualmente.
No entanto, em alguns casos, você pode confiar apenas na configuração padrão.
Você pode personalizar o mapeamento de URL padrão por meio dos beans NameResolver.Factory. Se você não configurar esse bean,
então o uri padrão será adivinhado usando o esquema padrão e o nome (por exemplo: dns:/
):
Estes e outros
configurações
pode ser alterado através do mecanismo de propriedades do Spring. Os clientes usam grpc.client.(serverName). prefixo.
Consulte nossa documentação para obter mais detalhes.
Executando com grpc-netty (não sombreado)
Esta biblioteca suporta grpc-netty e grpc-netty-shaded.
O último pode evitar conflitos com versões grpc incompatíveis ou conflitos entre bibliotecas que requerem versões diferentes do netty.
Nota: Se o netty sombreado estiver presente no caminho de classe, então esta biblioteca sempre o favorecerá em relação ao grpc-netty não sombreado.
Você pode usá-lo com o Maven assim:
e assim ao usar o Gradle:
Projetos de exemplo
Leia mais sobre nossos projetos de exemplo aqui.
Solução de problemas
Consulte nossa documentação para obter ajuda.
Contribuindo
Contribuições são sempre bem-vindas! Consulte CONTRIBUTING.md para obter diretrizes detalhadas.
exemplo:
Renderizador Mitsuba 3
Documentação
Vídeos tutoriais
Linux
Mac OS
Windows
PyPI
Aviso
Actualmente existe uma grande quantidade de trabalho indocumentado e instável em curso no
o ramo mestre. É altamente recomendável que você use nosso
último lançamento
até novo aviso.
Se você já deseja experimentar as próximas mudanças, dê uma olhada em
este guia de portabilidade.
Deve cobrir a maioria dos novos recursos e mudanças importantes que estão por vir.
Introdução
Mitsuba 3 é um sistema de renderização orientado para pesquisa para luz direta e inversa
simulação de transporte desenvolvida na EPFL na Suíça.
Consiste em uma biblioteca principal e um conjunto de plug-ins que implementam funcionalidades
variando de materiais e fontes de luz a algoritmos de renderização completos.
Mitsuba 3 é redirecionável: isso significa que as implementações subjacentes e
estruturas de dados podem ser transformadas para realizar várias tarefas diferentes. Para
Por exemplo, o mesmo código pode simular transporte RGB escalar (clássico de um raio por vez)
ou transporte espectral diferencial na GPU. Tudo isso se baseia
Dr.Jit, um compilador just-in-time (JIT) especializado desenvolvido especificamente para este projeto.
Principais recursos
Plataforma cruzada: Mitsuba 3 foi testado em Linux (x86_64), macOS
(aarch64, x8664) e Windows (x8664).
Alto desempenho: o compilador Dr.Jit subjacente funde o código de renderização
em kernels que alcançam desempenho de última geração usando
um back-end LLVM direcionado à CPU e um back-end CUDA/OptiX
visando GPUs NVIDIA com aceleração de hardware de rastreamento de raio.
Python primeiro: Mitsuba 3 está profundamente integrado ao Python. Materiais,
texturas e até mesmo algoritmos de renderização completos podem ser desenvolvidos em Python,
que o sistema compila JIT (e opcionalmente diferencia) em tempo real.
Isso permite a experimentação necessária para pesquisas em computação gráfica e
outras disciplinas.
Diferenciação: Mitsuba 3 é um renderizador diferenciável, o que significa que
pode calcular derivadas de toda a simulação em relação à entrada
parâmetros como pose de câmera, geometria, BSDFs, texturas e volumes. Isto
implementa algoritmos de renderização diferenciáveis recentes desenvolvidos na EPFL.
Espectral e Polarização: Mitsuba 3 pode ser usado como monocromático
renderizador, renderizador baseado em RGB ou renderizador espectral. Cada variante pode
opcionalmente, considere os efeitos da polarização, se desejado.
Vídeos tutoriais, documentação
Gravamos vários vídeos no YouTube que fornecem uma introdução gentil
Mitsuba 3 e Dr.Jit. Além disso você pode encontrar notebooks Juypter completos
cobrindo uma variedade de aplicações, guias de instruções e documentação de referência
em readthedocs.
Instalação
Fornecemos rodas binárias pré-compiladas via PyPI. Instalar o Mitsuba desta forma é tão simples quanto executar
pip instalar mitsuba
na linha de comando. O pacote Python inclui treze variantes por padrão:
escalar_rgb
escalar_espectral
escalarespectralpolarizado
llvmadrgb
llvmadmono
llvmadmono_polarizado
llvmadespectral
llvmadspectral_polarized
cudaadrgb
cudaadmono
cudaadmono_polarized
cudaadspectral
cudaadspectral_polarized
Os dois primeiros realizam simulação clássica de um raio por vez usando um RGB
ou representação espectral de cores, enquanto os dois últimos podem ser usados para representação inversa
renderização na CPU ou GPU. Para acessar variantes adicionais, você precisará
compilar uma versão personalizada do Dr.Jit usando CMake. Por favor veja o
documentação
para obter detalhes sobre isso.
Requisitos
Pitão >= 3.8
(opcional) Para computação na GPU: driver Nvidia >= 495.89
(opcional) Para computação vetorizada/paralela na CPU: LLVM >= 11.1
Uso
Aqui está um exemplo simples de "Hello World" que mostra como é simples renderizar um
cena usando Mitsuba 3 do Python:
# Importe a biblioteca usando o alias "mi"import mitsuba as mi# Defina a variante do renderermi.setvariant('scalarrgb')# Carregue uma scenecene = mi.loaddict(mi.cornellbox())# Renderize a cenaimg = mi. render(scene)# Grave a imagem renderizada em um arquivo EXRmi.Bitmap(img).write('cbox.exr')
Tutoriais e cadernos de exemplo cobrindo uma variedade de aplicações podem ser encontrados
na documentação.
Sobre
Este projeto foi criado por Wenzel Jakob.
Recursos e/ou melhorias significativas no código foram contribuídos por
Sébastien Speierer,
Nicolas Roussel,
Merlin Nimier-David,
Délio Vicini,
Tizian Zeltner,
Baptiste Nicolet,
Miguel Crespo,
Vicente Leroy e
Zi Yi Zhang.
Ao usar o Mitsuba 3 em projetos acadêmicos, cite:
@software{Mitsuba3,title = {mitsuba 3 renderer},author = {Wenzel Jakob e Sébastien Speierer e Nicolas Roussel e Merlin Nimier-David e Delio Vicini e Tizian Zeltner e Baptiste Nicolet e Miguel Crespo e Vincent Leroy e Ziyi Zhang},nota = {https://mitsuba-renderer.org},versão = {3.1.1},ano = 2022}