darkblu said:
demalion,
allow me to try clearing out a few things for you, as you seem to encounter some difficulties reading api specs.
My, that is a mighty condescending tone for a presentation that you went on to edit indicating that your own ability to make a mistake. Let me include that edit comment here so people know what I'm talking about for my discussion:
darkblu said:
edit: the pixel anisotropy approximation rule is from the Specs Addition section (particularly from the txture min-/magnification), not from the overview. i overlooked it - my bad.
first, the right order to read those quoted ogl excerpts is as follows:
Why is my order "not right" and yours is? Nice groundless statement that doesn't seem to illustrate much except indirectly attack me.
demalion said:
From the Overview for that extension, copyright 1999 nVidia by the way:
Several approaches exist for improving texture sampling by accounting
for the anisotropic nature of the pixel filter footprint into texture
space. This extension provides a general mechanism for supporting
anisotropic texturing filtering schemes without specifying a
particular formulation of anisotropic filtering.
The extension permits the OpenGL application to specify on
a per-texture object basis the maximum degree of anisotropy to
account for in texture filtering.
Chalnoth said:
<snip>
It is also acceptable for an implementation to approximate the ideal
functions Px and Py with functions Fx and Fy subject to the following
conditions:
1. Fx is continuous and monotonically increasing in |du/dx| and |dv/dx|.
Fy is continuous and monotonically increasing in |du/dy| and |dv/dy|.
2. max(|du/dx|,|dv/dx|} <= Fx <= |du/dx| + |dv/dx|.
max(|du/dy|,|dv/dy|} <= Fy <= |du/dy| + |dv/dy|.
<snip>
demalion said:
[ed: from the corresponding
Issues section]
Should an implementation-defined limit for the maximum maximum degree of
anisotropy be "get-able"?
RESOLUTION: YES. But you should not assume that a high maximum
maximum degree of anisotropy implies anything about texture
filtering performance or quality.
the clause for non-assumption of the texture filtering quality in the above
Issues section refers to the
given maximal high (this meaning
greater than 1) degree of anisotropy as returned
per-implementation, not
per pixel! why? - because the above
Issues section should be interpreted in the context of the preceeding
Overview section. and this is very important! because the
Issues section
should not be interpreted by itself, nor can it (directly) oppose the
Overview section.
Well, I didn't include it by itself, I included it with an excerpt from the Overview section (among other things). Your text reads like I didn't (IOW it reads as if you are lying). It then proceeds to imply that some aspect of my presentation is invalid without specifying support for that implication. Your conclusion is that "and this is very important! because the
Issues section
should not be interpreted by itself, nor can it (directly) oppose the
Overview section." yet you fail to illustrate how this accusation fits my text, and ignore the context I provide for how all these sections relate.
IOW, what the above Issues section says is:
a given implementation reports the maximal high degree of anisotropy, but said maximal degree 'does not guarantee a certain filtering quality', which is different than 'said maximal degree does not guarantee a constant degree of anisotropy' for the encountered anisotropy level.
It is? How so? The actual text again is:
Should an implementation-defined limit for the maximum maximum degree of
anisotropy be "get-able"?
RESOLUTION: YES. But you should not assume that a high maximum
maximum degree of anisotropy implies anything about texture
filtering performance or quality.
A clear reading of the text allows both readings, if you disagree provide substantion please. You provide a new set of wording and fail to illustrate how the text does not make that statement, seeming to depend on the fact that it isn't the same wording to be proof that it doesn't fit the statement. All you've said so far is my substantion is incorrect, ignored most of said substantion, and provided an alternate and selective inclusion of text to favor a new interpretation without
any justification is to how this selective text is somehow more "valid". Pretty consistent with your arguments so far. The catching an error and leaving it in as an integral part of your argument is new though.
in fact, the Overview section implies exactly such a constant degree of anisotropy for a rolled plane
And how does it do this?
by the rule that max(|du/dx|,|dv/dx|) <= Fx <= |du/dx| + |dv/dx|. max(|du/dy|,|dv/dy|) <= Fy <= |du/dy| + |dv/dy|.
That's in the Overview? Let me look again...no, it is not. You recognized your premise was invalid at the end, and still present an argument based on your error. That's OK, I'll address the Additions section you brought up anyways in a bit.
once again, i repeat, the Issues section cannot directly oppose the Overview section.
This is a completely non-sensical statement, since I never implied that it did, but you caught that at the end with an edit. Yet look how you began this response with a condescending remark...
Anyways, on to the Additions section.
see, demalion, you've been trying to suggest exactly the latter, which would make the whole extenstion specification completely meaningless.
You are basing this on a flawed presentation, but I'll quote something from the Additions section:
When the texture's value of TEXTURE_MAX_ANISOTROPY_EXT is equal to 1.0, the GL uses an isotropic texture filtering approach as described in this section and Section 3.8.6. However, when the texture's value of TEXTURE_MAX_ANISOTROPY_EXT is greater than 1.0, the GL implementation should use a texture filtering scheme that accounts for a degree of anisotropy up to the smaller of the texture's value of TEXTURE_MAX_ANISTROPY_EXT or the implementation-defined value of MAX_TEXTURE_MAX_ANISTROPY_EXT.
The particular scheme for anisotropic texture filtering is implementation dependent. Additionally, implementations are free to consider the current texture minification and magnification modes to control the specifics of the anisotropic filtering scheme used.
None of which contradicts the Overview or Issues, and you seem to have selectively read.
and while we're at api excerpts, here's directX account on the matter:
More text I have to go through to find the text you selectively ignored? OK, atleast I am learning some things.
MSDN library/directX/directX 8.1/directX graphics/programmers guide/using direct3d/textures/texture filtering said:
Anisotropic Texture Filtering
Anisotropy is the distortion visible in the texels of a 3-D object whose surface is oriented at an angle with respect to the plane of the screen. When a pixel from an anisotropic primitive is mapped to texels, its shape is distorted. Microsoft® Direct3D® measures the anisotropy of a pixel as the elongation&#8212;that is, length divided by width&#8212;of a screen pixel that is inverse-mapped into texture space.
You can use anisotropic texture filtering in conjunction with linear texture filtering or mipmap texture filtering to improve rendering results. Your application enables anisotropic texture filtering by calling the IDirect3DDevice8::SetTextureStageState method. Set the value of the first parameter to the integer index number (0-7) of the texture for which you are selecting a texture filtering method. Pass D3DTEXTUREMAGFILTER, D3DTEXTUREMINFILTER, or D3DTEXTUREMIPFILTER for the second parameter to set the magnification, minification, or mipmapping filter. Set the third parameter to D3DTEXF_ANISOTROPIC.
Your application must also set the degree of anisotropy to a value greater than one. Do this by calling the IDirect3DDevice8::SetTextureStageState method. Set the value of the first parameter to the integer index number (0-7) of the texture for which you are setting the degree of isotropy. Pass D3DTSS_MAXANISOTROPY as the value of the second parameter. The final parameter should be the degree of isotropy.
You can disable [ed: a couple of doc typos here] anisotropic filtering by setting the degree of anisotropy to one; any value larger than one enables it. Check the MaxAnisotropy flag in the D3DCAPS8 structure to determine the possible range of values for the degree of anisotropy.
Hmm...well, when I said before that your examples didn't include any specification of the expectations you filled in, and you never addressed it, I suppose it is not surprising that you did it again.
OK, this supports your assertion about how the 8500's aniso is invalid how? I'm looking for mentions of things like the 45 degree case, whereas all your bolded text are things the the 8500 aniso does do. I'll also quote your last quoted sentence: "Check the MaxAnisotropy flag in the D3DCAPS8 structure to
determine the possible range of values for the degree of anisotropy." But, whatever, I don't expect to get any further with this much text for you to throw in front of the issue.
ps to Russ:
API specs are usually not as blatantly self-contradictory as some people occasionally attempt to read them into. do not be fooled into thinking of us software guys as
that big idiots
"Some people"? Sounds even sillier when it was your misinterpretation that made it seem contradictory.
edit: the pixel anisotropy approximation rule is from the Specs Addition section (particularly from the txture min-/magnification), not from the overview. i overlooked it - my bad.
That's fine, but it makes the tone of condescension and flaw it introduces into your argument more than slightly aggravating.