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
