Ingenu's website

News Archive

12/11/08 FlExtEngine & Greyworld

I've been working on the FlExtEngine, changing things around to reduce memory use. The engine is still far from working, some parts compile just fine though.
I found out that using MSC (VS08 Express) the std::vector is 20 bytes big in debug, but 24 bytes big in release. It's rather unexpected but I didn't take time to check out why.

I also have been working on Greyworld, assembled a story, and trying to get a timeline right.
I really like that main character, I think it's a bit strange that the story I'm working on isn't the beginning of the tell of this character.
Somehow I wonder if it's not more interesting to meet a character, then learn about him or hear his story.
The drawback of this method is that the reader knows that the character survived, so there might be less stress when the character is in trouble. As a reader, I always get caught anyway, so it might not be an issue at all.

17/10/08 Universes update

I decided to update my Fédia universe adding more details about it. I've played in this universe during years leading RPG, so it has a long history and lots of interesting stories.
I also decided to publish a number of things I've written, eventually, I'll manage to write a couple of books about it. I've always thought the story of the Lyam Leoart, the arcanes master, and Keiji Choan, the general and princess of the ruby realm would be an interesting story to tell.
The adventures of Anyatas, Artuas and Mystias, the trio of Amaras having fought during the second dragon war, also seems like a good candidate to be put into a book or two.

Last but not least, I'm considering putting some background about Greyworld on this website.
Greyworld is a universe in which a race similar to humans has conquered space, it's some kind of science-fiction universe, although it's likely to contain some fantasy elements (just like star wars jedi knights & lightsabers).
Everything in this universe is going fine, like usual, until the day of awakening, which changes the face of the galaxy forever.

16/10/08 Latest Work

I spent a little time on my new FlExtEngine, but mostly I consolidated my Fédia universe.
I did re-unit a number of documents and pages that were flying around, modify a couple of things here and there, and at the same time I updated my Role Playing Game rules.
The new rules (4th version) are simpler and more complete than any previous version. The magic system is more detailed, although style a bit misty, I wonder if magic shouldn't keep that aspect anyway... The combat rules are really lightweight, as I think combat is not the most important part of the game.
I recognise that it is very important since characters lives are at stake then, but it shouldn't take most of the time in a gaming session. I remember battles taking a few afternoon to play out in AD&D2 games...
And it wasn't about playing a role, it was just about rolling dice, adding and subtracting...
The rules aren't "done" yet, but I'm considering making them available on the website, they are in the language of Molière, not in the one of Shakespeare.

25/03/08 Moving to Norway
I'm moving to Oslo to work for Funcom, makers of Anarchy Online, Dreamfall : The Longest Journey and the upcoming Age of Conan: Hyborian Adventures MMORPG.
Been in Oslo only once, first flight in about 16 years, to see Funcom, and the guys there are really impressive, quick, nice and skilled, typically the kind of people you want to work with :)
I'm not sure exactly what I'll work on, considering that Conan is in final stage, and that I'll be new to the firm, city and country, I don't expect to be very productive at first ^^

15/02/08 My next "Technology of a 3D Engine" article @ Beyond3D

The next article in my series about the technology of modern 3D engines should become available "real soon now" ! :) (Planned next week)

06/01/08 Article for Beyond3D Out

Happy new year !
The first part of my series of articles for Beyond3D is available here.

27/08/07 Articles for Beyond3D

I've been thinking about writing articles for Beyond3D for a (long) while now, I decided to promote both myself and Beyond3D, by sharing the knowledge I acquired by (re)writing OctoPort 8 times :)
I'm planning to write a serie of articles for Beyond3D about "Writing a 3D Engine (from scratch)"
Although nothing is set in stone, I'm considering providing source code with each article, coming straight from my brand new FlExtEngine.

26/08/07 The "FlExtEngine" !

I have the pleasure to announce the birth of my new engine, written (almost) from scratch : FlExtEngine !
FlExtEngine stands for Flexible, Extendable (3D) Engine.
The new design gets rid of the merged SceneTree/SpatialGraph approach I never was happy about in OctoPort (the previous engine), and changes the way rendering is performed. (Although on this side it's an evolution, unlike the 'revolution' of the Scene Management part)

07/11/06 I got a new job ^^

Forgot to mention I'm a Cyanide Studio employee now.
Fixed a bug linked to nvidia drivers having become more agressive in their optimization (a good thing)

31/07/06 Demo Done ! :)

The demo with Skinned Bump Mapped Quake IV model an Unreal Tournament Map and a Point Light with CubeMap Shadow Map is done.
The shadow map still isn't perfect though :(
I found a bug related to Effect 101, but it's not yet working as expected (?:|), so I'll investigate some more this week-end most likely.

I'm considering making the IOPlugIn and OPRenderPath PlugIn libraries available on the website, with the engine (no source code), so that anyone interested can use it and enhance it with new effects...

26/07/06 Demo Status Update

Added Effect 100 : Dynamic Cube Map Reflections (render to CubeMap, then use it for reflections)
Tweaking Effect 4097 : Shadow CubeMap for Omni/Point Lights (RGBA encoded Depth)
Investigating Effect 101 : Dynamic Bumped Surface Cube Map Reflections (same as 100 with additionnal bump mapping support)
That's about it for now, I shall put an installable demo on the site shortly, then probably work on some Terrain rendering Code, and also Perlin noise based Sky rendering.

21/07/06 nVidia x64 91.31 OpenGL Driver Bugs

At last after nearly a week of investigation, I've found 2 Bugs in OpenGL drivers, with one being CRITICAL to my engine.
The first one is that querying GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT generates an error and don't set any value if you don't have a TEXTURE_3D attached, while it should of course NOT generate an error AND write 0...
The other was more difficult to spot because it doesn't show up right where it happens, the crash happens later on.
Buggy Sequence : Bind FBO 0 (default), PushAttrib( ALL ), Bind FBO 1, set some states, draw, PopAttrib(), Bind FBO 0.
Working Sequence : Bind FBO 0 (default), PushAttrib( ALL ), Bind FBO 1, set some states, draw, Bind FBO 0, PopAttrib().
According to the specs, neither sequence is wrong.

20/07/06 Demo status Update

Engine working, except for a weird and hard to locate corruption somewhere that I'm still investigating.
All those Effect Class (100% shaders) are done :
-1 : Default (red output)
-2 : Single Texture (not lite)
-3 : Transparent Single Texture (not lite)
-4 : Lite Single Texture
-5 : Transparent BillBoard (always facing the camera, not lite)
-6 : Bump Mapping
-15 : Parallax Mapping
-20 : Bump Mapped Skinning (Doom III/Quake 4 GPU Skinned & Bump Mapped Models)
-4096 : Omni/Point Lights (No Shadowing)

Currently Work in progress due to the corruption issue:
-100 : Reflection CubeMap
-4097 : Shadow CubeMap for Omni/Point Lights (RGBA encoded depth)

The corruption issue is related to rendering to FBO, so I'm kinda stuck, every shader is done and the Effects are in the engine, the problem is that the corruption prevent them from working.
It happens that I get unexpected and illogical errors when running either...
Working on it...

Some new Screenshots.

07/07/06 Demo status

Engine compiled, except dotXSI converter due to bug in the XSI FTK, and Doom3RenderPath cause I've to make sure the engine works with simpler shaders.
Updated (rewrote in fact) the T3D (Old Unreal Engine Map Format) converter, the output seems valid, but I'm not 100% sure it's correct though.
Starting a x86 Debug Session in Windows XP x64 takes only *cough* 48 seconds...
Shadow CubeMap code for Shadow Map rendering and Lighting have been coded, the whole RenderTree rewritten, and existing RenderPaths updated to the new mechanism.
Testing pending, as soon as I have tested the .opmodel & .opobject updated loading code.
So for now on it's testing & debugging...

29/06/06 Shadow Maps Integration

Two weeks to finish both D3D10 compatibility Renderer Interface & integrate shadow maps... Not so bad IMO.
I've had to rewrite the RenderTree (complete rewrite) and modify my RenderPath in order to support a 'universal' management of Shadow Maps.
The only requirements are that the hardware (GPU) must be programmable in a high level shader language (DX HLSL | OpenGL Slang).
Once I got my design right, and I started coding, things started to get smooth, I don't expect to have 0 surprise in the process though, but nothing serious.
Next Week I want to have Variance Shadow Mapping & CubeMap Shadow Maps demos up & running.
(Will try to get some guys from Beyond3D to test the demos on their boards to see how it goes...)

22/06/06 D3D10 Compatibility Issues

Got some job interviews slowing down my changes, and got a little issue with D3D10 compatibility.
Need to have all my Renderers having a common behavior so that any can be plugged in the engine with the same results, so I got to fix that problem.
The issue is that D3D10 uses State Objects (nice idea really, it cuts down the state changing calls and have them stored driver side, so hardware optimised), and setting one of those replaces EVERY SINGLE STATE associated, meaning that I can't have a fine granularity.
This is especially annoying with my Transparency Pass, which needs to set Blending modes (that's fine though it's a State of its own), but also need to disable DepthWrite (which is part of the DepthStencilState, including every depth & stencil states), and needs to draw objects once with front face culling and another time with back face culling, so changing Culling Mode (part of the RasterizerState, which includes depthbias... used in Shadow Maps !).
Since State Objects are Immutable (create, set, destroy are the only operations you can perform with them), I either need to create temporary State Objects per frame (aweful), or find another work around...
I might modify the RenderPath Interface in order to allow it to Draw(), something I did forbid until now...
(The RenderPath idea was : setup the pipeline, OctoPort will handle the drawing.)

12/06/06 D3D9/D3D10/OpenGL 2.0/OpenGL|ES 2.0 Compatible Renderer Interface

Since I decided to handle shadow mapping through shaders exclusively, I thought that adding D3D10 & OpenGL|ES 2.0 compatibility to the Renderer Interface would be a good thing and make sense, and reading the beta D3D10 doc, it was clear that many changes would be easy and for the better, however shader related functions are very different :(
So, it is taking much more time that I first anticipated, to handle all the changes, but the good news is : It's almost done.
I got an issue with Constant Buffer management and packing in GLSlang & HLSL, but it's solved now.
The last problem I'm facing is the samplers and textures support in both old style fixed-function D3D9/OpenGL1.x and up to date GLSlang & HLSL programmable pipeline.
Already working on a solution, so I expect to be back working on the "Shadows That Rock" demos early next week. (At worst I can drop Fixed Function Pipeline support, but I'd prefer not to.)

31/05/06 OctoPort 0.9 changes

Well, it appears that there's only one good way to have an extendable, flexible engine handling any kind of shadow maps, and it's to go Shaders only.
Given that OpenGL ES 2.0, and Direct3D10 (as well as OpenGL 3.0 rumors says) are Shaders only, I'm gonna make that move, that I wanted to do for a good time already.
While at it, I'll move *back* to my higher level State Groups management (but I'll move them in the Renderer to be API dependant, and similar in content to D3D10 States.).
Fortunately, all of this shouldn't take long, and as soon as the changes are made, the "Shadow That Rocks" demo will be done, fully integrated into the engine.
The morale of the story is : Writing a demo is piece of cake compared to writing an engine ^^ (Ok less flexibility would also solve the issue, but that would be bad IMO.)

25/05/06 Code consolidation, clean up & lifting

Since easy to read, clean code is much easier to debug and maintain, I'm doing some clean up and lifting, basically removing any C call that might have slipped in and making sure everything is "C++ compliant".
(ie good C++ practice.)

23/05/06 Small Shadow Mapping demo started, and debugging still going on...

Added PNG support through libpng, have issues with libjpeg and since jpeg aren't really what you would like to use in a game, I halted adding support for it for now.
Done a few debug sessions going rather smoothly, doesn't mean it's safe however.
The Shadow Mapping demo is to use cubemaps as shadowmaps (using RGBA to encode depth), with 2 lights in an Unreal map (T3D), and bump mapping everywhere ^^.

19/05/06 Debugging in progress...

Debugging is a slow process... Especially when you do some changes which aren't really linked to the operation, such as making converting existing class to istream children class for compressed and uncompressed files in an archive.
Also getting all dependencies into a single Project so I can compile everything in either x86 or x64.
Chasing buffer overruns is (not) fun !

15/05/06 Debugging started...

Debugging the engine started, made me change the code to something more elegant at some places.
As expected the "Windows on Windows" layer of Windows x64 is slowing down 32bit apps, although more than I anticipated :(
Compiling the engine to x64 would lead me to recompile some of the external libs I use (libz...) and could slow me down quite a bit, so I'll just stick with the 32bit debug for now.

10/05/06 Compiling done

Getting the engine to compile again after the broad changes I made took quite a bit longer than expected :(
Right now I'm done getting it to compile, making a quick code review, then I'll debug it and work on the demos (porting Humus demos).
I confess I also spent the last two days getting footage from E3 over the Internet ^^
Well E3 is only once a year ;)

28/04/06 Engine update

Modified OctoPort main page.
New RenderTarget manager almost complete, need to review the code before compiling & debugging it.
Demos to follow "soon" after that. (Within two weeks I wish)

31/03/06 Website Update

New additional content, some corrections too.

29/03/06 New Website

At last I decided to update my website and remodel it.
Since it's pretty new, it's rather empty at the moment... :(


About Me | Contact Me | ©20 Pierre Rodéric Vicaire (Ingenu)