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
    Very happy to hear it!

    That's a pretty good tip, I think we show a warning about it as well.

    Regarding realtime impostors, it's not quite there yet. As most of you know we've been working on this for a while but we've ran into some problems, we currently don't have an ETA for this. It's proving harder, and more illusive, than we anticipated; to be clear, we already generate realtime impostors but they are not usable just yet.

    Thanks for understanding.
     
    julianr likes this.
  2. neoshaman

    neoshaman

    Joined:
    Feb 11, 2011
    Posts:
    6,493
    What are the the technical roadblocks?
     
  3. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Various things, for example getting accurate/usable shadows; we will detail our experiments later on; right now it's a bit of trial and error in some areas. Ultimately, the solution must also be an improvement over using regular assets, there's a lot of work going into making sure that it can be done in a way that makes them worthily.
     
    neoshaman likes this.
  4. julianr

    julianr

    Joined:
    Jun 5, 2014
    Posts:
    1,212
    Understandable. I generally turn off shadows for the Impostors, to increase performance. I don't think it matters too much when you are at a greater distance from the object. In fact I think it improves the quality, as the blending with shadows into the main object tend to cause some issues. Maybe if you did the main body, and added a bevel effect to the outline instead to the finished product, based on camera angle might resolve this a bit better.
     
  5. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    I see what you mean. In our case it's a bit more specific; but that's just one of the issues. Another thing to consider is that there are ways of doing things but if they are more costly than regular meshes it would invalidate the technique.

    What we're doing now is taking a step back and reevaluating what else we can do based on what we've learned so far from our experiments. In other words, we're not giving up yet but the solution we had in mind posed some serious challenges.
     
    Lars-Steenhoff, FlavioIT and julianr like this.
  6. o1o101

    o1o101

    Joined:
    Jan 19, 2014
    Posts:
    639
    Hi guys,

    What is the workflow like for atlasing these imposters?

    Would like to have multiple imposters on one atlas, is that possible at the moment ?

    All the best
     
  7. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Hey there,

    I'm afraid it's not possible, the techniques used are not ready for that.
     
  8. R0man

    R0man

    Joined:
    Jul 10, 2011
    Posts:
    90
    This has probably been asked before. How extensible is this to someone who is comfortable writing HLSL? Are there any dll's here? Or just C# plus shaders?
     
  9. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Hey there,

    Unlike other alternatives, our editor is built from the ground up to be extendable and easily adapted to custom pipeline requirements; it includes full source, no dll's.

    ASE offers a Shader Template system for custom shader types and a Custom Node API; in addition to that, you can also add your own cginc files to existing shader types we offer and use Custom Expression nodes.

    Wiki Info:
    -Shader Templates
    -Node API
    -Shader Functions
    -Custom Expressions, 3rd-party compatibility

    If you're familiar with HLSL, you'll be right at home.
     
    R0man likes this.
  10. R0man

    R0man

    Joined:
    Jul 10, 2011
    Posts:
    90
    Thank you, very cool.
     
  11. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Awesome, feel free to reach out via support@amplify.pt for specific Template discussion, we're always on the lookout for possible issues and feedback.
     
  12. mattis89

    mattis89

    Joined:
    Jan 10, 2017
    Posts:
    1,151
    What is realtime impostors? And what is dynamic impostors?.. I have a Huge game and using ALOT of vegetation and props/buildings etc. And its even a splitscreen game rendering 2 cameras at all time. I need to use impostors for veg/nature objects om their lod 3 or even maybe 2, because impostors looks good enough. Do they support wind thouh? If not I think I need to use on nature items such as rocks, stumps etc.
     
  13. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Realtime impostors are meant for animated(Skinned Mesh Renderers) or assets such as characters or swaying grass, but please note that this feature is not available yet.

    However, you can bake vegetation but it will be completely static, a snapshot of sorts of the original mesh. Keep in mind that AI has specific shader requirements.
     
  14. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
  15. Skotrap7

    Skotrap7

    Joined:
    May 24, 2018
    Posts:
    125
    A few quick questions on imposters to make sure I understand them and use them right. So, the imposter baker generates the imposter from the reference mesh. But does the quality of the bake depend on the LOD distance that is being replaced, or does it not matter?

    For example, if I bake an imposter and then decide to change my LOD distance settings should re-bake the imposter to ensure it has the best appearance for that distance, or should I just be sure to always set the LOD distance of the imposter to an acceptable range for the object?
     
  16. f1chris

    f1chris

    Joined:
    Sep 21, 2013
    Posts:
    335
    I love Impostor but I’m struggling a bit when it’s time to render my city landscape.

    I’ve added a pic for Last Of Us to illustrate what I want to achieve. In many of scenes I see in the background my city (which is the goal to reach). I can generate Impostors on those buildings easily but cannot have a a decent image quality without going crazy with texture size 4096.

    Problem is even using Hemi, a lot of real estate is used on texture to render for the different top angles when my buildings are always being seen from a ground point of view. Even rendering the back of the building is a waste in my case but I can live with it.

    If I would be able to render on the Y axis rotation only, the Impostor resolution would be better.

    Any tips on how I can do that ?

    Thx in advance for your support !
     

    Attached Files:

  17. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    In short, you define which mesh you want to bake; this is going to be different depending on the Asset. In a way, you bake what looks right for your requirements. I can't tell you if you should rebake, depends on your asset and how it's being used.

    Let me know if you have any follow up questions, happy to elaborate. Also be sure to check the Manual and Tutorials available for additional details, the videos are a great way to get acquainted with it.

    http://wiki.amplify.pt/index.php?title=Unity_Products:Amplify_Impostors



    Thanks for using it!

    Ah yes, Impostors are not great for large objects like those big building when seen from that distance. Screen size critical when it comes to impostor quality so it might not be an ideal case. You can still take advantage of it for small screen size objects seen from afar.

    Don't use Hemi-Octahedron impostors for assets seen from bellow, they are more aimed at top views. Additionally, spherical impostors may hold-up better.

    For those large building, it'd probably use a simple planar low poly mesh with texture detail.
     
  18. f1chris

    f1chris

    Joined:
    Sep 21, 2013
    Posts:
    335
    Thx @Amplify_Ricardo for your quick support ( as usual ;-)

    Actually this what I have for now, a planar mesh. Even if my character not moving fast, it’s noticeable it’s just planar facing the cam.

    It would be a neat feature if we can render a 4th pattern, something like a 180 degrees view of the object but always viewed from a fix Y perspective. I understand the nature of Impostor of being renderer on a far distance but if we can optimize the real estate use of a texture we automatically gain in resolution.

    I’m booking you work for next few weeks. Loll. Kidding but it would be very useful for 1st/3rd person games where most of the objects are seen from a fix angle.

    Thx
    Chris
     
  19. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Might need some extra detail then, it's always a balancing game with those large objects; try to approximate the actual building, not just a baked planar impostor.

    That would be a cool application, we have it in mind for future additions but we're limited to Octa and Spherical types for now.
     
    f1chris likes this.
  20. BigRookGames

    BigRookGames

    Joined:
    Nov 24, 2014
    Posts:
    330
    Hello,
    I am using the impostors with my LODs and during creation they seemed to work fine. I'm not sure when this happened specifically, but at certain distances it seems that all of the objects in the scene that are using imposters show shadows at the same time regardless of how far away the object is, and it shows the shadow of what looks like a sprite sheet, not correctly placed shadows.

    I rebaked one and it seems to be working right after re-baking but obviously, I would like to avoid having to do this since it is on every single object.

    you can see that the one that I have selected was re-baked and again it works as intended:


    Any idea what might be causing this?
     
  21. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    That's odd, did you update your Unity/HDRP version?
     
  22. BigRookGames

    BigRookGames

    Joined:
    Nov 24, 2014
    Posts:
    330
    I'm using 2020.1.8f1 with Amplify Impostors 0.9.7r2.
    I did some more digging and it at least disappears when I disable the impostors. I know that doesn't mean that is the root cause, but certainly is the source of the artifact shadowing.
    It may be worth mentioning that I use Poly Few to create automatic LODs. Not sure if that has anything to do with it or not.
    It also happened with both prefabs and non-prefabs (I've had issues with mesh combiners before inside of prefabs, that's why I mention it)
    Any info would be helpful, I haven't scripted the process yet of creating auto LODs and then adding a impostor on top of it so right now redoing all of the impostors would not be wise to do manually, since I haven't identified the root cause and it could potentially happen again.
    Let me know if anything comes to mind.

    Thanks.
     
  23. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389

    Hey there,

    Thanks for the details. I'm not familiar with Poly Few so I cannot provide any insights on what could be happening there.

    Would it be possible to test a sample scene with the issue present? We're available at support@amplify.pt.
     
  24. Royall

    Royall

    Joined:
    Jun 15, 2013
    Posts:
    121
    Hi guys! I am trying to convert my project to URP and having problems with Amplify Impostors... I created a new PBR Graph shader with shader graph (As I want to animate my trees a bit) and made the culling of the shader double-sided (Because of leaves)

    The problem is that the impostor is only doing front culling? When I was using impostors in normal Unity (built-in) it worked just fine..

    Edit: It's the same when I use the URP Standard Lit shader with double-sided culling on

     
    Last edited: Oct 25, 2020
  25. franck_Extriple

    franck_Extriple

    Joined:
    Oct 27, 2017
    Posts:
    20
    hi.

    Does the support of HDRP in Unity 2019.4.10 is running fine on your side ? (Amplify Impostors 0.9.7r2 and HDRP package 7.5.1)

    Trying to load the BarrelsAndBoulders, even if i've load the ImpostorsHDRP Package from RenderPipelinePackages, i still have Pink Shader with Hidden tag.

    I tried to change the DHRPAsset to Forward rendering path and Deferred it's not working.

    So i don't know what to do now.
     

    Attached Files:

    Last edited: Oct 26, 2020
  26. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Hey there,

    Just to confirm, do you mean Amplify Shader Editor or do you really mean Shader Graph? We don't really officially support Shader Graph custom shaders at the moment.

    Let us know, we'd be happy to help.


    Hey there, it seems that even the floor is pink so that would hint at HDRP not working correctly on your project and not necessarily an Amplify Impostors issue.

    Can you create new Unity Standard HDRP Materials?

    It's an odd one, let us know if you see anything on your console.
     
  27. aganm

    aganm

    Joined:
    Sep 25, 2019
    Posts:
    114
    what do I have to do to use imposters with VSP (vegetation studio pro)? if I create imposters, will VSP automatically use them?
     
  28. silentslack

    silentslack

    Joined:
    Apr 5, 2013
    Posts:
    394
    Hi,

    I'm having my editor freeze when baking imposter. I have this error in the Editor log:

    Running in Unity 2019.4.13f1 & URP

    Edit:
    Can confirm this freezes/crashes on 8k render only
     
    Last edited: Oct 27, 2020
  29. silentslack

    silentslack

    Joined:
    Apr 5, 2013
    Posts:
    394
    Hi again,

    I have toyed with the Imposters plugin today and here is my best result on 4k size:
    f184026f93a5aa19e36df51056ff140a.gif


    These are the settings I'm using:



    I would want to improve the resolution but I can't see any way with the settings that are exposed (I have tried many combinations). However, when I take a look at the rendered texture, there are so many frames I know I will not use:


    All of the rooftop and all of the view from the bottom of the house is not required. Is there any way we can specify which render views explicitly we require and which we don't? I'm positive I could optimize passing a house to only about 50 frames:


    (frames I only care about rendering)

    Right now, I seem to be very far from the quality you present in your demo videos.

    Thanks, Jake
     
  30. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389

    Hey there, what are your specs? That does seem like Unity crashing, baking 8k can be quite demanding.

    As for resolution, Impostors are meant to be used from a certain distance, that house is way to close for the used settings. I recommend reducing the amount of views(axis) so that each view resolution is increased; this is the preferred step instead of using larger 8k textures. In short, lower resolution images, less axis/views in order to increase individual side resolution.

    Also keep in mind that Octahedron Impostors breakdown at close distances, this is an expected result of the technique used that provides smooth blending between views.

    It's really about balancing LOD distance and individual resolution, try avoiding having an imposter take too much screen space.

    As a side note, we never went up to 8k on our shots or videos, only 2-4k with if I recall.
     
  31. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    I believe you'd need modified shaders for indirect instancing.
     
  32. silentslack

    silentslack

    Joined:
    Apr 5, 2013
    Posts:
    394
    Hi,

    I have played with the settings a lot - sphere, octahedron, semi octahedron, small amount of frames, small amount of padding, large amount of frames etc. I've tried every combination and my original .gif was the best it was. If I reduce the frames to improve the resolution I get:



    It seems like the algorithm is prioritising the roof and below as stated in my original post:



    Is there no way to specify what views are required? That would make such a massive difference to the quality as I can remove about 90% of the frames.

    The quality here appears so much better, the size of your object is takin up a larger % on the screen than my house I would say:



    I'm running a pretty beefy machine, 64GB RAM, 12 Core i7...
     
  33. Amplify_Ricardo

    Amplify_Ricardo

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

    What Impostor type did you use in the first shot? It looks like you're using an Octahedron impostor, which breaks down at close distances; not only will you see artifacts as your shot it will also appear blurry as it's mixing 2 different views. For reference, the Material also provides a few properties that you can tweak.

    It wont prioritize the roof unless you use the HemiOctahedron type which is ideal for top-view cameras.

    You cannot specific views to bake; for the effect to work as demonstrated, it must use one of the techniques available.

    Specifically regarding our video; that's a spherical impostors and you should be able to reach similar results using that type. We'd be happy to test it on our side if you'd like.

    Regarding the bake issues, unfortunately there's not much we can do; I also have a beefy workstation and Unity seems to hang at times; this is not entirely specific to our tool. If there's something we can do on our side, we'll definitely try to improve it; the alternative is removing 8k baking.
     
  34. Prodigga

    Prodigga

    Joined:
    Apr 13, 2011
    Posts:
    1,123
    We have a scene with lots of different meshes, a with their own lods.

    Could imposters be used to group all of the Lodgroup objects into one single imposter when the player moves a certain distance away? So, to be clear, the individual LodGroups for all the individual renderers work as expected up to a certain distance, after which they are all disabled and are replaced with am imposter rendering. Is this kind of workflow supported out of the box? The part that concerns me is that it is no longer a 1:1 renderer to imposter relationship. Its more like Multiple renderers become one imposter.
     
  35. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Hey there!

    Unfortunately, Amplify Impostors don't actually handle the LOD part of the process, you can think of them as regular models that you'd use on your own LOD Groups. Meaning that, although you can combine multiple objects into single lightweight impostors, this process is fully manual and controlled by you.

    Here's a couple of uses:
     
    Prodigga likes this.
  36. esustachah

    esustachah

    Joined:
    Dec 21, 2018
    Posts:
    8

    I was about to write a silly question when I encountered a solution :)
     
    Amplify_Ricardo likes this.
  37. SXY1997

    SXY1997

    Joined:
    Apr 8, 2018
    Posts:
    18
    Hi,
    If I can predict the range of movement of the camera, can I only bake textures within the range of movement, so that I can make full use of the space.
     
  38. Amplify_Ricardo

    Amplify_Ricardo

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

    Amplify Impostors uses a specific set of views for each technique available; you can't customize which views you bake but you can set the amount used.
     
  39. SXY1997

    SXY1997

    Joined:
    Apr 8, 2018
    Posts:
    18
    Thanks,
    I found that the SpecularSmoothness map was generated after baking. If I use the metallic map, what should I do?
     
  40. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    It's handled by the bake automatically, are you seeing any issues?
     
  41. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389

    Best of Unity Super Sale

    50% OFF Amplify Impostors, 1-click next-gen billboard impostor creation.

    Learn more: Asset Store
     
    Prodigga likes this.
  42. quix22

    quix22

    Joined:
    Sep 6, 2018
    Posts:
    16
    I am working with Unity 2019.3.10f1 and Asset Imposters works alright in the Standard 3D Project, however, each time I've tried the URP, I receive the following warning in the console:
    [AmplifyImpostors] Custom render pipeline was detected but necessary files for baking are missing, please make sure the appropriate files were imported.
    You can find them at 'RenderPipelinePackages' folder.
    UnityEngine.Debug:LogWarning(Object)
    AmplifyImpostors.AmplifyImpostor:DetectRenderPipeline() (at Assets/AmplifyImpostors/Plugins/Scripts/AmplifyImpostor.cs:1004)
    AmplifyImpostors.AmplifyImpostor:RenderAllDeferredGroups(AmplifyImpostorAsset) (at Assets/AmplifyImpostors/Plugins/Scripts/AmplifyImpostor.cs:1038)
    AmplifyImpostors.AmplifyImpostorInspector:DelayedBake() (at Assets/AmplifyImpostors/Plugins/Editor/Inspector/AmplifyImpostorInspector.cs:988)
    UnityEditor.EditorApplication:Internal_CallDelayFunctions()
    An Imposter does get created, however, there appears to be problems with the Shader and no textures are generated.

    upload_2020-11-19_10-41-56.png

    Is there a compatibility issue with my current version of Unity? Thanks.
     
  43. Amplify_Ricardo

    Amplify_Ricardo

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

    -Was this a project that was updated to URP?
    -Have you imported the URP package under "AmplifyImpostors\Plugins\EditorResources\RenderPipelinePackages"?
    -Is the URP Bake Preset set, or does it still list the Standard one?
    upload_2020-11-19_18-5-42.png

    In any case, Amplify Impostors is compatible with URP and your Unity version
     
  44. quix22

    quix22

    Joined:
    Sep 6, 2018
    Posts:
    16

    Figured it out...just had to read your Readme file...
    Samples contained at the 'SamplesHDRP.unitypackage' and 'SamplesLWRP.unitypackage' were created under the HD and LW SRP v4.9.0.
    Before unpacking these samples, their respective baking and runtime shaders must be imported. You can find these at AmplifyImpostors > Plugins > EditorResources > RenderPipelinePackages

    I imported the Imposters URP Package, and it allowed for the StandardURP Bake Preset to become available.
    upload_2020-11-19_11-5-26.png

    Now, the Imposter works in URP.
    upload_2020-11-19_11-6-56.png

    Good stuff.
     
    Amplify_Ricardo likes this.
  45. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
  46. Zyblade

    Zyblade

    Joined:
    Jul 1, 2014
    Posts:
    141
    I got 2 questions:
    1. Does amplify imposter support baking objects using an forward_rendering/orthographic camera?
    2. Can I bake textures and only create 1 view/angle instead of a grid for every possible angle? I have a fixed camera angle, so I only need the fancy depth/shadow feature right now =)
     
  47. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Hey there, I'm afraid it's a "no" on both questions.

    1. Requires a shader with its Deferred path exposed; does render in forward but you'd need to create a Bake and Runtime shader.(Advanced topic, requires shader dev knowledge and ASE)
    2. Not something we support in terms of defining which angles to bake, it currently employs specific techniques. (can be used with orthographic cameras)
     
    Zyblade likes this.
  48. EmeralLotus

    EmeralLotus

    Joined:
    Aug 10, 2012
    Posts:
    1,462
    Very cool asset. Is VR supported?
     
  49. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Thanks! Yes it is, just keep in mind that the effect breaks down at close distances, this might be trickier to balance with VR.
     
  50. willygaelhypnovr

    willygaelhypnovr

    Joined:
    Oct 25, 2018
    Posts:
    5
    Hello,

    I have a urgent matter, and I'd really appreciate if I could get someone's help.

    I use Amplify impostor with unity 2019.4.13f1 with URP.
    I'm trying to bake a grass mesh (with speedtree 7 shader) but I run into an annoying issue each time: The albedo is not correctly baked at all, and this results in a white impostor. Here is my config for the Amplify Impostor component:
    upload_2020-11-25_12-31-18.png

    and here is a screenshot of the result
    Screenshoot 25-11-2020 12-34-28.png

    - The project has been created with the Built-in Render Pipeline and has been updated to URP later
    - I have imported the URP package of Amplify Impostor

    Is there anything to do to resolve this issue?