Search Unity

Amplify Impostors - Next Generation Billboards

Discussion in 'Assets and Asset Store' started by Amplify_Ricardo, Jul 10, 2018.

  1. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Not at the moment but you can use a lower amount of Y frames.

    upload_2018-9-10_11-4-21.png

    Definitely something to consider ;)
     
  2. o1o101

    o1o101

    Joined:
    Jan 19, 2014
    Posts:
    639
    @Amplify_Ricardo Do your imposter shaders support the SRP batcher on Unity 2018 ?
     
  3. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Not yet, SRP support will be available at a later stage. We'll definitely look into the batcher when we get there ;)
     
  4. o1o101

    o1o101

    Joined:
    Jan 19, 2014
    Posts:
    639
  5. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Not yet, both HD and Lightweight support will be available soon.
     
    o1o101 likes this.
  6. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    2,058
    You list 2017.1.0 or higher - is there some specific code that prevents me backporting this to 5.6.6?
     
  7. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    2,058
    Yeah, but why?

    EDIT: Okay I can see I am at least the 4th person to ask this... no clues?
     
  8. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Sadly it wont be possible. It comes down to shader specific restrictions/requirements, it's a bit off topic for this particular thread.

    Thank you for understanding.
     
  9. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    2,058
    huh. okay then. thanks
     
  10. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    No problem!

    Our apologies for the inconvenience.
     
  11. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    2,058
    meh its fine. since shaders cant be compiled I can just buy this and check why then
     
    Last edited: Sep 13, 2018
  12. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    You're free to adjust the package to your own needs, we only ask that you do not post any source code.

    Should you be interested, feel free to message the Impostors developer directly(@Amplify_Paulo).

    Thanks!
     
  13. Kevin-VFX

    Kevin-VFX

    Joined:
    Apr 17, 2016
    Posts:
    54
    You should add an option to add a sharpen filter the render output. A bit of sharpening can help it match the original a bit more.
     
  14. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    We have something along those lines planned ;)
     
  15. Ramulos

    Ramulos

    Joined:
    Feb 19, 2017
    Posts:
    57
    Hello,
    I'm about to buy the asset as it seems very useful but was wondering if the imposter system would work with the Mesh Baker Asset: https://assetstore.unity.com/packages/tools/modeling/mesh-baker-5017

    It combines the meshes of your objects into one big mesh(along with other improvements). Would the imposter billboard still be able to function?
     
  16. Soundwolf776

    Soundwolf776

    Joined:
    Mar 21, 2015
    Posts:
    17
    Having some problems with 8k billboards: a decent tabletop rig handles 4k just fine, but 8k consistently results in a crash during baking. I guess it may be tied to GPU, as a laptop with extremely outdated Geforce 520MX gets a GPU error even with 2k billboards. RAM amounts are equal in both cases. Any ideas what we could do short of getting our hands on a top-line GPU?
    and yeah, I get those 8k billboards are a tad overkill, but we have ample space to waste. Plus if laptop will magically be able to bake impostors too, it would simplify logistics a bit.

    And a theoretical question.
    http://wiki.amplify.pt/index.php?title=Unity_Products:Amplify_Impostors/Manual#Billboard_Mesh
    Manual describes billboard meshes with variable vertex count, but what are actual advantages of spending 16 vertices vs 4? Is it solely to reduce neighboring frames peeking through or are there some other reasons?


    From what I've seen, not out-of-the-box, but if you're fluent with Unity's Mesh class and vert/frag shaders, it's possible to bake multiple impostors into a single mesh. Pass the individual impostor world position into mesh.normals (they're not used in the billboard shader in any case), then in OctaImpostorVertex() in AmplifyImpostors.cginc adjust _Offset variable by this position right at the beginning of the function. Seems to be working fine for me.
     
  17. o1o101

    o1o101

    Joined:
    Jan 19, 2014
    Posts:
    639
    @Amplify_Ricardo Any ETA for alpha blending? Any way to implement it now on the spherical imposters ?
     
  18. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    I'm not entirely familiar with the current Mesh Baker capabilities but Impostors wont work if you alter the Mesh, the Asset includes both textures and mesh information after baked. Creating impostors from baked meshes should work, I would be happy to test a mesh on our side if you're interested.



    What error do you get? I suspect the GPU/Unity might be the issue here but 8K is a bit overkill at the moment, definitely something we want to improve in the near future.



    Variable in the creation step, not at runtime. The purpose of using a custom mesh comes down to reducing overdraw, a lower vertex count is always preferred as with any other mesh.

    Sounds challenging ;) I would recommend baking the multiple object into a single impostor, that would probably save a few steps.

    No ETA at the moment but I'll see if we can get some tips from the dev.

    Thanks!
     
  19. o1o101

    o1o101

    Joined:
    Jan 19, 2014
    Posts:
    639
  20. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    It's possibly something you can achieve with Custom Baking and Shading.

    Information is a bit sparse during this stage, we're still trying a few things ourselves, we do intend to improve the wiki documentation in the future.

    Thanks!
     
  21. Olafson

    Olafson

    Joined:
    Aug 7, 2012
    Posts:
    255
    Are there shaders available to make Amplify impostors work with Amplify texture?
    Baking large textures for speetrees/for many objects in the scene seems like it will quickly overflow our memory budget. We are using Amplify textures so that would help
     
  22. Amplify_Borba

    Amplify_Borba

    Joined:
    Jul 24, 2017
    Posts:
    538
    Hey there, I'm afraid that the technique is not ideal for virtualization, but we're always looking into possible impostor improvements!
     
  23. Amplify_Paulo

    Amplify_Paulo

    Joined:
    Jul 13, 2017
    Posts:
    297
    Hey everyone!

    New build with a few bug fixes, nothing major, just to keep things sane for some people :p

    Amplify Impostors 0.9.1 - Asset Store - Amplify Products
    • Improvements:
      • Fixed issue where custom baking would fail because of broken overrides
      • Overrides now setup the initial value of each individual field properly
    • Fixes:
      • Baker now ignores disabled renderers and renderers that are marked as "shadows only"
      • Other small changes and improvements

    Regarding some technical questions.
    About 5.6: there are a few reasons why 5.6 isn't available, at least not yet. Some versions of unity have some specific behavior regarding shaders as you might expect. These are actually a lot trickier to deal with than you initially think, mostly because they are dependent of core functionalities in the engine that are hidden from us, and the further version away you go the bigger these differences are. As a specific example, HDR behavior is not the same and some transformations might be needed to the baked maps. This is another reason why we released the tool as beta. If you really need this to work in 5.6 you can try to bake everything in 2017.1 and then create a custom shader with ASE for 5.6. No guarantees tho. We'll improve on this in the future for sure.

    About 8k maps: unfortunately this is an issue of simple lack of memory and not something with the plugin itself. Uncompressed 8k maps are huge in space and a just few of them in you graphics card quickly hits the limit, hence the crash when you try to render them. We do have an idea of how we can improve on this in the future but a lot of changes are needed and few compromises need to be done.

    @deverolirc : that specific behavior is not feasible for spherical impostors, that only works for speedtree impostors because they are a one dimensional array of images so you can blend the current frame with the previous or the next one with some ease. However, spherical would require an 8-way blend or at the very least a 4-way which is a lot heavier and this is when octahedron comes in, because it allows for a 3-way blending, so you can think of octahedron being the thing you are looking for in terms of blending. You can still try creating it with custom baking tho.
     
    o1o101 likes this.
  24. Ramulos

    Ramulos

    Joined:
    Feb 19, 2017
    Posts:
    57
    Hello,

    I got the asset and its working great so far. At the end of the 2nd tutorial video you mentioned the next video being about baking imposters for groups of objects. Could you make a basic text walk-through of how to set that up while the video is being worked on? I created an imposter for a group of objects but how do I integrate the combined imposter with the individual lod groups of the objects?

    Thank you for all you help so far.
     
  25. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Hello,

    Thank you for your support!

    Apologies for the delay, I had to postpone that specific video but I should be able to tackle it soon. I suppose there's no universal solution for this type of setup, it really depends on your project.

    What do you intend to do, show individual impostors at a close distance? You have to consider that the group of objects will fadeout completely.

    Let me know, thanks!
     
  26. Carpe-Denius

    Carpe-Denius

    Joined:
    May 17, 2013
    Posts:
    842
    Will impostors be batched (dynamically)? Or do they need seperate draw calls because every impostor has another set of textures?
     
  27. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Hello,

    They won't but they take advantage of GPU Instancing, it's quite flexible.

     
  28. Ramulos

    Ramulos

    Joined:
    Feb 19, 2017
    Posts:
    57
    For my use case I have distant objects, mountains structures rocks etc, that I want to combine all into one billboard from a distance and have them separate back into individual objects when you get closer. So a shared Lod billboard but separate Lod 1's. The reason I need to group them is because my mountain for example is comprised of multiple meshes aligned and stitched(the result of using the PolyWorld asset). When I try to billboard each chunk separately big noticeable gaps appear in the middle of the mountain since its not actually on big mesh (see photo). But when I put the amplify imposter component on the group containing all the objects that make the mountain the resulting billboard was great and accurate. Now I'm wondering how I can share that imposter with the rest of the objects' Lod groups.


    First photo is the group containing all objects. (gaps here is cause i didnt put the whole mountain just a few pieces to show you)
    Desktop 09.20.2018 - 21.06.48.02.png

    second photo is each piece individually impostered. meshes cant align
    Desktop 09.20.2018 - 20.59.04.01.png
     
  29. Ramulos

    Ramulos

    Joined:
    Feb 19, 2017
    Posts:
    57
    Another suggestion i have for billboards has to do with the lighting. From what I gather impostering is basically takinf photos of the object from different angles and pasting them onto a texture like this:
    Desktop 09.20.2018 - 21.17.11.04.png

    but this results in no lighting on the resulting billboard. Some objects may need some shadows. I know that the billboard still accepts lighiting in the game but the whole concept of imposters and billboarding is to save resources and to be placed far away, so I imagine the shadow drawing distance for people trying to optimize everything wont be too big. In my case (a VR vive game) the shadow distance is fairly small. And I end up with this result for my trees when impostering. Close ones look fine but far ones don't.

    The close ones are within shadow drawing distance and the furthing ones are outside it.
    Desktop 09.20.2018 - 21.08.06.03.png

    I was wondering if it was possible to include a light source above the object when taking the images for rendering the texture so that shadows will be baked into the texture. You wont end up with a the most accurate shadows/lighting for all times of day on the imposter but it'll still look way better than no lighting and you'll be able to save performance by reducing shadow casters.
     
  30. Ramulos

    Ramulos

    Joined:
    Feb 19, 2017
    Posts:
    57
    Regardless of the stuff mentioned above though I just wanna let you know that this is indeed a wonderful asset. I don't mean to complain too much. Definitely worthwhile and effective. Thank you for all your work on it.
     
  31. PuckLovesGames

    PuckLovesGames

    Joined:
    Mar 4, 2015
    Posts:
    17
    Hi Amplify. LOVE the asset! Great work.

    The one thing I really would love to do is to use a custom lighting variation of the runtime imposter shaders. At the moment it seems like it's limited to a Runtime Specular or Runtime Metallic Imposter shader?

    I would love to set up my own lighting, with something like this, where I can hook up the N dot L myself:



    But it doesn't seem to be able to accept it? Which is strange, because if I pipe in a fake light direction (as a Vector3), then the NdotL resolves properly and I can get toon (stepped) lighting:



    But using the World Light Direction instead breaks it. Am I hooking something up wrong in the first image? I (think I) understand that depth is also stored in the alpha of the World Normal output from the Amplify Imposter node, but I can't seem to split that off either, it's only outputting three channels afaik.

    So an unlit/custom lighting Imposter template would be awesome.

    Even more useful might be something like an individual node that just decodes a single Imposter Texture Object input - choosing the correct frame via the view direction, and then allow me to use that how I want before piping it into a non-template Surface shader. That might not even be remotely possible, because I don't quite understand all the computation involved sorry, but it sounds appealing in my imagination XD

    Anyway, awesome asset, thanks again for creating such high quality tools!

    P.S. (ASE request): Honestly I would love the have access to the Light Direction and Light Colour nodes even without using a custom lighting setup. Even though they're mostly redundant in a non-custom setup, I can still think of uses for them, especially for quickly drafting up temp shader tests.
     
  32. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    You can do this by preparing a single impostor using all the necessary meshes, the tricky part here is deciding which objects to include. Transitioning from a single impostor to multiple objects in another LOD level is quite straightforward to setup, you simple place the required objects at the correct level - Multiple Objects LOD0, Single Impostor LOD1.

    The problem here is that as you get closer to the object, LOD1 might disappear completely before the LOD0 objects are all visible. You can mitigate this by using additional impostor groups, thus reducing the changes of the mountain completely disappearing, and by adjusting the transitions distances to best coincide with your current requirements.

    Note that your LOD0 objects can also have their own LOD Group.

    As for the holes, we would be happy to test the mesh on our side in order to determine if it's working as expected.


    That's an interesting case, I'll pass it on to the developers.

    Let me know if you have any additional questions, I would be happy to elaborate.


    Thanks, we really appreciate the support. Keep it coming, feedback is extremely helpful and encouraged!
     
    Last edited: Sep 21, 2018
  33. Amplify_Paulo

    Amplify_Paulo

    Joined:
    Jul 13, 2017
    Posts:
    297
    Uhm, lets tackle this into different parts.

    First, you might have found a bug within ASE, which even tho is not necessarily impostor related it is important to solve for both projects. That light dir should work regardless of context.

    Then, about the toon lighting it might be a bit more time consuming to solve. You guessed it right, the issue here is that the custom impostor is using a shader template to figure out what goes where, so it's a custom shader but it uses standard lighting. In order for you to be able to do a complete custom lighting shader you need a different shader template. This is something we can provide and in fact we want to, however this is somewhat dependant on ASE because we don't want to give you a ton of different templates to choose from which would then break in various occasions, we want to give you just a few of them and then you would configure it inside the editor. The good news is we've been updating ASE in these past builds to do just that. The not so good news is that we still need to create the proper templates that use this functionality and further test the system. This simply takes time. If you are in a hurry I can try to cook up an "unlit" variant of the impostor template as you suggested (which is actually a copy of the impostor template minus the lighting calculation). However, assuming Light Dir is broken just the template might not be enough.

    We can easily update the node to output the depth information as well, in fact we have a toggle that outputs extra data and this fits that category just fine, so consider it done for the next build.

    Finally, about the single decode of a texture object, its something we would like to have but at least for now it doesn't seem feasible. This is because there's some obligatory data and calculations that are needed for each "decode" of a texture that doesn't seem to be possible to decouple without a huge performance decrease, so instead we have one node to do it all to share that data and those calculations. We would love to have sort of an "impostor sampler" but our initial attempts failed. We might still find a way or a good compromise but I don't want to give you false hopes on this.

    So, if you want something to tinker with for the time being I can give you an unlit template but until we check what's wrong with Light Dir I can't guarantee you if it will work 100%. In the long term we'll provide better and more templates for more exotic renderings like yours.

    cheers
     
    PuckLovesGames likes this.
  34. PuckLovesGames

    PuckLovesGames

    Joined:
    Mar 4, 2015
    Posts:
    17
    No that's fine, I'm not in a hurry. Thanks for the detailed response!

    Ah that's a shame that an 'imposter sampler' isn't practical. I attempted and failed to make my own to feed into a 'Flipbook UV Animation' node Start Frame based on view direction, or a Multiply by Axis Frames, Floor, Divide by Axis frames and then feed into the UVs, and it almost felt like I was on the right track at times (I got half an axis working!), but it was beyond me and I gave up.

    It would be awesome if there was some way to do it before the final input of the shader. But honestly, just having an unlit Imposter shader with the Light Direction node working would be more than enough for me.

    Thanks again! Really impressed by how easy the baking process is.
     
  35. IsntCo

    IsntCo

    Joined:
    Apr 12, 2014
    Posts:
    146
    Is it possible to use this in procedural map generation in something like Map Magic?
    Was wondering if it could be used to generate high quality, low overhead grass, at runtime.
     
    Last edited: Sep 21, 2018
  36. Chaz32621

    Chaz32621

    Joined:
    Apr 17, 2015
    Posts:
    199
    Since the current version does not support LWR will this be a thing down the road soon? ETA? If I go ahead and add it now when I go to upgrade will it auto update everything or will i need to delete and redo everything? My project is LWR.
     
  37. Amplify_Borba

    Amplify_Borba

    Joined:
    Jul 24, 2017
    Posts:
    538
    Hello, I'm not entirely familiar with Map Magic's requirements, does it accept custom meshes for the grass?
    If so, you should be able to create impostors to use with it, but I can't really guarantee this since we haven't been able to test that specific plugin.


    Hey there, there's no official ETA at this time, but it should be coming soon!
    In regards to your other question your assets will not be updated automatically. Impostors must be baked using specific shaders, so everything will need to be re-baked.
     
  38. IsntCo

    IsntCo

    Joined:
    Apr 12, 2014
    Posts:
    146
    It does accept custom meshes, so I think it might work.
    Is there any way to get a test grass Imposters prefab to try it with? It can be hideous, just want to make sure it works first :)
     
  39. Gruguir

    Gruguir

    Joined:
    Nov 30, 2010
    Posts:
    340
    Hey i wanted to follow the tutorial for custom shader baking but can't get 'Impostors' to show in the menu :

    I already tried to delete/reimport Impostors after upgrading ASE, also starting from blank project (Ut 2017.4 LTS and 2018.2.0f2).

    Edit : anyway i can set it from ASE window :)
     
    Last edited: Sep 25, 2018
  40. AtomsInTheVoid

    AtomsInTheVoid

    Joined:
    Jul 27, 2015
    Posts:
    251
    Could someone who has VS please benchmark this with lots of trees? This could very well save my VR project but I really wanna see what kind of fps boost you get. I'm thinking LOD0 mesh then Lod1 imposter, maybe set "additional tree mesh distance" to 300, but have the lod switch fairly soon.

    Thanks in advance!!!
     
  41. kilik128

    kilik128

    Joined:
    Jul 15, 2013
    Posts:
    909
    got this result in 2018.b3




    it's look like emission overide
     
  42. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    That's odd, we'll check it out.

    I was going to recommend that, glad you found it!

    Does it happen with the latest ASE and Impostors version pulled directly from our site?

    Awesome!

    Sure, send it over to support@amplify.pt and we'll test it.

    The results can be quite dramatic but it really depends on your project.




    Thank you for reporting it!

    Although we do not officially support Unity beta versions, we would be happy to test it on our side.

    What exact Unity version did you use?

    Thanks!
     
  43. kilik128

    kilik128

    Joined:
    Jul 15, 2013
    Posts:
    909
    2018.3.0b2
     
  44. Gruguir

    Gruguir

    Joined:
    Nov 30, 2010
    Posts:
    340
    Nope (i wasn't aware of), latest UAS versions.
     
  45. Ramulos

    Ramulos

    Joined:
    Feb 19, 2017
    Posts:
    57
    Do you want Mobile VR or PC VR? Big difference in fps changes between the 2 since different sets of bottle necks. I have a Vive so if you want PC VR details I'd be happy to help.
     
  46. AtomsInTheVoid

    AtomsInTheVoid

    Joined:
    Jul 27, 2015
    Posts:
    251

    PC, Vive is great! I'm deving for Oculus.
     
  47. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Thank you for confirming it.

    So it's ok with the latest?

    Results will vary depending on the asset/project but the screenshot I posted above should give you an idea of what to expect.

     
  48. AtomsInTheVoid

    AtomsInTheVoid

    Joined:
    Jul 27, 2015
    Posts:
    251
    Yup and thanks for that. It looks incredible. I'm just hoping to see a vr comparison as well at a ground perspective.
     
  49. MS80

    MS80

    Joined:
    Mar 7, 2014
    Posts:
    346
    @Amplify_Ricardo This imposter thing looks really great!

    Do you think imposters would work with a very detailed big (grouped) object at close to medium range, too?

    Background: I have a big (ca. 4 meter x 5meter, 2 meter high) and very detailed (>16 million polygons) CAD model (group of objects, about 250 child objects), which has to been shown on a mobile IOS device?! Maybe Amplify Imposters could be a solution…

    Are there videos / demos of Amplify Imposters showing complex objects from very close distance? Is it possible to to split baking to multiple maps (f.e 4x2048)?
     
    Last edited: Sep 27, 2018
  50. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Should be comparable, just add the extra VR cost as with any other asset ;)


    Thanks, we really appreciate it.

    Please note that Impostors are meant to be used at a certain distance, it really depends on the model and how much of the screen it's actually going to take. Can you share additional information, along with a few screenshots, to support@Amplify.pt or via the PM? I would be happy to elaborate on how, and if, you can take advantage of Amplify Impostors.

    It's not currently possible to split bakes into multiple maps, you can however combine impostors as they display intersections with standard assets or other impostors.