[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-openjfx-dev
Subject:    Re: API Change Proposal - Re: MSAA and Scene anti aliasing
From:       Richard Bair <richard.bair () oracle ! com>
Date:       2013-07-31 23:47:37
Message-ID: AFA23E89-6AF4-43D3-B5D0-229A77B7457A () oracle ! com
[Download RAW message or body]

I'm pretty confident we'll want different sub-types as we go along (CSAA, MSAA, FXAA \
-- there are a lot of different ways to do full-scene anti-aliasing and I bet that \
they will have different parameters for controlling their various algorithms), but we \
can cross that bridge later.

Richard

On Jul 31, 2013, at 4:36 PM, Chien Yang <chien.yang@oracle.com> wrote:

> I agree, however I would prefer a single class over subclasses if possible. I have \
> added Jim's proposal to the JIRA for consideration. 
> https://javafx-jira.kenai.com/browse/RT-31878
> 
> Thanks,
> - Chien
> 
> 
> 
> On 7/31/2013 3:21 PM, Kevin Rushforth wrote:
> > This seems cleaner in terms of extensibility. I think we can wait on adding \
> > anything other than the public static finals for this release, but plan to extend \
> > it using something like what Jim suggests. 
> > -- Kevin
> > 
> > 
> > Richard Bair wrote:
> > > Personally I liked this approach. It was like an enum in ease of use but much \
> > > more extensible in the future when we add more anti-aliasing types and \
> > > twiddles. 
> > > Richard
> > > 
> > > On Jul 31, 2013, at 1:36 PM, Jim Graham <james.graham@oracle.com> wrote:
> > > 
> > > > D'oh!  I knew I should have been checking this list a bit.  I hope this isn't \
> > > > too late to have any impact... 
> > > > As an intermediate solution this is fine, but when we want to get into \
> > > > providing settings for MSAA and FSAA and other algorithms I think classes are \
> > > > more flexible than enums.  How about this solution: 
> > > > package javafx.?
> > > > 
> > > > public class SceneAntialiasing {
> > > > public static final SceneAntialiasing DISABLED;
> > > > public static final SceneAntialiasing BALANCED;
> > > > public static final SceneAntialiasing FASTEST;
> > > > public static final SceneAntialiasing NICEST;
> > > > 
> > > > public static SceneAntialiasing[] getAvailableTechniques() { }
> > > > 
> > > > SceneAntialiasing() { /* package private constructor! */ }
> > > > }
> > > > 
> > > > public class MsaaAntialiasing extends SceneAntialiasing {
> > > > MSaaAntialiasing(int numsamp) { /* package private */ }
> > > > public int getNumSamples();
> > > > }
> > > > 
> > > > public class FsaaAntialiasing extends SceneAntialiasing {
> > > > FsaaAntialiasing(int numsamp) { /* package private */ }
> > > > public int getNumSamples();
> > > > }
> > > > 
> > > > Note that there are ways for the system to construct these objects without \
> > > > providing public constructors so that these become statically defined by the \
> > > > system. 
> > > > What about Anisotropic filtering?  Is that considered a form of AA, or an \
> > > > option on top of AA? 
> > > > ...jim
> > > > 
> > > > On 7/24/2013 3:07 PM, Chien Yang wrote:
> > > > > Thanks for the help! I was of 2 minds about it; alphabetical or logical.
> > > > > 
> > > > > public enum SceneAntiAliasing {
> > > > > DISABLED, // disables anti-aliasing
> > > > > BALANCED, // enables anti-aliasing using optimal system setting available \
> > > > > that balances speed and quality FASTEST, // enables anti-aliasing using \
> > > > > minimum system setting available that results in better frame rate NICEST \
> > > > > // enables anti-aliasing using maximum system setting available that \
> > > > > results in best visual quality }
> > > > > 
> > > > > - Chien
> > > > > 
> > > > > On 7/24/2013 2:49 PM, Richard Bair wrote:
> > > > > > Just to be picky, I would put DISABLED first in the list. It seems more \
> > > > > > consistent to have the only OFF mode to be first and then all the rest of \
> > > > > > the options (which happen to then have ordinals > 0) will be some form of \
> > > > > > ON mode. 
> > > > > > Richard
> > > > > > 
> > > > > > On Jul 24, 2013, at 2:37 PM, Chien Yang <chien.yang@oracle.com> wrote:
> > > > > > 
> > > > > > > Thank you for the feedback! We decided to drop DEFAULT in favor of \
> > > > > > > BALANCED. So here is the revised SceneAntiAliasing enum entries: 
> > > > > > > public enum SceneAntiAliasing {
> > > > > > > BALANCED, // enables anti-aliasing using optimal system setting \
> > > > > > > available that balances speed and quality DISABLED, // disables \
> > > > > > > anti-aliasing FASTEST, // enables anti-aliasing using minimum system \
> > > > > > > setting available that results in better frame rate NICEST // enables \
> > > > > > > anti-aliasing using maximum system setting available that results in \
> > > > > > > best visual quality }
> > > > > > > 
> > > > > > > Thanks,
> > > > > > > - Chien
> > > > > > > 
> > > > > > > On 7/23/2013 1:29 PM, Chien Yang wrote:
> > > > > > > > Hi all,
> > > > > > > > 
> > > > > > > > We appreciate all the feedback you have contributed to this topic. \
> > > > > > > > After listening to the feedback and an internal discussion, we would \
> > > > > > > > like to propose a minor change to the API for supporting scene \
> > > > > > > > anti-aliasing. We intentionally choose not to expose the number of \
> > > > > > > > samples and techniques used in this release, but this doesn't \
> > > > > > > > preclude future addition when the time is right for more options. \
> > > > > > > > This change will be tracked by RT-31878 \
> > > > > > > > (https://javafx-jira.kenai.com/browse/RT-31878): 
> > > > > > > > Anti-aliasing API Change Proposal:
> > > > > > > > 
> > > > > > > > Constructors remove:
> > > > > > > > public Scene(Parent root, double width, double height, boolean \
> > > > > > > > depthBuffer, boolean antiAliasing) public SubScene(Parent root, \
> > > > > > > > double width, double height, boolean depthBuffer, boolean \
> > > > > > > > antiAliasing) 
> > > > > > > > Constructor add:
> > > > > > > > public Scene(Parent root, double width, double height, boolean \
> > > > > > > > depthBuffer, SceneAntiAliasing antiAliasing) public SubScene(Parent \
> > > > > > > > root, double width, double height, boolean depthBuffer, \
> > > > > > > > SceneAntiAliasing antiAliasing) 
> > > > > > > > Note:The antiAliasing argument will be used if the underlying \
> > > > > > > > graphics driver has anti-aliasing support. 
> > > > > > > > Where SceneAntiAliasing is an enum with the following entries at the \
> > > > > > > > moment: 
> > > > > > > > public enum SceneAntiAliasing {
> > > > > > > > DISABLED, // disables anti-aliasing
> > > > > > > > DEFAULT, // enables anti-aliasing using a default system setting \
> > > > > > > > available that balances speed and quality FASTEST, // enables \
> > > > > > > > anti-aliasing using minimum system setting available that results in \
> > > > > > > > better frame rate NICEST // enables anti-aliasing using maximum \
> > > > > > > > system setting available that results in best visual quality }
> > > > > > > > 
> > > > > > > > Thanks,
> > > > > > > > - Chien
> > > 
> 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic