O Redner é um renderizador diferenciável que pode levar os derivados de renderizar saídas em relação aos parâmetros de cena arbitrários, ou seja, você pode fazer melhor proponha da imagem para sua cena 3D. Um dos principais usos do Redner é a renderização inversa (daí o nome Redner) através da descida de gradiente. O que diferencia o Redner é: 1) Ele calcula os gradientes de renderização corretos estocásticos sem qualquer aproximação, considerando corretamente as descontinuidades e 2) possui um modo de base fisicamente-o que significa que pode simular fótons e produzir fenômenos de iluminação realistas, como sombra e iluminação global, e lança os derivados desses recursos corretamente. Você também pode usar o Redner em um modo de renderização diferido rápido para sombreamento local: nesse modo, ele ainda possui estimativa correta de gradiente e modelos de materiais mais elaborados em comparação com a maioria dos renderizadores diferenciáveis por aí.
Para obter mais detalhes sobre o renderizador, o que ele pode fazer e as técnicas que ele usa para calcular os derivados, dê uma olhada no papel: raios de raios de Monte Carlo, rastreando por amostragem de arestas, Tzu-mao Li, Miika Aittala, Fredo Durand, Jaakko Lehtinen. Desde a submissão, melhoramos bastante o renderizador. Em particular, implementamos um back-end do CUDA e aceleramos significativamente os derivados contínuos, substituindo a diferenciação automática por derivados derivados manualmente. Veja a tese de Tzu-Mao Li para obter ainda mais detalhes. Veja também a seção "Notícias" abaixo para o Changelog.
Com pytorch (qualquer versão> = 1.0) ou tensorflow (versão> = 2.0) instalado em seu ambiente python atual. Para versão acelerada da GPU (Linux e Windows, versão CUDA> = 10.0):
pip install redner-gpu
Caso contrário (Windows, Linux e OS X):
pip install redner
A versão do Windows suporta apenas o pytorch e não o tensorflow no momento.
Você também pode construir a partir da fonte. Veja o wiki para obter instruções de construção.
Um bom ponto de partida para aprender a usar o Redner é olhar para o wiki. A documetação da API está aqui. Você também pode dar uma olhada nos diretórios de testes (Pytorch e Tensorflow) para ter algumas idéias.
12/06/2020 - Python 3.8 Suporte.
04/04/2020 - Adicionado um modelo de distorção da câmera.
17/03/2020 - Pacote PIP para Windows! Atualmente apenas com suporte de Pytorch. O suporte ao TensorFlow está pendente com alguns problemas de compilação.
27/02/2020 - Corrigido um bug nos derivados do BRDF. Isso afeta mais o mapeamento normal. Obrigado Markus Worchel novamente por relatar isso.
02/02/2020 - Corrigido um bug grave para a renderização G -Buffer (#93). Obrigado Markus Worchel por relatar isso.
02/02/2020 - O suporte preliminar do Windows para GPU está disponível graças a Markus Worchel novamente.
01/08/2020 - Melhora significativamente o uso de memória do mipMapping. Agora você pode usar texturas grandes (digamos 4096x4096) relativamente com segurança.
15/12/2019 - Corrigido um bug relacionado ao GC no código de renderização Pytorch em 0,1.30. Por favor, atualize.
12/12/2019 - O suporte preliminar do Windows (somente CPU) está disponível graças à contribuição de Markus Worchel.
12/09/2019 - Adicionado muitos tutoriais no wiki usando o Google Colab. Adicionado uma documentação gerada por esfinge.
12/09/2019 - Corrigido um bug no carregador OBJ da frente de onda. Obrigado Dejan Azinović por reportar!
12/01/2019 - refaça os sistemas de construção e configure a instalação da roda Python. Redner está agora no Pypi (https://pypi.org/project/redner-gpu/ e https://pypi.org/project/redner/).
11/04/2019 - Adicionado um campo de "textura genérica" no material que pode ter um número arbitrário de canais. Isso pode ser útil para um aplicativo de aprendizado profundo, onde a textura é gerada por uma rede e a saída é alimentada em outra rede para processamento adicional. Consulte test_multichannels.py para usos. Obrigado François Ruty pela sugestão e ajuda na implementação.
11/04/2019 - Corrigido vários bugs nos carregadores OBJ/MITSUBA introduzidos pelos uv_indices e normal_indices mudam.
19/10/2019 - Adicionado suporte a cores de vértice. Consulte test_vertex_color.py.
10/08/2019 - Adicionado computação Automática UV através da Biblioteca XATLAS. Consulte a função compute_uvs em forma.py e test_compute_uvs.py.
10/08/2019 - Alterou ligeiramente a interface da classe de forma. A ordem do construtor é diferente e agora leva argumentos extras 'uv_indices' e 'normand_indices' para lidar com costuras no mapeamento de UV e no carregamento do OBJ. Veja Pyredner/Shap.py e Tutorial 2.
22/09/2019 - Agora lidamos com inconsistências entre o sombreamento normais e a geometria normais de maneira mais graciosa (em vez de apenas retornar zero na maioria dos casos). Isso ajuda na renderização de modelos em estado selvagem, por exemplo, modelos em shapenet.
21/09/2019 - Corrigido um buffer de buffer sério no código de renderização diferido quando não houver canal de saída de brilho. Se as coisas não funcionaram para você, talvez tente novamente.
16/08/2019 - Adicionado arquivos do Docker para facilitar a instalação. Obrigado Seyoung Park pela contribuição novamente. Também melhorei significativamente o guia de instalação do Wiki.
13/08/2019 - Adicionado suporte normal ao mapa. Consulte testes/test_teapot_normal_map.py.
08/10/2019 - simplificou significativamente o código de acumulação de derivados (redução segmentada -> Atomics). Além disso, a GPU para trás o Pass recebeu 20 ~ 30% de aceleração.
08/07/2019 - Corrigido um bug de textura de rugosidade.
27/07/2019 - Suporte TensorFlow 1.14! Atualmente, apenas apoia a execução ansiosa. Apoiaremos a execução do gráfico após o TensorFlow 2.0 se tornar estável. Consulte tests_tensorflow para obter exemplos (eu recomendo iniciar em tests_tensorflow/test_single_triangle.py). Os arquivos CMake devem detectar automaticamente o TensorFlow no Python e instalar arquivos correspondentes. Os tutoriais estão em andamento em andamento. Muito obrigado a Seyoung Park pela contribuição!
25/06/2019 - Adicionado câmeras ortográficas (consulte Exemplos/TOLE_D_MESH.PY).
13/05/2019 - Corrigido alguns bugs relacionados aos derivados da câmera. Se algo não funcionou para você antes, talvez tente novamente.
28/04/2019 - Adicionado suporte QMC (consulte tests/test_qmc.py e a documentação em pyredner.serialize_scene ()).
04/04/2019 - Agora suporta Multi -GPU (consulte Pyredner.Set_Device).
31/03/2019 - trouxe de volta o método de amostragem de borda hierárquica no papel.
02/02/2019 - O Wiki agora contém uma série de tutoriais. O plano é expandir ainda mais os exemplos.
Redner depende de algumas bibliotecas/sistemas, todos incluídos no repositório:
O atual plano de desenvolvimento é aprimorar o renderizador. Os recursos a seguir serão adicionados em um futuro próximo (não listado em nenhuma ordem específica):
@article{Li:2018:DMC,
title = {Differentiable Monte Carlo Ray Tracing through Edge Sampling},
author = {Li, Tzu-Mao and Aittala, Miika and Durand, Fr{'e}do and Lehtinen, Jaakko},
journal = {ACM Trans. Graph. (Proc. SIGGRAPH Asia)},
volume = {37},
number = {6},
pages = {222:1--222:11},
year = {2018}
}
Se você tiver alguma dúvida/comentários/relatórios de bug, sinta-se à vontade para abrir um problema do GitHub ou e-mail para o autor Tzu-mao li ([email protected])