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
    Thanks for the files and additional details, we will run a few tests on our side. Before we proceed, we could really use some additional information.

    -Unity version
    -Target Platform
    -Renderer used

    I don't think we've come across that error before.

    Thanks!
     
  2. BenWilles

    BenWilles

    Joined:
    Mar 9, 2018
    Posts:
    41
    - 2019.1.8F1
    - iOS
    - The Standart one, not the new render pipeline (Is that what you want to know?)

    Unity runs on OSX
     
  3. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Thanks for details, that's exactly what we need to proceed. We will test it as soon as possible.
     
    BenWilles likes this.
  4. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Thanks for the heads up, I will pass it on to the devs.
     
  5. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Just a quick update @benjaminthorn

    It does seem to be working, at least on a Windows machine. I will pass this on to the devs for further OSX testing.

    upload_2019-7-22_13-4-11.png

    Thank you!
     
    BenWilles likes this.
  6. Amplify_Paulo

    Amplify_Paulo

    Joined:
    Jul 13, 2017
    Posts:
    297
    Hey there, it doesn't seem like his issue is related to this. Regardless, are you still having issues when baking in the latest unity version? (2018.3 to 2019.1) We did have some issues with the new prefab system and in fact we still do have one that prevents proper baking while in prefab mode (not exactly and error), but I thought I had ironed them out in the latest build, can you confirm that everything works? If not please do send us a repo case.
     
  7. BenWilles

    BenWilles

    Joined:
    Mar 9, 2018
    Posts:
    41
    Think the Problem is that PVRTC isn't supported for iOS by Unity
     
  8. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    It does but there's something else going on, the AI developer will get back to you as soon as possible.

    Thanks!
     
    BenWilles likes this.
  9. BenWilles

    BenWilles

    Joined:
    Mar 9, 2018
    Posts:
    41
    Ok, just tough cause manual says.
    • Rectangular textures cannot be compressed to PVRTC formats.
    at Features currently not supported by Unity iOS Page. Maybe got that wrong


    Anyway looking forward to hear from devs :)
     
  10. Abruzzi

    Abruzzi

    Joined:
    Feb 6, 2015
    Posts:
    44
    Hi Developers! We have some problems with your asset. We use HDRP 6.9.0. Can we fix that in fast way? All works fine in HDRP 6.7.1, but we can't return back to 6.7.1 :(

    upload_2019-7-24_12-24-12.png

    Thanks! It would be great if you help us!
     
  11. AwesomeNewbie

    AwesomeNewbie

    Joined:
    Jul 16, 2019
    Posts:
    17
    This tool is the final drawcall killer! Thank you so much for it!
     
  12. Amplify_Ricardo

    Amplify_Ricardo

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

    I'm afraid we don't support 6.x yet, nor can we support betas. In any case, as soon as it's readily available via the Package Manager we can update it.

    Apologies for the inconvenience.

    Glad to know you're having a good time!
     
    AwesomeNewbie and Willbkool_FPCS like this.
  13. Amplify_Paulo

    Amplify_Paulo

    Joined:
    Jul 13, 2017
    Posts:
    297
    thx for those suggestions, specially the second one

    regarding the first one, like Ricardo already said we do have it on our roadmap, it has sense been put into low priority due to two reasons, the first and main reason is because there are already free tools out there that can create those SDF for you, I've tested it and they work fine, the only difference would be that I want to do it in the GPU instead for performance. The other reason is because due to the nature of SDFs the final result becomes a little bit too smoothed in most cases, hard edges become lost, in trees for instance, the silhouette of the tree becomes soft and loses the randomness of the leaves. The best cases are really more organic stuff like rocks that already have a soft silhouette. Regardless of that we want to add it for sure as an optional setting, it's just low priority for now.
     
    sabojako likes this.
  14. Abruzzi

    Abruzzi

    Joined:
    Feb 6, 2015
    Posts:
    44
    Okey guys! Unity 2019.2.0f1 officially launched yesterday! And HDRP 6.X (6.9.1) available via package manager! :) It would be great if you update it, thanks!
     
    Amplify_Paulo likes this.
  15. Amplify_Paulo

    Amplify_Paulo

    Joined:
    Jul 13, 2017
    Posts:
    297
    Hi all, new build mainly for unity 2019.2 and SRP 6.X support

    I also took the chance to fix a previous issue where some older versions of SRP had compile errors. Now when you first add the impostor component to an object it will detect the SRP in use and compile the shaders for that version, making it easier to support multiple SRP versions, specially these new ones that made quite a lot of changes.

    Report any issues you may find, cheers ;)

    Amplify Impostors 0.9.6 - Asset Store - Amplify Products

    Improvements
    • Added support for unity 2019.2 and SRP 6.XX
    • SRP version now properly supports the SRP batcher
    Fixes
    • Fixed issue with SRP version 5.7.2 that was not compiling properly, now even if shaders show errors they will get recompiled on first bake to the correct SRP version in use
     
    JRD, Abruzzi and JBR-games like this.
  16. Abruzzi

    Abruzzi

    Joined:
    Feb 6, 2015
    Posts:
    44
    Hello! Great! It works, but there is a error in shader if you use MSAA, so impostors will black, but if you turn off MSAA then "Octahedron Impostor HDRP" shader will compile correctly.

    Code (CSharp):
    1.  
    2. Shader error in 'Hidden/Amplify Impostors/Octahedron Impostor HDRP': undeclared identifier 'packedInput' at line 1161 (on d3d11)
    3. Compiling Vertex program with INSTANCING_ON WRITE_MSAA_DEPTH WRITE_NORMAL_BUFFER
    4. Platform defines: UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_LIGHTMAP_FULL_HDR
    5.  
     
  17. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    I'll pass it on to the dev but please note that impostors are not affected by MSAA, only screen based solutions such as FXAA or TAA.

    Thanks!
     
    Abruzzi likes this.
  18. Abruzzi

    Abruzzi

    Joined:
    Feb 6, 2015
    Posts:
    44
    Thanks for your comment! We have another problem with brightness of Impostor if use Exposure override in Volume settings. All scene was affected by exposure but Impostor - not

    Here is screen:
     
  19. Amplify_Ricardo

    Amplify_Ricardo

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

    I'm not getting the same results on my side, is this the default demo scene or is there something else on your camera stack?

    upload_2019-8-5_13-52-37.png

    Thanks!
     
  20. Sam512

    Sam512

    Joined:
    Jan 13, 2019
    Posts:
    178
    Hey, does this system work on real-time day-and night cycle open world project?
     
  21. Sam512

    Sam512

    Joined:
    Jan 13, 2019
    Posts:
    178
    Hi, there!

    When I first import your asset into an empty project. It was fine until I imported it into my real project.. I got this error "Shader warning in 'Impostors/Examples/
    StandardCrossfade': Automatically setting target of LOD_FADE_CROSSFADE to 3.0 at line 31"
     
  22. Abruzzi

    Abruzzi

    Joined:
    Feb 6, 2015
    Posts:
    44
    Yeah I found how reproduce that problem, it is on forward rendering. Deferred works fine, but in Forward there is problem (don't forget to disable MSAA within Forward)
    upload_2019-8-12_12-28-11.png
     
  23. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Should work great!


    What's your Unity version and renderer used?
    Be sure to pick up the latest version from our own website.

    Ok, I was able to replicate it.

    Apologies for the delay, we will tackle it as soon as possible!
     
    Abruzzi likes this.
  24. Sam512

    Sam512

    Joined:
    Jan 13, 2019
    Posts:
    178
     
  25. Sam512

    Sam512

    Joined:
    Jan 13, 2019
    Posts:
    178
    Unity 2018.3.9f1. I use forward renderer for Speedtree 8 subsurface shader
     
  26. Sam512

    Sam512

    Joined:
    Jan 13, 2019
    Posts:
    178
    I've downloaded the asset from your website but still doesn't work. What should I do? I can't play my scene now
     
  27. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Thanks for the heads up, we will try to replicate the problem on our side and get back to you asap.
     
  28. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Upon further testing, it seems to be working without the error mentioned above. Any other warnings or errors in your console?

    Just to confirm, you're not using the LW or HD SRP?
     
  29. Sam512

    Sam512

    Joined:
    Jan 13, 2019
    Posts:
    178
    Built-In Pipeline
     
  30. Sam512

    Sam512

    Joined:
    Jan 13, 2019
    Posts:
    178
    Might it conflict with other asset? I use Vegetation Studio, UniStorm Weather System, R.A.M, ATG, GPU Instancer, EasyRoad, PP Stack 2
     
  31. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    Any other warnings or errors in your console?
     
  32. Sam512

    Sam512

    Joined:
    Jan 13, 2019
    Posts:
    178
    Hmm.. only that one warning I show you earlier
     
  33. Sam512

    Sam512

    Joined:
    Jan 13, 2019
    Posts:
    178
  34. zeux-n00b

    zeux-n00b

    Joined:
    Nov 4, 2017
    Posts:
    73
    HI!
    In case somebody's stumbles in asset conflicts may avoid using Unity essentials then,(some stuff is only further evolved from it) but im not more expert than that.

    So far my structure models looks confirmed GOOD: at 4k PNG medium compress and Unity s filtered out through trilinear-16 with compressiion at none.It matters to change as it seems.
    I guess that for lightmaps impostors will need additional texture map to handle?
    Im using Bakery compared to unity s if that matters
     
  35. Amplify_Paulo

    Amplify_Paulo

    Joined:
    Jul 13, 2017
    Posts:
    297
    Hi, you can safely ignore that warning, if you want to remove it altogether you need to remove the examples folder from your project. The warning happens due changes unity did within surface shader generation and lod crossfade and for some reason it keeps saying it needs to change to a different target when in reality it was unity that generated the original target in the first place. That shader only exists for the examples so you can ignore it or delete it.

    That's right, lightmaps require an extra texture but they also require a special shader to work in order to bake that map and to use. You can check more on how this is done in this tutorial and some additional information here. Note: you can only ever bake the impostor lightmaps after you have bake them in the normal way. I didn't test bakery but it should work.
     
  36. Sam512

    Sam512

    Joined:
    Jan 13, 2019
    Posts:
    178
    You mean delete the example? Umm.. seem work
     
    Amplify_Paulo likes this.
  37. MorpheusXI

    MorpheusXI

    Joined:
    Jan 18, 2018
    Posts:
    74
    Hi, I have the Amplify Impostors asset and just need to understand some things. My project at this time is targeting Android OpenGL ES 2.0 / Gles2 or greater. I'm using Spherical impostors and LOD Insert Mode = Replace Last.

    1. Many articles advise using low texture resolution therefore should - Texture Size - be set to <= 512 in place of default 2048. In effect should this be done to improve low end device performance?
    1.1 What are the potential drawbacks other than lower quality?

    2. Assuming no LOD group exists and you don't tick the editor preferences to create a LOD group, how would the impostor know when to display? So my LOD Group = None (LOD Group).
    2.1 If impostor does not work due to no LOD group in 2. should the default preferences not be set to create a LOD group if none exists?

    3. GAIA - Hierarchy. After spawning assets into scene you often have significant duplicates of the same asset/prefab in the scene. If you impostor one of those assets from hierarchy I see impostor item only shown against one of the prefabs, so does this mean all the other duplicates in scene/hierarchy would not use the impostor?
    3.1 Assuming answer to 3. is yes only one prefab would show the impostor, is it recommended for an existing scene the prefab in the project is located and impostored? And would impostoring the prefab in project automatically set all pre-existing prefabs in the hierarchy to be impostored in scene. Or would the workflow require impostor prefab in the project first and then add the prefab to the scene?
    3.2 Assuming you have to impostor from the hierarchy, do you have planned to detect assets in existing scene and impostor all assets desired, similar to GPU Instancer workflow.

    4. Do impostors operate in scene view or only in game?

    It's possible that my confusion is occuring as I have no LOD Groups, I'm using low poly assets and have only impostored a couple of items in hierarchy to test, which I'm not sure if impostor is being displayed. Although I currently have 500FPS on 1k terrain, when I used 8k terrain I had major issues with performance = 8FPS so I need to use impostors on all prefabs for moving to 8k map size.

    With this in mind I may also look to use Procedural Worlds Sector complete, using the sector and stream assets, would you know if Amplify Imposters is compatible with this asset when sectored? Any plans to add extension to this further down the roadmap, similar to GPU Instancer? I do have GPUI but it's not compatible with GLES 2.0, this is where AI should fill the gap :)

    Regards

    Morpheus
     
    Last edited: Aug 21, 2019
  38. Censureret

    Censureret

    Joined:
    Jan 3, 2017
    Posts:
    363
    Hello, I have a few questions that i hope you can answer before I buy. Please note that i don't know much about computer graphics so if these questions seem dumb I apologize.

    Navigation on meshes.

    How does it work with meshes that are traversable (like walls and towers) how does it work when you replace it with an imposter?

    Max size for imposters:

    is there a max polygon count? or a limit to how many polygons an object can be for the imposter to work?

    Physics & destruction:

    Say that you throw a rigidbody at the object? can it handle physics like that or isn't imposters suppose to be used with physics interactions?


    That is all, for now, i think :) i look forward to your response and again sorry if the questions are rather dumb
     
  39. BATTLEKOT

    BATTLEKOT

    Joined:
    Oct 2, 2016
    Posts:
    179
    @Amplify_Paulo when will come Universal Render Pipeline support (Unity2019.3b) ?
     
  40. Abruzzi

    Abruzzi

    Joined:
    Feb 6, 2015
    Posts:
    44
    Hi Amplify Team! We found a bug that really needs to be fixed!
    Problem happens when you use Impostors like Tree on Terrain in HDRP(maybe also in Standard-not yet tested). From "Scene View" impostors looks normal, but in "Game View" it is render in incorrect way!

    1.jpg You can see that on this screen. If we set impostor on scene like GameObject, that it will be render good in both - Scene View and Game View. But if you Paint Trees on Terrain (on that screen it is terrain) than in Scene view it will render good, but in game view it has a problem.

    We really need that, bc we use impostor trees on our terrain (I think this is one of the main functions of impostors)

    Specs: Unity 2019.2.1f1 + HDRP 6.9.1

    How to reproduce? Create a HDRP Template on Unity 2019.2.1f1, Update HDRP from 6.9.0 to 6.9.1 in Package Manager. Import Amplify Impostor asset, tune it for HDRP, Open HDRP Impostor Sample Scene. Create a prefab from "prop_barrel_01_Impostor", Create a terrain, add "prop_barrel_01_Impostor" prefab in tree terrain and paint it on terrain. see a difference between scene view and play mode (game view)

    Thanks!
     
  41. Abruzzi

    Abruzzi

    Joined:
    Feb 6, 2015
    Posts:
    44
    I found some solution, if you disable motion vectors in HDRP Asset settings than it will be rendered correctly.

    upload_2019-9-3_10-58-19.png
     
  42. Amplify_Paulo

    Amplify_Paulo

    Joined:
    Jul 13, 2017
    Posts:
    297
    Sorry for the late responses everyone, it has been a couple of crazy weeks and we are short on man power.

    1 - Yes, lower texture resolution improves performance, it works just like any texture resolution in a game, lower texture size equals faster loading and less VRAM necessary.
    1.1 - The drawback is only in visual quality, this can sometimes be mitigated by other factors like the number of frames or the selected impostor type.

    2 - In that situation it will always display. Just like a regular mesh, unless told otherwise it will always render.
    2.1 - Not sure if understand this one :|

    3 - Yes, If you want to make replace every single copy you would need to save it in the prefab, as long as the prefab contains the references to the impostor every subsequent bake will be reflected on all instances of that prefab.
    3.1 - Again, I'm not sure if I follow the reasoning, while impostors are special meshes with special materials and shaders, in the end they are just that, meshes, materials and shaders, if it helps understand, think of a regular cube with a standard material. When you create the impostor from the scene you only alter the scene so no propagation is done to other instances, if you then override those changes to the prefab it will propagate and everytime you rebake the impostors it should reflect those changes back to every instance but only because when you rebake the things that change is the mesh, material and textures which have a direct reference to the prefab that is not broken unless you manually delete it (which sometimes you may want to do).
    3.2 - No because impostors are not a replacement to unity's prefab system, it works in conjunction with it, you can even create an impostor directly in project folder or in the new "prefab mode" albeit with some caveats.

    4 - Both

    You absolutely need to use some kind of LOD management system for your case, impostors don't know when they should start or stop rendering, use doing it would mean recreating unity's LOD system which would be redundant. Using the LOD group not only tells the impostor when to start and stop rendering but also the tells your "real" object when to start or stop rendering.

    I don't see why not, if you try it and it doesn't work do tell us, like I said before, in the end impostors are just meshes, materials and shaders.
     
    MorpheusXI likes this.
  43. Amplify_Paulo

    Amplify_Paulo

    Joined:
    Jul 13, 2017
    Posts:
    297
    You would still use the original mesh for any gameplay logic, the impostor is only there to replace the visual of the original mesh at far distances.

    There's no limit, however due to the nature of the baking process, creating an impostor of an object with millions of polygons will severely slow down Unity and may even crash it.

    Because the impostor is prebaked it will conserve the state of the original object, if the object is a cube or a ball that dynamically moves with physics the impostors will correctly track it assuming you have setup the lod group and hierchy correctly. This is because the overall shape of the ball or cube didn't change. If you then have some kinda of destruction physics where you make the ball explode into a ton of pieces then the impostors wouldn't track it correctly because it assumes the original baked shape and not each individual piece of debris. Think of it like a snapshot of the object. as long as the object doesn't change you can move it all you want.
     
  44. Amplify_Paulo

    Amplify_Paulo

    Joined:
    Jul 13, 2017
    Posts:
    297
    Thx for the report, I'll investigate further.
     
  45. desertGhost_

    desertGhost_

    Joined:
    Apr 12, 2018
    Posts:
    260
    Hi,

    Could this asset be used to create billboards for distant Unity Terrain Tiles?

    If so, what would be the work flow? Would I need to convert the terrain to a mesh before baking to an impostor or can impostors be backed straight from a Unity Terrain?

    Thanks.
     
  46. Leniaal

    Leniaal

    Joined:
    Nov 7, 2012
    Posts:
    119
    Hi,

    I have two shader errors when using the HDRP package. Do you have any idea what might be causing this?

    Code (CSharp):
    1. Shader error in 'Hidden/Impostors/Runtime/HighDefinition PBR': invalid subscript 'tangentToWorld' at line 393 (on d3d11)
    2.  
    3. Compiling Vertex program with DECALS_OFF
    4. Platform defines: UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_LIGHTMAP_RGBM_ENCODING
    5.  
    Code (CSharp):
    1. Shader error in 'Hidden/Baking HDRP': redefinition of 'glstate_matrix_projection' at /Development/Unity Projects/Collapsed/Sources/Unity/Collapsed.Client/Library/PackageCache/com.unity.render-pipelines.high-definition@5.7.2-preview/Runtime/ShaderLibrary/ShaderVariables.hlsl(176) (on d3d11)
    2.  
    3. Compiling Vertex program
    4. Platform defines: UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_LIGHTMAP_RGBM_ENCODING
    5.  
     
  47. Stardog

    Stardog

    Joined:
    Jun 28, 2010
    Posts:
    1,913
    It doesn't work on terrains from what I tried. You'll have to turn it into a mesh first.
     
  48. Censureret

    Censureret

    Joined:
    Jan 3, 2017
    Posts:
    363
    Hey guys i just installed the amplify imposter.

    When i am trying to create one its invisible and it looks like the shader is wrong?

    upload_2019-9-7_18-53-30.png
     
  49. Amplify_Ricardo

    Amplify_Ricardo

    Joined:
    Jul 19, 2013
    Posts:
    2,389
    I would not recommend it for the actual terrain; tile seams can be an issue; great for anything on the actual terrain. Not to say it can't be done, just not ideal in some situations - best to try it out but I would be happy to provide some feedback based on a test case(screenshot).


    What's your Unity, HDRP, and Amplify Impostors version?

    Yes, it requires a mesh renderer component.

    What's your Unity, and Amplify Impostors version?
    Are you using the Default Renderer or HD/LW SRP?
    Any errors or warning after importing the package?
     
  50. Stardog

    Stardog

    Joined:
    Jun 28, 2010
    Posts:
    1,913
    Unity 2019.2.3f1 default renderer, Amplify 0.9.6. It works for everything else without errors.

    It doesn't add anything to the References box so you end up with an empty transform.
     
    Last edited: Sep 9, 2019