Nikos Papadopoulos
project image

XTracer

Personal Project

external link media

An experimental offline renderer based on path tracing.

project image

CSR2

Natural Motion

external link trailer

Setting a new standard in visuals, CSR 2 delivers hyper-real drag racing to the palms of your hands. Compete against live players across the world with your custom built supercars including LaFerrari, McLaren P1™, Koenigsegg One:1 and many more.

project image

Samsung S10 AR Emoji

Samsung Electronics

external link

The new version of the AR Emoji is released with the Samsung Galaxy S10 range of devices. Samsung's avatars are integrated in the camera app and allow the user to create a virtual presence character that is adopted to their own characteristics.

project image

Pokémon Art Academy

Kuju / Headstrong Games

external link trailer

Pokémon Art Academy is an educational drawing video game developed by Headstrong Games and published by Nintendo for the Nintendo 3DS. It is a spin-off of the Art Academy series featuring characters from the Pokémon media franchise.

project image

VBS Tactics

Bohemia Interactive Simulations

external link trailer document

VBS Tactics allows users to conduct real-time tactical exercises up to the company level. Its intuitive interface can be used to configure doctrine-based orders of battle, plan a mission, execute it in real time, and review the results in after-action review.

project image

GoveeWatch

Personal Project

external link

A curses application that picks up bluetooth broadcasts from Govee thermometer / hydrometer devices and displays readings at real-time.

project image

Euclid

Personal Project

external link

A command line frontend for chat GPT. It implements two modes. One for one-off queries, and one for persistent conversations.

project image

Asciimg

Personal Project

external link

Asciimg is a small utility that allows displaying images in a command line terminal.

Blog

0x038
Implementing a todo app, Part 1: The Backend
Part 1 of a blog post series on full stack development, where I walk through the process of building a simple task management app. This chapter focuses on implementation of the backend services.
0x037
Speech synthesis for web applications
I've introduced a feature that lets you listen to my blog's content being read aloud. This post explains how I implemented it using the Speech Synthesis Web API, which requires minimal code and works on most modern browsers.
0x036
Gameboy Development, Part 1: Hello World!
A step-by-step guide for creating a 'hello world' ROM for the Nintendo Gameboy in assembly
0x035
Working with encrypted file archives
A brief guide on encrypting and decrypting tar archives with gpg
0x034
ZEXMTE BT-506 in Debian
A guide on how to make the ZEXMTE BT-506 dongle work in Debian
0x033
Notifications Using Telegram
A tutorial on using telegram to generate notifications
0x032
Docker in Debian
Notes on using Docker in Debian
0x031
Getting creative with asciimg
A fun experiment in using text to render animated images in a terminal
0x030
Lossy Compression of Unsigned Float Numbers
Notes on a lossy unsigned float number compression technique
0x02f
Shadow Mapping
A short introduction of shadow mapping and how to implement it
0x02e
Peripage bluetooth printing via the terminal
A tutorial on interfacing a peripage printer via the command line
0x02d
Using Yubikey FIDO2 to login in Debian/GDM
A brief guide on using Yubikey as an authentication method with GDM
0x02c
Intel's Panel Self Refresh (PSR) Feature
Ai brief guide on resolving Intel's PSR issues
0x02b
Midjourney
A brief post on generating images with Midjourney
0x02a
Brachiograph plotter
Brief notes on building a brachiograph plotter
0x029
Normal Map Blending
A brief survey of normal blending techniques
0x028
Notes on Unreal Engine 5, Nanite
A collection of notes on Nanite gather from resources online
0x027
Reviving old software to run on a modern machine
A short case study on how to bring old software back to life
0x026
Creating floppy disk images in Linux
A short guide on creating floppy disk images in Linux
0x025
The De Moivre theorem
Theory and implementation of the De Moivre theorem
0x024
Macro-Photography with a Mobile Phone (Part 2)
Another way to turn your mobile phone into a macro camera
0x023
Macro-Photography using a Mobile Phone
A simple way to turn your mobile phone into a macro camera
0x022
Classic Demo Effects, Twister
The classic demoscene effect explained and implemented in GLSL
0x021
Irradiance Encoding, Spherical Harmonics
Spherical Harmonics are a type of Spherical Radial Basis Function that can be used to encode signals defined on a sphere in a compact way. This makes them an excellent fit for encoding a variety of datasets commonly used in real time graphics.
0x020
Irradiance Encoding, Ambient Cube
In Half-Life 2, a directional ambient term is precomputed across the environments and stored in the ambient cube lighting encoding. This post goes over the theory behind the ambient cubes technique and presents an implementation in GLSL.
0x01f
Generative art
Generative art is an algorithmic approach to creating unique and dynamic works of art. As technology progresses, it continues to evolve, allowing artists to explore new forms and patterns beyond traditional methods.
0x01e
Full Screen Pass Without Explicit Geometry
A brief explanation on how to render a full screen pass efficiently in OpenGL and DirectX
0x01d
Elementary Cellular Automaton, Rule 126
Wolfram's infamous rule 126 explained in plain terms
0x01c
Classic Demo Effects, Fire
The classic demoscene effect explained and implemented in GLSL
0x01b
OpenGL Geometry
A brief survey of various ways OpenGL can draw geometry
0x01a
Half-Space Test
An explanation of the math behind half-space testing
0x019
Distributed Ray-Tracing
A short description of distributed ray-tracing
0x018
Historical Computer Gemerated Animations
A listing of CGI films, that played a pivotal role in the history of computer graphics
0x017
Lindenmayer Systems
L-Systems are a mathematical framework for modeling organic structures and fractals. They generate complex patterns and are used in graphics, biology, and procedural generation. In this blog post I share some examples and how to implement them.
0x016
Interpolation Methods
A collection of useful interpolation methods, theory and implementation
0x015
Optical Illusions, Lightness Constancy
The optical illusion of lightness constancy explained and implemented in GLSL
0x014
BTRFS, Quick Start
A brief guide on using BTRFS
0x013
Useful Functions for Graphics
A listing of useful math formulas and their plots
0x012
Generating Stereo Anaglyphs with ImageMagick
How to generate stereo anaglyphs with ImageMagick
0x011
Raytracing, Ray-Plane Testing
Ray to Plane intersection testing, theory and implementation
0x010
Sampling a Disk, Vogel's Distribution Method
There are many ways to spread points across the surface of a disk but doing so in an even distribution can be challenging. Vogel’s method solves that problem elegantly. In this blog post, I explore the underlying math and show how to implement it.
0x00f
Visibility Culling
A listing of visibility culling techniques
0x00e
Sprite Encoding / Decoding Using Literals
A simple approach for sprite texture encoding
0x00d
Edge Detection Using the Sobel Operator
The Sobel operator explained and implemented in GLSL
0x00c
Math Operations using Matrices
A listing of mathematical matrices commonly used in Graphics
0x00b
Color Grading, An Artist Driven Approach
A simple method of implementing color grading
0x00a
Law of Reflection
The physics law of reflection, theory and implementation
0x009
PostFX, Pixelize
Implementation of pixelization effects in GLSL
0x008
Anti-Aliasing, FXAA
A high level explanation of FXAA and how to implement it in GLSL
0x007
NCF, A Minimalistic Meta-Language
A short guide on NCF specification and how to use it in your own projects
0x006
Metaballs
Metaballs, what are they and how to make them
0x005
Pseudo 3D Tunnel Effect
The classic demoscene effect explained and implemented in GLSL
0x004
Conway's Game of Life
A GPU implementation of Conway's game of life
0x003
Fractals, Mandelbrot & Julia Sets
Theory and GPU implementation of the Mandelbrot and Julia fractal sets
0x002
C/C++ Embedded Files
A summary of different approaches for embedding files within c / c++ code
0x001
Primus Under Debian/Sid
A short guide on enabling and using Primus under Debian Sid
00000
GNU Make, Parallel Processing
Parallel processing with GNU Make