- latest work
- screenshots
- downloads
- tutorials
- about me



intro: the grain engine is an experimental 3D engine that I'm developing independently to implement and work with several well known real-time 3D graphics techniques as well as to explore and develop various "new" ideas i have. grain is not a game. nor will it likely ever be "finished". its a testbed, a tool if you will, for my research. it may evolve into more than this eventually.


the grain engine - an experiment in 3D technology.
copyright (C) 1999 kurt miller.
  Results & Tool Screenshot 25 January 2000 (7:15pm) - Tuesday Evening  
Since the release of that compatibility demo a few days ago, I received some great feedback from you guys. Thank you. Even if I didn't get a chance to reply to you personally, your feedback is greatly appreciated. It looks like most of the mainstream cards are working very well with the multi-texturing, and it apparently screams on a geForce :). I'm still a bit concerned because if the demo detects that it can't pull off the proper combination of blending in a single pass for a given card, its supposed to default to two passes with alpha blending. However I had two reports from people mentioning that they were seeing only textures, one with an Intel i740 and the other with an ATI Rage Pro. Another person with a Rage Pro mentioned that the demo did work for him, so I don't know what's going on there either. I'll have to investigate this further, and I'll try to get these problems resolved before the next release.

In other news, I wrote a nicer version of my lightmap building tool. Here's a shot, followed by a description:



Its a multithreaded application which allows me to view the lightmaps as they're being built (including zooming in), so I can check for anomalies and such. It also allows me to rebuild a single lightmap, or cancel the process at any time (and keep what was calculated so far). The application mode, as shown in this screenshot with the progress bars and such, lets me play around with the options while its working, but it slows down the calculation speed. For this reason I've also added a mode just for die-hard calcuations, like if I wanted to leave a huge data set to calculate high-quality maps over night or unattended. This utility is actually turning out to be very handy for what I'm trying to do.

Anyway, more later on. I have a LOT of engine optimizing to do. I'm nowhere near happy with the engine's performance yet, but I've got plenty of speed-up techniques still to implement.


  Grain Engine Compatibility Demo 23 January 2000 (4:50pm) - Sunday Evening  
I've posted a compatibility pre-release of the grain engine. There's not much of an actual test level. The purpose of this demo is mostly to get feedback from you on whether it worked without error.

I should be making incremental updates to the engine from time to time as more features make it in. Expect a much larger and more impressive map in the next release.

Reporting bugs - I know there are a few issues of preference and a couple anomalies including very sensitive control, a 120 degree fov, and an occasional 'pop' in the collision detection. These will be fixed or changed and the rest will be optimized (so ignore the frame rate counter, which isn't exact anyway). What I'm mainly interested in is whether the demo LOOKS RIGHT, not so much performance at this time. The demo tries to use single-pass multitexturing, but will resort to multipass if it can't. If it says "multipass" in the top left corner, please send me an e-mail letting me know what kind of card you have, whether the blending looked correct, and a rough average of the frame rate. If you notice any other bugs or the blending doesn't look correct, please also report this. When I say "looks correct", scroll down on this page and compare your results with the screenshot listed. It should look very similar (besides the texture on the pillars). Any comments welcome. Just don't forget to tell me what 3D card you have! Thank you very much.

Download the demo here: grain01a.zip (502k), or from the downloads page. Please unzip with directories and view readme.txt.


  Octrees And Such 17 January 2000 (3:59am) - Early Monday  
A few more things have been added to the engine. I wrote a pretty nice texture sprite class and also a new octree implementation. Here's another screenshot, this one of the octrees "in action" (showing the octree cubes). You can view it, with a description right here. Its sort of hard to see what's going on in the image without being able to move around for yourself, but it'll have to do. Its really pretty meaningless with such a simple world anyway, but that's something I'm working on.

Octrees are pretty neat. For those who don't know, an octree is a data structure that can be used for a variety of applications, ranging from color quantization to assisting in 3D visibility or more efficient collision detection. For more information, perhaps try Jaap Suter's tutorial on flipCode (which you can find here), or send me an e-mail.


  Early Screenshot 16 January 2000 (12:35am) - Early Sunday  
Just to show you a bit of what the engine's looking like, I took an early screenshot. Its not much of a level (as I mentioned in my previous update), and its kind of dark, but you can see the lightmaps and curved thing in the back. There are 2 lights in the scene. Much is still in the works or to be changed.




Click the image above for a larger version of the screenshot as well as a brief description.


  General Progress 15 January 2000 (3:33pm) - Saturday Afternoon  
So I've been making a lot of progress recently with the engine. Collision detection is in, as are lit curved surfaces. I'm still using lightmaps for my engine. I've seen people ramble to no end about many great "new" lighting algorithms for real-time dynamic lighting, and that's fine. I do plan to add dynamic lighting to the engine, but I will do so on top of the static lightmap architecture. I just can't pass up such great quality in a pre-processing step, and still, for my purposes, I don't plan on having too much dynamic world geometry. Walls aren't going to be up and moving to other sides of the world, and pillars shouldn't be walking around too much. For these reasons I've kept the dynamic lighting (and probably shadowing) system open and seperate.

I purchased a TNT2 recently. I'm waiting a bit on the geForce cards, especially since I got a great price on the Diamond V770. I must say that this hunk of hardware is amazingly fun to work with. My old setup, I had a Matrox Millenium II as my primary, and an 8 meg Voodoo2 (Monster2) as my accelerator. That was fast, but also annoying for various reasons, one being that it (the Voodoo2) couldn't render in a window. Every time I ran a DirectX app, it did this horrible freeze-black-screen-flicker when it enumerated devices, and when the program initialized. That's all gone now and lends to much faster testing of changes. With my new card I can just run it in a window with no delay. Very convenient, smooth, and the rendering is beautiful. I'd recommend this card to anyone.

Other things. I started work on a tech file update about collision detection, but I don't know if I'll bother post it. I'm also still working on a demo of the engine to upload, but I need to finish a few things, such as making a good test level when I have some time. I've been working with very simple worlds so far, but the engine can handle some pretty complex things. I'll of course update this page when I have a preliminary demo.


  Back At School 05 January 2000 (6:35pm) - Wednesday Evening  
Well, I'm back at school (from winter break) which means I'll have far fewer distractions to keep me from my code. Hopefully I'll get some real work done soon. More updates to come.


      Previous Pages Of Update Entries:
  • December 1999
  • November 1999
  •   Screenshots For This Month:
    These are the screenshots for this month. Be sure to check out the rest of the screenshots here.
  • 01/25/2000 - Lightmap Utility
  • 01/17/2000 - Octrees "In Action"
  • 01/15/2000 - Early Engine Screenshot 01






  • copyright (c) 1999 kurt miller. all rights reserved.