Skip to content

Releases: JstnMcBrd/ray-tracer

4.0.0

10 Jan 22:49
4673df3
Compare
Choose a tag to compare

🟡 Backwards-compatible changes for console API or scene definitions
🔴 Breaking changes for console API or scene definitions

Added

  • 🟡 Circle object type
  • 🟡 Triangle object type
  • Automatic conversion of 3-sided Polygons to Triangles
  • Typing for Plane constructor
  • Linting with PyLint
  • 🟡 Argument defaults for output, width, and height
  • Improved argument parsing
  • Loading bar for writing to PPM files
  • Versioning section to README
  • .env.example file for arguments
  • 🟡 Support for writing output to PNG files

Changed

  • 🔴 "center" and "point" object attributes to "position"
  • Object attributes to be ordered by position, rotation, size
  • 🔴 Output to go to PNG files by default
  • Private parameters of object classes to be accessible from subclasses
  • Private methods to be privatized
  • lib_patch folder to just lib
  • lib scripts to use their library name
  • vector_utils.py to vector.py
  • Moved all Objects into the same script
  • Reorganized README
  • Linted all files
    • Docstrings
    • Safer typing
    • Limited line length
    • PascalCase and snake_case conformity
    • isinstance for type comparison
    • enumerate for iteration
  • Command line output to be improved

3.0.0

09 Mar 12:19
18c6a82
Compare
Choose a tag to compare

🟡 Backwards-compatible changes for console API or scene definitions
🔴 Breaking changes for console API or scene definitions

Added

  • 🟡 Polygon object type
  • 🟡 Plane object type
  • Shadows
  • 🟡 Reflectivity object parameter
  • Reflectivity to program 5 sample scenes
  • Reflections & recursive raycasting
  • 🟡 reflection-limit argument
  • Multiprocessing for faster calculations
  • istarmap patch for multiprocessing library
  • closed_pairwise patch to itertools library
  • Progress bar
  • 🟡 progress-bar toggling argument
  • Program 6 sample scenes
  • Program 6 custom scene
  • Auto-normalization warning to scene importer
  • 🟡 Default values to scene importer
  • "Writing to file" indicator
  • Better scene type definitions to README

Changed

  • 🔴 Replaced direction_to_light with light_direction for scene definitions
  • 🔴 Renamed all env arguments to match console arguments
  • Moved raycasting to separate classes
  • Moved vector magnitude and normalization to separate script
  • Moved camera axes to separate Camera object
  • Simplified Sphere normal calculation
  • Transitioned to safer None comparisons
  • New example image to README

Fixed

  • Clamped color values
  • Inaccurate camera_look_at importing
  • 🔴 Bug where field_of_view could be 360 instead of 0

2.0.0

25 Feb 11:13
78306d9
Compare
Choose a tag to compare

🟡 Backwards-compatible changes for console API or scene definitions
🔴 Breaking changes for console API or scene definitions

Added

  • 🟡 Progress reporter to allow the user to see job progress
  • Timer to track efficiency
  • Type-hinting for scene_importer
  • PPM viewer extension to VS Code extensions

Changed

  • 🔴 Transitioned to Pythonic formatting (using lowercase and underscores instead of camelcase)
  • Moved ray_trace() to separate script
  • Moved shading to separate script
  • Moved load_scene() to scene_importer
  • Moved write_to_ppm() to separate script
  • Moved Objects to separate files
  • Made git ignore ppm output files
  • Renamed repository
  • Improved README example image quality

Fixed

  • Bug where window point was calculated incorrectly and made the window half the size

1.0.0

24 Feb 01:09
53878f5
Compare
Choose a tag to compare

Added

  • Argparsing with environment variable alternatives
  • Scene importing system
  • Basic raytracing
  • Basic Phong shading model
  • .ppm output formatting
  • Support for Spheres
  • Scenes from Program 5 and converted them to JSON
  • Custom scene 3 for Program 5
  • Basic README
  • vscode devcontainer configuration
  • Other vscode settings