Maintained Projects
-
Unity CT Visualizer - High performance, out-of-core CT/MRI volume visualizer for very large datasets using the Unity game engine
-
Neovim Unity - Ready-to-use, pre-configured Neovim for game development using the Unity game engine
Used technologies: Lua, NeoVim, LSP, DAP
Since the official Unity VSCode extension for C# Unity development is dependent on non-permissive Microsoft licenses that dissallow its usage with any other non-Microsoft products, I decided to build an IDE-like experience for Unity development on NeoVim. The project is quite big and involves a set of other projects (DAP, Unity C# NeoVim plugin, LSP adjustments, etc).
-
CVDS Converter - Chunked Volumetric DataSet (CVDS) converter for out-of-core visualization of very large volumetric datasets
Used technologies: Python, OpenCV
Convert input volumetric data in the form of images sequence (JPEG, PNG, TIFF, etc.) and DICOM data into a chunked (i.e., subdivided into subregions), LZ4-compressed custom format. Volume rendering applications are expected to consume these converted chunks in real-time usually using a visualization-driven technique (i.e., GPU decides which chunks are needed for the current view parameters).
-
Unity TextureSubPlugin - Unity low-level native plugin for uploading data to chunks of a 2D/3D Texture on the GPU and circumventing Unity's 2D/3D Texture 2GBs limitation on certain platforms.
Used technologies: C++, Vulkan, OpenGL, CMake
If you want to upload a subregion to a 2D/3D Texture on Unity then you have to upload the whole texture (i.e., upload the whole pixel array to the GPU). This is especially inefficient for GPU-driven applications (that is where the GPU determines which data it needs for rendering). This plugin solves this issue by exposing the underlying graphics API functions for uploading a subregion to a 2D/3D Texture. Developing this plugin caused me a significant amount of headache especially since low-level Unity C++ side documentation is very poor.
-
Unity Neovim IDE - Neovim integration with the Unity game engine. Inspired from similar package for VSCode
Used technologies: C#, Unity3D, IP Sockets, Unity3D Editor
Plugin used to generate .csproj and .sln files for LSP purposes, dispatch a NeoVim server instance and bring it to focus, and sync project files when the NeoVim server changes/creates some files.
-
Unity DAP - Unity Debug Adapter Implementation for the Mono Runtime
Used technologies: C#, DAP
Hopefully when Unity finally moves to .NET Core, the need for this repository will cease to exist. In the meantime, if you are doing Unity development on a text-editor/IDE other than VSCode, Ryder, or Visual Studio, and you want debugging functionalities with a clear license (MIT) then this project is for you.
No-Longer Maintained Projects
-
3D Punching Bag Game - A 3D punching bag, reaction-based and small game created in three.js
Used technologies: TypeScript, Three.js, 3D Modeling, Chart.js
A reaction-speed-based, web-based punching bag game where the faster you hit the highlighted regions the higher the score you get. At the end of each run, you will get a chart showcasing your hit speed (i.e., reaction time). In the startup menu, you can change the difficulty setting.
-
UnityD3 - A Unity plugin for authoring visualizations in d3.js-like style in the Unity game engine
Used technologies: C#, Unity3D, D3.js
Author 2D and 3D visualization using a similar workflow style to that of D3.js
-
UK Car Accidents Dashboard - Visualization dashboard of a UK traffic accidents dataset using d3.js
Used technologies: TypeScript, D3.js, SVG
A set of visualization components are implemented from scratch using D3.js including an interactive map of the UK on top of which a layer of hexagons is rendered to display car accidents data. A player is included for animation replay using timestamps. On the right, a calendar visualization is used to showcase the temporal distribution of the accidents.