Category Archives: Tech Museum

SeganMM

When I was a university student, a little project was suggested to us (me and my friend Hamed) that was supposed to have three-dimensional spaces and GUIs. Without effective tools to implement, the project production took too long (about 23 days). After that project, I decided to write some new tools to decrease the production lead time. I initially decided to produce a tool that can be used quickly and easily to create a three-dimensional scene and multimedia software. So SeganScene.exe has been built. Then I realized that good multimedia software should have a perfect GUI and a perfect GUI should also have pieces of music, sounds, videos, and an appropriate scripting language. So SeganMenu.exe has been built.

Over time and for each project, I added some parts to the collection. Whereas the opportunity to produce this software in each step was very low, rather than investigating and studying different fields, I decided to use innovative techniques by myself and so you know they may not work well 😉

Now the SeganMM (Segan MultiMedia) is just like an old man and I left out continue developing in Delphi. my new plan is to design and write some new tools and engines by VC++.

Some of the samples made by these tools are available here: http://www.hamed-khezrian.com/

And here are some screenshots:

 

Software Occlusion Culling

Software Occlusion Culling (SOC) is a part of the rendering 3D spaces pipeline. In this technique, objects that are hidden (for example over the wall) will removed from the pipeline and will not be painted. This approach will increase performance and create smoother experiences in movement for gamers.

What’s SeganSOC?
SeganSOC (Segan Software Occlusion Culling) is a free tool for easy implementation of occlusion culling systems in any type of game engine. The most important properties of this tool are easy to use and is independent of other parts of the engine. These specifications will improve the programmer’s ability and high flexibility in working on the engine. But it’s here in Tech Museum! because It’s written in Delphi and I may try to write a new soon in C++ with more optimization!

SeganSOC features:

  • Independent Software mesh with serialization functions.
  • Implemented simplifier function using a new method to reduce the number of triangles.
  • Use triangles cache to prevent drawing hidden triangles which are placed behind big triangles.

For more information and downloads click here …

Last project by DirectX7

Here are some shots of my last project by DirectX7. these shots show the box which displays an animated progress bar. the animated progress bar was generated with the flash component and moved to the texture of the box. the box goes around sometimes. sprites are simple billboards that contain a texture and draw when the alpha blend is on.

 

 

These days by DirectX9 or earlier we can show so many sprites at a time by using shader and simple tricks. for example, we can render thousands of sprites by one draw primitive call by simply batching all quads and sorting them from back to front.

sprite buffer
Sort quads from back to front

3D Anaglyph

I wrote this application when I was a collegian and had a midterm project about 3D stereoscopic pictures with the Anaglyph technique. Therefore you should use 3D Anaglyph glasses to look at the object at a correct 3D outside the monitor. if use Anaglyph glasses with good precision lenses, you may try to touch objects with your fingers.
You can find more information about Anaglyphic pictures here

Use an Anaglyph glasses to see the correct 3D object

Download: 3DAnaglyph source

3D on desktop

Once upon a time I thought about a beautiful 3D desktop on Windows XP. I found a way to show a 32-bit bitmap on the desktop which supported the alpha channel. ( you can find a sample here )
Now here is a test to display a 3D object in desktop.

A 3D object on the desktop

Get Weather

This is a simple sample of layered windows in Windows XP. layered window is a new functionality that Windows 2000 introduced first. They are 32-bit graphical windows that support alpha channels for transparency and translucency to top-level windows. Implementation is so easy and the result is excellent. for more information about layered windows just click here
In this sample, I try to make a funny useful application to represent the weather in your city. I wrote the sample in the non-Unicode Pascal compiler for the Persian language and now I just do some little changes to display English fonts correctly.

Download GetWeather execution NOTE: Only works on Windows XP!

Airplane

Here is a simple airplane flying over a land. the camera connection is not bad. it follows the airplane and changes up-vector when the aircraft makes a round. The sample uses a height map for collision detection. when the airplane pulls down or goes through mountains the “oops” will appear on the screen.
This one is the oldest of my works based on DirectX7 API ( Retain mode ) with an unreadable code in Delphi.

Download: Airplane source

Framework DX7

Here is my first attempt to create a framework on DirectX 7 (Immediate Mode) that began around 2003/02.
The programming language was Pascal in Delphi IDE; the source code is available but dirty. because it was my first try and I was a beginner.
The simple framework has 2 parts, one is an editor called Maker and the other is a Viewer.
The Maker has 4 view ports with full-screen display capabilities. but the object creation method was in the wrong way! The sample was just a try to write down an editor, not a renderer 😀
The viewer was a simple test for lighting, fog, render states, and some features on DirectX 7. Viewers use a text file to load a scene from the Objects folder. the text file contains a list of file names and a simple position vector ( just like this: filename1.omf|x|y|z ). Each file contains vectors in binary format and all textures inside.

Download: Framework-DX7 source

New site designed

Here are new designs for my site so I will post updates here. although the old site is still alive and anyone can see that from here.
The other news is that I left out developing my last engine in Pascal (Delphi2009) a couple of years ago and started a new C++ (Visual Studio) project that will achieve games in different ways. it has the old name (World Engine) but is not a DIRECT way to write a completely integrated engine. it is separated into so many steps containing tool developments, research, experiences, etc… then I will try to cover all of them on the blog.
Also, I am glad to tell you that the new Tech Museum is now ready. I will put some of my tech works from among the oldest (DirectX7) to the newest (DirectX9) and the others.