@Raven
"Rob transposing is just copying the buffered data onto the projection surface ... essentially similar to the Sync command"
Wrong again, Raven. Transposing a matrix means to flip it diagonally like so:
Orginal Matrix:
{1 2 3
4 5 6
7 8 9
10 11 12}
Transposed Matrix:
{1 4 7 10
2 5 8 11
3 6 9 12}
"CgFX & Cg are identical... all CgFX is, are the nv3x Extensions to the Cg language."
I take it from your silence on the HLSL being identical to .FX issue you are tacitly admitting that I was right.
Anyway, when I first read this my jaw nearly dropped to the floor. Anyone, and I mean ANYONE who was even briefly familiar with CgFX and knew what it was could not possiably believe this.
CgFX is a file format for Cg shaders akin to the .fx file format for HLSL. In fact, they are
identical.
Here is the very first paragraph of a document titled "CgFX_Overview" found in the Cg sdk:
Quote: "
WHAT IS CGFX?
CgFx is a powerful and versatile shader specification and interchange format. As a file format, it is identical(emphasis mine) to microsoft's .fx Effect format for Directx 9."
"Although Cg is compatible (keyword here & in all the documentation) with HLSL's .fx format - they do have to be altered prior to use."
Read the above quote.
"Cg has over 120 extra registered instructions than HLSL"
Yeah. Right. I'll believe that when I see it. Why don't you post one of these extra registered instructions. Or better yet, tell us what your source for all of this info is. Oh wait, I forgot. Backing up your outrageous claims with even a little bit of evidence isn't your "stlye."
"CgFX has an addition 45 extra registered instructions and registers than Cg"
CgFX isn't a programming language Raven. It can't have instructions and registers.
"if you don't use the Cg/CgFX libraries when you run these then they just won't work - end of story."
Yes, actually they will. Barring any use of the fixed data type, Cg is basically identical in terms of syntax to HLSL. Ergo, if you can use HLSL without the Cg/CgFX libraries then you can use Cg without them as well. Same applies for CgFX. (Note: what I mean when I say you can use them without the Cg/CgFX libraries I'm implying that you use the HLSL/.fx compiler instead.)
"ofcourse they'll work if you convert to asm .psh/.vsh/.nvv or hlsl .fx ... but they won't work natively."
All shaders have to be converted to asm eventually Raven. I thought we went through this before. And, what the hell do you mean by natively? You're not seriously suggesting that you can just throw a Cg text file at a GPU and it will understand it are you?
"and this is what seems to illude most people in they thing of Cg and CgFX. yes they are compatible, just like C is compatible in C++"
I still don't get why you started ranting on and on about CgFX when no one has even mentioned it yet. Is this just your lame attempt at drawing attention away from the fact that .fx and HLSL aren't the same and that you were wrong about that?
"but that is the keyword in all of this, they are not identical and if you start using the language specifics of Cg, then you MUST precompile it to a valid format for DirectX9 unless you use the Cg interface."
This one actually brought a simle to my face. You are, for once, completely correct and in line with what I've been saying all along.
"have fun trawling through documentation "
More like glancing through the documentation. It really isn't hard to disprove you Raven.
"and feel free to argue against this "
"... but considering i've spent the past year and a half learning about Shaders and i've spent the past 4months developing an exclusively CgFX engine in DirectX9 i can tell you exactly what it is and is not capable of."
Tell me, yes. Be correct, no. I'd suggest that you have a look again at the documentation. Oh, and 4 months is an awfully long time to spend just to get the limited advantage of using the fixed data type. The real advantage of Cg is in cross-platform compatiablity and if you are limiting yourself to DirectX 9 you may as well just save yourself the trouble and stick with HLSL/.fx.
"just try using the command dp3( ) ... in you .fx files and see how compatible it believes they are then.
my example has a dp4 remade because .fx DOES NOT support it - but .cg DOES!"
Sorry Raven but there is no such command in Cg or HLSL. There is a dot command which is in both languages and does what you want but there is no dp3/dp4(is that a typo?)() command. I think your getting your assembly confused with your Cg/HLSL.
"compatibility doesn't ever mean "will work 100% of the time and identically" in software programming."
Correct, though neither I, nor any one else in this thread have claimed such.
"i mean fgs we're talking about Microsoft and nVidia ... wake up people - these guys are hardly reknown for thier software compatibility."
True, but whether they are reknowned or not for their software compatiablity is irrevelevent to whether the software in question is actually compatiable or not. Microsoft and Nvidia have had products that were compatiable before.