Normal map support in
CopperCube is on its way now. It is much more than just
a simple test already, and is actually usable. Here is a screenshot of the editor showing it in action, with more than just one light:
I implemented the shaders so they work on the most very basic hardware, and managed to squeeze out support for up to 5 lights (4 point lights + ambient light) for the same object, on pixel shader v 2.0 devices, with fallback for v1.1 ones, if there are ones still today. Remember that a lot of people are using very old and very slow hardware, compared to high level gaming PCs, especially if you count the mobile devices as well.
The problem when introducing new materials like this is that you have to write this for each target separately, not only adding support in the specific programming language, but also in each shader language. So I have to add this in:
- C++ for Direct3D using Vertex and Pixel Shader Assembly (I should switch to high level shaders on that target soon)
- C for OpenGL and GL_ARB vertex and fragment programs
- JavaScript and GLSL for WebGL
- ActionScript and AGAL for Flash
- Java and OpenGL ES GLSL for Android
Although this is a lot of work, I hope to have this finished soon, and a free update with basic normal map support will be out soonish.