API Change Proposal - Re: MSAA and Scene anti aliasing

Chien Yang chien.yang at oracle.com
Wed Jul 31 16:36:05 PDT 2013


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 at 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 at 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
>>



More information about the openjfx-dev mailing list