Hey all...I'm not on the dev team, but sorta have developed a general interest in modelling, textures, shading, etc.. I am trying to learn the basics. I asked some dumb questions earlier on bump mapping...I was trying to jump into things ass-backwards.
I was wondering if there was a quick tutorial somewhere - or maybe on wiki - that gives a general intro on the techniques Allegiance currently uses for the base and ship modelling. I saw that there was a good thread on creating the models themselves. I was more interested in the general techniques the code uses. Now, like I said, I am new to the various techniques themselves...but would like to know whether the code uses vertex shader techniques or has the capability to SUPPORT pixel shaders.
Also, when the code was recently updated (I believe in R5), I know major changes to the graphics engine were made...exactly what were these in laymens terms? I believe it had something to do with DirectX. Does the code surrently support use of HLSL? If I sound like an idiot, it's because I am...but would like to learn and was hoping someone out there wouldn't mind helping me learn. In the process of teaching me...it might provide good data for a wiki article or two (if the info doesn't already exist).
Quick Guide to Alleg Graphics
One of the buzzwords added in R5 was Hardware Transform and Lighting.
I'm trying to figure some of this stuff out too. I've been glancing at the code, but I know nothing of C++ atm.
I'm trying to figure some of this stuff out too. I've been glancing at the code, but I know nothing of C++ atm.
[img]http://www.freeallegiance.org/forums/st ... erator.gif" alt="IPB Image">
<img src="http://adaven6x7.googlepages.com/PKBanner3copy.png[/img]
<img src="http://adaven6x7.googlepages.com/PKBanner3copy.png[/img]
I looked at the wiki and looks like there are a bunch of place-holders under game documentation for this. May be a good time to compile some of this data. I think I'll download Visual Studio 2010 beta and see if I can't compile the code and start looking at it.

"What if, star sailor, I were to come over your house and punch you in the $#@!ing face?!
Will that finally get you to shut the hell up?!?" -- neotoxin
I think I've read before that Hardware T&L transforms everything into (vertex) shaders (ASM, I'm sure, not HLSL), at the hardware level. But this doesn't really help you. Direct3D 9 (and 8) supports shaders, but the Allegiance engine doesn't.fishbone wrote:QUOTE (fishbone @ Apr 16 2010, 08:30 PM) Hey all...I'm not on the dev team, but sorta have developed a general interest in modelling, textures, shading, etc.. I am trying to learn the basics. I asked some dumb questions earlier on bump mapping...I was trying to jump into things ass-backwards.
I was wondering if there was a quick tutorial somewhere - or maybe on wiki - that gives a general intro on the techniques Allegiance currently uses for the base and ship modelling. I saw that there was a good thread on creating the models themselves. I was more interested in the general techniques the code uses. Now, like I said, I am new to the various techniques themselves...but would like to know whether the code uses vertex shader techniques or has the capability to SUPPORT pixel shaders.
Also, when the code was recently updated (I believe in R5), I know major changes to the graphics engine were made...exactly what were these in laymens terms? I believe it had something to do with DirectX. Does the code surrently support use of HLSL? If I sound like an idiot, it's because I am...but would like to learn and was hoping someone out there wouldn't mind helping me learn. In the process of teaching me...it might provide good data for a wiki article or two (if the info doesn't already exist).
Although a new lighting mechanic could probably be added in using per-pixel lighting without the actual use of HLSL or shaders in the engine.
KG, correct me where I'm wrong.
Last edited by Orion on Sat Apr 17, 2010 2:58 pm, edited 1 time in total.
Hardware Transform and Lighting is a DirectX 7 feature and has always been supported by Alleg engine.
R5 introduced a shift to Direct3D 9 API instead of Direct3D 7 previously used. But it's just a 'shift' of API.
it's not , like said, a major change in the engine. The same functionalities & code was adapted to call the Direct3D 9 functions instead of Direct3D 7 ones. It's mainly a removal of the old DirectDraw code.
So the engine still does "Hardware T&L" only and uses only the "fixed function pipeline" but by calling the Direct3D 9 layer this time.
All the new and fancy modern GPU stuff like vertex and pixel shaders, HLSL, bump and texture mapping which where introduced by Direct3D 8 and 9 are still not used by the Allegiance engine.
But the engine is now ready for them...
Oh wait but Direct3D 11 is out now, and it's using the new Direct3D 10 architecture.
so yeah we're screwed because Allegiance engine is 2 generations late actually. R5 was an upgrade to be able to use new 8&9 features but today games are using 10&11 features.
Also programming with the 8&9 architecture is complex and tricky. While programming with 10&11 is much more simple and efficient... so we're even more screwed actually.
It would be much worthy to completely switch to a new engine actually than trying to add features to the R5 engine.
R5 introduced a shift to Direct3D 9 API instead of Direct3D 7 previously used. But it's just a 'shift' of API.
it's not , like said, a major change in the engine. The same functionalities & code was adapted to call the Direct3D 9 functions instead of Direct3D 7 ones. It's mainly a removal of the old DirectDraw code.
So the engine still does "Hardware T&L" only and uses only the "fixed function pipeline" but by calling the Direct3D 9 layer this time.
All the new and fancy modern GPU stuff like vertex and pixel shaders, HLSL, bump and texture mapping which where introduced by Direct3D 8 and 9 are still not used by the Allegiance engine.
But the engine is now ready for them...
Oh wait but Direct3D 11 is out now, and it's using the new Direct3D 10 architecture.
so yeah we're screwed because Allegiance engine is 2 generations late actually. R5 was an upgrade to be able to use new 8&9 features but today games are using 10&11 features.
Also programming with the 8&9 architecture is complex and tricky. While programming with 10&11 is much more simple and efficient... so we're even more screwed actually.
It would be much worthy to completely switch to a new engine actually than trying to add features to the R5 engine.
So, we've made the jump to dx 9 from 7, but not taken advantage of any of the new fancy stuff, and now you're talking about switching to 10 / 11... Are we gonig to be forever playing catchup with the latest DX version and never implementing anything fancy?
Given that only the very latest gfx cards support dx 11, and not everyone with older cards can do dx 10, I would think we might want to be implementing some of the fancier things, so that by the time we switch dx versions people have cards that suport them. If dx 11 was used and people's hardware didn't support it would it automatically translate the call to an older version of dx that is supported, or jsut go and do it in software (big performance hit for the people with older systems)?
I've noticed newer games often let you select dx version (with ones not available on your system disabled), could we do that? - if you want to have fancy new stuff, then you have to new dx 10 / 11 (which is easier for you to program), if you don't have that you keep everything as it is with dx 9.
Given that only the very latest gfx cards support dx 11, and not everyone with older cards can do dx 10, I would think we might want to be implementing some of the fancier things, so that by the time we switch dx versions people have cards that suport them. If dx 11 was used and people's hardware didn't support it would it automatically translate the call to an older version of dx that is supported, or jsut go and do it in software (big performance hit for the people with older systems)?
I've noticed newer games often let you select dx version (with ones not available on your system disabled), could we do that? - if you want to have fancy new stuff, then you have to new dx 10 / 11 (which is easier for you to program), if you don't have that you keep everything as it is with dx 9.
Last edited by madpeople on Mon Apr 19, 2010 9:33 am, edited 1 time in total.
I never say we should switch to 10/11. reread me.madpeople wrote:QUOTE (madpeople @ Apr 19 2010, 11:27 AM) So, we've made the jump to dx 9 from 7, but not taken advantage of any of the new fancy stuff, and now you're talking about switching to 10 / 11... Are we gonig to be forever playing catchup with the latest DX version and never implementing anything fancy?
you forget the context & background of how things are done here:
We didn't switch to dx 9 as a 'planned, carefully designed' project with 'future fancy features' in mind.
Someone (Doofus) did the switch on his own and then proposed it. Since that switch looked good and solved a fps issue on recent NVidia cards it was accepted and made it to R5 (after some heavy bug fixing for Intel cards and other glitches). So it was more an opportunity than a planned project. A "big change" to fix an issue followed by "more fixes" to fix what that "big change" broke elsewhere...
From a purely 'project management' point of view, this was a big waste of time & resource for everyone but well, what's done is done. At least, I hope, some lessons have been learned here. I did learn a few for sure.
But now we do have this dx9 alleg engine. Up to us to use it or not.
Now, from a theoretical point of view, IMHO, the good approach would be get ride of Alleg engine and use another game engine, preferably a free, multi-platform open source one. why ? because with current alleg engine, every time we want to add a new fancy gfx stuff to the game we need to add it at the 'game' level, the 'art' level and then code it inside the engine too at the dx level (a low and complex level). The cost is big and requires different skill sets. Such way of doing is only done by a very few big game studios because they want to have the latest top notch fancy features. Most pros use an existing engine and work on top of it, it's more than enough.
Given that we want alleg to run on most configs, given that our devs resources and expertise are limited, adopting an existing engine could radically change Alleg development. Furthermore by leveraging experiences and people from other games using the same engine. Even art and tools too.
Now, from a practical point of view, the problem is that changing to a new engine is a BIG, very BIG thing to do, bigger than the dx9 change was.
Simple changes here and there by adding some new little stuff are the only possible things atm.
so Alleg is kinda screwed on this for now. But who knows ...
Ah, yeah, sorry about the HTL comment then, I must have misunderstood an old conversation with doofus. Thanks for clearing that up.
[img]http://www.freeallegiance.org/forums/st ... erator.gif" alt="IPB Image">
<img src="http://adaven6x7.googlepages.com/PKBanner3copy.png[/img]
<img src="http://adaven6x7.googlepages.com/PKBanner3copy.png[/img]
wouldn't it be simpler and more efficient to make use of the D3DX Effects framework?KGJV wrote:QUOTE (KGJV @ Apr 19 2010, 12:01 AM) Hardware Transform and Lighting is a DirectX 7 feature and has always been supported by Alleg engine.
R5 introduced a shift to Direct3D 9 API instead of Direct3D 7 previously used. But it's just a 'shift' of API.
it's not , like said, a major change in the engine. The same functionalities & code was adapted to call the Direct3D 9 functions instead of Direct3D 7 ones. It's mainly a removal of the old DirectDraw code.
So the engine still does "Hardware T&L" only and uses only the "fixed function pipeline" but by calling the Direct3D 9 layer this time.
All the new and fancy modern GPU stuff like vertex and pixel shaders, HLSL, bump and texture mapping which where introduced by Direct3D 8 and 9 are still not used by the Allegiance engine.
But the engine is now ready for them...![]()
Oh wait but Direct3D 11 is out now, and it's using the new Direct3D 10 architecture.
so yeah we're screwed because Allegiance engine is 2 generations late actually. R5 was an upgrade to be able to use new 8&9 features but today games are using 10&11 features.
Also programming with the 8&9 architecture is complex and tricky. While programming with 10&11 is much more simple and efficient... so we're even more screwed actually.
It would be much worthy to completely switch to a new engine actually than trying to add features to the R5 engine.
MOGRE? (Technically a graphics engine, not a full game engine)KGJV wrote:QUOTE (KGJV @ Apr 19 2010, 06:07 AM) Now, from a practical point of view, the problem is that changing to a new engine is a BIG, very BIG thing to do, bigger than the dx9 change was.
Simple changes here and there by adding some new little stuff are the only possible things atm.
so Alleg is kinda screwed on this for now. But who knows ...
http://www.ogre3d.org/wiki/index.php/MOGRE
It would be awesome if we could port Allegiance over to C# (along w/ a 3rd party engine)
Last edited by Orion on Mon Apr 19, 2010 9:11 pm, edited 1 time in total.



