In DRAGON version 1, I used a simple Blinn-Phond shading model. For DRAGON version 2, I've transitioned to an image-based lighting model. I use the skybox to generate direct and ambient lighting values, which means that the ambient lighting is much more natural than if I simply used a constant color for ambient light. Additionally, getting direct light from the skybox means that the light color naturally becomes redder in the evenings and in the early morning without me having to evaluate complex formulas and blend between a set dawn and noon light color. Finally, image-based lighting means I can adhere to the software engineering principle of "Don't Repeat Yourself": I render the sky once, then use it in multiple stages of my shader. It's poetic, almost.

Additionally, I've begun raytracing diffuse light from blocks. I send out multiple rays per fragment in random directions, and any that hit an emissive block like lava or glowstone increase the lighting on the fragment they came from. This allows the lighting from blocks to respond to normalmaps and allows for emissive blocks to cast shadows. The algorithm is still very much a work in progress, but you can see some preliminary results on the right.