Skip to content

Releases: gdtknight/miniRT

v2.7.0

27 Mar 13:20
edec7c1

Choose a tag to compare

What's Changed

Changes since v2.6.2:

Features

Bug Fixes

Documentation

Other Changes

  • refactor(headers): minimize include dependencies across modules (16cfd21)
  • refactor(headers): relocate prototypes to appropriate headers (b68804e)
  • refactor(render): inline debounce timer wrapper functions (5afe9e9)
  • refactor(utils): move timer_elapsed_us to utils module (2c999f4)
  • refactor(scene): inline flag helpers and make object_list_grow static (6745ab3)
  • refactor(parser): consolidate small parser utility files (ac6cee9)
  • refactor(parser): simplify error handling and clarify naming (5932f0b)

Installation

Download the appropriate binary for your platform:

  • Linux: miniRT-linux-x86_64
  • macOS: miniRT-macos-arm64

Make it executable: chmod +x miniRT-*

Run with a scene file: ./miniRT-* scenes/test_scene.rt

v2.6.2

27 Mar 08:22
3298d19

Choose a tag to compare

What's Changed

Changes since v2.6.1:

Features

Bug Fixes

  • fix(input): use camera-relative up vector for vertical movement (499eccd)

Documentation

Other Changes

Installation

Download the appropriate binary for your platform:

  • Linux: miniRT-linux-x86_64
  • macOS: miniRT-macos-arm64

Make it executable: chmod +x miniRT-*

Run with a scene file: ./miniRT-* scenes/test_scene.rt

v2.6.1

25 Mar 02:01
43ee40a

Choose a tag to compare

What's Changed

Changes since v2.6.0:

Features

Bug Fixes

Documentation

  • Merge pull request #13 from gdtknight/develop (996ee8e)
  • docs(wiki): update terminology and descriptions for v2.6.0 (5f2d90e)
  • docs: update README.md for v2.6.0 features and module structure (8a97d2f)

Other Changes

  • Merge pull request #14 from gdtknight/develop (43ee40a)
  • chore: inline lib/ submodules as regular source files (b1f4986)

Installation

Download the appropriate binary for your platform:

  • Linux: miniRT-linux-x86_64
  • macOS: miniRT-macos-arm64

Make it executable: chmod +x miniRT-*

Run with a scene file: ./miniRT-* scenes/test_scene.rt

v2.6.0

24 Mar 23:32
37c20f8

Choose a tag to compare

What's Changed

Changes since v2.5.1:

Features

Bug Fixes

  • fix(parser): add coordinate range validation and harden number parsing (aabbe03)

Documentation

  • docs: update architecture docs and wiki for v2.6.0 module structure (c4ca5a1)
  • docs: update CLAUDE.md for module restructuring (7999d79)
  • docs: update wiki for window → display rename and struct fixes (09a8560)

Other Changes

  • chore(build): update Makefile for module restructuring (c1d38ff)
  • refactor(includes): remove moved types and prototypes from minirt.h (9963307)
  • refactor: split ray/ and lighting/ into intersect/, shading/, shadow/ (2d0144a)
  • refactor: update all #include paths for renamed headers (d53a078)
  • refactor(hud): merge 4 small headers into hud_internal.h (f444063)

Installation

Download the appropriate binary for your platform:

  • Linux: miniRT-linux-x86_64
  • macOS: miniRT-macos-arm64

Make it executable: chmod +x miniRT-*

Run with a scene file: ./miniRT-* scenes/test_scene.rt

v2.5.1

24 Mar 13:30
d486d27

Choose a tag to compare

What's Changed

Changes since v2.5.0:

Features

Bug Fixes

  • fix: correct wiki file listings and update wiki-sync script (6a343f3)

Documentation

Other Changes

  • refactor(parser): deduplicate object type counting into get_type_count (079dcf7)
  • chore(build): update Makefile for display module (0ac4a2d)
  • refactor(display): rename window/ MLX files to src/display/ and simplify pixel ops (ded7ca7)

Installation

Download the appropriate binary for your platform:

  • Linux: miniRT-linux-x86_64
  • macOS: miniRT-macos-arm64

Make it executable: chmod +x miniRT-*

Run with a scene file: ./miniRT-* scenes/test_scene.rt

v2.5.0

24 Mar 05:47
76bb768

Choose a tag to compare

What's Changed

Changes since v2.4.1:

Features

Bug Fixes

  • fix(window): include stdlib.h unconditionally for NULL on macOS (10e9a33)
  • fix(hud): simplify hud_toggle to always repaint buffer (2e1ee3a)
  • fix(input): swap KEY_1/KEY_3 camera yaw direction (85275fa)

Documentation

Other Changes

  • chore(build): update Makefile for new and moved files (7e076a7)
  • style: fix whitespace and norminette issues (1b253bf)
  • refactor(input): replace key dispatch chain with bind table (e9402da)
  • refactor(render): merge window_init + window_lifecycle into render_init (39fd519)
  • refactor(window): split mlx_context_destroy into separate file (082994f)
  • refactor(bvh_vis): split prefix_push into bvh_vis_prefix_push.c (78f0e3a)

Installation

Download the appropriate binary for your platform:

  • Linux: miniRT-linux-x86_64
  • macOS: miniRT-macos-arm64

Make it executable: chmod +x miniRT-*

Run with a scene file: ./miniRT-* scenes/test_scene.rt

v2.4.1

24 Mar 03:42
65b40d6

Choose a tag to compare

What's Changed

Changes since v2.4.0:

Features

Bug Fixes

  • fix(render): only mark keyguide dirty when HUD is visible (cb9c3d1)

Documentation

  • docs: update all docs and wiki to match v2.4.0 codebase (e077fab)

Other Changes

Installation

Download the appropriate binary for your platform:

  • Linux: miniRT-linux-x86_64
  • macOS: miniRT-macos-arm64

Make it executable: chmod +x miniRT-*

Run with a scene file: ./miniRT-* scenes/test_scene.rt

v2.4.0

23 Mar 02:38

Choose a tag to compare

What's Changed

Changes since v2.3.0:

Features

  • feat(build): add Linux platform support to Makefile (993dcd8)
  • feat(lighting): integrate multi-light loop, checker and bump hooks (262fd9a)
  • feat(bump): add XPM bump map with deferred loading and normal perturbation (5b631df)
  • feat(checker): add checkerboard texture pattern with parser integration (a88c714)
  • feat(cone): add cone object with intersection, parsing, and manipulation (2436027)
  • feat(light): implement multi-spot light system with per-light color (699450e)
  • feat(camera): add yaw rotation around Y-axis with KEY_1/KEY_3 (6b789fd)
  • feat(model): extend data model for cone, textures, and multi-light (c123865)

Bug Fixes

  • fix(ray): move intersect_cone_body prototype to ray.h (c3aac9d)
  • fix(window): add Linux mlx_destroy_display cleanup (2c9a831)
  • fix(shadow): use ceiling division for per-light sample adjustment (1d0ea2f)
  • fix(utils,bvh_vis): NaN guards, buffer sizes, traversal safety (8c5cebb)
  • fix(ray): zero-normal safety for cylinder and cone intersection (5c08c2f)
  • fix(hud): buffer overflow, bounds check, and NaN safety (a057a36)
  • fix(build): deduplicate libft clean, MLX dependency, bonus docs (7fa1d90)
  • fix(window): camera pitch clamp, asin domain, HUD repush, cleanup (62696a2)
  • fix(spatial): AABB NaN safety, RAY_T_MIN constants, remove dead struct (76cd1d9)
  • fix(texture): checkerboard tile aspect, bump map local-space UV (6fdc463)
  • fix(hud): light_count guard, toggle repaint, format rounding (7677155)
  • fix(parser): INT_MIN handling, line overflow, inf guard, validation (7350264)
  • fix(shadow): tangent-plane offsets, safe inv_dir, remove dead config API (fee03dd)
  • fix(ray): cylinder t2 fallback, fabs(a) guard, cone/sphere solver constants (702c74c)
  • fix(spatial,build): NaN AABB, BVH null child, headers, Makefile deps (a6b47a0)
  • fix(parser,hud,render): leaks, bzero init, timing, format safety (6698c1d)
  • fix(window): gimbal lock, rodrigues, expose callback, codec, dead code (9bbb252)
  • fix(core): P0 runtime bugs — asin clamp, color bound, far-root, epsilon (14d807b)
  • fix(memory): prevent bump_path leak on parse failure and error paths (a932aa4)
  • fix(ci): redirect clone_wiki log output to stderr (50fb48f)

Documentation

  • docs: update version references to v2.4.0 (f42283b)
  • docs: update all docs and wiki to match v2.4.0 codebase (dc88801)
  • docs: fix code-doc mismatches and add missing struct definitions (bc5b522)
  • docs(hud): fix t_hud_state struct and pagination reference (010c534)
  • docs(spatial): add midpoint fallback guarantee comment (22bc7c2)
  • docs(lighting): fix shadow sample adjustment formula to ceiling division (37b1514)
  • docs(architecture): fix intersection function name to intersect_object_new (ba53742)
  • docs(build): fix fclean inline description to include library cleanup (289a22f)
  • docs(build,lighting,changelog): fix 3 code-doc mismatches (78b7ec2)
  • docs(structs,architecture,hud,window): fix 6 code-doc mismatches (0a07c69)
  • docs(hud): fix scene info section to match actual HUD output (ee0d849)
  • docs(spatial,lighting,hud): fix shadow threshold and HUD description (daf859d)
  • docs(scene-format): fix test scene count 35 → 36 (5b459f8)
  • docs(ray): fix intersection threshold constant EPSILON → RAY_T_MIN (0a8ff90)
  • docs(structs,window): sync camera Euler angle refactor (9e2f537)
  • docs(report): update camera Euler refactor report to final state (257050a)
  • docs(review): add v5 senior code review report (38 findings) (24a19f9)
  • docs(changelog): fix object ID format and render flag name (589b3d8)
  • docs(build): fix MiniLibX path description and CI workflow count (3ebd314)
  • docs(architecture): fix execution flow, Phong model, and file counts (f524a01)
  • docs(render,hud): fix pixel timing conditionality and HUD metrics (379d5cb)
  • docs(window): update init/cleanup flow, key bindings, and file table (2b9d0f8)
  • docs(structs): update data structures for multi-light, cone, and textures (4097920)
  • docs(parser,scene-format): add cone/bonus parsing and fix validation rules (bfb4be5)
  • docs(lighting): update multi-light Phong model and shadow system (4582676)
  • docs(spatial): fix BVH build algorithm, traversal flow, and object IDs (4ad0bf1)
  • docs(ray): fix cylinder caps and add cone intersection documentation (be2aa73)
  • docs(spec): add 034-full-features specification documents (924cb49)
  • docs: fix debounce FSM and render loop diagram in Module-Render (a343bf7)
  • docs: fix Wiki discrepancies found in code audit (a901229)

Other Changes

  • chore(build): update Makefile for all file renames and directory moves (3c130bc)
  • refactor(main): extract init_scene and load_bump_maps helpers (51fd5d7)
  • refactor(input): move input_*.c from src/window/ to src/input/ (28baf68)
  • refactor(render): move render_loop.c and render_flags_set.c to src/render/ (d31fb10)
  • refactor(metrics): move metrics_*.c from src/render/ to src/metrics/ (4f7265a)
  • chore(build): update Makefile for renamed and removed files (af73afc)
  • refactor(window): rename window_* to input_*/render_loop and fix debounce (641edc5)
  • refactor(error): add error_print_ctx and consolidate error helpers (7fe78b3)
  • refactor(hud): extract hud_print_line and rename copy_str_to_buf (888f3a1)
  • refactor: remove dead code, unused params, magic numbers (94273ff)
  • refactor(camera): Euler angle pitch/yaw for smooth 360° rotation (5844818)
  • refactor(texture): extract shared get_tangent() to texture_utils.c (71a423b)
  • refactor(dead-code): remove unused functions, types, and declarations (0867a49)
  • chore(build): add bonus rule and new sources, update HUD for cone/multi-light (e7741cc)
  • refactor(infra): clean up BVH total_nodes and split lighting utilities (bb9b842)

Installation

Download the appropriate binary for your platform:

  • Linux: miniRT-linux-x86_64
  • macOS: miniRT-macos-arm64

Make it executable: chmod +x miniRT-*

Run with a scene file: ./miniRT-* scenes/test_scene.rt

v2.3.0

11 Feb 06:36

Choose a tag to compare

What's Changed

Changes since v2.2.0:

Features

  • feat(hud): optimize input handling, debounce FSM, and keymap (739d801)

Bug Fixes

  • fix(ci): redirect clone_wiki log output to stderr (44dc0fe)

Documentation

  • docs: update README and Wiki for v2.3.0 keymap and debounce changes (fa0135d)
  • docs(spec): add 033-hud-input-optimization specification (781a79a)
  • Merge pull request #7 from gdtknight/docs/readme-wiki-overhaul (8a31e5a)
  • docs: overhaul README.md and replace Wiki with code-focused documentation (c8d3553)

Other Changes

Installation

Download the appropriate binary for your platform:

  • Linux: miniRT-linux-x86_64
  • macOS: miniRT-macos-arm64

Make it executable: chmod +x miniRT-*

Run with a scene file: ./miniRT-* scenes/test_scene.rt

v2.2.0

10 Feb 09:45

Choose a tag to compare

What's Changed

Changes since v2.1.0:

Features

  • feat(render): enable metrics print on startup (52d3eb0)
  • feat(shadow): add separate plane shadow test after BVH (f69fc4e)
  • feat(render): add separate plane intersection for primary rays (97e1f63)
  • feat(bvh): init and free plane_refs in BVH lifecycle (bdaab30)
  • feat(bvh): separate planes from BVH tree construction (52847b5)
  • feat(bvh): add t_plane_refs struct for plane BVH separation (12f5890)
  • feat(bvh): add split_axis tracking for child ordering support (0c10a17)
  • feat(render): add runtime flags for measurement overhead control (4bfae8a)
  • feat(shadow): add shadow offset LUT for soft shadow optimization (P4) (e124e6f)
  • feat(trace): remove BVH miss fallback in trace_ray (P0) (f79a5eb)
  • feat(metrics): add metrics_print_summary for baseline benchmarking (137d9a2)
  • feat(metrics): connect unused counters to hot paths (9fddf6f)
  • feat(parser): add parser utilities (b94b998)
  • feat(parser): add element dispatching (80dfbd6)
  • feat(parser): add strict vector and color validation (5a8f033)
  • feat(parser): add strict number parsing (c75fa2d)
  • feat(parser): add token utilities (4389bb8)
  • feat(parser): add buffered line reader (db9baa1)
  • feat(parser): add error context handling (497af65)
  • feat(parser): add parse result enum and data structures (fb0aaef)
  • feat(keyguide): add Resize and Rotation key sections to key guide (73e741b)
  • feat(window): add key dispatch, BVH lazy rebuild, and expose handler (62f79f2)
  • feat(window): add object rotation via U/O/Y/P/LEFT/RIGHT keys (a1f24b7)
  • feat(window): add object resize via J/K/N/M keys (bcfbe52)
  • feat(parser): add .rt file extension validation (9116041)
  • Merge branch '019-wiki-update': Update GitHub Wiki with v2.1.0 features (5bfdfd0)

Bug Fixes

  • fix(parser): free unprocessed line on parse failure in process_lines (c53ad55)
  • fix(parser): null-terminate line buffer before strlcpy in finalize_line (fc6b699)
  • fix(shadow): regenerate offset LUT on sample count change (9a00a68)
  • fix(parser): restrict FOV range to exclusive (0,180) (6b2482a)
  • fix(bvh): add malloc guard and fix plane_refs leak in scene_build_bvh (7900955)
  • fix(parser): Add vector range validation (Subject compliance) (670c0d3)
  • fix(parser): initialize camera cache on scene load (74fff8e)
  • perf(bvh): restore BVH pruning with t_max update (P0) (b4459ff)
  • fix(bvh): restore null guard in bvh_node_intersect (609f4e6)
  • fix(metrics): remove dead box_tests field and redundant output line (2b11178)
  • fix(metrics): reset pixel timing at each frame start (991be27)
  • fix(metrics): restore BVH skip counter and replace efficiency metric (2c5960e)
  • fix(metrics): separate shadow intersect counter from primary (c4520df)
  • fix(hud,window): remove stale declaration and redundant cleanup call (6dfb7c3)
  • fix(window): release MLX resources on context init failure (53d851f)
  • fix(bvh): initialize child hit distances before recursive traverse (166a9eb)
  • fix(pixel): unify mlx/hud pixel byte handling across bpp and endian (226a5da)
  • fix(window): release MLX resources on UI initialization failure (edcf6ad)
  • fix(window): add pixel coordinate bounds checking to MLX image access (8979a29)
  • fix(scene): guard object_list_grow against capacity overflow (3f6e010)
  • fix(parser): detect integer overflow in parse_int_digits (828c961)
  • fix(parser): distinguish read() I/O errors from EOF in line reader (df19f01)
  • fix(lighting): use actual surface normal for shadow bias calculation (fb8233c)
  • fix(render): use actual window size for progressive tile calculation (6b88c84)
  • fix(render): prevent gimbal lock when camera faces vertical axis (4f65ddd)
  • fix(spatial): prevent division by zero in AABB slab test (627d85e)
  • fix(spatial): initialize temp_hit.distance in BVH leaf traversal (f580759)
  • fix(render): add missing stdlib.h include (b3b56d9)
  • fix(norm): split functions to comply with 42 Norm (9c33b6e)
  • fix(norm): add u_ prefix to union type in objects.h (d7a705c)
  • fix(norm): remove trailing empty line in render_flags_set.c (b352021)
  • fix(window): restore HUD and keyguide overlay on expose event (f7b0175)

Documentation

  • docs(spec): add 032-fix-review-issues design artifacts (93a031d)
  • docs(spec): add Round 2 spec documents (e18fd76)
  • docs(perf): add Round 4 benchmark results and analysis (ba3a569)
  • docs(review): add code review and cleanup reports (4065878)
  • docs(parser): add vector range validation documentation (9345672)
  • docs(metrics): add optimization metrics and research reports (005ae4c)
  • docs(perf): add performance optimization reports (0191f4b)
  • docs(shadow): add shadow BVH optimization documentation (e9aab72)
  • docs: update optimization-plan.md with implementation notes (24bd64d)
  • docs: mark all P4 tasks complete in tasks.md (119d365)
  • docs: mark all Phase A tasks complete in tasks.md (813b0cb)
  • docs: mark all P0 tasks complete in tasks.md (6ef5357)
  • docs(optimization-plan): fix review findings (8ec6570)
  • docs: add unified optimization plan integrating all findings (d754778)
  • docs: templatize benchmark-baseline with A/B comparison structure (af06a2c)
  • docs: add baseline benchmark report with measurement data (7088eb1)
  • docs(specs): add 025-dead-code-removal specification and planning artifacts (12d8b53)
  • docs(specs): add 024-code-hardening specification and task artifacts (e019462)
  • docs(spec): add parsing robustness tasks and checklists (e361794)
  • docs(spec): add parsing robustness implementation plan (791597e)
  • docs(spec): add parsing robustness feature specification (32b5728)
  • docs: add detailed doxygen comments (93c9574)
  • docs(codex): add speckit prompt templates (b58f7be)
  • docs(cursor): add speckit command definitions (b524ec3)
  • docs: add project markdown references (e7e46d0)
  • docs(claude): add local claude commands and settings (f1710a5)
  • docs(checklist): add spec quality and readiness checklist (a6d8f3d)
  • docs(quickstart): add step-by-step implementation and verification guide (fbe99f0)
  • docs(tasks): enumerate phased tasks for libft integration and replacements (0d8bb03)
  • docs(research): record libft availability and replacement decisions (c92d4c3)
  • docs(data-model): map forbidden functions to libft replacements and helper APIs (6382083)
  • docs(plan): outline implementation phases and integration steps for libft (eb4119c)
  • docs(spec): define requirements, scenarios, and success criteria for forbidden function replacement (a646157)
  • docs(spec): add 021-fix-hud-keys-expose specification and design artifacts (7cc07a5)
  • docs(spec): add 020-eval-compliance specification and design artifacts (2c75763)
  • docs: move documentation files to docs/ directory (87d6601)
  • docs(spec): Add complete specification documents for 019-wiki-update (2cff315)
  • docs(wiki): Update wiki to v2.1.0 with BVH, debouncing, preview mode (fbc4235)
  • docs: add CHANGELOG.md for v2.1.0 release (31df207)

Other Changes

  • chore: update CLAUDE.md and add struct-map documentation (cd4f8c4)
  • refactor(hud,keyguide): remove unused background image buffers (ca1331e)
  • refactor(window,utils): replace cleanup_all wrapper with direct calls (cf2a5ec)
  • refactor(parser): migrate in_range, remove legacy parser and print_error (f58581d)
  • refactor(headers): remove dead declarations and legacy typedefs (9bebcfd)
  • refactor(spatial,utils): remove dead utility files (e5792a1)
  • refactor(render): remove orphaned render_state module (4d4005e)
  • refactor(window): remove duplicate cleanup calls in close_window (8d6d54c)
  • refactor(parser,render,spatial,lighting): move local prototypes to headers (b5910ca)
  • refactor(scenes): reorganize fixtures and standardize naming (c6a0429)
  • refactor(parser): update element parsers for parse result (6055379)
  • chore(submodule): add minilibx linux and macos (c08dd37)
  • chore(gitignore): ignore local codex sensitive files (9d261f6)
  • refactor(error): replace strlen/snprintf with libft functions (777ae4d)
  • refactor(bvh_vis): replace forbidden functions with libft (499f13d)
  • refactor(hud): reimplement format helpers using libft (04bb8c9)
  • refactor(window): replace memset with ft_bzero in mlx_context (2c1dd59)
  • refactor(scene): replace libc memory functions with libft (567ef02)
  • refactor(parser): replace snprintf with format_id for object IDs (fd6ee10)
  • refactor(utils): remove duplicate functions and add format helpers (3cf2e0d)
  • refactor(utils): move error messages array to function-local static (c542e9e)
  • refactor(ray): move intersect_cylinder_new prototype to ray.h (c315909)
  • refactor(spatial): fix Norm compliance in bounds.c (53f34cf)
  • refactor(render): fix Norm compliance in metrics files (5eefeef)
  • refactor(render): split debounce_update into helper functions for Norm compliance (dcc269f)
  • refactor(hud): remove background blending and add dirty render on toggle (0c724c7)
  • refactor: update HUD, parser, and lighting for unified object API (10268df)
  • refactor: consolidate render state flags and simplify selection (fcf05d6)
  • refactor: restructure scene lifecycle and extract MLX context (8133530)
  • refactor: unify object representation with t_object struct and union (b0991e5)

Installation

Download the appropriate binary for your platform:

  • Linux: miniRT-linux-x86_64
  • macOS: miniRT-macos-arm64

Make it executable: chmod +x miniRT-*

Run with a scene file: ./miniRT-* scenes/test_scene.rt