Skip to content
View Samukashvili's full-sized avatar
💭
🤫
💭
🤫

Highlights

  • Pro

Block or report Samukashvili

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
Samukashvili/README.md
Giorgi Samukashvili, software developer in Tbilisi, Georgia. Animated: a kiwi leaf is scanned and recovered, SceneBuilder syncs editor and browser, Collection Zones sorts an object by position.

I'm Giorgi Samukashvili, a software developer in Tbilisi, Georgia. I build computer vision, real-time graphics, procedural systems, and developer tools, and I'm best known for LUMEN-PS, which turns a flatbed scanner into a photometric-stereo material scanner.

Portfolio  ·  Tools & projects  ·  Open source  ·  Get in touch ↗

I'm also a computer science student. My work spans computer vision, real-time graphics, procedural systems, and automation, from reconstructing materials with a flatbed scanner to streaming terrain on the GPU.

My technical-art background shapes the tools I make: practical workflows, interactive feedback, and performance that holds up on real devices.


Four scans. A relightable material. LUMEN-PS

LUMEN-PS turns an ordinary flatbed scanner into a photometric-stereo material scanner. Rotate the subject between four captures, then recover normal, albedo, roughness, height, and alpha maps from the differences in lighting.

Animated LUMEN-PS walkthrough: rotate the subject through four scans, align the views, solve photometric stereo, export albedo, normal, roughness, height and alpha maps. A real kiwi leaf reconstructed by LUMEN-PS: a 360-degree relighting animation beside the recovered albedo, normal, and height maps.

A real 1200 dpi kiwi leaf. The first panel is relit using only the recovered normal map.

Built with Python and CUDA: a Windows app and CLI, rigid and non-rigid registration, robust reconstruction, matched material atlases, and re-rendered quality checks.

Explore the repository ↗  ·  Walkthrough  ·  Documentation


Systems and developer tools

WebGL SceneBuilder, TypeScript and WebGL, in development. Animated: a scene edited in the editor mirrors live in the exported browser bundle.

A desktop editor for assembling, lighting, and optimizing 3D scenes, then exporting self-contained WebGL bundles ready to embed in websites.

MarchingWorld, Unity, C# and HLSL, in development. Animated: terrain chunks near the moving viewer switch level of detail, with Surface Nets building one vertex per cell.

GPU-first Surface Nets terrain: deterministic hills and caves, seamless octree LOD transitions, and asynchronously baked physics. Transition topology is prepared during generation, so LOD changes can reuse retained meshes.

Live Stereo Depth, Android and OpenGL ES 3.1, research prototype. Animated: wide and ultrawide views triangulate a subject into a metric depth map.

Live metric depth from concurrent wide and ultrawide camera streams. Compute shaders handle rectification, census matching, four-path SGM, and filtering, while buffered readback overlaps GPU work with camera capture.

Collection Zones, Blender and Python. Animated: an object moves between zones and its collection membership updates.

A spatial organization add-on that assigns objects to collections by position, with manual zones, world grids, exclusions, fallback collections, and movement tracking.


More open-source experiments

  • LaunchPoint · Python
    Monte Carlo viewshed intersection on real terrain, estimating a drone operator's location from sightings.
  • RC-N1 Controller Bridge · Python
    Turns a DJI RC-N1 remote into a low-latency virtual Xbox 360 controller for simulators and games.
  • VoiceReady · C#
    A voice-command assistant for Ready or Not, combining read-only game-state detection with input emulation. Currently broken: a recent game update invalidated its pointer addresses, which need to be relocated before it works again.

Toolkit

Languages Python · TypeScript · C# · Java · HLSL
Platforms CUDA · WebGL · OpenGL ES · Unity · Android · Blender
Focus Computer vision · GPU programming · Procedural systems · Developer tools · Automation

Interested in computer vision, real-time systems, or creative software? Get in touch: gsamukashvili0@gmail.com

I'm Giorgi Samukashvili, a software developer and computer science student in Tbilisi, Georgia, working on computer vision, GPU programming, and real-time graphics. You can find my portfolio, demos, and free texture utilities at samukashvili.ge.

Pinned Loading

  1. LUMEN-PS LUMEN-PS Public

    Flatbed-scanner photometric stereo for generating normal, albedo, height, and alpha texture maps.

    Python 125 9

  2. LaunchPoint LaunchPoint Public

    Estimate a drone operator's location from ground-position sightings via Monte-Carlo viewshed intersection on real terrain.

    Python 5 1

  3. VoiceReady VoiceReady Public

    External voice command assistant for Ready or Not. Speak officer orders aloud and have them executed in-game via read-only memory state detection and keyboard/mouse input emulation.

    C# 1

  4. RC-N1_ControllerBridge RC-N1_ControllerBridge Public

    RC N1 Bridge turns a DJI RC-N1 remote into a low-latency virtual Xbox 360 controller for Windows drone simulators and other games.

    Python 2