About Me

Hi. I'm Josh Ols. Lead Graphics Developer for RUST LTD.

Contact:
crunchy.bytes.blog[at]gmail[dot]com

View Joshua Ols's profile on LinkedIn

Meta
« Update (9/8/2010) | Main | Update (8/14/2010) »
Monday
Sep062010

Cubism & Framework

Up to this point, I have been taking an ad-hoc approach to my demo framework. Whenever I needed a feature, I just added it to the existing codebase. However, my code was reaching a point where it was becoming unpleasant to use, and difficult to upgrade. Finally, I hit my breaking point and decided my codebase needed a massive overhaul before I could continue with anything else. So refactoring everything has been occupying my time, in-between trying to find a job.

To test out my new framework, I decided to toss out all my old demo code and try something new. I wanted to go in a different direction with this one, opting for a test scene with lots of small lights, and a lot of moving elements. To that end, "Cubism" was born!

Reasoning:
"Cubism" was loosely inspired by the look of 3D Dot Game Heroes, and its impressive demonstration of pixelated voxel art. This approach seemed like a good way for me to introduce complexity, without having to commission an artist for a detailed animating object. However, this raised the problem that I am not myself an artist, and could only hope to do some kind of procedural programmer art. So it had to be visually interesting!

Content:
Deferred Rendering:
I decided to use Afterlights as my Deferred Rendering approach for this demo, because it is the simplest approach available. Also, I could get away with the lighting inaccuracies, since this demo isn't shooting for photorealistic graphics.

Scan:
This was meant to have a line of peaks going across a row, where each peak was unique to its column. This line would then scan to an end, then reverse direction to scan back to the other end. Since this is broken, I am going to try to implement a ripple effect instead.

Voxel Sprite:
This was made using an .xpm file included with in the compiled code. Every pixel is represented by a colored cube, with transparent pixels having no cube.

Ocean Waves:
This grid uses sin() functions to generate heights based on the cube's position in the grid.

Tidal Wave:
Similar to the Ocean Waves grid, but having waves without gaps.

Conclusion:

So that's it for now. This little project is far from finished, as it still needs a lot of work to clean up various hacks I used to get it running. Also, during the process of coding this demo I encountered problems with my new framework design that have forced me to rethink some of my decisions. Once I have finished revising both the demo and the framework, I hope to release their source code so that any interested parties may have a look. ;)

Anyone who has questions, feel free to comment or contact me via e-mail.

PrintView Printer Friendly Version

EmailEmail Article to Friend

Reader Comments

There are no comments for this journal entry. To create a new comment, use the form below.

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
All HTML will be escaped. Hyperlinks will be created for URLs automatically.