How Cg favors NVIDIA products (at the expense of others)

Dio said:
Here's a hypothetical:

1. nvidia opens Cg, but retains full copyright.
2. Matrox, ATI, SiS, etc. develop Cg compilers to join in with nvidia.
3. Games developers, encouraged by the wide support, start making heavy use of Cg.
4. 2 years down the line, just as the games start to ship in bulk, nvidia exercise their copyright and say 'Right, now it's being used, pay us a licence fee of $50 for every chip you've shipped that can use Cg applications, or stop using Cg'. Boom - every game only runs on nvidia hardware optimally.

First... CG Applications? There is no such thing: the applications itself would be using either DX or OGL API on top of which CG sits. Second, how does it translate in hardware licensing fee? That would be akin to me writing an x86 BASIC compiler and then demanding licensing fees from the likes of AMD and Intel, since they can their CPUs are capable of running applications I compiled.
 
Dio said:
4. 2 years down the line, just as the games start to ship in bulk, nvidia exercise their copyright and say 'Right, now it's being used, pay us a licence fee of $50 for every chip you've shipped that can use Cg applications, or stop using Cg'. Boom - every game only runs on nvidia hardware optimally.

There is no such thing as whole Cg applications. Cg is about writing shaders which has to be exposed through an API (DX or OpenGL) and has be to used from within a game application.

You can always just skip Cg and write the shaders with other tool or by hand in assemble code. Maybe this misunderstanding is why people fear Cg? Just a thought...
 
I'd strongly suggest all of you worried about licensing consult a book about contract law before you make too many "sky can fall" posts. Most of the hypotheticals you're proposing are completely illegal.

And, someone correct me if I'm wrong, but I believe SGI maintained quite a bit of control over the OpenGL spec for a while after the ARB was created (I believe the ARB's official position was to suggest changes to the OpenGL specification to SGI, with SGI having the only deciding vote), and the license was closed up until 3 or 4 years ago (SGI open-sourcing OpenGL was a major change in policy, from what I remember).
 
Although I have nothing against "tools" such as Cg, someone wanted a technical answer, so I'll give a technical example-

The following Cg code:
----------------------
Code:
#pragma bind appin.Position = ATTR0
#pragma bind appin.Normal = ATTR2

struct appin : application2vertex  {
      float4 Position;
      float4 Normal;
};

#pragma bind vertout.HPosition = HPOS
#pragma bind vertout.Color0 = COL0

struct vertout : vertex2fragment  {
    float4 HPosition;
    float4 Color0;
};

#pragma bind main.ModelViewProj = C 0
#pragma bind main.ModelViewIT = C 4

vertout main( appin In,
                     uniform float4x4 ModelViewProj,
                     uniform float4x4 ModelViewIT,
                     uniform float4 LightVec)  {
     vertout Out;
     Out.HPosition = mul(ModelViewProj, In.Position);
     float4 normal = normalize(mul(ModelViewIT,In.Normal).xyzz);
     float4 light = normalize(LightVec);
}
---------------

Compiled and linked... will only run on NVxx chipsets. As developers are handed the compiler and back-ends and told to "go to town"- the end result cannot be used on ATI, Matrox, P10 or any other chipset except NVIDIA's.

The other IHV's, likely focusing on delivering DX9 HLSL functionality, are now given a short-to-market expectation to be set and schedule managed by a competitor who will dictate maintenance and delivery schedules, and may do so as it sees fit.

Pretty simple. :)
 
Because I am ignorant, what about that code snippet is NVIDIA specific? Why will it only compile and run on an NVIDIA part?
 
Joe, please... you always doubt NVIDIA. Has been the case during 3dfx's lifetime, still is th case for you.

Again, your argument is flawed simply because developers have the choice to use or not to use Cg. It is there to be used if you want to use it. You cannot attack NVIDIA for promoting it... it's just business. But ultimately the fact of the matter is that you have the choice to use it or not to use it. We don't need forums such as this to raise issues... the people that matter makes the decision out of their own free will based on information they receive (that are based on questions they may have). These folks, the developers, are not stupid or ignorant about 3D programming or about making games that sell (both of which, you and I, aren't very proficient about) - they're not going to adopt or use something if they don't really see the need for it or if it will limit the success of whatever it is their doing.

So, just drop with your Cg-is-needless crusade, Joe. Yes, to be honest, with the probability of DX9 HLSL and OGL2.0, it may eventually be needless but tell me, are you being forced to accept Cg or forced to use it? Again, the forum visitors may be gullible and ignorant but to the folks that are privy to the complete inner workings of Cg (and DX9 and OGL2.0), they're most definitely not.

Forums in websites such as this are the least of a IHVs worries... they have dev rel departments that handle scenarios that matter way more than potential issues raised by folks in website forums that will have absolutely no say in the way software is made/created.
 
Oh, and if there ARE developers that chose specific Cg codes that wil only run on NVIDIA hardware, that's their decision, their risk of potential limited sucess, etc, etc. Please don't tell me you think so little of developers.

This Cg-is-needless argument is so stupid.
 
Sharkfood, where did you get that code snippit from? I don't see how it will even compile without a return statement in the main.
 
My reference to 'Cg applications' was 'Applications that contain code in Cg, which will therefore rely on the HW-specific video driver implementing the API (OpenGL / Direct3D / whatever) to contain a compiler for Cg code to target that particular HW platform'.

These compilers for Cg code will be subject to nvidia's copyright - at the very least of the Cg name. See the dispute between Microsoft and Sun over Java for how an 'Open' specification can get awfully messed up.

As said, if a contract exists that specifies completely open licensing then what I described would be illegal, but that implies a contract can be negotiated between nvidia and other IHV's. nvidia have said they will be reasonable on contract and licensing terms, but if that includes the ability to withdraw the right to produce a Cg compiler other IHV's will doubtless be nervous about getting involved.

I do know about the SGI control freakery and restrictive, but since it is largely now in the past I didn't mention it.

It was a hypothetical, meant to illustrate that there are fraught legal issues even once the technology has been open-sourced (remember: free speech, not free beer). I don't expect it to happen.
 
Some thoughts from gaming perspective:

1- If Cg will succed depends only on the developers acceptance of Cg, not on what we from this forum think about it.
2- Cg language development will be controlled by Nvidia.
3- Cg is a Nvidia trademark.
4- I am not naive and nobody waste money developing a language like that to be nice to the competitors in a market with fierce and fast competition like the desktop 3D market.
5- My guess nobody will have a really good game tomorrow developed using Cg :LOL:
6- Cg is a CONSEQUENCE of the underlying HARDWARE and ALGORITHMS technology.

As a gamer/consumer I would rather see some open tools & standards used by the 3D industry in the long run.
Gollum:
Standford RTSL, go go go!

Serisouly though, as a consumer, I could care less about open standards, as long as we finally get to have some sort of standard that helps improving the amount of advanced features in upcoming games. If I have a choice between two similarly powerfull alternatives, and one is an open alternatives, I'd choose it any day. But if I have two similarly powerfull choices, yet the open standard is going to be months or even years late, I'm all for going with the proprietary solution for the time being.

Things are constantly evolving, just because one standard might be chosen today, doesn't mean its gonna last forever. Newer, better things are going to appear over time and replace the first couple of solutions, it's always worked like this...
If Cg is so simple (as someone said in this thread) I dont see a reason to not have an open standard. Nothing will stop a developer to use it if he/she want, but I hope the industry will develop/use an open standard for the future.

Cg maybe like sugar, so sweet and we want more now, but in the long run it may have some side effects.

Kudos to nVidia to have all this technicall capability and competitiviness, but I want more competition not less competition in the 3D desktop market in the long run.
I want good quality, open standard, low price cards from many vendors like SIS and others. Only when many, many people around the world have advanced pervasive 3D technology there will be a large installed base to 3D based real time applications and innovations (including games).

The lack of large installed base is what prevented us of having good looking games like Doom3, UT2003 and U2 before.

Happy gaming :)
 
So...anyone feel like answering my comments here?

It seems to me there is a lot of text answering non-specific points, and not really getting anywhere in general. Perhaps refuting(?), the issues I raise might be a more direct way of addressing the issue at hand instead of going round and round/back and forth? At the least it will refine the argument a bit, since I haven't seen an answer in the pages since.

EDIT: please use my name or quoting if you reply to me, as I've seen responses that are posted at a time where they might be a reply to me, but they don't seem to address any of the points I raise in that post.
 
Well, it seems obvious to me that, right now, nobody knows of a single thing that Cg does that is at the detriment of other companies.

There are still some people that fear that nVidia will exercise control over the software at some time in the future that will hurt the other companies in a major way.

I really don't see it happening. As another pointed out, the scenario of distributing under a free license, and then charging, is illegal. I'm not aware of any other things that nVidia could do that would allow Cg to hurt other IHV's.
 
I'm still questioning what about the language specification would make it possible to co-opt to make it vendor specific?

Until we can identify that this is a technically possible risk, its silly to talk about the consequences of it being motivationally steered.

Would adding a new data type (i.e. FP64, for example) be an example of that? Would that change the language specification, or is that simply something that is specified for a profile?

Are there new fangled control loops that could be added that would give somebody a leg up on their competition if railroaded into the specification?

Is there a missing operator that could be added in the future that only one vendor would care about?

Bitwise operations?
 
Heh, I'm answering that in your other thread, reply there. ;)

For the discussion going on in this thread, I think refuting or atleast discussing the points I raise in detail would be productive.
 
Chalnoth said:
Well, it seems obvious to me that, right now, nobody knows of a single thing that Cg does that is at the detriment of other companies.

There are still some people that fear that nVidia will exercise control over the software at some time in the future that will hurt the other companies in a major way.

I really don't see it happening. As another pointed out, the scenario of distributing under a free license, and then charging, is illegal. I'm not aware of any other things that nVidia could do that would allow Cg to hurt other IHV's.
Maybe because there is not now or because is too early to tell.
When you control the trademark, and the evolution of a new HLSL you control a lot of things :rolleyes:
 
An observation re: the objectivity of people's opinions in this thread:

Every person who is known to be a strong "supporter" of Nvidia has good things to say about Cg.

Every person who is known to be a strong "supporter" of ATI has bad things to say about Cg.

Coincidence? I don't think so. If everyone was able to objectively evaluate the merits of Cg without regard to which company produced it, we would not see opinions so clearly divided between the ATI and Nvidia camps. It is obvious that everyone's "preferences" are affecting their judgement when evaluating Cg.

That said, I also observe that among those who have proven to be the most objective in their evaluation of all things 3D (Reverend, others), the concensus seems to be somewhere along the lines of "having another option in shader langauges is a good thing, but ultimately the market (3D developers) will decide if it lives or dies based on it's true merits."

Is there really any point in arguing this further?
 
I'm still questioning what about the language specification would make it possible to co-opt to make it vendor specific?

There seems to be two conflicting arguments going on surrounding this:

Argument 1) nVidia introduced the Cg language partially becuase they need to expose hardware or capabilities that the other HLSL won't. This implies that Cg HLSL enables nVidia specific functionality...one HLSL is more "suitable" for nVidia hardware compared to another. Thus, by nVidia controlling the Cg language spec, they have been able to specifically tailor it to an extent for their hardware.

Argument 2) HLSLs aren't "implementation" specific. So it doesn't matter who controls them.

How can those arguments be resolved? (Or are those arguments not correct?)
 
Back
Top