Skip to content
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ material_gallery/

# MkDocs — generated outputs only (website/docs/ source is tracked)
website/site/
docs/

# Auto-copied image directories (populated by hooks.py at build time — not source)
website/docs/assets/images/samples/
Expand Down
6 changes: 3 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ set(SOURCE_RAYON
src/rayon/main.cc
src/rayon/render/render_coordinator.cpp
src/rayon/scenes/yaml_scene_loader.cc
src/rayon/scenes/texture_loader.cc
src/rayon/gpu_renderers/renderer_cuda_device.cu
src/rayon/gpu_renderers/cuda_raytracer.cu
src/rayon/gpu_renderers/cuda_utils.cu
Expand All @@ -91,9 +92,7 @@ set(SOURCE_RAYON
src/rayon/gpu_renderers/shaders/shader_golf.cu
)

if(OptiX_INCLUDE_DIR)
list(APPEND SOURCE_RAYON src/rayon/gpu_renderers/optix/optix_renderer.cu)
endif()
# Note: optix_renderer.cu is added via target_sources() below, after find_path(OptiX_INCLUDE_DIR)

# Enable colored compiler output for Make builds
if(CMAKE_GENERATOR STREQUAL "Unix Makefiles")
Expand Down Expand Up @@ -241,6 +240,7 @@ if(CUDA_FOUND)
message(STATUS "OptiX SDK found: ${OptiX_INCLUDE_DIR}")
target_include_directories(rayon PRIVATE ${OptiX_INCLUDE_DIR})
add_definitions(-DOPTIX_FOUND)
target_sources(rayon PRIVATE src/rayon/gpu_renderers/optix/optix_renderer.cu)

# Compile OptiX device programs (.cu → .ptx)
# These are NOT compiled as regular CUDA — they produce PTX loaded at runtime by OptiX
Expand Down
65 changes: 34 additions & 31 deletions TODOS.md
Original file line number Diff line number Diff line change
@@ -1,56 +1,59 @@
# TODO List

## Interactive renderer
## CUDA renderer
- [X] Textures loading (Venturi's style)
- [ ] Volumetric smoke ray-marching
- [ ] Depth map exporting
- [ ] New sphere / point light light types
- [ ] SDF integration in CUDA
- [ ] SDL3 migration (won't probably fix)

## General
- [ ] Better skybox
- [ ] Skybox as HDR, dynamic loading

## Website
- [ ] History script testing

## Others things
- [ ] Impact of different rendering optimizations reporting -> find a way and report (for instance, color complexity per pixel)
- [ ] `sdl` texture blitting integration + performance assessment
- [ ] Performance regression
- [ ] Pipeline CI/CD pour runner les tests unitaires ci-dessus (si possible, besoin CUDA sur Github)
- [ ] Profiling and low-level optimizations + document changes using `nsight-systems` and `nsight-compute`
- [ ] Implement NVIDIA OptiX image denoising
- [ ] Save image as OpenEXR format

## Done

### Interactive renderer
- [x] Gamma correction in interactive renderer is wrong when displayed, but saved correctly -> it's related to how program handle color profiles.
- [x] Change of speeds in interactive renderer, as they are not very nice
- [x] Add a ray/second counter somewhere -> SPPS instead, as ray counting is too costly on gpu side

## CUDA renderer
### CUDA renderer
- [x] Implement anisotropic metals / shading
- [ ] SDL3 migration
- [x] Refactor constants f3_ones, f3_zero and others
- [ ] New sphere / point light light types
- [ ] Textures loading (Venturi's style)
- [ ] SDF integration in CUDA
- [x] Time per pixel shading for performance display
- [x] Normals as lines for spheres
- [ ] Volumetric smoke ray-marching
- [x] Normals color toggle for interactive renderer
- [ ] Depth map exporting

## General code organization
### General code organization
- [x] There are still discrepancies for the cuda renderers
- [x] clarify renderer_cuda_host.hpp vs renderer_cuda_device.cu responsibilities
- [x] cuda_raytracer name is badly chosen

## General
- [ ] Better skybox
- [ ] Skybox as HDR, dynamic loading
### General
- [x] Doxygen documentation

## Scenes
### Scenes
- [x] YAML scene should take camera positions
- [x] Dynamic scenes loading

## Bug fixing
- [ ] Artifacts when rendering metallic ground (grazing angle)
- [ ] Artifacts when rendering glass (might be related to metallic ground somehow ?)

## Optimisations
### Optimisations
- [x] Fast maths

## Bugfixing
- [ ] Adaptive sampling is not converging correctly in some cases, maybe can be fixed (not sure though)

## Others things
### Others things
- [x] `ImGUI` GUI integration for controls -> reimplement existing controls + add more
- [x] Implement benchmarks for static renderer on typical scenes (multiple renders + average)
- [ ] Impact of different rendering optimizations reporting -> find a way and report (for instance, color complexity per pixel)
- [ ] `sdl` texture blitting integration + performance assessment
- [ ] Tests unitaires qui détectent les régressions dans le renderer GPU et CPU en comparant avec des scènes de référence, notamment lors d'optimisations
- [ ] Pipeline CI/CD pour runner les tests unitaires ci-dessus (si possible, besoin CUDA sur Github)
- [ ] Profiling and low-level optimizations + document changes using `nsight-systems` and `nsight-compute`
- [ ] implement dynamic screen rescaling
- [ ] arbitrary resolution (other than 16/9)
- [ ] Implement NVIDIA OptiX image denoising
- [ ] Save image as OpenEXR format
- [x] arbitrary resolution (other than 16/9)
Binary file added images/samples/textures/texture_orig.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/samples/textures/uv_mapping.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
75 changes: 75 additions & 0 deletions resources/models/cube_uv.obj
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# Cube
mtllib texture_test.mtl

o Cube

v -0.600000 0.600000 -0.600000
v 0.600000 0.600000 -0.600000
v 0.600000 0.600000 0.600000
v -0.600000 0.600000 0.600000
v -0.600000 -0.600000 0.600000
v 0.600000 -0.600000 0.600000
v 0.600000 -0.600000 -0.600000
v -0.600000 -0.600000 -0.600000
v 0.600000 -0.600000 -0.600000
v 0.600000 -0.600000 0.600000
v 0.600000 0.600000 0.600000
v 0.600000 0.600000 -0.600000
v -0.600000 -0.600000 0.600000
v -0.600000 -0.600000 -0.600000
v -0.600000 0.600000 -0.600000
v -0.600000 0.600000 0.600000
v -0.600000 -0.600000 0.600000
v 0.600000 -0.600000 0.600000
v 0.600000 0.600000 0.600000
v -0.600000 0.600000 0.600000
v 0.600000 -0.600000 -0.600000
v -0.600000 -0.600000 -0.600000
v -0.600000 0.600000 -0.600000
v 0.600000 0.600000 -0.600000

vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000

vn 0.000000 1.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn 1.000000 0.000000 0.000000
vn -1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 0.000000 -1.000000

usemtl textured
f 1/1/1 2/2/1 3/3/1
f 1/1/1 3/3/1 4/4/1
f 5/5/2 6/6/2 7/7/2
f 5/5/2 7/7/2 8/8/2
f 9/9/3 10/10/3 11/11/3
f 9/9/3 11/11/3 12/12/3
f 13/13/4 14/14/4 15/15/4
f 13/13/4 15/15/4 16/16/4
f 17/17/5 18/18/5 19/19/5
f 17/17/5 19/19/5 20/20/5
f 21/21/6 22/22/6 23/23/6
f 21/21/6 23/23/6 24/24/6
Loading
Loading