• entries
23
2
• views
10314

Author of the Power Render 3D Engine

## PR7 Scene Editor August Beta

Please download and test out the scene editor from PR7. This is still in development but it should show you the direction things are going with the next version.

www.powerrender.com/PR7/PR7EditorBeta.zip

You will also need to get the Ageia runtime drivers from http://www.ageia.com/drivers/drivers.html. The editor will use Ageia hardware if available.

Remember this software is still in development. I'd like to hear your comments on how I can improve it.

## Redesigning website

I spent the entire day redesigning my website. You can see the work in progress here.

If you have any suggestions let me know while I'm still working on it. :)

## Looking back, and looking forward

I've looked back at all my blogs since January, since I built this new computer to work on. I had a clear idea of what I wanted to build in terms of the engine, but I had no idea the engine was going to grow this much. The computer was built originally to run DX10 on Vista but I haven't used DX10 much at all.

At times it feels like my work will never be done. However I know every feature and bug can be described and eventually I will complete them all.

## Ageia PhysX

Jan 30, 2007

I resumed work on the Ageia PhysX support today. So far I've added the ability to save and load cooked meshes for faster preprocessing. Going to start working on character controller classes now. Right now I have #ifdefs depending on if the engine is compiled for PhysX or Newton. I am going to remove Newton completely and add in things from PhysX that Newton doesn't have. This means the physics classes will be slightly different than PR 6. Don't see a point of keeping the API the same to support an inferior physics library. PhysX has a good character controller and I want to integrate it tightly with the engine. Once I have the character controller in I'll add flags to scene graph nodes which tell if an object should be part of the static level geometry. A physics control panel will be added to cook the meshes, pause the simulation, and load and save states.

I've ordered a BFG Ageia card so I can make sure the hardware support is working well, and add advanced things like cloth simulation.

## Sidetracked - Borland C++ Part 2

Jan 30, 2007

Support for Borland C++ has been completed after a few frustrating problems:

1. Borland doesn't like #pragma once in the headers. I had to add #ifndef HEADER_H #define HEADER_H statements to the top of every header file. This took about a day.

2. Getting all of the external image libraries compiled under Borland was a bit of a pain since I didn't write that code. Libraries like DirectX and Newton needed to be converted into another format.

3. It took about 4 days to get the library compiling under Borland. Once it did, as soon as I accessed anything from the DLL it would crash. There was a problem in a constructor in one of my classes but it wouldn't show me where. This was a huge problem. To solve this made a copy of everything and started with a DLL that only contained the main engine class. It ran fine. I then started adding in the rest of the engine and retesting to see when it would crash. This took a couple of days, since the more I added the longer the compile times became. Borland also doesn't work well with precompiled headers so a full build would take up to 5 minutes. I finally narowed it down to a divide by 0 error in the HDR class. For some reason VC never picked this up. I went back to my original version of the source, fixed that and it worked great. I also created a small VCL app that renders an object in the form to test the engine.

Now that I have PR 6.8 compiling under Borland I'll have to apply those changes to the PR7 codebase later. Windiff will come in handy :)

## Sidetracked - Borland C++

Jan 24, 2007

I spent most of yesterday working on a Borland C++ 2006 port of PR6 for a potential customer. Things like this come up once in a while so the DX10 and PR7 work is on hold for a couple days. To get the engine working under Borland I needed to modify all the headers since it doesn't handle #pragma once. There are some other changes required for compiling DirectX applications and I'm going through them one at a time.

## Building a DX10 Computer part 3

Jan 23, 2007

After spending a couple days installing Windows Vista and all the software I need for work (and a few I don't), the new system is stable and very sweet. I now have it set up to my dual monitors and can ALMOST put the old machine away.

Vista is still lacking print drivers for my printer and I'm sure there will be a few things I forgot to move over.

As for speed, 3DMark 06 gets around 8400 with the CPU overclocked to 2.6 ghz. The Windows Experience Index is 5.5, which is good considering the Vista documentation states that at the time of Vista's release, 5 was the fastest computer available (and Vista isn't officially out yet).

1. The final setup

2. Nice looking machine

3. Still tweaking the parts

4. Nvidia's 8800 Demo

5. Vista Desktop running DX10 apps

## Building a DX10 computer Part 2

Jan 18, 2007

The case arrived today and I have started putting together the system.

1. Aspire X-Discovery Case

2. Motherboard tray removed

3. Motherboard and CPU in

4. Ultraviolet fan lights

5. Aspire clear case PSU with blue led and custom UV sleeving

6. Asus P5W mounted

7. Core 2 Duo opened

8. PSU in

9. Almost done

10. It's alive!

11. New and old, flash off

12. New and old, flash on

Well the new system is together and booting fine. It took almost an entire day to put this machine together. You'll notice the door opens from a different side in the earlier pics. I had to take that all apart and flip the 4 mounts around. I also put in an 80mm fan in the front since the case didn't include one.
I'm having some trouble getting Vista and XP to install. I think it may be with the cdrom drive I put in so I'm trying an external one. The front fan I put in is also quite loud so I may replace it later. I had to adjust the timings on the ram in the bios since it was being recognized as PC 5300 instead of 6400. Once I get an OS installed I'll play around with overclocking and benchmarking the 8800 GTS.
Back to main...

## Terrain Nodes in Scene Graph

Jan 17, 2007

This week I have started working on the new terrain engine. After a couple days of work and nothing showing, finally I have terrain displaying in the scene graph. You can drag and drop sections of terrain, set the textures and detail scale, and move, rotate or scale them.

Right now it's using brute force. The next step is to add quadtree culling and level of detail.

## What to expect, major milestones, and design decis

Jan 16, 2007

Power Render 6 took about 2 years to port from C to C++ and I'm happy with the foundation that was created. It is a solid rendering engine and there won't be any major changes to the core code. Power Render 7 aims to be a more complete game engine with better tools and some features that were never in the previous engines.

Here are some of the milestones that are expected:

1. Scene Graph
In previous versions you had to manage the world yourself. You could make an array of entities and organize everything in a way that was easiest for your game. The addition of a scene graph provides a common way to describe a scene that is suitable for hopefully all situations. It also provides a save/load game storage format. The scene graph allows for faster rendering by organizing the world in a hierarchy of bounding spheres. Group nodes can be hidden at a certain distance to speed up rendering of large scale scenes. I may be removing the idea of Game Entities (scriptable entities used by the high level engine) and integrate that extra functionality in the base classes of all renderable scene nodes.

2. Different Terrain Engine
The previous terrain engine was designed for arcade or RTS games, and simulated a spherical world that never ended. The new terrain will be more suitable for massive terrains used in games like Oblivion or MMORPG's. Terrain will be divided into zones, with each zone having a scene graph containing the objects on the terrain. Zones can be placed next to each other to form a world as large as you desire. Terrain splatting will likely be removed. I spent a lot of time developing this so it's sad to see it go, but for now each terrain will be using a large precomputed texture with a detail texture.

3. Integrated Physics
In PR6, the Newton physics engine was used. For PR7 I plan on switching to the PhysX engine. This will cause some challenges since Newton had more suitable ragdoll and terrain collision routines. Since the new terrain engine will not be using a wrapping world, PhysX may be able to provide all that is needed without additional work. I have already partially ported the engine to PhysX last year, but ragdolls support still needs to be added. PhysX will also provide hardware support for Ageia physics acceleration cards.

Physics will be more tightly integrated with the scene graph. A physics entity editor will be created for describing complex physics objects composed of primitives and joints. Once a physics entity is designed, instances of it can be drag and dropped into the world's scene graph. In the editor, the initial state of the scene will be stored. Physics can then be turned on and simulated. The original state can then be restored and adjusted, or the current state stored as the initial state. This allows you to let physics objects settle into a stable state before storing it as an initial scene to load later.

4. New Character Animation routines
Previous versions allowed playback of single animations (ie running, shooting) for a character. A new set of routines and tools is in development that allows for blending of animations (ie legs running while arms shooting). Higher level routines for controlling characters including pathnodes and lip syncing will be added (commands like, MoveToLocation, Speak, LookAt, or Follow). Characters are a big part of any game and these routines needs to be more flexible and user friendly.

5. Networking
Previous versions of the engine have not included networking but I would like to provide some examples using an existing networking library such as Raknet.

6. Other Ideas
These are ideas I've thought about but will wait until the rest of the engine is created
- 2D GUI elements could be turned into scene graph items, allowing the creation of menus inside the content previewer
- Drag and drop AI modules
- Cut scene editor

## A new era - DirectX 10. Building a new computer

Jan 16, 2007

DirectX 10 and Windows Vista are coming on January 30th, 2007. My current development system consists of: Intel 2.8 Ghz P4, Nvidia Geforce 6800 GT, 1 gig of ram, GA-8PE667 Ultra mb. Right now the only cards that support DirectX 10 are the Nvidia 8800 series (GTS or GTX). These are PCI express cards, and my motherboard is AGP, which means I need to upgrade the video card, motherboard, and CPU to support DirectX 10. The 8800 GTS is a beast of a card. Here is an interesting picture that compares the 8800 with a Voodoo1 obsidian reference board, the first 3D card I ever had.

In addition multicore processors are now available and require a new way of thinking when developing for them. For this reason I have decided to build an entirely new development machine rather than upgrade, and have ordered the following parts (click to see image):

EVGA Geforce 8800 GTS Video card
Intel Core 2 Duo E6400 processor (2.13 Ghz)
Seagate Barracuda 320GB SATA HD
Asus P5W DH Deluxe motherboard
OCZ Gold XTC PC2-6400 RAM
Apevia X-Discovery blue case, 420W PSU (will swap PSU with my current 500W one)

I have also preordered Windows Vista which will be released 2 weeks from now. I won't be developing on the machine until Vista arrives, but I will be putting it together to make sure the components work fine.

I am still waiting for the case to arrive. When it does I'll start putting the components together.