Joe DeFuria said:Most blatant case: Texture with 1 bit alpha.
Just fyi, an alpha blend works just fine on those, on all hardware that I am aware of.
Joe DeFuria said:Most blatant case: Texture with 1 bit alpha.
. Few textures have any noticeable drawbacks that cannot be fixed by anisotropic filtering, or other better texture filtering methods.
2. Those that do (Specifically, alpha tests or other per-pixel branching) can often be avoided entirely by using a smooth blend function. When that is not an option, it's not much of a challenge to do supersampling within the pixel shader. Not only that, but supersampling done within the pixel shader can definitely do a much better job than supersampling applied to the entire scene, and has much less performance hit.
For older hardware, the only truly noticeable drawback of MSAA lies in the use of an alpha test, which can usually be replaced by a simple alpha blend very easily.
You're right 1 bit alpha causes incorrect results. Best not to use it.
Joe DeFuria said:I have problems with people who appear to disagree with me, while not having demonstrated they actually understand my viewpoint.
There is a difference there. (In other words...I'm not even CERTAIN if we disagree, because I'm not certain he's understood my view.)
When I don't think someone actually understands my viewpoint, that's when I get all long-winded and repetitive. If I think someone does understand my viewpoint, and disagrees with it, then I have no problem just "agreeing to disagree."
When someone tells me that I'm having a "change of heart", etc, then I don't believe they understand my position. When someone asks more and more questions that to me have obvious answers if you do understand my position, then I don't think he understands my position.
When I think someone else is being inconsistent with their arguments, them I'm not satisfied that they understand my position.
On the contrary, I have already validated his. I have said several times that from a developer perspective, I can appreciate that "consistency across platforms" and "technical correctness" makes things much easier and is a highly desired trait.
On the other hand, it appears to me the he's been arguing that CONSUMERS also, on the whole, also desire/demand consistency and "correctness" over a choice of "compromise" methods that try to balance performance / quality / price.
That's the crux over our "disagreement" IMO.
to have a problem with such things would be quite understandable. ..come to think of it, i could use this exact same wording to air my side in this dispute, don't you think, Joe? (1)
at the time i used the phrase quoted here you had expressed a position of 'everything goes as long as the customer likes it'. then you used the 'green cube-red sphere' metaphore as an example of unacceptable inconsistency re visuals, which indeed contradicted your stance since how could you set any limits to what somebody could like
my particularly argument with you, Joe, is that consumers have the right to see the visuals of the title they bought exactly as those visuals were meant to be seen by the title creators. afterwards, they could tweak on those visuals as much as they want, be that even through poking right into the card drivers if the consumer had the know how to do so, for the sake of getting higher fps, better comfort or just becasue they can, but that's only afterwards...
Joe, their 'contract' with the creator of the title is not fulfilled -
i hope the above sheds some light on my early postings in this thread - that r200's aniso being flawed in a non-repairable way would not allow the r200 owners to see the visuals as those were meant to be seen in a title which relies on proper aniso, and that's regardless of the fact that the participants in this discussion may not be aware of any such particular title at the moment of the discussion.
Quite simply:Joe DeFuria said:The point is, you have been pretty adament that the definition of an entire implementation being "not correct" is if it can be determined "where the math dictates" it should be applied, and it isn't. And no, I don't think it's "fair" to say "well, yes, the math dicatates it there, but it doesn't work...so just avoid putting yourself in that situation." (Do you think that's a valid exception to your definition?)
You quickly run into trouble with that definition, as the multisample illustration shows.
You can try and argue (as you essentially have), "Multisample AA 'by definition is not applied to those cases". Well, why isn't "Radeon 8500 Aniso", 'by definition', treated the same way?
"Anisotropic", like "antialias", is a generic, broad reaching term. Just as Mutisample, Fragment, Super, etc. are considered "valid forms of AA", I really don't see how "Radeon 8500" is not a "valid form of anisotropic."
As for multisampling, it does exactly what is advertised with a 1 bit alpha texture,
"Anisotropic", like "antialias", is a generic, broad reaching term. Just as Mutisample, Fragment, Super, etc. are considered "valid forms of AA", I really don't see how "Radeon 8500" is not a "valid form of anisotropic."
"Anisotropic", like "antialias", is a generic, broad reaching term. Just as Mutisample, Fragment, Super, etc. are considered "valid forms of AA", I really don't see how "Radeon 8500" is not a "valid form of anisotropic."
Chalnoth said:On why the Radeon 8500 does not meet the spec (From the EXT_texture_filter_anisotropic extension):
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|.
Quite simply, if you rotate a primitive about the z-axis, Fx and Fy may well decrease (lower anisotropy used), while those derivatives should not be decreasing. The second condition is also probably not being met on off-angle surfaces.
3. How to Read an OpenGL Extension Specification
When reading an OpenGL extension specification, it helps to be familiar with the original OpenGL specification. The operation of an OpenGL extension is described as additions and changes to the core OpenGL specification. Having a copy of the core OpenGL specification handy is a good idea when reviewing an OpenGL specification.
OpenGL extension specifications consist of multiple sections. There is common form established by convention used by nearly all OpenGL extension specifications. Often within a specification, the gl and GL prefixes on routine names and tokens are assumed. The following describes the purpose of the most common sections in the order that they normally appear in extension specifications:
...
Overview
The section provides a description, often terse and without justification, for the extension’s specified functionality. If you are trying to figure out what the extension does, this is the most useful section of an OpenGL extension specification. Do not expect a tutorial though.
Issues
Often there are issues that need to be resolved in the specification of an extension. This section documents open issues and states the resolution to resolved issues. These issues are often things of interest to the extension implementer, but can also help a programmer understand how the extension really works.
1.5. OUR VIEW 3
1.5 Our View
We view OpenGL as a state machine that controls a set of specific drawing operations.
This model should engender a specification that satisfies the needs of both
programmers and implementors. It does not, however, necessarily provide a model
for implementation. An implementation must produce results conforming to those
produced by the specified methods, but there may be ways to carry out a particular
computation that are more efficient than the one specified.
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.
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.
Bjorn said:"Anisotropic", like "antialias", is a generic, broad reaching term. Just as Mutisample, Fragment, Super, etc. are considered "valid forms of AA", I really don't see how "Radeon 8500" is not a "valid form of anisotropic."
You answered this yourself imo.
Anisotropic , MSAA ... = broad reaching terms with known effects/drawbacks.
R8500 aniso = specific for one card with drawbacks specific for one card.
Doesn't that sort of disqualify the comparision right on the spot ( that you shouldn't treat them equally) ?
An implementation must produce results conforming to those
produced by the specified methods
But you should not assume that a high maximum
maximum degree of anisotropy implies anything about texture
filtering performance or quality
RussSchultz said:An implementation must produce results conforming to those
produced by the specified methods
Or am I missing something?
It does not, however, necessarily provide a model
for implementation. An implementation must produce results conforming to those produced by the specified methods, but there may be ways to carry out a particular computation that are more efficient than the one specified.
Of course, thats in nearly direct opposition to:
But you should not assume that a high maximum
maximum degree of anisotropy implies anything about texture
filtering performance or quality
So, if you really want to call it not broken, I'll agree with you.
It seems you are misquoting him, Bjorn. I read his statements like this:
"Anisotropic, FSAA... = broad reaching terms"
"R8500 aniso, MSAA = specific implementations with known effects drawbacks"
"Anisotropic", like "antialias", is a generic, broad reaching term. Just as Mutisample, Fragment, Super, etc. are considered "valid forms of AA", I really don't see how "Radeon 8500" is not a "valid form of anisotropic."
Bjorn said:It seems you are misquoting him, Bjorn. I read his statements like this:
"Anisotropic, FSAA... = broad reaching terms"
"R8500 aniso, MSAA = specific implementations with known effects drawbacks"
Here's what Joe said:
"Anisotropic", like "antialias", is a generic, broad reaching term. Just as Mutisample, Fragment, Super, etc. are considered "valid forms of AA", I really don't see how "Radeon 8500" is not a "valid form of anisotropic."
Multisample, Fragment & Super is still broad reaching terms with no vendor specific details imo.
But "R 8500 anisotropic filtering" clearly are.
demalion said:So? I'm serious, why is something vendor specific necessarily "incorrect" simply because it is vendor specific?
Bjorn said:demalion said:So? I'm serious, why is something vendor specific necessarily "incorrect" simply because it is vendor specific?
I didn't say that something that was vendor specific necessarily was incorrect did i ?
But the R8500's aniso filtering is clearly incorrect in 45 degree angles.
A problem that only Ati's card has. Thus, it's a vendor specific problem.
There's afaik no other card that has a problem like that.
Difference in quality yes, but in this case we're talking about no aniso at all sometimes.
I agree though, that i misread what Joe said.
And i'd then disagree with him since i don't consider MSAA , Supersample and FAA to be nearly as "hardcoded" as one specific vendors implementation of anisotropic filtering.
I read it again and don't see how you are getting your phrasing and not mine. Why is it significant that the 8500 aniso is called 8500 aniso, or that it is vendor specific? Would it change things if we had a technical sounding name for it that didn't mention the 8500? Does it help that it is also on the "7x00" Radeons? Would using rip-mapping as an example instead satisfy you? Your distinction seems meaningless at this point.
Bjorn said:I read it again and don't see how you are getting your phrasing and not mine. Why is it significant that the 8500 aniso is called 8500 aniso, or that it is vendor specific? Would it change things if we had a technical sounding name for it that didn't mention the 8500? Does it help that it is also on the "7x00" Radeons? Would using rip-mapping as an example instead satisfy you? Your distinction seems meaningless at this point.
The name has of course nothing to do with it.
But i consider f.e MSAA and Supersampling to be different methods of achieving AA, none of them connected to a specific vendor.
But the aniso of the R8500 and it's drawbacks/flaws are a vendor specific implementation of one specific method of filtering, anisotropic.
That's the difference imo.