- Created a minimal C++ application that writes
renders/first_image.ppm. - Added a lightweight
Makefilefor local builds. - Initialized the project structure and
.gitignore.
- Used a Makefile instead of CMake for the initial setup.
- Kept the renderer dependency-free by writing directly to the PPM format.
- Implement camera rays and render the first sphere.
- Implemented
vec3,ray, camera, and sphere intersection. - Added normal-based shading.
- Generated
first_sphere.ppmand PNG export. - Updated the build scripts and README.
- Add anti-aliasing.
- Added configurable multi-sample anti-aliasing.
- Implemented jittered ray sampling with a fixed random seed.
- Generated anti-aliased PPM and PNG outputs.
- Used deterministic sampling to keep render outputs reproducible.
- Add materials and recursive ray tracing.
- Added Lambertian and metal materials.
- Implemented recursive ray scattering.
- Added a ground sphere and multiple scene objects.
- Created
minimal_raytracerrender output.
- Limited recursion depth to keep rendering stable.
- Build reusable scene presets.
- Added three predefined scenes:
glass_orbsxr_lens_demowarm_studio_spheres
- Added PNG exports and JSON metadata.
- Recorded render settings and timing information.
- Implement simulated foveated rendering.
- Added Full Quality, Low Quality, and Gaze-Aware rendering modes.
- Implemented sample allocation based on a simulated gaze position.
- Added overlay visualization and render metadata.
- Generated comparison images for all render modes.
- Balanced image quality while keeping the sampling logic simple.
- Visualize the renderer inside Unity.
- Created a Unity project for viewing renderer outputs.
- Displayed rendered images alongside render metadata.
- Added controls for switching between rendering modes.
- Implemented gaze overlay visualization.
- Organized Unity assets while excluding generated project files.
- Replace the static viewer with an interactive simulator.
- Replaced the image viewer with an interactive Unity scene.
- Added a movable gaze target controlled by keyboard or mouse.
- Implemented live foveation visualization.
- Added four visualization modes:
- Full Quality
- Low Quality
- Gaze-Aware
- Overlay
- Added a runtime statistics panel.
The Unity project evolved from a static viewer into an interactive simulator while keeping the C++ renderer as the offline reference implementation.
- Package the simulator for reuse.
- Converted the simulator into an embedded Unity package.
- Split runtime and editor assemblies.
- Added an importable sample scene.
- Documented installation and package usage.
- Preserved Unity GUIDs while reorganizing package assets.
- Improve component configurability.
- Added Inspector-friendly configuration for all runtime components.
- Exposed gaze radius, sample counts, overlay settings, and movement controls.
- Added runtime validation and improved API documentation.
- Verify installation in a clean Unity project.
- Tested package installation in a clean Unity project.
- Verified sample import through the Unity Package Manager.
- Confirmed runtime components, scene loading, and package dependencies.
- Improve native build portability.
- Added a root
CMakeLists.txt. - Added Makefile helpers for configure, build, and run.
- Updated ignore rules and documentation.
- Prepare the first public release.
- Reorganized the README.
- Added
CHANGELOG.md. - Added architecture documentation.
- Completed Unity package metadata.
- Capture release media.
- Added automated Unity capture tooling.
- Generated release screenshots.
- Created an animated simulator GIF.
- Generated a labeled comparison image from renderer outputs.
- Documented the media generation workflow.
- Built the media pipeline using native macOS tools without external image-processing dependencies.
- Finalize the v0.1.0 release.
- Added
make pngandmake exportcommands. - Automated PPM to PNG conversion for renderer outputs.
- Continue improving renderer features while keeping export workflows lightweight.