update fragment shader.

- dx and dy should be signed values.
- normal is [-dH/dx, -dH/dy, 1]
- color is sum of diffuse and ambient.