Search Unity

  1. We've closed the job boards. If you're looking for work, or looking to hire check out Unity Connect. You can see more information here.
    Dismiss Notice
  2. Unity 2017.3 has arrived! Read about it here.
    Dismiss Notice
  3. Unity’s Demo Team is excited to share their upcoming interactive demo, Book of the Dead. See more information here.
    Dismiss Notice
  4. Want to see the most recent patch releases? Take a peek at the patch release page.
    Dismiss Notice

SVGAssets - SVG Rendering Engine for Unity.

Discussion in 'Assets and Asset Store' started by turbo3d, Jul 18, 2014.

  1. turbo3d

    turbo3d

    Joined:
    Apr 28, 2014
    Posts:
    43
    Mazatech is proud to present:

    SVGAssets 1.3.5
    The SVG engine for Unity

    http://u3d.as/content/mazatech-s-r-l-/svgassets/8wo
    (for faster bugfix response, please email to mfabbri[at]mazatech[dot]com instead to post on this forum)

    SVGAssets is a plugin for reading and rendering SVG files (requires Unity 5.x).

    For projects that need to run across a wide range of devices, with different resolutions, SVGAssets simplifies your life: a single SVG file is enough, you won't need to maintain multiple copies of the same texture image, at different resolutions, anymore!
    • Automatic generation of sprites from SVG files
    • Optimized texture atlasing, built at runtime on the target device
    • Automatic deployment system: textures removal and regeneration on the target device
    • Final player file size reduction, avoiding bitmaps deployment at all
    • Separate rendering of first level groups (SVG 'g' tags)
    • Based on the robust AmanithVG SRE rendering engine
    • High antialiasing quality: analytical pixel coverage
    • Fast rendering: 30ms tiger on Nexus4 at max resolution
    • Support of SVG Tiny 1.2 specifications with the exception of animation, text, images
    • Support of some SVG Full 1.1 features: radial gradients, gradients spread modes, path 'd' attribute complete syntax, inline styles
    • Cross platform: desktops (Win, OSX, Linux), mobile (iOS, Android, Windows Phone 8/8.1), 64bit support
    Link to the documentation:
    The package includes a standalone SVG player based on the SVGAssets technology; this player allows you to test SVG assets before to use them inside your Unity projects.

    Evaluation builds that contains an SVG player based on the Technology:

    [​IMG]

    [​IMG]

    [​IMG]

    [​IMG]
    [​IMG]
     
    Last edited: May 18, 2015
    adturbo and Ska0s like this.
  2. mimminito

    mimminito

    Joined:
    Feb 10, 2010
    Posts:
    752
    Looks interesting! Will keep an eye on this.
     
    Ska0s likes this.
  3. turbo3d

    turbo3d

    Joined:
    Apr 28, 2014
    Posts:
    43
    Thanks for your interest!
     
  4. Catman

    Catman

    Joined:
    Jul 16, 2011
    Posts:
    36
    Looks nice! I tried other solutions to render SVG assets for Unity, but none met my requirements: some performed too slow at rendering, others didn't support some features I need.
    For example, does SVGAssets support linear and radial gradients? And what kind of performance can I expect?
    Thank you!
     
  5. sledgeman

    sledgeman

    Joined:
    Jun 23, 2014
    Posts:
    198
    As i understood, this is a solution that converts a SVG into a Bitmap, which will be immediately rendered on screen. Difference between RAGEspline is, that RAGEspline renders vectors / splines on screen, without a conversion, right ?
    Are there any automation that can be set, to fit the individual resolution ? It seems, now i have to set it manually. But it would be cool if this could be set sutomaticly (f.e device resolution: 1280x720p = auto SVG object resolution : 1280x720 or the twice of it )
     
  6. turbo3d

    turbo3d

    Joined:
    Apr 28, 2014
    Posts:
    43
    Yes for sure, SVGAssets supports both linear and radial gradients, with an unlimited number of color keys!
    Talking about performance, you must know that SVGAssets is based on AmanithVG SRE, a rendering engine that draws the famous Tiger SVG example in just 30ms on a Nexus4 device, at full resolution (768x1280 pixels), with a really high rendering quality.

    [​IMG]
     
  7. Ska0s

    Ska0s

    Joined:
    Feb 4, 2014
    Posts:
    31
    SVGAssets does not convert SVG file to Bitmap (e.g. PNG): SVGAssets renders SVG files, at runtime, into memory buffers called drawing surfaces (SVGSurface class, as you can see int the official documentation).
    Drawing surface pixels can be uploaded/copied in Unity Texture2D objects (SVGSurface.Copy method) at runtime. On the other side, RageSpline converts SVG shapes in Unity meshes (i.e. triangles) and shaders to fill them.
    We have chosen to not implement an automatic sizing of Texture2D objects in relation of the rendered SVG, because we want to give the developers an highest level of freedom; for example it is possible, through the SVGAssets API, to render multiple SVG files to a single texture, as you can see even in the video tutorial (15:23 minute).
     
  8. sledgeman

    sledgeman

    Joined:
    Jun 23, 2014
    Posts:
    198
    Ok. I think i got it. Would like to see a web-example or video that shows a zoom in and out of a SVG object, so i can have a close look and i can evaluate the quality.
     
  9. turbo3d

    turbo3d

    Joined:
    Apr 28, 2014
    Posts:
    43
    Unfortunately SVGAssets does not support Unity web player, because it is a native plugin.
    Anyway, we will try to write an example showing a runtime rendering+textureUpload every frame, even if this is not a common use case. In such scenario, probably it is better to have meshes+shaders as in RageSpline.
    In the future we would publish our realtime vector graphics engine (AmanithVG GLE) for Unity.
     
  10. Ska0s

    Ska0s

    Joined:
    Feb 4, 2014
    Posts:
    31
    If you want to evaluate the quality of the rendering, you can download AmanithVG evaluate package (SVGAssets uses the AmanithVG SRE rendering engine). Just run the included "Tiger Example" that allow zoom in and out.
     
  11. runonthespot

    runonthespot

    Joined:
    Sep 29, 2010
    Posts:
    302
    I'm very interested in AmanithVG GLE - you say "in the future" - any more firm timelines?

    Thanks,
    Mike
    @runonthespot
     
    Ska0s likes this.
  12. Ska0s

    Ska0s

    Joined:
    Feb 4, 2014
    Posts:
    31
    At the moment, I don't have a timeline to share; what I can say is that porting AmanithVG GLE to Unity will be the next big work for Mazatech.
     
    jcarpay and runonthespot like this.
  13. sledgeman

    sledgeman

    Joined:
    Jun 23, 2014
    Posts:
    198
    Ok, thanks.....i will try it.
     
  14. Ilarya

    Ilarya

    Joined:
    Aug 4, 2014
    Posts:
    3
    It looks really interesting
     
    adturbo likes this.
  15. Ska0s

    Ska0s

    Joined:
    Feb 4, 2014
    Posts:
    31
    thanks for your interest!
     
  16. adturbo

    adturbo

    Joined:
    Feb 4, 2014
    Posts:
    2
    Sure!
     
  17. Ska0s

    Ska0s

    Joined:
    Feb 4, 2014
    Posts:
    31
    A little clarification: at Mazatech we are working to an SVG engine based on AmanithVG GLE (triangles + shaders solution, like RageSpline) too, not to expose the entire OpenVG 1.1 API to Unity.
     
  18. Ska0s

    Ska0s

    Joined:
    Feb 4, 2014
    Posts:
    31
    Radial gradients are pain in the ass ;)
     
  19. sledgeman

    sledgeman

    Joined:
    Jun 23, 2014
    Posts:
    198
    Interesting, cause of the upcoming new version: trinagles + shaders. Sounds like this tech is more powerful than the current one. More interesting is, how well the SVG import will work in this upcoming version. I read in the RageSpline thread, it isn´t easy to import a clean SVG...
     
  20. Ska0s

    Ska0s

    Joined:
    Feb 4, 2014
    Posts:
    31
    The upcoming engine (triangle+shaders) is not "more powerful", it just solve a different use-case: Realtime rendering of SVG VS Preloading of SVG assets on Textures2D at initialization time.

    At current stage, our AmanithVG GLE engine is capable to handle all the rendering features needed for the correct rendering of SVG (as the SVGAssets do for the software rendering) using only OpenGL|ES 1.x compatible static pipeline (without pixel-shaders). Of course, this means that, for complex paints (like rad.gradients), non-opaque fills, stroke, compositing operations, clip-rects, masks (and mixes of these) several drawing passes are needed. This is the reason that pushed our work in the direction of a pixel-shader solution (OpenGL|ES 2.x compatible). This solution will get rid of performance and antialiasing quality too.
     
    Last edited: Aug 7, 2014
  21. Ska0s

    Ska0s

    Joined:
    Feb 4, 2014
    Posts:
    31
    Support of 100% of SVG specifications is quite impossible to achieve, but fortunately (from a game-developer perspective) it's useless too. We are concentrated on the feature set that really matters!
     
    Last edited: Aug 8, 2014
  22. sledgeman

    sledgeman

    Joined:
    Jun 23, 2014
    Posts:
    198
    Okay, that means there will be two modes in the near future...why not.
     
  23. Ska0s

    Ska0s

    Joined:
    Feb 4, 2014
    Posts:
    31
    I wish to see a growing number of 2D Vector Graphics games in a near future!
     
  24. Ilarya

    Ilarya

    Joined:
    Aug 4, 2014
    Posts:
    3
    could you please elaborate on the antialiasing quality?
     
  25. Ska0s

    Ska0s

    Joined:
    Feb 4, 2014
    Posts:
    31
    In SVGAssets (software rendering) antialiasing is achieved calculating the exact pixel coverage of polygons.
    In our next OpenGL based engine, it's implemented directly in the pixel shaders. FSAA could be used as a fallback.
     
  26. jeffweber

    jeffweber

    Joined:
    Dec 17, 2009
    Posts:
    468
    I'm also very interested in the "triangles and shaders" version that you are working on.

    Will this be strictly for import of SVG files or will you have some capacity to create the vector graphics from scratch from within the editor itself? Similar to what RageSpline does.

    If not, will you have an API that will allow someone else to develop some editor tools for creating vector graphics scenes?

    Also, will you include the ability to easily add collider geometry to the graphics?
     
  27. Ska0s

    Ska0s

    Joined:
    Feb 4, 2014
    Posts:
    31
    good, there is a lot of interest in this new engine!

    There are quite good external editors for 2d vector graphics: Inkscape (free), Illustrator (commercial).
    I'm wondering if someone will use an editor integrated within Unity with 1/100 of the features. Personally I wouldn't use it. Another thing is the possibility (through an API) to create vector graphics in a procedural way at realtime. This could be interesting, maybe.

    This could be done (sooner or later) for the current SVGAssets engine too!
     
  28. Ska0s

    Ska0s

    Joined:
    Feb 4, 2014
    Posts:
    31
    Do you mean something like OpenVG ?
     
  29. jeffweber

    jeffweber

    Joined:
    Dec 17, 2009
    Posts:
    468
    I'm thinking more for drawing out simple 2d landscapes and other simple objects. Also would be nice to be able to make simple tweaks to previously imported assets without having to go back to Illustrator (or other Vector tool).

    I made a game called Krashlander . I used RageSpline for it and I was able to simply draw out the landscapes within the editor. This made it much easier to tweak and test. Continually switching between Unity and a 3rd party vector graphics tool would be a huge pain for some aspects of a game.

    I'm not familiar with OpenVG, I was just thinking if you exposed enough of an API for someone else to come in and add some of the functionality similar to Rage Spline (live editing within Unity) that would be cool and useful... at least to me. :)

    -Jeff
     
  30. Ska0s

    Ska0s

    Joined:
    Feb 4, 2014
    Posts:
    31
    Ok, I got your point! We'll do a brainstorming about that ;)

    Many congrats for your game! It looks really polished and well made (I love this kind of graphic and the simple gameplay).

    Our current (and future) plugin are based on the AmanithVG engines that are implementations of OpenVG 1.1 (think about it as the OpenGL for the 2D Vector Graphics). In my opinion it's something too low-level in a game developer perspective. Correct me, if I'm wrong...
     
  31. jeffweber

    jeffweber

    Joined:
    Dec 17, 2009
    Posts:
    468
    Yes, that's a bit lower level than I was thinking. I was thinking of an API exposed at the Unity level.

    Thanks for considering my suggestions.
     
    Ska0s likes this.
  32. Ska0s

    Ska0s

    Joined:
    Feb 4, 2014
    Posts:
    31
    We take seriously all the valuable advice that we receive!
     
  33. Ska0s

    Ska0s

    Joined:
    Feb 4, 2014
    Posts:
    31
    Anyaway, before to start the porting of AmanithVG GLE, we'll finish some useful features (like automatic atlasing) for the current plugin.
     
  34. Ska0s

    Ska0s

    Joined:
    Feb 4, 2014
    Posts:
    31
    Working hard on texture packing algorithm...

    [​IMG]
     
    runonthespot likes this.
  35. KPancrazio

    KPancrazio

    Joined:
    Aug 5, 2012
    Posts:
    2
    Hey Guys,

    This package seems to be really nice. It seems to be missing support for ClipMask though, or more accurately the CSS that would allow the mask to be linked to a group. Is this accurate, and do you have plans to implement this feature?

    Thanks
    Kevin
     
  36. KPancrazio

    KPancrazio

    Joined:
    Aug 5, 2012
    Posts:
    2
    So digging in further, i noticed that SVGT doesn't support masking. I'm guessing this is probably why you don't support it. I've found a workaround using an alpha mask shader and a second SVGTextureBehaviour to target the _Mask property of it.
     
    Last edited: Sep 14, 2014
  37. turbo3d

    turbo3d

    Joined:
    Apr 28, 2014
    Posts:
    43
    Hi KPancrazio, thank you very much for your appreciation!

    As you have noticed, at the moment SVGAssets does not support <mask> nor <clipPath> tags: the underlying vector graphics rendering engine (AmanithVG SRE) that powers SVGAssets supports those features without problems (OpenVG 1.1 API supports natively the mask and mask layers concepts), we simply not have combined them in order to match all possible SVG cases (i.e. recursive masks).

    But we surely are going to support <mask> and <clipPath> tags asap (at the moment we are working on automatic resolution-independent atlases generation, given a set of input SVGs and the option to explode groups).

    PS: your trick to render the mask via a separate SVGTextureBehaviour, then combine it through a "mask shader" is really nice!
     
  38. turbo3d

    turbo3d

    Joined:
    Apr 28, 2014
    Posts:
    43
    First tests on our new SVG atlas generator: pack a list of SVG documents into texture atlases, with the option to render the whole SVG or to "explode" groups automatically.
    Voilà, your sprites are served and ready to be animated, all strictly resolution independent of course!

    [​IMG]
     
    ibyte, wccrawford and sledgeman like this.
  39. hellhammer

    hellhammer

    Joined:
    Aug 13, 2014
    Posts:
    7
    Hiii

    I'm working on a project in unity in which we're modeling a room so users can walk in the room virtually.

    On the ceiling of the room, there are names of people written on a panel, and the whole ceiling is available as an svg file.

    What I want to do is to import the svg into unity, to make the room, but have the ability to search within those names.

    So for example, when a user searches for a name, the unity application should be able to locate that name within the ceiling, and then the camera should move to that location in the room.

    Given that I want to maintain the co-ordinations of the names in the svg file so I can search and move the camera to that location in unity, is the SVGAssets the right tool for me?
     
  40. turbo3d

    turbo3d

    Joined:
    Apr 28, 2014
    Posts:
    43
    Hi hellhammer,

    SVGAssets will allow you to load the svg file (containing the room ceiling) and render it onto a Texture2D.
    Supposing your scene is made of a plane and a camera placed on top of it, you can move your camera orthogonally in order to point a specific texture pixel. But you must do it manually:
    • your application must have an internal table (or dictionary), where each entry is PersonName --> (x, y) in SVG viewport coordinates
    • render the SVG document with SVGAssets onto a Texture2D
    • use the SVGDocument.pointMap method to get the (x, y) point in surface/texture coordinates
    • move the camera toward those coordinates
    As you can see, at the moment the only way to achieve this result is to maintain an internal table/dictionary.
    We are working to add a new method that will return an SVG element bounding box, given its 'id' attribute (i.e. the name). Please note that:
    1. SVGAssets does not support the <text> element natively, you must convert your text to paths from within your editor (e.g. Inskscape).
    2. SVGAssets won't expose the DOM, but only rendering and utility methods.
    Feel free to share with us a screenshot of your SVG ceiling and something that can make us understand your case better, so we can help you with more details.

    Cya!
     
  41. hellhammer

    hellhammer

    Joined:
    Aug 13, 2014
    Posts:
    7
    Thanks a lot for your help turbo3d.

    Forgive me asking as I'm very new to svg files. Could you elaborate on this a little more?

    One thing I forgot to mention is that the number of the names are somewhere around 80,000. So my guess is the app will have to search and find the location in a dictionary of that size.

    So, if we convert them to path and still want them to be readable and searchable in real-time, would u think that would be an issue in this case?
     
    Last edited: Sep 29, 2014
  42. turbo3d

    turbo3d

    Joined:
    Apr 28, 2014
    Posts:
    43
    In order to convert <text> elements into <path> elements, you must select them and:
    • Menù Object --> Expand (Adobe Illustrator)
    [​IMG]
    • Menù Path --> Object to path (Inkscape)
    [​IMG]

    After doing this for each text elements in your SVG (maybe it would be possible to select the whole SVG and convert all text elements at once, please verify it by yourself in your editor; it seems that it could be possible using Inkscape from the command line, see http://stackoverflow.com/questions/7742148/how-to-convert-text-to-svg-paths ), you can use the freely available evaluation version of AmanithSVG ( http://www.mazatech.com/downloads/amanithsvg_v1_0_0_278_eval.zip ) that includes an SVG viewer application in order to test your SVG file (the rendering at least).

    For what regarding the perfomance on massive dataset (80.000 entries dictionary search), I cannot help you.
    You should make a test application in Unity and verify the feasibility (even without the rendering).

    Anyway, supposing that in your application you do not need to see the whole SVG (i.e. all names at the same time), you can think to have an SVG file for each person name, and render the wanted SVG file / person name (into a texture) before to move/zoom the camera. This approach could help you to break the rendering complexity, achieving better performance.

    As you can understand, it is really hard to give you specific advices, so please refer to the documentation to see the exact features set of SVGAssets.
     
  43. hellhammer

    hellhammer

    Joined:
    Aug 13, 2014
    Posts:
    7
    Thanks a lot for your kind help turbo3d.
    I'll try your suggestion. :)
     
    turbo3d likes this.
  44. polycular

    polycular

    Joined:
    Oct 8, 2014
    Posts:
    17
    Hi,

    I want to render a map in realtime from a SVG on mobile devices, with your solution I guess I would need to draw the svg anew when the zoom level changes correct? In the C++ API I saw that there is a function which can draw a portion of the svg to a texture at least I think the offsets in the declaration were meant like that... (it is in the sample viewer, called blend if I remember correctly).
    Your're solution can't render directly in a 3d scene? I just wonder if it would be fast enough for what I try to achieve because for a try it is quite pricy, and I once bought the complete rage suite...
    Any suggestions, I want a performant, future ready solution...
     
  45. polycular

    polycular

    Joined:
    Oct 8, 2014
    Posts:
    17
    so I bought your PlugIn and gave it a try, rendering is just feasible with a resolution of 512x512max on Desktops even with the sample files, the specs of 30ms of the tiger I am not sure how you would have tested that, calc once and then render the texture, well that rendering a plane with a texture is not very expensive, if you could eloborate on that...
    I tested the simple sample as is with 4.6.18b on nexus5 and nexus7 resulting in pink missing texture screens, so the samples are not working, regardless of the resolution I type... so is it working on Android, tomorrow I will test on iOS.
    If I don't reimport all assets the dlls seem to be missing even tough they are not, this glitch propably is a unity one...
    not sure if your plugin is what I would have expected
     
  46. turbo3d

    turbo3d

    Joined:
    Apr 28, 2014
    Posts:
    43
    Hi polycular,

    In order to setup the plugin correctly, the Plugins folder (along with all plugins/dll files) must be inside the outer-most Assets directory of your project (as stated from official Unity guide: http://docs.unity3d.com/Manual/PluginsForDesktop.html ).

    I would suggest you to perform the following steps:
    • Copy away (i.e. copy&paste) the whole Assets/SVGAssets directory into a separate path (e.g. C:\Backups\SVGAssets)
    • From C:\Backups\SVGAssets\Samples\svgTexture\Assets folder, copy SVGAssets.cs, SVGTextureBehaviourScript.cs and Plugins folder into your Project --> Assets folder
    So your project layout should look like the following:
    Code (CSharp):
    1. YourProjectDir
    2.    |
    3.    |---> Assets
    4.            |
    5.            |----> SVGAssets.cs
    6.            |----> SVGTextureBehaviourScript.cs
    7.            |---->Plugins
    8.                      |
    9.                      |---> Android(containing libAmanithSVG.so)
    10.                      |---> iOS (containing libAmanithSVG.a)
    11.                      |---> libAmanithSVG.bundle
    12.                      |---> x86 (containing libAmanithSVG.dll)
    13.                      |---> x86_64 (containing libAmanithSVG.dll)
    This should fix the "pink texture" problem.

    For what regarding the performance, we have benchmarked the rendering engine: given a vector representation of the SVG in memory (i.e. the SVGDocument) and a target memory buffer (i.e. the SVGSurface), the production of the pixels (i.e. surface.Draw(document)).

    The production of a frame in an application, could consists in several steps depending on the application itself; in your case it seems that you need to perform realtime vector rendering, and it implies:
    1. to render the SVG on a memory surface (surface.Draw(document))
    2. copy the surface content onto a texture (surface.Copy(texture))
    3. upload texture to GPU (texture.Apply)
    Of course steps 2 and 3 are not related to vector graphics rendering (you can try by yourself to load a PNG at runtime and put it onto a texture in realtime to see the performance). SVGAssets, as discussed in previous posts, does not solve this use case: for the realtime use case we are developing a totally different engine based on OpenGL / OpenGL ES. SVGAssets solves the problem to manage the deploy of applications on devices with different resolutions / screen sizes: instead to have multiple copies of the same bitmap, you can keep your asset in SVG format and render it at the target resolution.

    If you are thinking that SVGAssets implements a slow software rendering engine and that there could be big margins of performance enhancements, I have a bad news for you: AmanithVG SRE (the native engine behind SVGAssets) is the fastest crossplatform vector graphics software rendering engine available on the market. The only other SVG software rendering solution seems to be MrJoy/UnitySVG, but according to their official benchmarks (see https://github.com/MrJoy/UnitySVG/blob/master/benchmarks.txt) it seems a lot slower.
     
    Last edited: Oct 9, 2014
  47. ibyte

    ibyte

    Joined:
    Aug 14, 2009
    Posts:
    805
    Hello developers of SVGAssets. I found your product when doing a Unity Assets store search for svg.

    I have to tell you I am at a cross roads for picking the GUI solution for my next game. I have the most experience with EZ-GUI. Having said that I also purchased N-GUI on sale last year and we have uGUI coming down the pipe with Unity 4.6.

    I have always preferred vector to bitmap art for GUI's and was a very early supporter of Ragespline and Ragetools. I used the importer to create some regular graphics assets but found it difficult to use the solution for a GUI. Also last year I made an investment in NoesisGUI but did not pursue it as my free trial with VS ran out and I lost access to Blend. It seemed earlier version of Noesis had some performance issues with large and complex svg's (xamls). It have been meaning to give it a fair shot again.

    It seems like your package might give me a bridge to use svg assets but use them in conjunction with a bitmap UI manager like EZ-GUI and/or n/uGUI.

    If i gather it right SVG files are included in the build, converted from svg to a buffer compatible with Texture2D at a desired resolution determined at run time?

    I have not read all the posts in this thread in detail but would it be possible to build an Atlas on the fly and update the GUI controls to use that atlas.

    I am gong back to read this thread and will edit this post with any follow on questions. One issue i have noticed when using your the preview tool is that clipping is used a lot in the artwork provided by my artist and your tool is not handling it yet?

    Edit1: Will (AmanithVG GLE) for Unity by a separate product or it will be included in a future update of this product?.

    Edit2: If I purchase your product when could i have access to the atlas generator?

    Edit3: Thanks for the reminder of UnitySVG. I spent some time with that code back in 2011 trying to fix some issues with recursion (it was a bear to debug but I got it working if i remember). I just tried it again on some newer art work i have and it choked. Your viewer worked with no issues and it is very quick on my desktop.

    Edit 4: Is an iOS previewer available?

    Edit 5: I was very impressed btw with the speed in which the viewer consumed a large 9MB svg document that renders to 7653px x 1027px in size and has 1,391 objects.

    Edit 6: Since uGUI will be open source perhaps it will be easier to get hooks into it? I believe both EZ GUI and nGUI also ship with full source.

    Edit 7: I also want to use Owlchemy's multiplatform tookit so it should be possible to use this with that as well to handle which assets need to get rendered based on the platform.
     
    Last edited: Nov 9, 2014
  48. turbo3d

    turbo3d

    Joined:
    Apr 28, 2014
    Posts:
    43
    Hi ibyte,
    Thanks for your interest in our SVGAssets plugin!

    You are right: with SVGAssets 1.2 (i.e. the current released version) you will be able to include an SVG file (as a text asset) in your build and produce a Texture2D at a desired resolution at runtime (init and/or resize time).

    At the moment we are working on SVGAssets 1.3 that will include the support of atlas generation: given a set of SVG files, the plugin will produce one or more Texture2D and a set of sprites that reference sub portions of textures. The atlas generator can take whole SVG files and/or split first level SVG groups (<g> tags).

    [​IMG]

    The atlas that will be generated at runtime, will be like the following one (pixels dimensions will change on different devices, according to specified values of Reference Width/Height, Scale adaption and Offset Scale parameters):

    [​IMG]

    SVGAssets 1.3 won't include the clipPath feature, but we will support it starting from SVGAssets 1.4
    So, at the moment, your artists should clip all the paths inside the vector graphics editor (e.g. on Adobe Illustrator the easiest way is to use Pathfinder / Intersect)

    AmanithVG GLE will be the engine behind a new different Vector Graphics plugin, totally aimed to realtime SVG graphics. So no, it won't be included in the SVGAssets plugin.

    From the next release SVGAssets 1.3, scheduled before the end of year.

    iOS SVG player/previewer is not available now, maybe in the future. But you can be sure that we are using the same rendering technology (i.e. same source code!) on desktop player.

    Of course we will start supporting the native uGUI included in Unity 4.6

    We don't have experience with Owlchemy's multiplatform tookit, what we can say is that, with 2D vector graphics you will have a single (text/svg) asset file that will be the same on all platforms, and it will be rendered at init time according to the device itself (e.g. its resolution)
     
    Last edited: Nov 10, 2014
  49. ibyte

    ibyte

    Joined:
    Aug 14, 2009
    Posts:
    805
    SVGAssets 1.3 won't include the clipPath feature, but we will support it starting from SVGAssets 1.4
    So, at the moment, your artists should clip all the paths inside the vector graphics editor (e.g. on Adobe Illustrator the easiest way is to use Pathfinder / Intersect)


    Would you explain how that is done in Inkscape?

    iOS SVG player/previewer is not available now, maybe in the future. But you can be sure that we are using the same rendering technology (i.e. same source code!) on desktop player.

    I was hoping to asses the performance on my iPad

    Thanks for your reply


     
  50. ibyte

    ibyte

    Joined:
    Aug 14, 2009
    Posts:
    805
    I was originally thinking to have the game render the images each time it starts up but a better way would be to cache the images and only regenerate if they go missing.