Nuke2000 Worklog by Odin Jensen.
2/9-99 :
- First version of N2K_Window up and running. Global WndProc still a
problem.
- Made temp installer and released pre-tech test.
3/9-99 :
- Setup N2K_3DRender project frame up. Works as a component, but does
nothing yet.
- Updated SDK builder + install.bat
5/9-99 :
- Added basic N2K_3DMath.h for matrix class + commonly used helper functions
(The matrix class is preliminary and will be heavily optimized when the
engine is up and running
Don't be scared by the C cos and sin functions, on pentium and higher they
are fast enough :)
- Added N2K_3DStructs.h to hold general 3D structures used by most 3D libs.
(Note I won't tell that I updated the SDK builder and/or install.bat as that
should be obvious :)
- N2K_3DRender now working.
Note : Texture manager not done yet.
- Created web page and posted v0.1
- Created tutorial 1 + full docs.
- Updated some info + fixed minor bug in N2K_3DRender which forgot to use
the alpha color of vertices.
- Added full docs for tutorial 2 as well as tutorial 2.
6/9-99 :
- Added tutorial 3 + full docs for it.
- Added texture cache + updated docs for it.
- Added tutorial 4 + docs for it. This calls for version 0.2 alpha :)
7/9-99 :
- Added 3D Studio max 3.0 exporter 0.5a untested alpha.
- Added docs for the 3D Exporter.
8/9-99 :
- Fixed bug that caused apps that did not use the texture cache to crash on
exit.
- Converted worklog to HTML for easier reading.
- Re-compiled tutorials. Might need to do that, as I'm working on the 2D
drawing using 3D hardware functions now.
- Added DrawOverlay function which allows drawing textures as 2D on top of
the 3D scene.
I did this because many cards take a major performance hit when switching
from 3D to 2D drawing.
NOTE : I will not add color change to the overlay function. Billboards will
be supported later for 3D surfaces, so you can write your own overlays.
I
also changed the interface, but since noone uses this function,
a recompiled of Nuke2k apps is not needed.
Once the interface is done it will never
change, so this is just and example of work in progress.
- Fixed one of my infamous bugs, that caused trouble when caching more than
one texture.
- Added Tutorial 5 to show off overlays. I know there's no blending or
colorkeying yet, but I'm working on that next.
(That and the 3D engine/object loader that is :)
- Added docs for Tutorial 5.
- Decided to remove exes from tutorials
- Repacked tutorials.
9/9-99 :
- Added alpha blending and the ability to specify source and destination
blend factors.
- Changed to windows 2000 and DirectX 7.0 RC4. Works like a charm. Hope
rumours of final release tomorrow is true :)
- Created tutorial 5 to show off alpha blending and wrote docs for it.
- Packed Nuke 2000 as 0.2.6
- Created N2K_3DEngine as a COM DLL and added it to redist build tool and
install.
(It does nothing yet, but it's a good start :)
- Fixed RotateY in CN2K_Matrix to be SetRotateY.
- Recompiled components to include new matrix fix.
13/9-99 :
- Found bug that causea bogus texture name to be
exported from 3D Studio MAX if material assigned without a texture. Will fix
later.
- Created initial 3D object structures. (Don't know how smart they are, but
I'll optimize them as we move along :)
14/9-99 :
- Due to miracle, the errors work now. This need to be applied to all
library components.
- Having a bit of a problem with the object load. Hard to decide best
structures to use.
- Well. Export and load of 3D models work. No UV's or vertex colors yet
though :(
15/9-99 :
- Optimized rendering by using Direct3D's native rendering
methods. Should be alot faster now. Also prepares us for Hardware transform
and lighting using Vertex buffers, which I will probably add soon. (Need to
do UV and Vertex Colors first)
- Fixed bug in 3D engine that caused texture name not set to
NULL, when no texture was available for a surface.
16/9-99 :
- Made DrawModel function in 3D Engine. This should be usable
until I get some form of scene management up.
UV and vertex colors still missing, but will be fixed asap. Who am I writing
this for? I have'nt released this yet.
And I won't until the docs are updated and a new tutorial made :)
- After some debugging, the 3D Engine can now load and
display textured models.
Vertex colors are currently broken, pending a design issue in the 3D
structures header.
- Fixed bug that caused some model textures not to be shown
during rendering.
- 3DEngine.dll now has full error return. Need to fix this in
other components too.
- Did tutorial for object load/show + full docs. Released
v0.2.9 alpha.
19/9-99 :
- Fixed vertex colors. Looks absolutely great :)
- Optimized 3D exporter output.
- Added SetShade option, so you can choose between gouraud
and flat shading.
- Fixed minor bug that caused the surface color not to get
added to the vertex colors.
- Fixed major bug that would allocate a new triangle list for
every call to RenderTriangles.
(No wonder my system came to a halt after 20 minutes of my test app
running :)
- Made it possible to specify surfaces in 3D object that
should not be drawn.
(My testapp got a boost from 47 frames/sec to 110 frames/sec when I started
to remove non-visible surfaces.
Note that the Scene Manager I'll write soon, will also do this :)
21/9-99 :
- Optimized 3D rendering yet again. Note that N2K_Triangle
has been removed, and replaced by a WORD list.
This speeds up rendering in both Direct3D and OpenGL.
- Argghh. I might have to skip all the tutorials, as only the
new ones are cool. (Because they all use the now dead N2K_Triangle)
22/9-99 :
- Added error handling to all N2K components. Fixed the docs too.
(Later I'll specify if it's a bug or a shortcoming of the users system, so
you and your users can see who's to blame :)
23/9-99 :
- Added possibility to disable/enable 3d clipping on the fly.
It's faster if you know some polys won't get clipped, but could crash your
app if they leave the viewport and should get clipped.
- Added a conversion function to N2K_3DMath.h that converts a
r,g,b,a value to the format Nuke 2000 uses.
- Fixed all tutorials thanks to aforementioned macro.
- DirectX 7.0 runtime is out :) Cool. Then people can get on
with my new library :)
- We are now version 0.3.2 :)
27/9-99 :
- Lost some of my source due to sloppiness, so I rewrote some
of the latest additions. This turned out to be a good thing, since I
descovered many errors in the DOCS/Code.
All of this should now be rectified.
28/9-99 :
- Fixed so exporter outputs each object in scene differently,
so it's easier to plug in to level editor/tile based game etc.
(Note : This is tested with objects without vertex colors and textures)
- Optimizations are planned for the exporter, but just use
the 3D models, the optimizer will work transparently with older models also.
- Animations will come soon too.
- Fixed bug that caused bogus texture names to be output for
surfaces, when surface had no texture. This should speed up object drawing,
as texture manager won't have to search for the bogus texture in the cache.
- Reinserted bogus texture name error, as now, texture names
would not be output at all. This needs more thorough debugging, so it must
wait 'till I get the time to fix it :(
29/9-99 :
- Fixed a bug where textures being scaled down below a
certain point would not get bilinear filtering. (Stupid me forgot to set MIN
filter setting :)
30/9-99 :
- Put error handling back in Window/3DEngine components (Not
Render yet as there's some problems related to that). Now specifies if it's a user system error or programming
error :)
3/10-99 :
- Fixed embarrasing bug, that would cause textures to not get
reloaded when alt-tabbed out and into app.
- There is a bug in the 3D exporter, that causes multiple
objects with textures to get exported with wrong texture names.
Until I fix this, stick to exporting one model :)
- Added uninstaller to the Nuke 2000 redistribution.
- Created N2K_Input.dll. Does nothing yet, but is included in
redist builder, install/uninstall.
Yes. That means we have joystick, keyboad, mouse action soon :)
- Most of N2K_Input.dll init is done. Shutdown is done.
Joystick detection is done.
Look out for real functionality soon :)¨
6/10-99 :
- Keyboard working now. Runs much smoother than
GetAsyncKeyState that's for damn sure :)
- Yes! N2K_Input.dll now done completely. I only tested the
keyboard, so please mail errors to me.
They should be output to your Developer Studio debug window. Note: Joystick
support is very basic.
Only one stick supported with 2 axis, throttle and 32 buttons max.
(This will change later, when I'll need it for the game I'm working on :)
- Docs complete for N2K_Input. I even documented some of the
more un-obvious keys for you.
(So don't say I ain't nice)
- I'm going to release this as v0.3.4 alpha (Due to no
tutorial on input + untested mouse/joystick)
Please test and mail me back. If you look at the tutorials on how to get the
other components up and running, you should
have no problem loading and using the N2K_Input component.
10/10-99 :
- Well. Added EndApp function to window, so you can end it
when you wish. The default ESC which usually ends your app does not work
when usin DirectInput, so you
can just go like this : if (pKeys[N2K_ESCAPE]) pWindow->EndApp(0);
13/10-99 :
- Well. Worked a bit on secondary device detection
(pre-voodoo 3 cards for instance) and when I detect the secondary device,
choosing the primary device afterwards, simply exits the app :( I'll get it
fixed, but first I'm going to complete error handling in N2K_Render.
- Ok. N2K_Render now posts errors correctly for you to check
using GetLastError() should a function fail. (I.e. Return false)
20/10-99 :
- Yes. Fixed the * operator on class CN2K_Matrix + made it
accessible via. indexing. I multiplying matrices does not work, try
reversing the order of multiplication as translation and rotation combined
wrongly can cause unwanted translation (movement in scene).
- I owe you a input and matrix multiplication tutorial. I'll
probably stuff them into one. I'll have some time to do it this
weekend.
- Nuke 2000 AppWizard for Developer Studio done. First version. Needs more
work, but it let's you work right away!
23/10-99 :
- Added a short code sample of matrix multiplication in the
CN2K_Matrix documentation.
- Released v0.3.5 alpha.
- Made 3D Studio MAX exporter support animation frames. Works
fine. I'm working on the linear interpolation of mesh frames. Coming soon.
31/10-99 :
- Changed most 3D structures to classes due to my plans of
great reconstruction for easier liniear interpolation and later
BSP/Quadtree/Octree world subdivision and rendering.
(Updated tutoril 7 to reflect this as the Nuke 2000 3D model and surface is
now prefixed with a C)
1/11-99 :
- Windowed mode now follows properly when moved around.
22/11-99 :
- Pheeew. Wrote new 3D exporter from scratch for 3D studio
MAX. Wrote GUI based converter used to optimize exporter output, connect
objects/paths into scene files etc.
- 3DEngine can now load the new object model, but this is
temporarly until the new material based texture/material system is
implemented.
23/11-99 :
- Added spheremap function to 3D engine. Will spheremap a
single surface passed to it.
24/11-99 :
- Added Aureal based 3D audio library called N2K_Audio :)
- Added Audio engine interface description to docs.
- Added Tutorial 8 showing off the new Audio interface.
- Added easy to get interface function, so instead of all the
queryinterface stuff, you just go N2K_GetWindowInterface(pWindow);
- Docs for tutorials not updated/added yet. Will do later.
- Updated all tutorials to use this. Regarding tutorials I
really need to rewrite/update those. Look out for brand new tutorials when
the new 3D engine/render takes shape :)
- Got access to windows procedure from the window code. This
will have cool consequences at a later date. (No time now :)
- Released v0.3.9 alpha.