Antialiasing in 3D
Chien Yang
chien.yang at oracle.com
Fri Jul 26 10:33:29 PDT 2013
Hi John,
My apology, I must have grouped this thread with the long "MSAA"
thread in my earlier reply. For JavaFX 8 we have no plan to read in
control setting from the user via Control Panel or some sort. I'm not
sure how feasible it is to access this information from different GPU
vendors and across platforms (desktop and embedded). We are still in the
early phase of the 3D anti-aliasing effort for JavaFX. For the coming
release, we are relying on MSAA as a technique to do scene anti-aliasing
for 3D scene. We aren't at the point where we are ready to compare our
techniques and rendering quality with other libraries. This is something
we will do further down the road ...
- Chien
On 7/26/2013 2:54 AM, John C. Turnbull wrote:
> Hi Richard,
>
> I haven't seen any comments by Chien on this thread so I must have missed
> them.
>
> I am still not sure:
>
> 1. If the driver's Control Panel can be used to override the AA settings
> specified by the developer in a JavaFX application.
> 2. How iPhone and WebGL games get such awesome quality graphics without
> jagged edges when I am unable to replicate this with my own OpenGL programs
> or by overriding the AA settings in the driver's Control Panel.
> 3. How iPhone and WebGL games achieve such high quality rendering without
> any apparent negative effect on performance.
> 4. How JavaFX graphics will compare with native iPhone and WebGL apps in
> terms of quality and performance.
>
> Thanks,
>
> John
>
> -----Original Message-----
> From: Richard Bair [mailto:richard.bair at oracle.com]
> Sent: Friday, 26 July 2013 03:51
> To: John C. Turnbull
> Cc: openjfx-dev at openjdk.java.net
> Subject: Re: Antialiasing in 3D
>
> John, did you feel this got answered by Chien's last comments?
>
> Richard
>
> On Jul 20, 2013, at 1:05 PM, John C. Turnbull <ozemale at ozemail.com.au>
> wrote:
>
>> There has been recent discussion here regarding the 3D antialiasing
>> options in JavaFX 8.
>>
>>
>>
>> For mine, there needs to be a way to specify both the *type* of AA
>> (MSAA, FSAA etc.) and also the *magnitude* (2x, 4x etc.). There also
>> needs to be a way for the application to determine the range of
>> settings available on the GPU so that it can select the particular
>> options it wants (perhaps via user input).
>>
>>
>>
>> Given this, I have some additional comments.
>>
>>
>>
>> First, there seems to be 2 main approaches to applying AA to 3D
>> scenes. The first is what I am personally accustomed to in work I have
> done with OpenGL.
>> With this approach you pretty much write directly to the primary
>> buffer and thus allow the AA settings to be overridden by the driver
> configuration.
>> For example, on my Windows 7 machine which sports a high-end NVIDIA
>> GPU, I can go into the NVIDIA Control Panel and then fiddle with all
>> manner of AA and other 3D settings. I can choose anything from 2x to
>> 32x with various combinations of MS, SS and CS. The results of this
>> tinkering are immediately obvious and range from high-performance
>> chunky graphics to super-smooth graphics with very low frame rates.
>> The point is that I the user have full control over how the graphics
>> are rendered and I get to choose between performance and quality or a bit
> of both.
>>
>>
>> The other approach is where the scene or sub-scene is rendered into an
>> off-screen buffer. When the buffer is created, the AA settings (such
>> as the number of samples) are specified and this/these buffer(s) can
>> then be blasted onto the screen later. Here it is the developer who
>> has full control over the AA settings as with this approach the end
>> user is unable to override these settings in their GPU driver's "control
> panel".
>>
>>
>> Which of these approaches will be taken with JavaFX 8 3D? I am
>> guessing it's the second approach or a combination of both approaches.
>>
>>
>>
>> I am especially curious because I have noticed some unusual things
>> about 3D on some platforms.
>>
>>
>>
>> For example, on my iPhone I can play 3D games and they seem to perform
>> very well. What's really interesting to me is that the quality of the
>> 3D graphics is absolutely outstanding with barely a jaggie to be seen.
>> I think someone mentioned in the previous thread on JavaFX 3D and AA
>> that only levels of 2X MSAA were possible on most phones but if this
>> is the case then how do they get the graphics to be rendered with such
>> high quality? I doubt it's all about the retina display as I have
>> seen equally smooth graphics on some Android phones which do not have such
> high resolution screens.
>>
>>
>> Similarly, I find that the 3D graphics rendered via WebGL (on all
>> platforms) are also of a very high quality with seemingly no negative
>> impact on performance. In fact, on my Windows 7 machine I am unable
>> to achieve the same level of quality in my own OpenGL applications
>> even when the highest quality settings are configured in the NVIDIA
>> Control Panel as is achieved in many WebGL games on the same machine.
>>
>>
>>
>> With both the iPhone and WebGL I find that tuning the settings in the
>> Control Panel has absolutely no effect on the quality of the rendered
>> graphics so I am very curious to know just how they can achieve the
>> high quality rendering and also if JavaFX can somehow "tap into" these
>> techniques as well.
>>
>>
>>
>> Could someone from the JavaFX 3D team please comment on these
> observations?
>>
>>
>> Thanks,
>>
>>
>>
>> -jct
>>
More information about the openjfx-dev
mailing list