JavaKazRace - Playable Java racing game demo
PSEmu Pro GPU plug-in
DOSX Utils
SHLight 2004
JavaKazRace DSharingu PSEmuGPU DOSX Utils SHLight 2004

productivity

Productivity, generality and OpenMP

Davide's picture

Flash news.. I'm very busy at work 8)

I could work less, but I want to produce something good. I like the idea to take a more general approach to problems and make something bigger out of it.

One of my current goals is to develop in a scalable manner. In order to do that, things need to be rethought in a more generic form.
For example one can have a triangular mesh, or could develop a system to do a remeshing to turn the original geometry into a semi-regular data structure that can easily be compressed and streamed progressively.

I think that scalability is really a key to the much needed productivity improvement in game development.

At work we talk every day about how to go about some solution, and there the key question is always: "can we use a scalable and generic solution ?".
This is usually about development pipeline.. not about actual code. The idea of code reusability is less straightforward. I actually aim more at providing simple implementations, to modularize code so that it can easily be grabbed without too many dependencies.. rather than trying to fit all in a supposed grand scheme of hierarchy of objects and whatnot.

In the end the harder problems are really those about how to organize data and how to transform those data across the development pipeline.

On the side, I also used OpenMP for the first time. After a few odd results, I managed to parallelize a loop that uncompresses images in that progressive-JPEG-like format that I've been working on.
Like for JPEG, the image is processed by 8x8 sub-blocks. Using OpenMP pragmas I set the parallel section to happen on rows of blocks.
Parallelizing every row of blocks makes sense, but I could probably try to do multiple rows at once to see if I can reduce overhead of context switching and potential cache trashing. Parellelizing every block instead turned out to be overkill.
As a rule of thumb, if I think that I could wrap some code into a function with practically no overhead, then perhaps I can make parallel section out of it. In fact, I think that OpenMP eventually grabs that section and makes a function out of it anyway...

Aside from some early decoding artifacts due to my inability to share some variables from outside the "parallel for" (see the example at the bottom here), using OpenMP was really easy. Definitely much simpler than manually creating and reusing threads, also less involved than using Threading Building Blocks because one doesn't need to create functor objects and also because OpenMP is readily available with modern compilers with minimal effort.

cool
zzzzzzzzzz

Hydra

Davide's picture

A couple of days ago I finally asked to my department administrator (a serious name for a nice and tiny girl 8), if I could get a second monitor.
I was practically the only one left with one monitor, and I was starting to feel a bit uneasy.. was I missing on something ?

I only had one day to actually use the dual monitor setting and it seems like it's useful indeed. But more testing is necessary. Will it become a second nature ?!

I can't help but thinking that one of the reasons why dual monitors come so handy is the choice of Windows of having a window full come in foreground when one clicks on it.
I think there are utilities out there to tweak this behavior, but those never quite work for me.

Generally I think I do great switching around applications, but in some cases, when one has code in one window and documentation in the other window, then things tend to get pretty messy: copy, switch, paste, switch, forget, switch, switch, forget, learn, paste... ehhh !!  read more »

More on next-gen 3D graphics hardware programmability

Davide's picture

geri_chess.jpg
A few days ago I was talking about real-time 3D moving towards programmability and now Intel comes out with a more detailed report of their upcoming Larrabee technology. Basically Intel extending CPUs towards the GPU domain.

This is all very cool, but I don't see any mention on actual software technology. We know that Intel has been doing research on Ray Tracing, but the real issue for 3D in games is productivity. Not an easy problem because it involves tools and artists and programmers together.

With all this quality, productivity, predictions, etc, kind of topics floating around, recently, I've been using wikis, PowerPoint and Excel a lot more than compilers 8(

Syndicate content