If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.
OK so in order to not sound like shouting random crap, I've dug into this.
Basicaly I already gave you a workaround for floating point textures, but floating point textures themselves are not patented. Funny, eh? What you mean is the algorith for the shadow mapping.
We are talking about US Patent 7450123.
This patent describes a few things.
1. use of layers.
2. the algorith for calculating how much light shines on a pixel by use of the z-buffer
3. placement in the rendering pipeline.
Now the workaround:
1. Use of layers.
There are two layers:
-the texture layer (oh yeah fscking rly?)
-the depth layer
Why not mix those layers into one layer (preprocessing)?
For example after each pixel color value comes the depth value.
2. the algorith
The algorithm puts the depth layer between the texture layer and the light source. The Z-buffer-values and Z'-buffer-values for each pixel in the texture layer is calculated to determine how much light shines on each pixel color value in the texture layer. After that the color values are 'corrected'.
So why not calculate the angle of the light source that shines on a certain 'deep' pixel and the further the angle to the light source, the darker the pixel will become?
This will eliminate the problem with doing anything with the z-buffer because the further away the light source, the less steep the angle will be. Ofcourse then afterwards another step can be taken to calculate the intensity of the brightness of the entire rendered depth texture as if it was a normal texture. So the further away the light is, the less bright the rendered depth texture will be. Avoiding this algorith entirely while maintaining correctness.
3. placement in the rendering pipeline.
The third thing described in this patent is the placement of this algorith in the pipeline. Now that we have chopped up the algorith into multiple passes, you can literaly place it almost anywhere you like, even avoiding the subpipeline of the algorith itself as described by the patent.
I don't mean any algorithm for shadow mapping. The patent for float colorbuffers is actually US Patent #6,650,327, it is owned by SGI, and their statement in the ARB_texture_float specification is pretty clear (they sued ATI in the past because of it).
As a graphics developer (that's what I was paid for), I use float textures all the time for various effects, and I would not like to design a rendering engine without them. I guess VDrift developers would agree with me here. When I request floats, I don't want scaled ints, because my algorithms would not work with them, clear?
As a driver developer, I would not mind having float textures and colorbuffers in Mesa and the driver I maintain, but most Linux distributions will not enable it by default since it's potentially infringing.
Because you would lose precision. float has 24 bits of precision, but the range is huge. 16-bit int has a sucky range, that's 5 fucking numbers, where would you put the fixed decimal point? There would be terrible losses on both sides of the point, and that's the best int my r500 can do.
Graphics algorithms are often tuned for the underlying data type to get the most from the least. If you change it, you will break it, and next day you get tons of bug reports.
In truth, it's more complicated than that. Please do keep in mind that the following is the observations of someone who has filed one full-on patent and several provisional patent applications in the past.
It's more like 14 years from the grant date for a design patent and 20 years for a utility or plant one.
There may be an offset to the drop-dead date given to Pharma based patents that Congress gives per statute where they offset the time spent in government testing so that they effectively have protection during the testing phases and then have the 14-20 years from the moment it's approved forward.
Patents are not renewable at the end of the term or under any of the other expiry situations that are present with them. As alluded to in the previous paragraph, they can be extended in some selected special cases. There is a maintenance feel that is owed during the duration of the life of the patent on a regular basis (about every 3 years...)- if you don't pay up, the patent expires. It's presumed that if you're not paying the maintenance fee, you're no longer interested in maintaining the monopoly it grants you for whatever reasons.
For most things, the story is 20 years from the date that it is granted. You can't use patented or patent pending on things that don't have a patent application pending or granted on a given thing. You have no protections in the normal sense of things if you don't have the patent granted- "patent pending" is truthfully of limited use, other than warning people that they may get cut off (if you can't prove proof of prior art preceding the patent application, you can be deemed to be infringing the moment the patent is granted...).
Now, this doesn't get into obviousness, patentability of software, prior art, etc. Each of these can invalidate a patent out of the gate. The big problem is how expensive it is litigating anything in the patent space- on either side of that courtroom. A patent is only worth the amount of money you can litigate it over. Trying to bust patents is only going to go as far as you've got deep pockets to fund that endeavor.
Does it need to change? YES. Not in terms, but in more what IS and ISN'T acceptable and lower the bar to entry to invalidate obviously incorrectly granted patents.
I understand what you're getting at and I agree if it involves a magic cancer cure, the GUI, etc... but this patent solely patents using floating points in devices that do 3D computations and have framebuffers. That is like patenting integers! Absolutely rediculous! This does not took more than literaly 3 seconds of 'research' whatsoever.