Amplify - Virtual Texturing for Unity Pro, RELEASED! Starting at $99

Discussion in 'Showcase' started by Diogo Teixeira, Jul 11, 2011.

  1. artzfx

    artzfx

    Member

    Joined:
    Apr 28, 2008
    Messages:
    472
    Having just purchased Amplify Pro, I have to say the support for this product has been first class thanks Diogo.
  2. Andrew_atl

    Andrew_atl

    Member

    Joined:
    Sep 21, 2010
    Messages:
    94
    -Is the texture size limit per level, (like when you load a new level you can start over using the max size limit again), or is the size limit for the whole final project .exe?

    -If you put all your textures in and you go over your limit size, what happens? Or does it just keep resizing the textures you add to fit in that limit?

    Thanks.
    Last edited: Aug 3, 2011
  3. Demostenes

    Demostenes

    New Member

    Joined:
    Sep 10, 2010
    Messages:
    1,107
    Resolution is kind of dynamic, so you always render only that pixels, you really need. VT technology works as automatic "LOD" and oclussion technology for textures. This is wonder of this technology and reason, why you can have scene full of 16k*16 textures and use even lower memory, than with nomal resolution textures....
    Last edited: Aug 3, 2011
  4. Demostenes

    Demostenes

    New Member

    Joined:
    Sep 10, 2010
    Messages:
    1,107
    Limit is for single VT. In pro version 512k*512k. Just do some math and count, how much textures you can fit in....In upcomming 1.3.1 you will be able to set VT for whole project, or just for scene.
    Last edited: Aug 3, 2011
  5. chadchat

    chadchat

    New Member

    Joined:
    Apr 5, 2008
    Messages:
    154
    Apologies if this has been explained already, I did a search and couldn't see anything...

    But does anyone have any clues as to why this texture shows up as this purple color?

    [​IMG]
  6. techmage

    techmage

    Member

    Joined:
    Oct 31, 2009
    Messages:
    1,883
    If you got this running on iOS or WebPlayer I'd be all over it.

    And in the webPlayer if it streamed the textures from the web,... I'd have alot of value for that.
  7. Dreamora

    Dreamora

    Member

    Joined:
    Apr 5, 2008
    Messages:
    26,586
    It can not run in the webplayer unhappily, ever, as the webplayer does not support native code plugins

    I hope for iOS though too but I can somewhere guess the effort thats involved to make it happen and support. But it would lead to pure joy over at Epic, how to run Citadel with iPhone4 quality without crashing on the 256mb RAM devices ;-) Should actually be a good incentive to approach UT for some backup funding to priorize its support on additional platforms, especially mobile but also Consoles which is more to a magnitude more (Wii) limited than current gen android devices for example
    Last edited: Aug 9, 2011
  8. Diogo Teixeira

    Diogo Teixeira

    Member

    Joined:
    Apr 9, 2010
    Messages:
    462
    Sorry for the delayed response.

    You are very close. It works in a similar fashion but not on the complete textures. All the textures are packed together and split into tiles, so that when detected far away a bunch of them are streamed together to save bandwidth. The runtime shader then uses additional instructions to correct the mapping. This website provides a really good explanation and even source code: http://silverspaceship.com/src/svt/

    Highly appreciated. Good to know we're on the right track :)

    That's right, you can use a 512K x 512K VT for each of your scenes. You can have as many virtual textures as you need. No hard limit, except size per-VT.

    The problem right now is sharing textures between them. Not so peaceful and not recommended. Because of that limitation, we've had a request to support a single virtual texture per-project, which is more than enough in the vast majority of cases. This way, all the textures are shared across all scenes and you can load any level at any time (additive loads also supported) virtually without texture loading times.

    We are working to provide this feature in the next update, 1.3.1, which is a bit delayed but on the way. You will be able to switch between one VT per-scene or per-project.

    If you reach the VT size limit, the system won't allow adding any more textures to the VT.

    I assume that it doesn't show because the tiles weren't streamed in yet and streaming doesn't work on those little preview viewports. The pass that detects visible tiles is done either on Scene viewport (play off) or Game viewport (play off). Since we can't detect tiles on those little preview viewports, for it to show up there it has to be visible on one of the main viewports.

    We will most likely do iOS first, as soon as we can afford it. Web streaming is planned but might take a while, we're also short on man power.

    Our native modules are basically the texture de/compressors. Naturally, for performance reasons. We should be able to get it working in pure clr in a jiffy.

    Completely agreed.
  9. Zomby138

    Zomby138

    Member

    Joined:
    Nov 3, 2009
    Messages:
    370
    I noticed in this image it looks like the ground texture has very low anisotropic filtering. If you are overriding unity's texture importer, how are you handling aniso ?
  10. Diogo Teixeira

    Diogo Teixeira

    Member

    Joined:
    Apr 9, 2010
    Messages:
    462
    At the moment we don't support anisotropic filtering, so those settings are currently being ignored. We do allow explicit control over mip bias in 1.4.0, (previously known as 1.3.1) which is due very soon, and that helps improve the quality quite a bit at the expense of streaming a few more pages.

    We are planning on adding support for aniso in 1.6.0 (around Nov/Dec), unless there is a high demand to have it sooner.
  11. Marky

    Marky

    New Member

    Joined:
    Mar 30, 2010
    Messages:
    3
    I know this sounds like a stupid question. It looks great for desktoip applications. If I was purchase this product I take it the file size for web or desktop is huge as the textures are very detail, or does amplify compress the file size even more than unity does on say a web build? I would buy in a second for streaming web builds also.....

    M
  12. Pulov

    Pulov

    Member

    Joined:
    Feb 20, 2010
    Messages:
    556
    Hi there,

    The new version of unity suposses any advantage for this addon?.
  13. Diogo Teixeira

    Diogo Teixeira

    Member

    Joined:
    Apr 9, 2010
    Messages:
    462
    Marky, it doesn't work with web builds at the moment. But yes, it would help.

    Pulov, streaming is 2x faster with Unity 3.4. We are about to release Amplify 1.4.0 with streaming improvements for U3.4, project wide VTs, multicore-builds and other improvements.. plus, it's almost ready.

    The only thing preventing us from releasing it right now is this annoyance right here:
    http://forum.unity3d.com/threads/78282-GC-gives-a-fatal-error
  14. Diogo Teixeira

    Diogo Teixeira

    Member

    Joined:
    Apr 9, 2010
    Messages:
    462
    We are happy to announce Amplify 1.4.0. In this version, we're rolling out some nice features that, we hope, will considerably improve productivity. There are still a few issues to iron out and they'll be addressed in smaller incremental revisions (1.4.X) during the coming weeks.

    Important Improvements
    • Full support for Unity 3.4 - results in faster analysis and streaming, via Get/SetPixels32.
    • Multi-threaded Virtual Texture builds - build performance now scales linearly with the number of logical cores.
    • Amplify Texture Material Context - represents the scope in which materials are found and collected, to allow project-wide VT as well as scene-wide VT. This effectively allows you to store all your project's textures in the same virtual texture, therefore avoiding texture loading times when streaming in other scenes - e.g. via OpenSceneAdditive. It also makes possible sharing textures between different scenes.
    • More control over Analysis/Prepass render texture - default size is also larger to avoid missing pages on long thin polygons.
    • More control over Mip Bias starting value - results in overall detail improvement.
    • Support for Legacy Lightmapped shaders
    • Support for Unicode image file names

    Serious Bugs Killed
    • "Fatal error in GC: too many root sets" crash - used to come up everytime during large VT builds, e.g. 128K x 128K, and completely crash Unity, making impossible to work with large virtual textures.
    • Occasional hangs during build - caused by incremental resize and lack of thread exception handling.
    • Streaming issues with large virtual textures - large VTs, above 256K x 256K were taking way too long to stream the first pages.
    • Exception in collector thread - due to loading invalid/unsupported textures, was causing automatic incremental updates to stop working.
    • Diffuse-only VT showing invalid normals - normal cache was not allocated and invalid/undefined data was being used by the shader.
    • Amplify manager not being restarted, e.g. when leaving Play mode - some events that were available initially are now deprecated in Unity 3.4.
    • Missing/invalid pages - Lowest mip is now always present and available in cache.

    Because this version took us much longer than expected to release, we decided to reduce our iteration times by releasing smaller updates more often. We plan to keep you posted on important updates, however, for smaller updates we've built a version tracking webpage that will contain a link to the latest release and a list of all the changes for each revision. It may be accessed via the "Check for Updates" button in Amplify/About menu, and will point to the following URL: http://insidious.pt/#amplify-latest

    Please let us know of any issues you encounter with this version and we'll fix them with the highest priority.
    Last edited: Sep 25, 2011
  15. kurylo3d

    kurylo3d

    Member

    Joined:
    Nov 7, 2009
    Messages:
    872
    Hey this might be a dumb question, but does this work on an android tablet?
  16. Dreamora

    Dreamora

    Member

    Joined:
    Apr 5, 2008
    Messages:
    26,586
    If android is a new name for an OSX or Windows version, then yes ;)
    Otherwise no, its desktop only at the time.
  17. Diogo Teixeira

    Diogo Teixeira

    Member

    Joined:
    Apr 9, 2010
    Messages:
    462
    Kurylo3d, we are planning to add support for iPad 3+ and equivalent android devices as soon as they are out. We believe current tablets will have a hard time handling the load.
  18. techmage

    techmage

    Member

    Joined:
    Oct 31, 2009
    Messages:
    1,883
    does this pack your lightmaps into the virtual texture as well?
  19. Diogo Teixeira

    Diogo Teixeira

    Member

    Joined:
    Apr 9, 2010
    Messages:
    462
    eem, not at the moment. But there's a real possibility that we end up supportign them, in the near future, once we switch to pow2 pages to get a massive boost in streaming performance.
  20. kurylo3d

    kurylo3d

    Member

    Joined:
    Nov 7, 2009
    Messages:
    872
    is there a way to support larger resolutions in unity beyond 4096... in case i want to reduce draw calls and have lots of resolution? Would need to be able to do it on the tablet :/
  21. Diogo Teixeira

    Diogo Teixeira

    Member

    Joined:
    Apr 9, 2010
    Messages:
    462
    Kurylo3d, it's possible to do it with Amplify because we basically override Unity's texture manager. Might be tricky to pull it off without overriding.
  22. kurylo3d

    kurylo3d

    Member

    Joined:
    Nov 7, 2009
    Messages:
    872
    not sure i understand what you mean, but your thing doesnt work for android :/.. and thats what im lookn for at the moment.. better ways to reduce draw calls while maintaining detailed textures.
  23. Diogo Teixeira

    Diogo Teixeira

    Member

    Joined:
    Apr 9, 2010
    Messages:
    462
    Small update today: 1.4.1

    What's new?
    • Now showing reimport/restore texture progress.
    • Work around for Unity's material leaks in converter tool by saving assets frequently.
    • Fixed performance issues right before page generation starts.
    • Updated Amplify Shader Conversion Pack. An "Amplify/" prefix is now mandatory in the shader name.
    What's next?

    Due to some Unity API limitations we decided to anticipate work on 1.5.0. If we succeed, we'll be able to solve all editing performance issues for big asset databases (3000+ materials), and all important runtime issues (e.g. batching, streaming). However, solving these issues might require changes to the current workflow, in which case we'll name it 2.0.0 instead, and still make it available for free to all our current customers. We'll keep you posted.
  24. techmage

    techmage

    Member

    Joined:
    Oct 31, 2009
    Messages:
    1,883
    Just want to say, if you get this working on iOS with the ability to basically stream an unlimited (or very large) amount of texture data and lightmaps on demand, all automatically handled. I would purchase it.
  25. Diogo Teixeira

    Diogo Teixeira

    Member

    Joined:
    Apr 9, 2010
    Messages:
    462
    Incremental update: 1.4.2

    Get it here: http://www.insidious.pt/#amplify-latest

    What's new?
    • Runtime memory footprint reduced by 33%.
    • Added ability to widen the prepass camera's fov to detect pages outside the visible area.
    • Added batch texture transcoder to Amplify/Tools. Also updates the source material by replacing the original texture with the converted one.
    • Material converter now ignores materials with unsupported textures and issues a warning.
    • Materials are now dirtied less often, usually only after being added or removed from VT.
    • Removed DDS file support because they couldn't be resized via import settings.
    • Fixed multiple AmplifyRuntime support.
    • Fixed tiling in "Amplify/Bumped Diffuse" shader.
    • Fixed rebuild on switching between scenes using different virtual textures.
    What's next?

    The next release will be dubbed 2.0.0 and will feature revamped workflow, faster streaming (up to 4x), draw call reduction and greatly reduced CPU usage during editing along with much more to come in the future. We will be reviewing our pricing structure for the next release, however as promised earlier, it will be provided for free to our current customers. That being said, now is a good time to purchase.

    We're planning on adding support for next-generation iOS and Android devices early next year. Regarding the lightmaps: do you mean regular lightmaps or RNM/directional lightmaps? The former might be doable in 2.0.0 but the latter might not be possible considering our bandwidth constraints.
    Last edited: Oct 22, 2011
  26. Pulov

    Pulov

    Member

    Joined:
    Feb 20, 2010
    Messages:
    556
    Hi diogo, by buying now, how long will the updates keept freely available? Til v3.0?
  27. Diogo Teixeira

    Diogo Teixeira

    Member

    Joined:
    Apr 9, 2010
    Messages:
    462
    Exactly. Other features planned for 2.X.X include iPad3/Tegra3 support, anisotropic filtering, massive texture import (>16K), faster page generation and spherical page detection.
    Last edited: Oct 22, 2011
  28. Dan Stubbs

    Dan Stubbs

    Member

    Joined:
    Jul 14, 2010
    Messages:
    45
    Looks absolutely stunning, recommended Amplify to the guys at work, reckon we can probably find a use for it.
  29. Diogo Teixeira

    Diogo Teixeira

    Member

    Joined:
    Apr 9, 2010
    Messages:
    462
    aDFP, cheers! This kind of tech might suit some of their needs indeed.
  30. PolishRenegade

    PolishRenegade

    Member

    Joined:
    Jul 22, 2010
    Messages:
    564
    Is 2.xx still planned to break 1.xx workflow and force the buyer to redo the work? I'm also interested in this product but because we are working with a continuous project spanning years of development, implementing new functionality means we have to do it to the whole project / sub-projects. Fundamentally changing the current workflow has to be well supported and as future-proof as possible... (mature technology implementation mainly).

    In any case, some quick questions, confirmations if you may Diogo;
    - Lightmap support might be added for 2.xx, however there are no problems using Amplify with lightmapped objects. Is this correct? (lightmap just won't be streamed...)
    - Are additive scenes supported? (scene loads scene which loads scene)
    - Any news on the massive number of material support? (we currently have > 1500 and growing...)
    - Asset bundles... created with BuildStreamedSceneAssetBundle(), can Amplify work with those?

    I'm still going to try a small scale test with the Free version, hopefully most of my questions are moot.

    Thanks and keep up the good work!
  31. Diogo Teixeira

    Diogo Teixeira

    Member

    Joined:
    Apr 9, 2010
    Messages:
    462
    I'm glad you're asking that question. After doing a bit of research this week we found out that our original plan, which required overriding/boxing of Unity Material, apparently isn't possible under the current API. As such we have no choice but to resort to transparent run-time patching and keep the current level of redundancy in the builds. That said, we'll have to keep the same 1.xx workflow in 2.xx.

    We might add support for regular RGB lightmaps only, not the RNM/Directional kind. But yes, lightmaps are supported, they just won't be virtualized/streamed.

    Indeed, they are. We provide support for project-wide virtual textures to share all texture data between all your scenes. One of our customers is already using this feature successfully on a open world style game.

    It is usable right now even for 3000 materials but there might be some noticeable lag in the editor and high CPU usage. We are absolutely determined to fix all the scalability issues and will do so in time for 2.xx.

    Do you mean bundling the virtual texture? Or be able to virtualize bundled assets. No to the former but yes to the latter.

    At the moment we can't bundle virtual textures but we are trying to find an effective way to do it.

    Cheers
  32. ina

    ina

    Member

    Joined:
    Nov 15, 2010
    Messages:
    336
    There have been some advances to capabilities mobile devices - any updates on whether this would be available for mobile?
  33. glebski

    glebski

    New Member

    Joined:
    Nov 21, 2009
    Messages:
    367
    Just before I purchase this can you tell me if it will suit my purposes please.
    I have a grid of simple planes, each with a unique texture on it. These are time slices and each plane represents a moment in time. For most part the planes are inactive and are turned on a few at a time. However, if all of them are to be turned on at the same time then there would be around 50 planes. If for each of the 50 there is an Amplify texture, would the game grind to a halt? Would I be able to add 1k, 2k textures onto each plane? As the planes occlude one another does it make a difference? If I change the opacity on the material making the planes semitransparent, will I be able to see a kind of time-lapse/onion-skinning effect at high resolution, seeing the successive images through the planes?
    Sorry if this doesn't all make sense. But before I purchase I would like to know Amplify will work for what I need.

    Thank you
  34. Wakey

    Wakey

    New Member

    Joined:
    Dec 21, 2011
    Messages:
    2
    This is indeed a fascinating product.

    I have one technical question.
    The optimized virtual texture is stored in standalone build data. But what happens with original texture bitmaps that were used to make materials?
    Are they also inside the built package? Because that would duplicate deployed data that is already quite large.
    Or did I misunderstood something?
  35. Demostenes

    Demostenes

    New Member

    Joined:
    Sep 10, 2010
    Messages:
    1,107
    Amplify ignores Unity cache, it is using directly the texture (Unity has limit 4096*4096, so Amplify cant go through Unity). During material conversion (unity2amplify) amplify rescales texture in Unity cache to 64*64 (to not waste space, because Unity needs this cache, you cant delete it) and builds VT from original (in its native resolution). Original stays of course unmodified.
  36. Wakey

    Wakey

    New Member

    Joined:
    Dec 21, 2011
    Messages:
    2
    Thank you for your answer.
  37. Diogo Teixeira

    Diogo Teixeira

    Member

    Joined:
    Apr 9, 2010
    Messages:
    462
    Wakey, what Demostenes said and I just wanted to add that these useless 64*64 textures are also compressed to waste less space. We might switch to 32*32 in the future since some of our clients are using a large amount of textures, even beyond what we had originally imagined. Using 1500 textures will waste no more than 6 MB and less than 2 MB once we scale down.
  38. xadhoom

    xadhoom

    New Member

    Joined:
    Sep 2, 2010
    Messages:
    91
    Hi,

    This feature in 3.5 should come in quiet handy for Amplify, doesn´t it?

    More low level rendering possibilities from native code Plugins:
    > Ability to access Direct3D 9 device pointer.
    Link

    Does this allow the low level texture access you ever wanted?

    Greetings,
    xad
    Last edited: Jan 2, 2012
  39. Diogo Teixeira

    Diogo Teixeira

    Member

    Joined:
    Apr 9, 2010
    Messages:
    462
    xadhoom, indeed it should. Too bad it's platform specific. Nonetheless, we'll be looking into it soon.
  40. unisip

    unisip

    Member

    Joined:
    Sep 15, 2010
    Messages:
    139
    Hey, have you had a chance to look at what 3.5 might improve in terms of texture loading time?
    I can't clearly see how accessing the dx9 device pointer would help loading textures into unity differently...

    I have similar issues on a project where i load lots of textures at runtime, using Texture2D.LoadImage(), then Texture2D.Compress, and I clearly see that about half is spent on Compress. Right now this is inefficient when loading textures of say 512x512 size.

    Did you find new ways to load texture faster with 3.5, not using LoadImage method? I didn't...
  41. kurylo3d

    kurylo3d

    Member

    Joined:
    Nov 7, 2009
    Messages:
    872
    You wrote you wont be supporting directional lightmaps... thats really bad. Just saying.
  42. jsr2k1

    jsr2k1

    Member

    Joined:
    Aug 11, 2010
    Messages:
    24
    Hello, I tried to build a project with Unity 3.5 version, but the Amplify/Build doesn't create the Amplify folder with the texture inside the build folders. If I build with Unity 3.4.2 all works correctly.

    The plugin works ok in the editor in 3.5, the problem is just the build.
    I use the free version of Amplify.

    Any suggestion? Anyone have problems with build in Unity 3.5?

    Joel
  43. jsr2k1

    jsr2k1

    Member

    Joined:
    Aug 11, 2010
    Messages:
    24
    Hi,

    I need to enable and disable several cameras in my project, but when I enable the camera then the "camera_PrePass" is deleted and the plugin doesn't work any more.

    Is there a way to enable/disable the cameras and keep the plugin still running?

    Joel
  44. xadhoom

    xadhoom

    New Member

    Joined:
    Sep 2, 2010
    Messages:
    91
    Is this project still alive? :-/
  45. Diogo Teixeira

    Diogo Teixeira

    Member

    Joined:
    Apr 9, 2010
    Messages:
    462
    Sorry for the delay guys. Unfortunately, we had to work on other projects during this long absense, in order to make ends meet.

    This project is still alive, however. I'm almost finished with support for 3.5 and will release it before the end of May. It will feature several performance improvements and support for linear space rendering.

    I decided not to go the dx9 route, for now. Our main bottleneck at the moment is caused by Unity's asset editor pipeline. Also, I do not use LoadImage or Compress. We upload uncompressed texture data using SetPixels.

    I don't recall writing this. Directional lightmaps are now supported in 3.5 and work seamlessly with Amplify, just like regular lightmaps were supported in previous versions. What we can't do is virtualize those lightmaps, because it's too much data to stream in.

    Amplify doesn't fully support 3.5 yet. Please wait until the end of May for a compatible version. Sorry for the inconvenience.

    Maybe. I'll have to do some testing, but won't be able to before June :\

    Yes, just a bit slow because we had to move on to other stuff. We haven't given up on Amplify just yet ;)
  46. xadhoom

    xadhoom

    New Member

    Joined:
    Sep 2, 2010
    Messages:
    91
    I´m happy to hear that and looking forward to the upcoming release :)
  47. duke

    duke

    Member

    Joined:
    Jan 10, 2007
    Messages:
    746
  48. Diogo Teixeira

    Diogo Teixeira

    Member

    Joined:
    Apr 9, 2010
    Messages:
    462
    duke, no. It would require a completely fundamentally different approach.
  49. thylaxene

    thylaxene

    Member

    Joined:
    Oct 10, 2005
    Messages:
    648
    Does Amplify fully support 3.5 yet? It is nearly end of May.... Sorry to nag but I need to do a tech test for a client. But if need be I'll drop back to an older version of Unity.
  50. Diogo Teixeira

    Diogo Teixeira

    Member

    Joined:
    Apr 9, 2010
    Messages:
    462
    thylaxene, I'm almost done. Been really busy working on completely unrelated stuff. Now I just need to do a larger scale test and should have it uploaded either today or tomorrow to: http://insidious.pt/#amplify-latest

    In the meantime, we've halted sales and are preparing for a relaunch on the asset store.
    Last edited: May 25, 2012