StarlingGraphics / Starling-Extension-Graphics

flash.display.Graphics style extension for the Starling Flash GPU rendering framework
https://github.com/StarlingGraphics/Starling-Extension-Graphics/wiki
MIT License
285 stars 88 forks source link

Anti-aliasing? #11

Closed randytroppmann closed 10 years ago

randytroppmann commented 12 years ago

What would be the best approach to anti-aliasing? Rotated rectangle look quite aliased.

jonathanrpace commented 12 years ago

Polygon edges will get anti-aliased via the same setting you init Starling with.

Are you referring to texture aliasing on bitmap/texture fills?

randytroppmann commented 12 years ago

Sorry, it was a noob question since I am just getting started with Starling. It's a shape inside a sprite that I am rotating at runtime.

jonathanrpace commented 12 years ago

No worries!

jcward commented 11 years ago

Hmm, using the Graphics API, moveTo/lineTo, etc, I get hard edges no matter what I set _starling.antiAliasing to (default 0, up to 16, always hard edges...) Any ideas?

jonathanrpace commented 11 years ago

Me too - however I'm getting this with all Starling content using Flash Player 11.6. Oddly, running in AIR 3.6 it works on one of my machines, but not the other (again with all starling content - and presumably with any other Stage3D content).

Just to make sure I'm not going insane - could you throw some other Starling content into your machine (like an Image class), and see if that gets anti aliased at all?

If not, I suspect its a more general hardware related Stage3D issue, though it may be worth checking the Starling discussions to see if there's anything to be done.

gonchar commented 11 years ago

please see your context3d.driverInfo, now there is can be Direct3D11 driver support, and issue with antialiasing is open and known.

jcward commented 11 years ago

gonchar, thanks for your response. Anti-aliasing is a known issue with what package? AIR? Starling? I don't see any such documented issues.

Bottom line, I don't care why it's broken, I just need it fixed. How do I work around this? Downgrade AIR? Downgrade Starling? Give up on the graphics extension and use bitmaps?

makc commented 11 years ago

I think he's saying AA is broken when Stage3d is using D3D11, so you should wait for Adobe to fix it.

jcward commented 11 years ago

Thanks for the clarification makc. I'm testing with AIR 3.6, -swf-version=19, on:

Windows ADL, driverInfo=oldDriver (Baseline Constrained) Nexus 7, driverInfo=OpenGL (Baseline Constrained)

Neither are D3D11, and I get no anti-aliasing, so it sounds like this isn't my problem... Are there any other requirements? Is it not available in debug versions? Is AA not available in debug mode? I'm setting AA before calling .start()... Anything else to check?

Adolio commented 11 years ago

Same expectations for me... Perhaps we can re-open the issue until it's fixed by Adobe ?

jcward commented 11 years ago

More info:

Windows ADL, SDK 3.4 / 3.6 / 3.7 Beta, AA doesn't work Mac OSX ADL simulator, AA works driveInfo=OpenGL (Basline Constrained) Mac OSX ADT package for Nexus 7, AA doesn't work

We're getting a build for iOS now. I suspect Adobe only tests OSX and iOS thoroughly.

jcward commented 11 years ago

AA did not work on iOS, and this libraries performance (while fine on Nexus) was awful on iPad 2 and 4. That's enough for me, I'm out.

AlBirdie commented 11 years ago

Anything new regarding anti aliasing for line.moveTo? Currently building a chart and the line doesn't look very nice on iOS. Performance wise, iPad 2 and 3 are absolutely identical and pretty decent as well. They use the same processor, so I didn't expect anything different. Every other Starling content is anti aliased, just the line looks like 1995. ;)

jonathanrpace commented 11 years ago

AlBirdie - could you confirm that the edges of other starling content is getting anti-aliased for you? To do this, create an 'Image' with a solid image fill (no transparency). Then rotate this by some small and see if you get jaggies,

robsilv commented 11 years ago

@jonathanrpace, I've just downloaded the latest and I'm getting the same problem on my Win7 laptop. Presumably this issue has been introduced by the latest round of Flash Player/AIR updates?

AlBirdie commented 11 years ago

Jonathan, sorry for the confusion but I was wrong, starling content isn't anti-aliased as well. The starling Quad and a rect using drawRect() show exactly the same non anti-aliased image. Seems to be a Starling or Air issue then.

gooses commented 11 years ago

It seems like antiAliasing = 0-16 was disabled in flash version 11.6, the swf im testing works fine on a computer that has 11.5 and one that has 11.3

gonchar commented 11 years ago

no, in web plugin all works great. This issue only for standalone 11.6 player + Direct3D11

jcward commented 11 years ago

I haven't tested the web plugin at all, only AIR (which may render the same as the standalone player). But none of my setups (see above comments) are D3D11, all OpenGL.

AlBirdie commented 11 years ago

Just a heads up, still no antiAliasing on mobile with the latest AIR 3.7.

jcward commented 11 years ago

FYI, I just posted a testcase (of simple Quads, but the issue is the same) to the starling forum: http://forum.starling-framework.org/topic/anti-aliasing-broken#post-30884

Anti-aliasing works on some platforms (FP 11.6 on Mac, adl on Mac) but not others - notably broken are iOS, Android, and Windows adl simulator.

Edit: Hmm, Jeff and Josh over at Starling Forum say that anti-aliasing is completely disabled by Adobe on mobile devices because of varying levels of support. This seems like very bad news for this project (well, for mobile development, anyway).

I guess the bottom line is this: test for AA support on your target platform. The Adobe Context3D docs themselves note that the anti-aliasing setting is a "suggestion" and is subject to various hardware support (though they neglect to mention it's been disabled entirely on mobile.)

makc commented 11 years ago

In that thread there's a link to

found this myself and actually asked one of the Stage3D guys at Adobe about it a few weeks ago, the answer is that the anti-aliasing parameters for configureBackBuffer() are currently being ignored for AIR projects.

The reasoning is that some devices support higher levels of anti-aliasing than others, and to allow it on an as-available basis would create different graphical rendering experiences between the various devices, which could cause a lot of confusion and headaches among developers who don't know the intricacies of the hardware caps.

:no_mouth: :gun:

AlBirdie commented 11 years ago

So they disable it completely? Jeez, way to castrate a platform, nice job (again) Adobe!

If there are certain platforms that don't support AA, well, that's just the way it is, but don't just remove it for all platforms! That's just plain stupid. "Headaces among developers"? Seriously? Removing this feature from the platform is what is causing me headaches, not that it isn't supported on certain devices. Gosh I hate that company!

vkartaviy commented 11 years ago

Any news? As I understand in case if Adobe doesn't implement this on his side this extensions is useless for mobile?

EasonPai commented 11 years ago

Just knocked my head against this wall. hope the Adobe guys are working on it, or at least re-enable the troublesome anti-aliasing function

jonathanrpace commented 10 years ago

Closing this issue as it's not something that would get fixed within the Graphics API extension. If Adobe re-enable anti-aliasing in a future AIR release, all Starling projects should automatically inherit this function.

AlBirdie commented 10 years ago

I hope we'll get this feature eventually; http://www.adobe.com/devnet/flashplatform/whitepapers/roadmap.html

IonSwitz commented 10 years ago

Yeah, I have tried to find out if "Stage3D – Anti-Aliasing for render textures" would be able to help us in any way, but so far no such luck. It would appear that it could be possible to render Strokes to a RenderTexture and get anti Aliasing that way. But yeah, I'm worried that mobiles will still get the short end of the stick here.

AlBirdie commented 10 years ago

Too bad, but I guess most people can live with it given that high DPI devices are basically industry standard already.

jarrodmoldrich commented 10 years ago

Could you just make the whole Starling canvas a double resolution render texture and down-sample it to the display buffer for 2x FSAA?

ghost commented 10 years ago

SOLVED FOR PC! You just have to init starling like that

starling = new Starling(Game, stage, null, null, "auto", "baseline");//Adding "baseline" solves the problem starling.antiAliasing = 2; starling.start();

IonSwitz commented 10 years ago

Well, that works, and I assume we could have been more clear about this from the beginning. The problem with "baseline" is that it means that the game won't run on older computers, as that graphics mode requires more from the gfx chip set on the computer. If it is good enough for you, that's fine, but if you are making something that needs to run for "everyone", do some tests to see what chip sets still refuse to start in "baseline"-mode.

CrazyFlasher commented 8 years ago

Issues using latest sources, Starling 1.7, AIR 20: 04_Fill_Stroke_Example http://joxi.ru/QY2LjRVTdV5Dr6 - latest lib sources from git - error http://joxi.ru/1bmoo8pUQE49my- compiled swc in git - ok

Any suggestions?