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.
![]() |
|
|
#1 |
|
Junior Member
|
I didn't have time to wade through several hundred posts, (I despise this forum format for any sort of catch-up on discussions) but my point is simple.
If ATI is "disabling" the bilinear anisotropic or trilinear modes when color mip maps are used, this may not be cheating. It is PERFECTLY ACCEPTABLE to sample from only one mip-map (the larger one) rather than linearly interpolate between two if trilinear is on, provided enough samples are taken on the larger mipmap, provided the smaller mipmaps are linear downsamples of the larger one, and provided the algorithm is correct. --------- Scott's Trilinear optimization correctness theorem: If a lower level mipmap is simply a straight linear down-filter of the higher level map, then all the data required to render a scene can be found in the high detail map, and using multiple mipmaps IS NOT NECESSARY provided the algorithm samples enough texels in the high detail mipmap to retrieve and integrate the information lost by neglecting the lower level mipmap. Additionally, to be correct, such an optimizing filtering algorithm must mimic filtering methods that interpolate between mipmaps and have no discontinuity at mip level boundaries. --------- If their drivers simply detect when lower level mipmaps are close enough to simple downfiltered maps and enable this optimization, it is not cheating at all. Your visual quality will not be impacted by using only one mip level at a time since all the information in the lower level map is contained in the larger one. That said, I'm not sure that ATI's specific optimization passes my correctness test or not. But I've always thought that blending between two mipmaps was a pointless excercize if you already HAVE the data from one mipmap contained in another and the texels are cached and ready to be read. This is in no way some sort of fanboyism, I've been an advocate for this since the S3 Savage3D did it. The ONLY reason trilinear existed in the first place was to save bandwidth and to save processing power, and sample and filter only 8 texels (4 from each level) instead of 16 from the top level. (Assuming isotropic). If processing power is free or near it (hardware interpolation) and caching means that bandwidth is also almost free for cached data, then such optimizations can make sense. |
|
|
|
|
|
#2 |
|
Member
Join Date: Apr 2003
Posts: 113
|
It's not cheating as long as it is not being called, "Full Tri-Linear Filtering." 8)
|
|
|
|
|
|
#3 | |
|
Member
Join Date: May 2003
Posts: 540
|
Quote:
|
|
|
|
|
|
|
#4 | ||
|
Member
Join Date: Apr 2003
Posts: 113
|
Quote:
*Going to be using the NV17 example here since Dave had supplied the shots here already and so forth. 1) Going by the shots of the NV17's "Tri-linear Filtering" method, do we assume that anything less than that example is not to be considered "Tri-Linear Filtering?" 2) Are we suggesting that ATi has now "redefined" what is considered "Tri-Linear Filtering" as not many can actually see the difference from the "Legacy" method (NV17 in this example)? 3) Is there even a need for the terms (Bi-Linear Filtering) or (Tri-Linear Filtering) any longer? Should they just be called, "Filtering Methods," or something to that effect? 4) Who draws the line between "subtle" IQ degradation and illegal "Optimizations?" 5) As a result of this, what is the definition of a *illegal "Optimization?" Some see the difference, some don't. If some can't tell the difference between mix mode FP16/FP32, are we now suggesting this is a valid optimization? Inquiring minds would like to know.... 8) |
||
|
|
|
|
|
#5 |
|
Senior Member
|
Take a look:
http://v3.espacenet.com/textdoc?DB=E...;IDX=US6452603 http://v3.espacenet.com/textdoc?DB=E...;IDX=US6304268
__________________
GPU blog |
|
|
|
|
|
#6 |
|
Member
|
a simple example:
if you know the higher levels are simply downsampled from the lower levels, then the higher level is just the bilinear equally weighted combination of the lower 4 texels. if you now know by measure or settings, that this is true, then you can only sample the 4 texels at the lower level, and bilinear filter them twice. once, with the texcoords, and once with 0.5,0.5 to equally weight them. and _then_ you can linear weight between those, to do the full trilinear filtering. now this is a linear combination of only 4 values. that means, if you adjust the texcoord, with a weighted shift towards the center in the 4-sample-quad, you get EXACTLY the same as with the other samples else. except for one fact: the higher level sample is just a point-sample. non-the-less, it is near-to-trilinear with only 4 samples instead of 8. and about enough in a lot of cases, depending on the input data. this _could_ be one way they do it. |
|
|
|
|
|
#7 | |
|
Recurring Membmare
Join Date: Aug 2003
Location: yes
Posts: 2,494
|
Quote:
The whole purpose of texture filtering is to maximize material frequency within the constraints given by the Nyquist theorem. AFAIK there's exactly nothing wrong with "legacy" (?!) trilinear filtering in this respect. |
|
|
|
|
|
|
#8 | |
|
Junior Member
Join Date: Jan 2004
Location: Here
Posts: 35
|
Quote:
Consider a checkboard pattern. A white to black transistion for adjacent pixels is a step discontinuity. In the frequncy domain, it has infinite harmonics, therefore no amount of samples will be sufficent |
|
|
|
|
|
|
#9 | |
|
Join Date: Jun 2003
Posts: 367
|
Quote:
I think ATI should be praised for including extra hardware on chip for free trilinear. it is a first for 5 Years (?) that any IHV includes hardware for trilinear. Nv3x doesn't count because it included specialized hardware for not doing trilinear. (that was for Chalnoth) |
|
|
|
|
|
|
#10 | |
|
Junior Member
Join Date: Dec 2003
Location: private apartment near ring0
Posts: 58
|
Quote:
__________________
"Violence is the last refuge of the incompetent" - Salvor Hardin |
|
|
|
|
|
|
#11 | |
|
Join Date: Jun 2003
Posts: 367
|
Quote:
|
|
|
|
|
|
|
#12 | |
|
Nutella Nutellae
Join Date: Feb 2002
Location: San Francisco
Posts: 4,308
|
Quote:
|
|
|
|
|
|
|
#13 | |||
|
Recurring Membmare
Join Date: Aug 2003
Location: yes
Posts: 2,494
|
Quote:
However, you can fit a frequency bounded curve over that array that will exactly touch each texel center. This represents another view on the map: a texel is a single point on the surface of the map, and there's non-zero distance between texels. This model has no discontinuity concerns, and IMO this is the right way to look at it (not from an implementation's POV, but from a signal theory POV). After all, if the flush rectangle theory were correct, point sampling would be the preferred technique for texture magnification. It isn't. Quote:
|
|||
|
|
|
|
|
#14 | ||
|
Junior Member
Join Date: Jan 2004
Location: Here
Posts: 35
|
Quote:
adding noise to the final image might be a good way of adding fake high freqency data. Filter texture -> Sample texture -> Add noise to sample |
||
|
|
|
|
|
#15 |
|
Monochrome wench
|
That would effectively be similar to using a procedually generated detail texture.
|
|
|
|
|
|
#16 |
|
Junior Member
Join Date: Jan 2004
Location: Here
Posts: 35
|
Pretty much. That kind of technique has been used for image processing before.
Someone could implement it as a smart shader, and try it out One more thing. You probably need to know if the source texture had a high freqency component to begin with....it would look really silly to add noise to a sky texture (for example) |
|
|
|
|
|
#17 | |
|
Irregular
Join Date: Feb 2002
Posts: 1,170
|
Quote:
Reproducing the lower level mipmap from the lossy compressed higher level mipmap will have higher quality than the lossy compressed lowel level mipmap. That means the "fast-trilinear" filtering can actually improve IQ. |
|
|
|
|
|
|
#18 | |
|
Irregular
Join Date: Feb 2002
Posts: 1,170
|
Quote:
D3D doesn't support driver generated mip-maps. Therefore there isn't many game that would be affected by it. Btw, ATI said their method works as long the application used a box filter for generate the miplevels. The driver analyses the texture to detect such situations. It doesn't generate the mipmaps. |
|
|
|
|
|
|
#19 |
|
Mostly Harmless
|
One of the things I love about B3d is that when someone throws out "Nyquist theorem", it doesn't put the whole room to sleep, or cause a chorus of abusive "wtf!". Here eyes squint, hands start inching slowly toward belts, and a Sergio Leone soundtrack starts up. . .
__________________
"We'll thrash them --absolutely thrash them."--Richard Huddy on Larrabee "Our multi-decade old 3D graphics rendering architecture that's based on a rasterization approach is no longer scalable and suitable for the demands of the future." --Pat Gelsinger, Intel ". . .its taking us longer than we would have liked to get a [Crossfire game] profiling system out there" --Terry Makedon, ATI, July 2006 "Christ, this is Beyond3D; just get rid of any f**ker talking about patterned chihuahuas! Can the dog write GLSL? No. Then it can f**k off." --Da Boss |
|
|
|
|
|
#20 | |
|
Junior Member
Join Date: Jan 2004
Location: Here
Posts: 35
|
Quote:
Plus you need to add in the tool that generated the scaled texture and mip maps. Bring on the procedural textures! |
|
|
|
|
|
|
#21 | |
|
Senior Daddy
Join Date: Feb 2002
Location: London
Posts: 1,869
|
Quote:
__________________
Savage 4 > Voodoo 3 3000 > Voodoo 5 5500 > Radeon 8500LE > Radeon 9700 Pro > GeForce 6800 GT > Radeon X1950Pro > Radeon HD 3870 > Radeon HD 3870X2 > 3870X2 + 3870>3870X2>HD4850>Crossfire HD4850>HD 5850 |
|
|
|
|
|
|
#22 | |
|
Epsilon plus three
Join Date: Feb 2002
Location: Chania
Posts: 7,818
|
Quote:
Ironically I've developed a "not again-allergy" every time I read the term optimisation lately. |
|
|
|
|
|
|
#23 | ||
|
Join Date: May 2002
Location: New York, NY
Posts: 12,679
|
Quote:
B. It's not free. Quote:
__________________
April 20, 1979 - America must never forget. |
||
|
|
|
|
|
#24 | |
|
Trollipop
Join Date: May 2003
Location: Australia
Posts: 1,630
|
Quote:
Lets do some math with the 1 bilinear sample Lets say A is the LOD of the Higher Mipmap and B is the lod of the lower mip map. Now let X be the actual lod. As X tends towards B from A the bilinear sample will remain constant. Because you are taking the same exact sample from the higher mipmap every time. So when X is infinitaly close to B it is still fine by your therom. So unless their is some major jump between "infinitaly close to B" then sample at B should be the same as a sample at A. So now we can subsitute B for A and we can now use the Next lower MipMap C. Repeat and we find out as long as we are doing linear downsampling we don't need mipmaps at all. Your theory isn't correct when using 1 blinear sample it probably is correct when using 16 or 20 tap sample ( 4/5 wieghted bilinear samples ) but at that point it is far far far worse preformance wise.
__________________
Trolls find me soo tastey :P |
|
|
|
|
|
|
#25 |
|
Member
|
depends, because if there is chance that you only need to load in one mip-layer into cache you can sample much quicker around on it.
ah, there are just too much factors. we need, quickly, another solution. api wise: two ways to specify the filtering. eighter exact: i want pointsample, i want bilinear, i want trilinear, i want what ever. or quality based: this texture needs good quality, this one nobody bothers, etc. and then, for the exact ones, cards have to provide it. for the quality based ones, cards/drivers are free to do what ever they want. depending on the quality slider in the driver, and what the application requested, they can deliver. then, we can make fair comparisons to find out, at a certain visual quality, how good wich card performs. that would be nice, not? |
|
|
|
![]() |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| 3dfx Rampage ;) | Ante P | 3D Architectures & Chips | 219 | 26-Feb-2012 19:48 |
| New 3DMark03 Patch 330 | Nick[FM] | 3D Architectures & Chips | 429 | 05-Jun-2003 00:28 |
| Kyoto FLAMEWAR! | RussSchultz | General Discussion | 91 | 14-May-2003 00:57 |
| How does the NV30 really store PS programs? | Arun | 3D Architectures & Chips | 19 | 20-Feb-2003 13:54 |
| New version of RivaTuner released | Babel-17 | 3D Hardware, Software & Output Devices | 1 | 13-Jan-2003 13:14 |