I'm a huge fan of the lighting in Minecraft (is there any information on how it works? It resembles radiosity, but it's way faster than that), but it always bothered me that it's lacking and ambient occlusion term.
For those that don't know what it is, ambient occlusion (short AO) is a technique to make lighting more realistic by using the fact that surfaces get darker the closer they are to other surfaces. It is commonly used in todays games because it helps improving the visual quality a lot. Just do a quick Google search to see what AO looks like.
The main problem with AO is that it is very expensive to calculate, especially in real-time, so it is normally not used on anything other than static geometry (let's forget about SSAO for now), making it unusable for Minecraft where changing the level is the whole point of the game. However, the special geometry of Minecraft leaves a lot of room for optimizations; the fact that we only have to deal with grid-aligned cubes makes it a lot easier.
To demonstrate, I wrote a quick prototype to test it out and it actually is possible to precompute the ambient occlusion terms for all possible cube constellations and then apply it in real-time.
The precomputed ambient occlusion texture looks like this:
Applying AO in the game takes no toll on the performance at all. It is merely a texture multiplied on the color texture. If a block is removed/placed, applying the changes in AO are as easy as changing the UV-coordinates of the 8 adjacent blocks.
I'd absolutely love to see advanced lighting in Minecraft, but those are just my two cents. I'd like to hear your opinion on this.
I am pretty sure the Ambient Occlusion/Better Light mod does this already, however if it were to be implemented officially as an graphics option that would be pretty cool.
I'm a huge fan of the lighting in Minecraft (is there any information on how it works? It resembles radiosity, but it's way faster than that), but it always bothered me that it's lacking and ambient occlusion term.
For those that don't know what it is, ambient occlusion (short AO) is a technique to make lighting more realistic by using the fact that surfaces get darker the closer they are to other surfaces. It is commonly used in todays games because it helps improving the visual quality a lot. Just do a quick Google search to see what AO looks like.
The main problem with AO is that it is very expensive to calculate, especially in real-time, so it is normally not used on anything other than static geometry (let's forget about SSAO for now), making it unusable for Minecraft where changing the level is the whole point of the game. However, the special geometry of Minecraft leaves a lot of room for optimizations; the fact that we only have to deal with grid-aligned cubes makes it a lot easier.
To demonstrate, I wrote a quick prototype to test it out and it actually is possible to precompute the ambient occlusion terms for all possible cube constellations and then apply it in real-time.
Here, have a few images to show what I mean:
Close-up view
Complex scene with AO
The precomputed ambient occlusion texture looks like this:
Applying AO in the game takes no toll on the performance at all. It is merely a texture multiplied on the color texture. If a block is removed/placed, applying the changes in AO are as easy as changing the UV-coordinates of the 8 adjacent blocks.
I'd absolutely love to see advanced lighting in Minecraft, but those are just my two cents. I'd like to hear your opinion on this.
Cheers,
Noobody