MSAA and Scene anti aliasing

Kevin Rushforth kevin.rushforth at oracle.com
Mon Jul 15 08:05:58 PDT 2013


I am fine with an enum that represents the style of AA requested: NONE, 
MSAA, SOME_OTHER_AA, ...

It is the combining of number of samples into the enum that seems 
undesirable to me. I would prefer that be a separate Integer attribute.

-- Kevin


Mario Torre wrote:
>
> At first I was about to reply a +1 to Kevin, but then I realised:
>
> 1. This is indeed an area where people want to know the implementation 
> details.
>
> 2. An enum can be extended with different implementations, for example 
> add a non MSAA to the mix.
>
> The drawback is that the enum may grow just for the need to add a new 
> property to the AA algorithm. I'm not sure how likely this is, but I 
> didn't see that many actual implementations to consider that an issue.
>
> If this is the case, one may have a descriptor object passed rather 
> than an enum, so that external implementations may easily 
> extend/replace the default code.
>
> The descriptor could be an opaque type so that the code that needs to 
> handle knows about it, but for users it still behaves like if it was 
> an enum. In fact, the defaults may even be collected in an enum again.
>
> Cheers,
> Mario
>
> Il giorno 15/lug/2013 01:24, "Richard Bair" <richard.bair at oracle.com 
> <mailto:richard.bair at oracle.com>> ha scritto:
>
>     I know iOS gives at least two or three options. A single enum
>     seems cleaner than two properties (and yet another constructor!
>     Speaking of which it would be better if this were a mutable property).
>
>     Is it that you don't like that some options can't be honored?
>
>     On Jul 13, 2013, at 12:00 PM, Kevin Rushforth
>     <kevin.rushforth at oracle.com <mailto:kevin.rushforth at oracle.com>>
>     wrote:
>
>     > I don't really like the single enum approach. I would prefer to
>     keep the existing MSAA boolean, and then, if needed, add a
>     separate attribute for requesting the number of samples; if
>     desired there could be a read-only attribute that returns the
>     actual number of samples used. Most chipsets give limited (or no)
>     control over the number of samples anyway so an enum doesn't seem
>     like a good fit.
>     >
>     > -- Kevin
>     >
>     >
>     > Gerrit Grunwald wrote:
>     >> +1 for the enum approach...will make it easier to enhance for
>     future options...
>     >>
>     >> Gerrit
>     >> Am 12.07.2013 um 19:55 schrieb Richard Bair
>     <richard.bair at oracle.com <mailto:richard.bair at oracle.com>>:
>     >>
>     >>
>     >>> Thor recently pushed an implementation for MSAA for those
>     cases when the feature is supported by the card and where a Scene
>     (or SubScene) is created with the antiAliasing flag set to true.
>     MSAA is "Multi-sampled Anti Aliasing", which means that the
>     graphics card, when configured in this mode, will sample each
>     fragment multiple times. The upshot is that 3D doesn't look as jaggy.
>     >>>
>     >>> However this has an impact on performance (usually an extra
>     buffer copy or at the very least you will be sampling each pixel
>     multiple times so if you are doing something graphically intense
>     then that might push you over the edge where you start to see
>     performance degradation). Now multi-sampling can be 2x, 4x, etc.
>     The higher the multi-sampling value, the better the quality, and
>     the lower the performance.
>     >>>
>     >>> I'm also bothered but the name "antiAliasing" because there
>     are many forms of anti-aliasing in the world and it isn't clear
>     which this is. I think perhaps we should instead have an enum. The
>     idea is that we can add to the enum over time with greater options
>     for how to perform the scene antialiasing.
>     >>>
>     >>> public enum SceneAntiAliasing {
>     >>>   DISABLED,
>     >>>   DEFAULT,
>     >>>   MSAA_2X,
>     >>>   MSAA_4X
>     >>> }
>     >>>
>     >>> And then grow it over time to include potentially other
>     techniques. My thought here is that the implementation is going to
>     matter to folks. They're going to want to be able to make the
>     performance / quality tradeoff, and perhaps even the
>     implementation tradeoff (since different implementations may
>     provide somewhat different results). DISABLED turns it off,
>     obviously. DEFAULT allows us to pick what we think is the best
>     (might be different on different platforms. Desktop might go with
>     MSAA_16x or equivalent while iOS might be MSAA_2X). Then some
>     standard options.
>     >>>
>     >>> Thoughts?
>     >>> Richard
>     >>>
>


More information about the openjfx-dev mailing list