Click on the picture, if you like.
The two changes since the last picture are:
- A little more sensible field of view. I'm not sure, but I think the old one was something like 120 degrees horizontally, and this one's only 50 degrees horizontally. It looks much less distorted and weird.
- Shadows. Mom always said that 3d platformers need shadows so you can time your jumps correctly. It also applies to cubes sitting on tables, or potentially levitating above tables (that's for later, really). The lighting that's going on here is super hacky and temporary, but there is actual darkening of the shaded sides of the cube (that's a simple dot product with the light direction) as well as points in the umbra (fancy word for shadow) of the table correctly being darkened.
So, I guess what I mean to say is that the calculation of what's being lit is good solid code - the top of the cube, the areas outside the umbra on the table, that's all being categorized as lit, and the other stuff is correctly categorized as being in shadow. The logic that goes from that to say "this should be bright green" or "this should be dark green" or "let's make this black", that's temporary and will be replaced in time.
If you're curious about the direction I'm going with this, you might check out Fiat Lux by Paul Debevec. He's done a bunch of cool rendering/imagery stuff that inspires me. The big conceptual shift that revolutionized the way I think of computer graphics is to remove the 8-bit brightness assumption from the internal representation of lights and colors. It's catching on, and games are beginning to talk about High Dynamic Range (HDR) technology to say that they're trying to be a little smarter about how they represent illumination.
Rendering a shiny movie is only one of the directions I'm interested in going with this. If that's all I wanted, I could probably use an off-the-shelf tool of one sort or another. (POV-Ray? Blender?) But by making it all myself, I will have the ability to support data formats of my choice (maybe I like Collada today, maybe it's something else tomorrow), support weird camera descriptions (I want to smoothly morph from an orthographic to an isometric to a perspective view - that can't be that hard, if I'm writing the camera code), and support breaking the pipeline at various points and using subsets of it (for example, to pull out shadow maps as textures to be used in a realtime project of some sort).