Sobre el proyecto • Instalación • Estructura • Contribuyendo • Enlaces de interés
Este repositorio contiene el desarrollo de un path tracer en tiempo real implementado en Vulkan con extensiones de Ray Tracing (KHR) basado en el de Ray Tracing In One Weekend, de Peter Shirley. Se incluye una memoria y varias utilidades relacionadas con el proyecto.
Es el trabajo de fin de grado de mi doble grado en Ingeniería Informática y Matemáticas 🎓.
Requiere tener Vulkan instalado, un driver de Nvidia compatible con Vulkan, Cmake.
Para compilar y ejecutar el proyecto, haz lo siguiente:
git clone --recursive --shallow-submodules https://github.com/Asmilex/Raytracing.git
cd .\Raytracing\application\vulkan_ray_tracing\
mkdir build
cd build
cmake ..
cmake --build .
..\..\bin_x64\Debug\asmiray.exe
Cuando se haya ejecutado, deberían haber aparecido los makefiles necesarios. Si abres VSCode, en la pestaña de Run and Debug, deberías tener una opción para lanzar Asmiray. Debería ir.
A fecha 2022-01-31, el repositorio está compuesto por los siguientes directorios:
./docs
: Documentación del proyecto. Toda la documentación está basada en markdown. Para convertirla en PDF y desplegarla en la web, se utiliza Pandoc. Tienes más información en el README correspondiente../RT_in_one_weekend
: Código del ray tracer de la serie de libros de Shirley original en CPU../application
: El futuro ray tracer en GPU se ubicará aquí. Ahora mismo está en pañales.
Puedes acceder a Github Projects para ver la gestión de las tareas. Resulta especialmente útil para saber en lo que se está trabajando actualmente.
Cada commit debería ir identificado con un emoji antes del mensaje, así como terminar en un issue enlazado. Por ejemplo, [📓] Descripción de función de densidad (#71)
Estos son los iconos usados, así como su significado:
Tipo de commit | Emoji | Cómo se escribe rápidamente |
---|---|---|
Documentación | 📓 | :notebook: |
Archivo de configuración | 🔧 | :wrench: |
Integración continua | 👷 | :construction_worker: |
Commit de Actions | 🤖 | :robot: |
Quitar archivos | 🔥 | :fire: |
Nuevas características | ✨ | :sparkles: |
Test | ⚗️ | :alembic: |
Refactorización | ♻️ | :recycle: |
Bugfix | 🐛 | :bug: |
Los issues también deberían seguir el mismo estilo. Tienes un ejemplo aquí
En esta sección se recopilan enlaces útiles para el desarrollo del motor. Se irá actualizando conforme avance.
(Y, seguramente, desaparezca en el futuro)
- Libros de Shirley
- Nvidia Vulkan Ray Tracing tutorial. Parte desde un proyecto básico de Vulkan, y añade lo necesario para tener aceleración de RT usando el framework nvpro-samples. Interesante cuanto menos, y una de las opciones más seguras. Se basa en el código de este repositorio.
- Nvpro samples vk_raytrace. Una implementación PBR usando como base el tutorial de nvpro samples. Bastante más avanzada, pero los shaders son muy útiles.
- En la misma línea, una implementación de In One Weekend con esas extensiones por GPSsnoopy. Podría resultar muy útil también.
- Un mini path tracer. Referenciado en Gems II.
- Vulkan Samples.
- Physically Based Rendering
- Libro sobre métodos de Monte Carlo
- Arquitectura de Turing
- Explicación interesante sobre GI de Digital Foundry
- Ray Tracing Gems I
- Ray Tracing Gems II
- Awesome ray tracing
- Generación de números aleatorios en GPU
- The RTX Shader Binding Table
- Tutorial de Vulkan
- Lista con recursos de RT
- ImGui. Se usa como base en nvpro samples, así que viene bien tener la documentación a mano.
- Wavefront material properties