The small version works well on my Powerbook A4 which is truely amazing for a software renderer. If the numbers in the console are frame rate, then it was about 32 to 33.
I have made some improvement ont it, it is now 1.5 times faster, you should now get +45fps :-). the lighting is perpixel and real phong shading(normal interpolation and perspective correct interpolation of the normal 1/z), before I was doing that even on flat poly wich is not necessary, so now renderer is much faster with the same quality.
The MIPmapping is great, although I don't think it is working properly for the ground, unless there isn't much detail there.
Yes this is a part of the engine that gave me some headack because on that sample I use a multitexture for the terrain and the detail texture is 256 times smaller than the lightmap so it is really hard to make it looking perfect everywhere, I am not sure there is a solution without reducing the fps.
The camera control scheme didn't work well with the trackpad on the powerbook. It current controls angular velocity, while I would prefer control of angular position. Angular position control works quite well vertically, but not horizontally. You can see my control 'solution' in the 'Storm The Castle' applet game I wrote last year (search forum for it).
Yes I do that because in unsigned applet (and also java 1.1) I do not find anyway to control mouse (guess it is a browser security issue), If you have the solution It is great!! I will look on it.
With regard to undrawn pixels, this can occur when the end-points of two adjacent polygons are not concident, e.g. where the floor meets a wall which has a door. This results in T-junctions. You probably know this already Adding extra points in the sides of the floor polygons fixes this. However only found this to be necessary when the precision of the 3D calculations is limited. i.e. when using OpenGL, I found it necessary to remove T-junctions, but my software own renderer worked without bothering. However it is very very occasionally possible to get undrawn pixels on the zero X & Y axes, which I think is due to precision issues.
The pixel bug does not come from T junction problem, the terrain handle that well, this bug come from the rendering engine itself (precision error) and can appear on any object, on hardware mode (opengl) it should not appear. the next version should not have this bug anymore in software mode.
My effort doesn't look anywhere as nice as yours though. When I find time, must implement MIPmapping. I'm also casting envious eyes at your skybox. So nice.
Thanks, it is only a skybox but it can be exported (as terrain) from terragen an used directly in 3DzzD (have a look to the demo source), It is why it look so nice.
Your lighting looks superior to mine too. I managed flat shading, but yours seems to blend more gradually. Or perhaps that is a function of your shader. I'm just so impressed considering the framerate. Are you using octtrees to control draw order or is it as it comes?
3DzzD can use some common optimisation as octree, occlusion, clod terran engine, and frame coherence. It also use many algorithm I made for last step of rendering (pixels draw) and also for face removing. I try a quake3 level (25000 faces) with the last version (not the online version) wich include last optimisations on lighting and it works fine on small size (500*300) on my 1.6 Ghz average 25 fps (20-35).
Lighting is real phong and computed per-pixel (normal is interpolated 1/z and re-normalized), mipmap is also perpixel :-), I spent many times on matcad to find the solution of the equation... wich give texel size relative to pixel size (there was so many parameter to take care of: mapping scale,rendering size, plane equation ....) and it is not still perfect :-(
Now you just need to portalise the whole thing, add A* searches, some AI & the jobs a good one.
Yep, I hope this game will be lot of fun, and also that the API will be used by most people.