Skip to content

Latest commit

 

History

History
100 lines (95 loc) · 4.63 KB

File metadata and controls

100 lines (95 loc) · 4.63 KB

Links

TODO

  • Camera
    • Camera depth of field
  • Lighting
    • Directional (sun like) light
    • Point source
    • Specular direct lighting for delta materials
    • Sphere light (only sample visible surface)
  • Geometry
    • Spheres separately
    • Spheres in kdtree
  • Input
    • Open standard obj/mtl files (from internet or blender export)
    • More scenes
    • Other input formats (research)
  • Materials
    • Textured materials
    • Spherical test renderer
    • Fancier specular highlights
    • Reimplement materials from scratch (start with simplest diffuse)
      • Define new SurfaceSample contract (full-mixture PDF) and document it
      • Implement pure Lambertian diffuse only (constant albedo, no textures)
      • Validate diffuse sampling energy with a simple reference scene
      • Add diffuse texture support (image lookup + UV clamping)
      • Add specular reflection (delta) with correct weighting
      • Add Fresnel-based specular reflection only (metal / no transmission)
      • Add refraction (delta) for dielectrics with Fresnel split and eta^2 handling
      • Rebuild material mixing logic to keep PDFs consistent
      • Tests for refraction
      • Add tests for PDF/lobe selection correctness
    • Multiple Importance Sampling (MIS)
    • Support for Ka (ambient) mtl command
    • Support for Ns (specular exponent) mtl command
    • Support for Ke (emissive) mtl command (mesh lighting)
    • Support illum mtl command
  • Optimization
    • Specialized kd-Tree traversal for shadow rays
    • Check ray against kd-Tree extent for early exit?
    • Rust memory profiling
    • Rust benchmark project
    • Cancellation token in GUI
    • GUI custom shader for gamma correction and iteration conversions

Archive

  • KdTree
    • Triangle AABB clipping
    • Perfect splits
    • Split flat cells (for cornell box sides)
    • O(n log^2 n) construction
    • Test insertion sort in aabb triangle clip code for performance
    • How to avoid look-up of indices?
    • How to avoid re-constructing indices vecs?
    • O(n log n) construction
  • Rust Learning
    • ETA, total and mean iteration time in CLI
    • Material properties plot
    • Transparent cornell cube looking weird
    • Surface area heuristic
    • Profiling cpu
    • Non-square aspect ratios crashing
    • Restructure root library (tracing)
  • Interactive GUI
    • Threaded rendering
    • Camera controls translation
    • Further subdivision and user selectable thread count
    • Render levels with threads for fast restarts
    • Request repaint when receiving new rendered frame
    • Camera controls rotation
    • Subdivided threading instead of full frame
  • KdTree Cornell Bug
    • Aabb min/max instead of center/half size.
    • Intersection test for flat cells
    • Recursively recurring splits
    • Visualization
    • KdTree tester CLI that bounces rays and checks them against intersection with all triangles
    • Flat cells missed in traversal depending on tree layout
    • Enum Geometries
    • Use 2D triangle-point intersection when triangle is axially aligned
    • Floating point issue in comparing ray-triangle and ray-plane intersection in traversal
  • KdTree SR2 Bug
    • Tree reducer program
    • Create test from reduced sr2 scene
    • Output arguments in tester and reducer programs
    • Run reducer multiple times to find smallest example
    • Write json scene format from reducer
    • Read scene from json format
    • Write reduced geometries as wavefront obj
    • Debug reduced, why is it finding the wrong triangle?
    • Something seems wrong with the ray visualization, the ray intersection parameters does not match with the ray length
    • Fix clipping issue
    • Fix capacity issue