Robert Cupisz

portfolio

software projects

Master Thesis

Real-Time Rendering and Interactive Configuration of Apartments
Master Thesis Video

My master thesis on Real-Time Rendering and Interactive Configuration of Apartments, on which I worked together with Kuba. In short: real-time global illumination via instant radiosity and deferred lighting.

From the Abstract:

We present a method for high quality, real-time rendering of apartment interiors, illuminated with dynamic light and under the conditions of changing geometry. The complete lighting solution is composed of a number of techniques (area lights, indirect illumination, direct highlight) working in conjunction with a global illumination algorithm based on virtual point lights. Rendering of hundreds of lights at real-time frame rates is enabled by a deferred lighting pipeline, decoupling scene and lighting complexity.

We demonstrate, that the described solution allows the user to interactively modify geometry (customisation of the apartment's layout) and lights (e.g. time of day modification). We also suggest an acceptable degradation method enabling the same lighting quality on slower machines.

The prototype has been developed in the Unity engine and you're welcome to try it out (it has quite high hardware requirements, though).

The thesis itself has been written in a form of a short article – a recommended read if you're interested how the technique works.

(Note: the prototype has been developed in an yet unreleased Unity version 2.6. This is why we're not posting the project files yet, nor the web player build, which is actually our target platform.)

Screenshots:
Our geometry-aware, kernel size preserving filter.
Our 3-tap PCF shadow mapping with spatially varying offsets (and filtering, which was already part of our pipeline).
Downloads:
Credits:

Robert Cupisz, Jakub Cupisz

PuzzleBloom shaders

Fertile ground effect and improved edge detection
PuzzleBloom - game screenshot

Demo Unity project and source code for some of the shaders used in the PuzzleBloom game.

I'm explaining the transition (fertile ground) shader, how it is able to consistently affect many objects in the scene, how I grow the grass to make it form nice patches and how the particle ring works.

There's also an improved version of the edge detection filter and a description what was wrong with it in the first place.

Screenshots:
Fertile ground effect in the game.
Fertile ground effect - texture transition, grass and particles.
Top - original version of the edge detection filter, note where the outline is missing. Bottom - improved version; added possibility to switch off outline for any object.
Downloads:
Credits:

Robert Cupisz

PuzzleBloom

DADIU graduation game, March 2009 production
PuzzleBloom - game screenshot

Puzzle Bloom is an innovative action-puzzle game where you control the tree spirit Canotila in her quest to bring back life to her island.

Canotila needs assistance of the island’s native creatures to get through the industrialised world. She flies from creature to creature and uses her powers to guide them. New life will bloom into the world for each time Canotila breaks a machine, bringing her closer to the ultimate goal of return to nature.

No download needed: Solve puzzles in a full 3D environment that runs directly in your browser. Bend the static rules of traditional puzzle games by switching control over creatures. Enjoy the beautiful graphics of Canotila’s rise of nature.

So much for the back-cover game description ;) Just play the game and have fun! Oh, and: Unity rules ;)

Screenshots:
Fertile ground effect, Prince of Persia - like. Yeah!
A bit more complex puzzle, Level 2.
Moving laser and robot arena, just exploded the poor bastard...
Credits:

Robert Cupisz (Lead Programmer) as part of Team Shotgun, DADIU March 2009 (full credits on the game page)

DoubleStruggle

made entirely in just one week for the Nordic Game Jam in Unity Engine
DoubleStruggle - game screenshot

DoubleStruggle is a game made entirely in just one week by Team Shotgun for the Nordic Game Jam 2009 in the Unity Engine.

Screenshots:
There is a simple beauty in having a man with dog on a leash trying to walk on either side of a tree. -TH ;)
Credits:

Robert Cupisz (Lead Programmer) as part of Team Shotgun (team members listed on the game page)

Computational Geometry Processing

a couple of projects made during a CGP course at DTU
Geometry Processing - screenshot

A couple of my Computational Geometry Processing experiments made during a CGP course at DTU using the GEL framework.

The projects included: Delaunay Triangulation, Curvature Estimation in Triangle Meshes, Reconstruction of 2D and 3D Surfaces using Radial Basis Functions and Grand Finale: Volumetric Surface Reconstruction.

Screenshots:
Volumetric surface reconstruction from unorganised point cloud.
Precomputed mean curvature normal rendered using scalar field shader.
Principal curvature directions.
Surface reconstruction from scattered points in a 2.5D case – terrain height field – using thin plate spline basis function. Thin plate spline minimises bending energy.
Downloads:
  • All project reports – high-level description of the techniques used in the projects
  • Source code and applications – coming soon...
Credits:

Robert Cupisz

Eskimotion

DADIU game production using the Source engine
Eskimotion - game screenshot

Eskimotion is a game developed by the wonderful Team 1 (No mouse productions), as part of the DADIU education. I was the team's Lead Programmer.

Our Inuit hero Chiku is racing through an icy labyrinth to catch the Evil Yeti King who has kidnapped Chiku’s little sister while he himself is being chased by a giant snowball. :)

The game was developed in the powerful_but_very_messy Valve's Source Engine.

Screenshots:
Game’s welcome screen with one of the more challenging tunnel sections in the background.
Chiku jumping over an obstacle.
Chiku falling down after he hits and obstacle, with ice obstacle gibs flying around him.
Downloads:
  • Eskimotion – the game, you'll need Half-life 2: episode two to play it.
  • Design document – a simple design document, written in an early production phase.
  • Lead programmer's report – a short document describing some issues in the production, a few screenshots.
Credits:

Robert Cupisz (Lead Programmer) as part of Team 1 (No mouse productions), DADIU, May 2008

Terrain Roamer

computer graphics playground
TerrainRoamer project - application screenshot

I treat this application as my CG playground. I use it to test various techniques for real-time rendering and game related programming. It was built from scratch and, besides a few helper classes, every line of code is mine, as I didn't use any game engine for it – just plain openGL.

To name some of the techniques used in the app: water rendering using frame buffer objects and glsl fragment shaders, keyframe animation in a Cg vertex shader (see VitruvianMan for skeleton animation), collision detection using hierarchical AABBs and ray intersection (for now; cylinder proxy object for the avatar will arrive shortly), particle system, frustum culling, terrain LOD (a very simple algorithm for that, not useful yet) with frustum culling as well, selection buffer for picking (and moving) objects in the editor mode, extensive use of vertex buffer objects.

Screenshots:
Quite decent water surface effect with nice, slowly moving and interfering ripples. Could use a touch of fresnel effect though.
Downloads:
Credits:

Robert Cupisz

Character animation based on medical motion capture data

my B.Sc. thesis
Vitruvian Man project - application screenshot

This is the project my bachelor thesis is based on. It demonstrates methods for fast and robust mapping of motion capture data to an animation skeleton and a skinning technique eliminating typical skinning artifacts. I used a simplified physics engine to deal with mapping and a vertex program performing dual quaternion blending to achieve nice and fast skinning.

I'm especially proud of the new solution for the mapping problem I came up with: I used a clever concept described by Thomas Jacobsen from Io-Interactive in his article on Advanced Character Physics to implement an optimized physics engine performing mapping of the motion capture data to the skeleton using the Force as interface method.

I also got rid of the collapsing elbow and candy wrapper artifacts by using the Dual Quaternion Linear Blending skinning technique. Skinning is performed in the vertex shader.

The thesis has been awarded 1st place in ABB IT Challenge 2008/2009, nice :)

Screenshots:
Downloads:
Credits:

Robert Cupisz

Tron Lightcycle Race

game prototyping in Squeak
Tron Lightcycle Race - game prototype screenshot

In this project we used Squeak as a fast game prototyping platform to create yet another clone of the all-famous Tron Lightcycle Race. Squeak is a modern implementation of the Smalltalk language and environment and, besides some performance issues, which are inherent in those types of platforms, we've found Squeak a really useful tool.

Screenshots:
Downloads:
  • Tron_Squeak_win.zip – Squeak distribution opening with the game image ready to play, complete with source.
  • Tron_Squeak_mac.zip – Same image, but with Squeak distribution for Mac OS X.
  • Project report – Project report describing design and implementation of the prototype.
Credits:

Jakub Cupisz, Robert Cupisz

Modelling Tool

boolean operations madness (unfinished)
Boolean Operations Modelling Tool - screenshot

This application is a rapid modelling tool. It works in a somewhat similar way to Google's SketchUp: it lets the user draw an area wherever he wants, grab it, extrude it, move around, etc. At the end of the process a boolean set operation (addition or substraction) is performed and a valid 3D mesh is generated.

User interface is designed in such a way, that it minimises clicks needed to perform any action – it cleverly finds out where the area is located in the 3D space, what is it's orientation, where to extrude it and what boolean operation to perform.

I used CGAL to get the effect of performing 3D set operations on objects – internally CGAL uses Nef polyhedra representation.

Screenshot shows the application in a preliminary stage of development, I'm still working on it.

Edit: I've put aside this project for now, as there are more exciting challenges on the horizon, but I think I'll get back to it some day.

Credits:

Robert Cupisz

curriculum vitae

Robert Cupisz – Graphics Programmer at Unity Technologies

  • +45 619 962 81
  • +48 501 949 848

extras

These are some other things you might want to check out:

info

Robert Cupisz Valid markup: [xhtml] [css] alias1

Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution 3.0 License