Redner es un renderizador diferenciable que puede tomar las derivadas de la representación de salidas con respecto a los parámetros de escena arbitrarios, es decir, puede hacer retroceso de la imagen a su escena 3D. Uno de los principales usos de Redner es la representación inversa (de ahí el nombre de Redner) a través del descenso de gradiente. Lo que distingue a Redner es: 1) Calcula los gradientes de representación correctos estocásticamente sin ninguna aproximación al considerar adecuadamente las discontinuidades, y 2) tiene un modo basado en físicamente, lo que significa que puede simular fotones y producir fenómenos de iluminación realistas, como la iluminación de la sombra y el global, y maneja los derivados de estas características correctamente. También puede usar Redner en un modo de representación diferida rápida para el sombreado local: en este modo todavía tiene una estimación de gradiente correcta y modelos de material más elaborados en comparación con la mayoría de los renderistas diferenciables.
Para obtener más detalles sobre el renderizador, lo que puede hacer y las técnicas que usa para calcular los derivados, eche un vistazo al documento: rastreo de rayos Monte Carlo diferenciable a través del muestreo de borde, Tzu-Mao Li, Miika Aittala, Fredo Durand, Jaakko Lehtinen. Desde la presentación hemos mejorado bastante el renderizador. En particular, implementamos un backend de CUDA y aceleramos las derivadas continuas significativamente al reemplazar la diferenciación automática con derivados derivados manuales. Vea la tesis de Tzu-Mao Li para obtener aún más detalles. También vea la sección "Noticias" a continuación para el ChangeLog.
Con Pytorch (cualquier versión> = 1.0) o TensorFlow (versión> = 2.0) instalado en su entorno Python actual. Para la versión acelerada de GPU (Linux y Windows, Versión CUDA> = 10.0):
pip install redner-gpu
de lo contrario (Windows, Linux y OS X):
pip install redner
La versión de Windows solo admite Pytorch y no TensorFlow en este momento.
También puedes construir desde la fuente. Vea el wiki para obtener instrucciones de construcción.
Un buen punto de partida para aprender a usar Redner es mirar el wiki. La documentación de la API está aquí. También puede echar un vistazo a los directorios de pruebas (Pytorch y TensorFlow) para tener algunas ideas.
12/06/2020 - Soporte de Python 3.8.
01/04/2020 - Se agregó un modelo de distorsión de la cámara.
17/03/2020 - ¡Paquete PIP para Windows! Actualmente solo con soporte de Pytorch. El soporte de TensorFlow está pendiente con algunos problemas de compilación.
27/02/2020 - Se corrigió un error en derivados BRDF. Esto afecta más al mapeo normal. Gracias Markus Worchel nuevamente por informar esto.
02/02/2020 - Se corrigió un error serio para la representación G -Buffer (#93). Gracias Markus Worchel por informar esto.
02/01/2020 - El soporte preliminar de Windows para GPU está disponible gracias a Markus Worchel nuevamente.
01/08/2020 - Mejora significativamente el uso de la memoria de MIPMapping. Ahora puede usar texturas grandes (digamos 4096x4096) de manera relativamente segura.
15/12/2019 - Se corrigió un error relacionado con GC en el código de representación de Pytorch en 0.1.30. Actualice.
12/12/2019 - El soporte preliminar de Windows (solo CPU) está disponible gracias a la contribución de Markus Worchel.
12/09/2019 - Se agregaron muchos tutoriales en wiki usando Google Colab. Se agregó una documentación generada por Sphinx.
12/09/2019 - Se corrigió un error en el cargador OBJ de frente de onda. ¡Gracias Dejan Azinović por informar!
12/01/2019: rehace los sistemas de compilación y la instalación de la rueda de Python. Redner ahora está en Pypi (https://pypi.org/project/redner-gpu/ y https://pypi.org/project/redner/).
11/04/2019 - Se agregó un campo de "textura genérica" en el material que puede tener un número arbitrario de canales. Esto puede ser útil para la aplicación de aprendizaje profundo donde la textura es generada por una red, y la salida se alimenta a otra red para su posterior procesamiento. Ver test_multichannels.py para uso. Gracias François Ruty por la sugerencia y la ayuda en la implementación.
11/04/2019 - Se corrigió varios errores en los cargadores OBJ/Mitsuba introducidos por el cambio uv_indices y normal_indices .
19/10/2019 - Soporte de color de vértice agregado. Ver test_vertex_color.py.
10/08/2019 - Se agregó el cálculo automático UV a través de la biblioteca Xatlas. Consulte la función compute_uvs en shape.py y test_compute_uvs.py.
10/08/2019 - Cambio ligeramente la interfaz de la clase de forma. El orden del constructor es diferente y ahora requiere argumentos adicionales de 'uv_indices' y 'Normal_indices' para tratar con costuras en la mapeo UV y la carga OBJ. Ver Pyredner/Shape.py y Tutorial 2.
22/09/2019 - Ahora manejamos inconsistencias entre las normales de sombreado y la geometría normales con más gracia (en lugar de volver cero en la mayoría de los casos). Esto ayuda a representar modelos en la naturaleza, por ejemplo, modelos en Shapenet.
21/09/2019 - Se corrigió un error de exceso de búfer grave en el código de representación diferida cuando no hay un canal de salida de radiación. Si las cosas no funcionaban para ti, tal vez vuelva a intentarlo.
16/08/2019 - Se agregaron archivos Docker para una instalación más fácil. Gracias Seyoung Park por la contribución nuevamente. También mejoré significativamente la guía de instalación de Wiki.
13/08/2019 - Se agregó soporte de mapa normal. Consulte las pruebas/test_teet_normal_map.py.
10/08/2019 - Simplificó significativamente el código de acumulación de derivados (reducción segmentada -> atomics). También GPU Backward Pass obtuvo 20 ~ 30% de aceleración.
07/07/2019 - Se corrigió un error de textura de rugosidad.
27/07/2019 - TensorFlow 1.14 Soporte! Actualmente solo admite la ejecución ansiosa. Admitiremos la ejecución de gráficos después de que TensorFlow 2.0 se esté estable. Consulte Tests_TensorFlow para ver ejemplos (recomiendo comenzar desde Tests_tensorflow/test_single_triangle.py). Los archivos Cmake deben detectar automáticamente TensorFlow en Python e instalar los archivos correspondientes. Los tutoriales son trabajo en progreso. ¡Muchas gracias a Seyoung Park por la contribución!
25/06/2019 - Cámaras ortográficas agregadas (ver ejemplos/two_d_mesh.py).
13/05/2019 - Se corrigió bastantes errores relacionados con derivados de la cámara. Si algo no funcionó para ti antes, tal vez vuelva a intentarlo.
28/04/2019 - Soporte de QMC agregado (ver Tests/test_qmc.py y la documentación en pyredner.serialize_scene ()).
01/04/2019 - Ahora admite multi -GPU (ver pyredner.set_device).
31/03/2019 - trajo el método de muestreo de borde jerárquico en el documento.
02/02/2019 - El wiki ahora contiene una serie de tutoriales. El plan es expandir aún más los ejemplos.
Redner depende de algunas bibliotecas/sistemas, que se incluyen en el repositorio:
El plan de desarrollo actual es mejorar el renderizador. Las siguientes características se agregarán en el futuro cercano (no figuran en ningún orden en particular):
@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}
}
Si tiene alguna pregunta/comentarios/informes de errores, no dude en abrir un problema de GitHub o un correo electrónico al autor Tzu-Mao Li ([email protected])