Daniel Karnofel

Hi, welcome to my personal project repository! 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 full-featured, general purpose 2D rendering engine built from scratch with Javascript and WebGL2. Includes a full UI with customizable canvas attributes, 3 primitive object types with dynamic transformation, scale, and rotation, as well as 3 pre-built test scenes. The scene graph is visualized by a node list in the UI and includes insertion, deletion, visibility, and z-index modification. Dynamic selection-by-click is supported, with node and canvas property modification implemented via HTML inputs. Two pre-loaded textures are included that can be dynamically applied to any node, as well as support for fill color, border color, stroke width, and opacity.

Code Demo

Solar System Simulation

  • JavaScript
  • WebGL

A solar system simulation built from scratch with Javascript and WebGL. Includes a full 3D scene-graph system, custom shaders for Phong/Gouraud/flat shading, skyboxes, flow mapping, and more. Also includes a procedurally generated asteroid belt, orbit trails, and the option to simulate movement of the solar system around the galactic center. This project was created as part of the Computer Graphics course at CSUMB and includes sections of code provided by the instructor.

Code Demo

Software Raytracer

  • JavaScript

A software-based raytracer built from scratch with JavaScript. Supports multiple geometric primitives and includes Phong shading, shadows, reflections, and anti-aliasing. This project was created as part of the Computer Graphics course at CSUMB and includes sections of code provided by the instructor.

Code Demo

Image Processing Library

  • C++

A software based image processing library. Supports import and export of images in PNG, JPG, or BMP format. Includes a wide variety of basic per-pixel color and tone operations, geometric operations like cropping and resizing, and image composition operations like blending, multiplying, alpha-masking, and more. Also supports application of predefined or custom convolution kernels.

Code

File Compression Tool

  • C++

A file compression command line tool that uses LZ77 frequency analysis and Huffman coding to provide lossless data compression. Includes convenient output statistics and a custom binary compression format. Supports both compression and decompression via either LZ77 or Huffman methods, as well as a combination of the two for DEFLATE style compression.

Code

MovieMatch

  • JavaScript
  • Node
  • MySQL
  • Express

A full stack web application for searching and discovering movies. Uses the TMDB API for search and dynamic recommendations. Uses a MySQL database to store user accounts and information. Users can create custom lists, post ratings and reviews, and get personalized recommendations. Guest users can view popular and trending movies, see search results, reviews, and ratings, and discover genre based recommendations. This project was created as part of my Internet Programming course at CSUMB and includes sections of code provided by the instructor.

Code

PlantTracker

  • Java
  • Android

An Android application for tracking, organizing, and managing houseplants, built using the Room persistence library. Users can add plants with attributes like name, type, light level, and watering frequency, and organize them into customizable areas for easy management.

Code