Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

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

Discussion in 'Made With Unity' started by Diogo-Teixeira, Jul 11, 2011.

  1. Diogo-Teixeira

    Diogo-Teixeira

    Joined:
    Apr 9, 2010
    Posts:
    494
    .
    Get Amplify Pro for only $350 USD

    ** Only for Unity Pro **
    (requires full-screen post-processing effects)

    Try Amplify Now

    About Amplify

    Amplify is a Virtual Texturing extension for Unity Pro. It allows scene/level designers to use a huge amount of textures without worrying much about texture memory limits or streaming. So how will this work?

    To use this plug-in and take advantage of virtual texturing you don't have to change the way you assemble your scenes. Amplify adapts to your workflow, and not the other way around. There's is absolutely no need to do UVs any differently. While you edit your scene, the regular way, the system incrementally builds the virtual texture so you can instantly preview the results right there in the editor.


    Official Tech Demo (HD)​

    This product opens up the possibility - right now - of using 3d painting tools like Deep Paint 3D, 3D-Coat, Mudbox, Mari, and others, to create immersive, unique environments that would not be feasible without this kind of technology.


    In this demo, texture density ranges between 3 to 5 pixel per-cm, sometimes a bit more in props, which would be considered normal in a regular game. However, in this case we rarely repeat the same texture and the detail is mostly unique.

    Pro Features
    • Virtual textures up to 512K x 512K.
    • Priority support
    Standard Features
    • Virtual textures up to 256K x 256K.
    • Seamless integration with Unity Editor.
    • Real-time WYSIWYG editing.
    • Per-material diffuse+coverage, normal and glossiness textures.
    • Per-material textures larger than 4K x 4K.
    • Texture repeat / tiling.
    • Trilinear filtering.
    • Variable bit rate texture compression.
    • Support for dynamic surfaces.
    • Automated incremental builds and deployment.
    • High performance.
    • Low memory footprint.
    • Standalone Windows and Mac support.
    We've spent a lot of time and effort trying to make the transition to virtual texturing as simple and transparent as possible. Below you can see a video explaining how the VT workflow process within Unity and another one demonstrating the kind of scale we can achieve using this technology:


    Workflow Overview (HD)​

    A high resolution screenshot of a virtual textured Sponza scene.

    Where To Buy

    You may purchase securely at our website.

    Contacts

    Feel free to contact us if you need more information, either using our feedback page or directly using contact information available at our company page.
     
    Last edited: Jul 23, 2013
  2. Spectre9000

    Spectre9000

    Joined:
    Aug 30, 2010
    Posts:
    170
    Looks great, though I don't suppose there would be the possibility of a Unity standard version?
     
  3. Diogo-Teixeira

    Diogo-Teixeira

    Joined:
    Apr 9, 2010
    Posts:
    494
    Unfortunately it's not possible for a mere technical reason. Amplify relies on RenderTexture (a Unity Pro feature) to do it's job properly. It would be possible, however, if direct texture uploads were fast enough.
     
  4. RandAlThor

    RandAlThor

    Joined:
    Dec 2, 2007
    Posts:
    1,293
    Will it work with unity ios pro or will you support it in the future?
     
  5. Diogo-Teixeira

    Diogo-Teixeira

    Joined:
    Apr 9, 2010
    Posts:
    494
    Right now, there are two reasons holding us back from mobile:
    1) Financial resources
    2) Educated guess that the hardware won't be fast enough until a couple more iterations.
     
  6. rockysam888

    rockysam888

    Joined:
    Jul 28, 2009
    Posts:
    650
    What is the difference between this product and the substance texture from unity 3.4?
     
  7. Diogo-Teixeira

    Diogo-Teixeira

    Joined:
    Apr 9, 2010
    Posts:
    494
    Since the purpose of procedural techniques is extremely high compression by constraining content creation to a compound of formulas and variables, it requires a special/custom editor. You can't really paint these textures the same way you paint on Photoshop.

    The purpose of VT is aimed at artistic freedom, at the cost of storage. Using VT, you can import your hand painted texture data from applications like Photoshop. Applications like Deep Paint 3D, 3D-Coat, Mudbox, Mari, and others, actually let you paint your objects in 3D. Some even split your scene into multiple reasonable sized textures (like 4K x 4K) and let you paint across materials.

    What Amplify does is basically remove the common restrictions you have on your scenes. You can go far beyond what would be possible without splitting your scene into multiple other scenes and having loading screen transitions or some tricky streaming solutions, because your textures don't fit the available hardware resources. Instead of being restricted to a few dozen 4K x 4k textures per-scene, you can now go up to hundreds or even thousands.

    Additionally, the internal texture management done by VT is nearly optimal, there's nearly no wasting gpu memory. This means you get a lot more available memory for non-virtualized texture types, e.g. lightmaps.
     
  8. Redbeer

    Redbeer

    Joined:
    Nov 1, 2009
    Posts:
    402
    Can you make a comparison video of a scene with 4K x 4k textures running in a Unity scene "without" this product vs. with this product? I'm curious what the "actual" performance benefits are from the standpoint of framerate.
     
  9. Bael

    Bael

    Joined:
    Jul 21, 2008
    Posts:
    106
    Congrats on the release! This is awesome technology, glad to see it find it's way into Unity.

    Framerate performance isn't the primary benefit of virtual textures - it might have a side benefit of reducing draw calls, but the major benefit is allowing your artists to not have to worry about memory budgets and how many or how large their textures are. It also allows much higher visual fidelity, as texture memory is spent entirely on things currently in-view rather than everything in the scene in general. With this tech you could put a unique 4Kx4K texture on every object in your scene while staying under run-time memory budget.

    The main point to take away from the video he posted is the quality and resolution of every texture you see. That demo is 10GB worth of textures, way more than you'd ever be able to fit in memory normally. Maybe updating the video with comparison shots of this tech vs the same scene with textures compressed down to match the amount of memory used in run-time would better illustrate the point - it's a massive difference.
     
  10. I am da bawss

    I am da bawss

    Joined:
    Jun 2, 2011
    Posts:
    2,574
    So I see you hacked into John Carmark's computer and stole his MegaTexture source code from ID tech 5 engine!


    I AM KIDDING I AM KIDDING!! :D


    Definitely very interested. Looking forward for the mobile version!
     
    Last edited: Jul 12, 2011
  11. Diogo-Teixeira

    Diogo-Teixeira

    Joined:
    Apr 9, 2010
    Posts:
    494
    Redbeer, what Bael said is exactly right. I'm not even sure the demo will run, to be honest. However, we are trying nonetheless.

    VT is not supposed to improve performance, on some older cards it's even quite the opposite. Naturally, this flexibility comes at cost. A small shader performance cost (tiny on modern gpus), a low resolution tile analysis pass (low res) and, for the time being, a few CPU milliseconds also. Hopefully someday UT will step in and fix texture uploads for everyone and that will drastically improve VT CPU performance all around.

    I am da Bawss, probably wouldn't have helped much unless Carmack coded MegaTexture in Unity C# scripts. hehe
     
    Last edited: Jul 12, 2011
  12. I am da bawss

    I am da bawss

    Joined:
    Jun 2, 2011
    Posts:
    2,574
    Diogo, I have a question, with Amplify, you were saying there is no need to worry much about texture memory limits or streaming. Does that mean these huge textures are continuously stream to the memory on call? Is it possible let's say if I am to create a huge open sandbox type game (let's say "Oblivion" or GTA series) - player only had to wait for the initial texture caching, then the rest get stream/call in seamlessly?
     
  13. Diogo-Teixeira

    Diogo-Teixeira

    Joined:
    Apr 9, 2010
    Posts:
    494
    I am da Bawss, exactly. You only need to wait for the lowest res pages to stream (and just the visible ones), which should take only a few milliseconds. From that point on, it continuously streams new pages, on demand and in the background, depending on your camera view.
     
  14. MitchStan

    MitchStan

    Joined:
    Feb 26, 2007
    Posts:
    568
    How does lightmapping integrate with Amplify?
     
  15. Diogo-Teixeira

    Diogo-Teixeira

    Joined:
    Apr 9, 2010
    Posts:
    494
    Amplify supports scenes that use lightmaps, but they cannot be virtualized due to Unity performance restrictions on texture uploads. By that I mean that they are stored outside the virtual texture, as regular textures.

    We could very easily virtualize them, but it would degrade performance too much. At the moment we only support virtualization for diffuse+alpha/gloss and normal maps.
     
  16. I am da bawss

    I am da bawss

    Joined:
    Jun 2, 2011
    Posts:
    2,574
    I don't understand, so why can't lightmaps be virtualized? That's one thing I was thinking to use this for. What exactly is the reason?
    I would imagine lightmaps being one of the most varied (unique texture) and most compressible texture it would benefit the most from this technology.
     
  17. Dreamora

    Dreamora

    Joined:
    Apr 5, 2008
    Posts:
    26,601
    Lightmaps are the only textures that you can not reasonably compress actually, cause they are 128bit (thus exr format, not png). Running compression on them would automatically kill the HDR data as the compression only takes ARGB32 into account at maximum.
     
  18. Diogo-Teixeira

    Diogo-Teixeira

    Joined:
    Apr 9, 2010
    Posts:
    494
    The only reason is performance. For some reason, Unity uses way too much CPU time when uploading textures to gpu local memory. Uploading a couple of diffuse+alpha/gloss and normal pages takes around 7 ms. That's already way too much.

    Supporting this *might* help:
    http://feedback.unity3d.com/forums/...re2d-setpixels-for-compressed-textu?ref=title

    However, since it's over a year old I don't hold much hope anymore.
     
  19. Dreamora

    Dreamora

    Joined:
    Apr 5, 2008
    Posts:
    26,601
    I doubt its gonna happen either unhappily, be it more due to the fact that it wouldn't be crossplatform (would be a nightmare on mobile with decompress - apply - recompress)

    Why not push the request of exposure of the DX context + directdraw surface handle?
    That should give a significantly higher gain :)
     
  20. Diogo-Teixeira

    Diogo-Teixeira

    Joined:
    Apr 9, 2010
    Posts:
    494
    I honestly don't think that would be a valid reason. As I've argued before, in the beta thread, there is no decompression - apply - recompression necessary in this process. The whole purpose of this is to avoid any type of conversion at all on the CPU, which is what is currently happening (e.g. vec4 to 8bit RGBA). They would simply expose the internal format, in advance, and we'd be responsible for directly providing the data in the right format.

    IMHO, valid reasons: resources to make it happen; hiding internal format complexity.
     
  21. Diogo-Teixeira

    Diogo-Teixeira

    Joined:
    Apr 9, 2010
    Posts:
    494
    Here are the results of a failed attempt to run Unity with the texture set used in the demo. Some textures larger than 4K x 4K were resized to fit that limit. The GPU is a Nvidia GTX 470 with 1280 MB of dedicated memory.

    Loading the scene with the Game tab opened results in several missing textures, problems with some shaders and editor memory usage through the roof:



    Right after attempting to switch to the Scene tab:



    Amplify resource usage for comparison:




    In conclusion, it's just not possible to run this demo without Amplify using this version of Unity. (3.3.0f4)
     
    Last edited: Jul 13, 2011
  22. Diogo-Teixeira

    Diogo-Teixeira

    Joined:
    Apr 9, 2010
    Posts:
    494
    We've uploaded a new video of an FPS walkthrough, with added commentary, showing the scene in more detail. It includes zooming in some areas as will be possible in the actual demo.


    Tech Demo FPS Walkthrough (HD)​

    Next up are some videos showing how simple it is to convert an existing game over to Amplify, including UT's very own Bootcamp demo.
     
  23. Son Kim

    Son Kim

    Joined:
    Jul 27, 2008
    Posts:
    22
    Diogo,

    Can I use multiple 4K texture on a character, base on different UVs (i.e. head, arms,legs,torso,etc) with Amplify?

    Also, just curious how much GPU ram does that scene in the video use?

    Amplify makes Unity very attractive - we don't have anything like this in UDK :|
     
    Last edited: Jul 14, 2011
  24. Diogo-Teixeira

    Diogo-Teixeira

    Joined:
    Apr 9, 2010
    Posts:
    494
    Yes, indeed you can. There are no strict rules regarding UV layouts or number of textures used.

    As you probably already know, VT solutions allow you to choose how much GPU ram you wish to allocate for the virtual texture cache, in this case ranging from 8 to 512 MB. In these pictures and videos we are using 256 MB for cache, although it is way more than necessary even for this demanding scene, as you can see in the image below. We'll probably lower that to 128 MB for the release build. We also use other smaller textures for internal purposes, these are barely noticeable ram-wise. Unity itself is using around 70-75 MB, I'm guessing mainly for G-buffer (we're using deferred path), other render targets for post-processing, skybox, semi-opaque vegetation and geometry.


    The image shows how the system balances image quality when faced with different cache sizes. I included stats in all of them for the technical among you.

    I'm surprised myself that we were able to pull this off in the form of an extension. I think this speaks volumes about Unity's API flexibility. From what I know, from working with UE3 a couple years ago, this wouldn't be possible without modifying the engine.
     
    Last edited: Jul 16, 2011
  25. Demostenes

    Demostenes

    Joined:
    Sep 10, 2010
    Posts:
    1,106
    This is amazing piece of technology, it solves many problems and provides great basis for any serious unity-based game. If I were Unity manager, I would instantly buy it and integrate directly to the engine.
     
  26. rumblemonkey

    rumblemonkey

    Joined:
    Mar 25, 2011
    Posts:
    280
    Wow. Just wow. If I was working on something that needed to use lots of textures, I'd buy that in a heartbeat.
     
  27. fghajhe

    fghajhe

    Joined:
    Jan 6, 2009
    Posts:
    145
    This is a really cool technology for serious game dev. Congrats on the release, I hope Unity decides to bundle this with Unity Pro.

    What type of AA are you using for the deferred rendering in the video. FXaa? Is there a public download for that?
     
  28. Diogo-Teixeira

    Diogo-Teixeira

    Joined:
    Apr 9, 2010
    Posts:
    494
    Cheers guys! :)

    Indeed, we're using FXAA. We'll be making the AA package available for public download either today or tomorrow, along with the tech demo.
     
    Last edited: Jul 16, 2011
  29. janpec

    janpec

    Joined:
    Jul 16, 2010
    Posts:
    3,520
    Hey i am very interested in purchase, could you tell me how would pipeline for Mudbox or Zbrush look like? I dont know if i understand correct, but how could you profit from Mudbox painting if you cant paint over 4k texture in software, and you cant paint without UVs, unless you meant Texel painting?

    One more thing what is the difference between your tool and new streamed textures that is UT preaparing for 3.4 version?
     
    Last edited: Jul 17, 2011
  30. Diogo-Teixeira

    Diogo-Teixeira

    Joined:
    Apr 9, 2010
    Posts:
    494
    As far as I know, all you have to do is import your meshes (including UVs) and use Mudbox's tools to paint. It should allow you to paint across several materials and 4K x 4K textures. Of course, you could do this without Amplify but you'd run out of texture budget rather quickly.

    We are currently preparing a video demonstrating this exact workflow, between Mudbox and Unity+Amplify. It will be released as soon as humanly possible.

    From the small description in the roadmap post, it appears to be an industry standard texture streaming solution like the one provided in UDK. Also, it seems to be planned for 3.5, not 3.4.
     
  31. Son Kim

    Son Kim

    Joined:
    Jul 27, 2008
    Posts:
    22
    Thanks for the pic, it says alot. I noticed between the 64 MB and 256 MB of VT cache, there are no visual difference(of course there is a difference in the amount of VRAM), With that in mind, why would one allocate 256MB of VT cache instead of 64 MB VT cache, seeing as how visual quality appears to be the same?Won't it be better to use 64MB of VT cache in this case?.



    Mudbox only support a single UV map, but that single UV map can have as many UV tiles as one desires. So what I'd like to see is a something with multiple UV tiles brought into Unity using Amplify. I didn't think it was possible to be honest, I didn't think Unity can even assign texture to different UV tiles. I can't wait to see the pipeline video on Mudbox to Unity/Amplify!

    Since you guys plan on show off how the pipeline works, maybe you could use a character(i.e. creature,person,etc)?If you don't have a character model at your disposal i'll understand :)
     
    Last edited: Jul 17, 2011
  32. janpec

    janpec

    Joined:
    Jul 16, 2010
    Posts:
    3,520
    I am waiting for it as humanly possible :D.
     
  33. Diogo-Teixeira

    Diogo-Teixeira

    Joined:
    Apr 9, 2010
    Posts:
    494
    Both screenshots and videos were recorded at 720p, however, the demo is meant to run also at 1080p. At that resolution, texel density will also be higher - if we allow it to be, using a larger cache. Of course, we don't _have_ to do it, but if we do, quality will scale better with resolution. There's also the possibility of adjusting the cache size, at startup, based on the resolution using a simple script call.

    To conclude, it kind of depends on the resolution you're targeting and minimum GPU memory requirements for your game. I do agree that 64MB might be more than enough in the vast majority of cases.

    I'll transfer your request to our art dude. :)
     
  34. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Well, nobody replied to Aras' question. I guess he thought people didn't care enough for it.
     
  35. Diogo-Teixeira

    Diogo-Teixeira

    Joined:
    Apr 9, 2010
    Posts:
    494
    Actually, I did respond right away. Unless my posts aren't visible to anyone else except me.
     
  36. Dreamora

    Dreamora

    Joined:
    Apr 5, 2008
    Posts:
    26,601
    I see them and all the others too
     
  37. avedis777

    avedis777

    Joined:
    Jul 10, 2011
    Posts:
    25
    I'm looking forward to the worlflow from mudbox->amplify/unity. I'll be using 3D Coat, which supports painting up to 8k textures. I am using i7 processor with 8gigs of ram and things can get pretty slow when painting that large of images.

    This is technology that I will definitely want to use, but right now I guess I don't understand how you will do the actual painting with external 3D painting programs. I haven't downloaded the free version yet but I will be doing that soon and once I get a workflow down I'll upgrade to a license. Any plans of integrating a 3D painting solution along with it? It will be nice when this technology is integrated into 3D painting /animation programs...only a matter of time I suppose.
     
  38. microneezia

    microneezia

    Joined:
    Mar 29, 2011
    Posts:
    23
    I am going to be implementing this into my workflow, thank you so much for your work here...

    are you talking about mipmaping/LOD as the "industry standard" streaming tech?

    edit: there blurb on texture streaming is also outside of any release schedule including 3.5 - they mention texture streaming to be implemented under the "no specific release date" heading...
     
    Last edited: Jul 25, 2011
  39. Demostenes

    Demostenes

    Joined:
    Sep 10, 2010
    Posts:
    1,106
    Actually texture streaming itself does not solve anything, you still have meshes, sounds, music, materials etc....I think lack of reasonable resource manager is probably one of the biggest flaw of Unity.
     
  40. Diogo-Teixeira

    Diogo-Teixeira

    Joined:
    Apr 9, 2010
    Posts:
    494
    We tried with 4K x 4K textures using Mudbox and the performance seems very acceptable. I guess it kind of depends on the technology used in these tools. GPU-based techniques are preferable as they should scale better/easier with hardware.

    Amplify might take a bit to load those textures too. At the moment, we're working to optimize page generation to support multi-core processors.

    Actually, I was referring to asynchronous texture streaming. Now that you mention it, UDK's streaming is indeed far from automated.

    I wonder why it's taking them so long. Maybe Unity 4?
     
  41. Bael

    Bael

    Joined:
    Jul 21, 2008
    Posts:
    106
    From the Unity 3.4 release notes, Other Improvements: Scripting section: "Texture2D.SetPixels32/GetPixels32 for much faster pixel operations."

    Is that the change/addition you were looking for? :)
     
  42. Diogo-Teixeira

    Diogo-Teixeira

    Joined:
    Apr 9, 2010
    Posts:
    494
    Bael, indeed it is =)

    While we were hoping for compressed textures support, this could still be a HUGE step forward. If it works as advertised, it will ameliorate Amplify's two major performance bottlenecks.

    This is excellent news. I'm downloading 3.4 to check this out.
     
    Last edited: Jul 26, 2011
  43. Demostenes

    Demostenes

    Joined:
    Sep 10, 2010
    Posts:
    1,106
    WOW, that looks really interesting.
     
  44. Diogo-Teixeira

    Diogo-Teixeira

    Joined:
    Apr 9, 2010
    Posts:
    494
    Everything went better than expected! Here are some of the performance improvements observed in Amplify resulting from Unity 3.4:
    • Replaced SetPixels calls with SetPixels32. Since we currently have a non-power of two page size, our gain was *only* nearly 2x in page streaming performance. A SetPixels32 overload with a rect parameter would probably helped get this up even higher. But this is good enough for us to adapt to. We're planning to switch to POT pages down the road anyway. That'll give us an additional 4x improvement on top of this one for a total of 8x.
    • Apparently, scripting performance has improved. In some cases nearly 2x. Amplify's overhead is even lower now, down from ~2 ms (usually more due to unpredictable ReadPixels cost) to ~1 ms.
    • ReadPixels taking way too long sometimes (maybe due to a desync or something) seems less frequent. Needs more testing to confirm, however.
    • OpenGL on Windows now works flawlessly!

    We're currently working on the 1.3.1 update which will bring, among others, the following improvements:
    • Improved analysis and streaming performance. (thanks to Unity 3.4)
    • Parallel/multi-threaded virtual texture builds.
    • Ability to share a virtual texture across the whole project. Optional scene-level (current) or project-level material search.
    • More control over the analysis pass/render-target. Larger by default to avoid missing smaller or long thin polygons.
    • Reduced CPU usage in editor mode.

    Due to time restrictions we had to postpone the making of the videos. We are now planning to release them along with 1.3.1
     
    Last edited: Jul 27, 2011
  45. BigBulle

    BigBulle

    Joined:
    Oct 16, 2010
    Posts:
    17
    That's very good news :)!

    Is the sharing of the texture over the whole project will allow to use LoadLevelAdditiveAsync?
     
  46. Diogo-Teixeira

    Diogo-Teixeira

    Joined:
    Apr 9, 2010
    Posts:
    494
    Yes.
     
  47. wannabeartist

    wannabeartist

    Joined:
    Jun 20, 2009
    Posts:
    272
    Awesome stuff!

    I'm a bit confused about the "larger than 4K" textures part though - don't they still need to be 4K when brought to Unity, or does Amplify somehow override the texture importer?

    If I have a polypainted model in ZBrush and I want to bake the colors to a map, I know I can get 8K from xNormal, but how do I get that to Unity? Or did I miss the point?
     
  48. Diogo-Teixeira

    Diogo-Teixeira

    Joined:
    Apr 9, 2010
    Posts:
    494
    Yes, it overrides the texture importer. Amplify resizes the textures inside Unity to an insignificant size and reads directly from the source file in the original resolution.
     
  49. wannabeartist

    wannabeartist

    Joined:
    Jun 20, 2009
    Posts:
    272
    Great! Thanks for the explanation - now I really need to figure out how to get bigger textures from Zbrush...
     
  50. diablo

    diablo

    Joined:
    Jan 3, 2011
    Posts:
    736
    I seem to be getting the impression that one of the benefits of using this system is LOD; for example, in the demo you zoom in and out of a high-def texture. Are you in fact optimizing the texture dynamically taking distance into account? So a lower res version is used when far and it ups the resolution the closer you get? Or am I completely off the mark here?