Daniel Karnofel

Hi, welcome to my project repository! This page includes work from some of my recent courses as well as personal projects. You can view the public source code and full documentation for all of my projects by visiting my GitHub.

3D Rendering Engine

  • C++
  • OpenGL

This is an in-progress project that I am actively developing. Check back soon for more updates!

2D Rendering Engine

  • JavaScript
  • WebGL

A general-purpose 2D rendering engine built with JavaScript and WebGL2, featuring a custom rendering pipeline and hierarchical scene graph. Supports multiple geometric primitives, texture mapping, dynamic transformations, and z-ordering. Developed an interactive UI for inspecting and modifying scene state, enabling real-time manipulation of canvas and node properties. Includes pre-loaded textures, test scenes, and support for exporting canvas images.

Code Demo

Solar System Simulation

  • JavaScript
  • WebGL

A real-time 3D solar system simulation built with JavaScript and WebGL, featuring a hierarchical scene graph to model planetary and orbital relationships. Developed custom GLSL shaders for skyboxes, atmospheric effects, and flow mapping. Includes a procedurally generated asteroid belt and dynamic orbit trails that visualize simulated movement of the solar system around the galactic center.

Code Demo

Software Raytracer

  • JavaScript

A software-based Cornell Box ray tracer built with JavaScript. Supports ray intersections for spheres, planes, disks, and oriented boxes, as well as reusable materials, recursive reflections, shadows, and supersampling anti-aliasing. Includes custom vector and matrix math utility classes that support dynamic geometric transformations and shading computations.

Code Demo

Image Processing Library

  • C++

A software-based image processing library built with C++, supporting import and export of PNG, JPG, and BMP image formats. Implemented a range of per-pixel color and tone operations, including brightness and color adjustments, as well as geometric operations such as cropping and resizing. Developed image composition functionality, including blending, multiplication, and alpha masking. Also includes support for application and combination of predefined and custom convolution kernels.

Code

File Compression Tool

  • C++

A command-line file compression tool built with C++, supporting lossless compression and decompression using LZ77 and Huffman coding. Implemented frequency analysis, symbol encoding, and bit-level data packing to generate a custom binary compression format. Supports multiple compression modes, including standalone LZ77 or Huffman encoding as well as a combined DEFLATE-style pipeline. Includes convenient command-line arguments for input, output, compression, and decompression, as well as output statistics for evaluating compression performance.

Code

MovieMatch

  • JavaScript
  • Node
  • MySQL
  • Express

A full-stack web application for discovering and organizing movies built with HTML, CSS, JavaScript, Node, Express, and MySQL. Integrates the TMDB API for search, metadata retrieval, and dynamic recommendations. Supports user accounts and authentication with persistent lists, ratings, and reviews. Developed both authenticated and guest user flows, enabling browsing of popular and trending content as well as search and review viewing without login. Includes a custom CSS styling system that ensures modularity and consistency across multiple views.

Code

PlantTracker

  • Java
  • Android

An Android application for tracking and managing houseplants, supporting user profiles, plant metadata, and area-based organization. Implemented local data persistence using the Room persistence library (SQLite), defining database schemas, data access objects, and queries for structured storage and retrieval. Developed watering schedule tracking logic to identify and highlight overdue plants based on stored timestamps and user-defined frequencies.

Code