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

Sleek Render - Lightning Fast Mobile Post Processing Effects

Discussion in 'Assets and Asset Store' started by Kumo-Kairo, Oct 28, 2017.

  1. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    DEPRECATION NOTICE
    ======================
    It's now open-sourced at
    https://github.com/KumoKairo/Sleek-Render
    ======================
    Hi!
    I've made a fast post processing stack that is targeted mainly on mobile (unlike most of the post processing packages on the assetstore).

    TL;DR:

    Xiaomi4X_0_1_60fps.png

    What is different in my case is that it doesn't use any of the slow unity's APIs that are not flexible enough- It uses custom render passes and does most of its work on downsampled textures. For example, two-pass blurring is done on a tiny 32x128 texture and these two passes take around 6.000 GPU cycles. As a reference - rendering a 3k polygon model with two textures that is taking about 30% of the screen will take around 4.000.000 cycles. And rendering a simple plain that takes around 80% of the screen with a standard Unity shader will take around 40.000.000 cycles (sick!)

    And there are still things that can drastically improve performance on older devices like master downscaling (works very well on hi-rez devices that are not very powerful), I'm just gathering some real-world use cases to create an automatic downscaler that knows which devices need this and which do not, so stay tuned.

    I'm not the first one to do this by the way, there's an old post https://forum.unity.com/threads/pos...phics-blit-onrenderimage.414399/#post-2759255 where the guy uses a similar approach and is getting 60 fps bloom on an S2 phone.
    And what I'm doing is very similar to what graphics guys from https://play.google.com/store/apps/details?id=com.creativemobile.nns&hl=en did. They have a full post-processing stack made in Unity that works on mobile and doesn't slow them down to a halt (they even did a real motion blur and a radial blur that are also very fast).
    And these things usually pop up from time to time on forums, but no one has made a drag-n-drop solution to my surprise. Which is why I decided to step in.


    I've made some comparison with FxPro (which I was intended to use for my project in the first place) and a new Standard Post Processing stack (which I believe is not intended for mobiles at all) Full sized gallery is available here https://imgur.com/a/WTOT6

    ME173X_1920.png
    Xiaomi4X_1920.png
    ZTEV811_1920.png
    iPad_1920.png

    Created post processing framework allows adding new effects easily. Like simple color grading (color overlay), vignette, lens dirt, shockwave (on-screen raindrops), motion blur, fog etc. And this is what I'm going to add to this package if it goes well.

    This package includes color overlay starting from version 0.2


    This package includes vignette starting from version 0.3


    The policy for this package will be as follows:
    1. It's going to be free for a few days after initial release, bloom only
    2. After I gather some real-world users feedback and do initial improvements / fixes, I'll add simple color grading or vignette (luma-based color overlay is very cheap on mobile without LUTs)
    3. I'll continue adding new pluggable effects, ultimately making this package something like a mobile-oriented Standard Post Processing Stack
    4. Each new effect will increase the price a bit (it will stay reasonably low-priced and affordable)
    5. Upgrades from a previous version (including the initial free version) will also be free, so it's advisable to grab it as soon as possible (initial free release is ideal)
     
    Last edited: Feb 3, 2020
    TigerHix, overthere, mahdiii and 9 others like this.
  2. TylerCode_

    TylerCode_

    Joined:
    Sep 8, 2010
    Posts:
    221
    I already have used CNInput and it was fantastic, I would imagine (for anyone wondering) that the quality of this asset will be phenomenal. Thanks for this and I look forward to initial release and versions going forward. I may even push back the release of my current project to allow time to implement this.
     
  3. TylerCode_

    TylerCode_

    Joined:
    Sep 8, 2010
    Posts:
    221
    Heyo Kumo-Kairo,

    Any update on this? I'm excited to see this in action.
     
  4. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    It's still in review. Usually first upload takes more time than subsequent updates.
     
    Lex-DRL likes this.
  5. TylerCode_

    TylerCode_

    Joined:
    Sep 8, 2010
    Posts:
    221
    Ah okay, thanks for the update.

    I didn't realize the review process was so long (I was going to make a package but never did since requirements are so strict)
     
  6. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    While it's still in review by the assetstore team, I've already done some improvements - added color grading overlay. It allows to gently tint the image, make it completely black-and-white (or to sepia tone it) as well as add vivid colors (like red when the health is low, the player has failed etc). This effect is essentially free to calculate as it doesn't use any LUTs. It can also be used to create a fade-in fade-out effect without additional overdraw (usually fade-ins and fade-outs are made with a fullscreen alpha blended texture which renders on top of the scene).

    Color Overlay.png

    I also improved bloom visual fidelity (reduced blockiness) while keeping the same performance.
     
  7. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    Yay, Beta 0.1 version with bloom is finally live. https://www.assetstore.unity3d.com/#!/content/103628
    Be sure to grab it while it's still free.

    I'm at the gamedev conference currently and won't be able to provide much support, but feel free to write me on an email or in IM and I'll be sure to reach you back after November 20th
     
    Last edited: Nov 16, 2017
    TylerCode_, siordache94 and sylon like this.
  8. TylerCode_

    TylerCode_

    Joined:
    Sep 8, 2010
    Posts:
    221
    Would 100 percent recommend this to anyone. If you need to target lower-performance hardware, this is what you want to use.
     
  9. MP-ul

    MP-ul

    Joined:
    Jan 25, 2014
    Posts:
    230
    This is just Awesome, Thank you for giving us this awesome piece of work! :D:D:D:D:D How can I donate?
     
  10. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    @Fenixake Spreading the word is the best donation)
     
    MP-ul likes this.
  11. Aeross

    Aeross

    Joined:
    Nov 3, 2016
    Posts:
    1
    Just on the initial phase of a Tron like visuals game and I was really going to drop it as the effect that I want requires bloom, and the PostProcessing from Unity and others slow down a lot the performance on mobile. Will try this out. Thanks for all the work Kumo-Kairo!
     
  12. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    @Aeross currently this bloom doesn't really allow narrow lines of Trone-like glow due to the performance-first implementation. I've had some feedback on this a few days ago and it turned out to be not really usable right now.
    Tron-like glow requires a bit different approach to blurring/blooming, including a different luma (brightness) formula.

    I've added a card to the Trello backlog so you can follow it there.
    You can also be of a great help if you'll be able to send me a few screenshots of your game to my support e-mail (available in the package README file), so we can iterate on actual use-cases rather than my synthetic tests.
    Cheers
     
    MP-ul likes this.
  13. sylon

    sylon

    Joined:
    Mar 5, 2017
    Posts:
    246
    Hi.

    Just tried Sleek Render. I am really happy with performance.
    Suddenly Post Processing is viable for my project :)

    I do have some banding happening on my skybox banding.png

    That skybox is a simple procedural shader.
    here is the same shot without SR
    banding_wo.png
    Is this inevitable because of the nature of the effect, or is there something we can do?
    (edit) I have installed the update..
     
  14. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    Sleek Render has just updated with a Color Grading and it's a first non-free price tier. Next update will include vignette.

    @sylon is this in the editor or in the mobile build? I have a few ideas on this, and this can be solved, no worries.
     
  15. sylon

    sylon

    Joined:
    Mar 5, 2017
    Posts:
    246
    Nice.
    This is in the Editor, Game window, play mode.
     
  16. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    @sylon can you try building it on a mobile device? In the meantime I'm going to make a quick fix for the Editor banding. You can write me back on a support e-mail to get this update right away so you won't have to wait for the official Asset Store release (it usually takes a few days)
     
  17. sylon

    sylon

    Joined:
    Mar 5, 2017
    Posts:
    246
    There is no hurry on my end.
    Mobile build will have to wait till tomorrow i think. I'll contact you when i have something.
     
    Kumo-Kairo likes this.
  18. MP-ul

    MP-ul

    Joined:
    Jan 25, 2014
    Posts:
    230
    Well for my test apk worked way better than i was expecting ,my bloom was eating 3-4 frames and the "sleek" stays at 57 fps(my phone can output only 57 frames per second idk, Mali 400mp) , BTW do you have ideas of a DOF atleast a good performing one that you can use for showcase scenes? and maybe for future some Shadows on mobile :3 Sleek Render Mobile shadows will sound so awesome.
     
  19. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    It's in my roadmap (first step is performance research)

    We've had a working mobile shadows solution, it even had blending with Unity's lightmaps:

    But its very specific and requires custom "shadow receiver" shaders. I was going to upload it to the assetstore, but decided that it would be a nightmare to support because of those custom shaders. There is a solution from a different guy on the assetstore that uses the same approach. I can't find the exact link, maybe he put it down because of that reason. So, fast shadows are doable, but they require at least intermediate knowledge in shader writing to be usable in real projects (and if you do have intermediate shader knowledge - why would you want to buy this thing in the first place)
     
    Last edited: Nov 22, 2017
    MP-ul and TylerCode_ like this.
  20. MP-ul

    MP-ul

    Joined:
    Jan 25, 2014
    Posts:
    230
    Well if the shadows are a no GO than how about some reflections? SSR or Plane reflections that do not make your drawcalls double!

    Edit: And Maybe some AO? ^.^
     
    Last edited: Nov 22, 2017
  21. sylon

    sylon

    Joined:
    Mar 5, 2017
    Posts:
    246
    Just tried a build for android and there is no banding there :) Looks very nice.

    I would also be interested in a solution for shadows. Guess i have slightly below intermediate shader knowledge ;)
    But i have not yet found a solution for shadows i am happy with.
     
  22. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    It's also what I'm aiming for, we'll see what can be done here ;)

    Cool, everything is under control then. I'll add Editor anti-banding fix in the next release.

    Yeah, I've found a link to the package I was referring to and a guy has put that package down - https://assetstore.unity.com/packages/tools/particles-effects/mobile-shadows-91897
    It's most likely because of that "customer support hell" I was talking about :)
    That solution was even superior to what we've had, it had layers and inter-layer shadowing.

    I will keep this request in mind, but right now I'll focus on Sleek Render effects to make it more feature-rich so it really can rival with the Standard Post Processing Stack

    Also, I guess mobile shadows will be easier and more user-friendly when the Scriptable Render Pipeline comes live
     
    Last edited: Nov 22, 2017
    TylerCode_, sylon and MP-ul like this.
  23. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    Finally got my hands on vignette, but I'm not happy with the performance yet. So I guess I'll update just the editor andi-banding for now and the vignette will have to wait for a bit longer

    upload_2017-11-26_19-28-12.png
     
    TylerCode_ likes this.
  24. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    Editor anti-banding patch is live. @sylon your issue should be resolved, it would be nice of you to check it

    I was able to improve the performance of vignette while keeping the ease of control and the update will be coming soon. There are still some micro-optimization things that can improve the performance even further and I will continue to iterate on that. While at the same time I want to get some real-world usage feedback on vignette usability/stability.

    I also exposed internal HDR Compression parameters to allow more user-based tweaking. It was there from the beginning so no performance penalties introduced there.
     
  25. sylon

    sylon

    Joined:
    Mar 5, 2017
    Posts:
    246
    Just updated and the banding is gone. Thanks!
     
  26. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    Assetstore just updated with a Vignette version! It's the second price tear already
     
    MP-ul and Adam-Bailey like this.
  27. sylon

    sylon

    Joined:
    Mar 5, 2017
    Posts:
    246
    Nice update :)

    Question:
    I am trying to get SleekRender to work with a depth based fog effect. No luck so far; fog get's completely destroyed.
    I tried to change Script execution order, but that didn't help.
    Know a fix for this?
    If you need more info, let me know
     
  28. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    @sylon As Sleek Render is very different from what other post processing effects do (including Unity's), it's not compatible with them. This makes much sense because all other PP effects are generally too slow to work on mobile. Adding other "normal" post processing effects will nullify the point of this package - to increase post processing speed on mobiles, as the performance will be tied to a slowest part. Not true anymore. Sleek Render works with other effects

    The only way to solve this for your case is to add a depth-based fog into Sleek Render directly :) This kind of feedback is exactly what I've been looking into while creating this package as an "open development" solution and I'm glad you've raised this topic here.
    Also, as you're developing for mobile, you're most likely won't be using the Deferred Rendering path (which is the reason for the post-processing depth-based fog to exist in the first place) and you'll probably be better to go with a built-in Unity fog from the Lighting panel. Is there a specific reason why you need your fog to be of a post-processing nature?

    We can iterate on your case specifically, you can contact me via an IM here or via the support e-mail

    Cheers :)
     
    Last edited: Dec 12, 2017
    MP-ul likes this.
  29. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    I have updated the package description so it's clear that it's a different solution and any form of other post processing effects are not going to work in conjunction with it (update will take a bit of time as it's the same review process as updating the functionality of the package)
    For me it was obvious that using any form of other post processing effects will nullify the quality of this fast package, but this is not the first case this question rises up (it's actually the second).
     
    MP-ul and TylerCode_ like this.
  30. MP-ul

    MP-ul

    Joined:
    Jan 25, 2014
    Posts:
    230
    Oh is there a way in settings to disable effects? or will it be one in the future release?
     
  31. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    It's what I'm actually currently working on. This feature is a must, but it's not as straightforward as it may seem because usually several effects are combined into one post-processing pass. So I ultimately will need some sort of a dynamic pipeline/shading thing that will handle changing the pipeline steps and call appropriate shader variants on it.

    @Fenixake Do you experience any performance issues?
     
  32. MP-ul

    MP-ul

    Joined:
    Jan 25, 2014
    Posts:
    230
    I did not test it yet, i will let you know after I test it!
     
  33. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    I have taken some time for deep profiling of internal shaders and it turned out that all of the blur, bloom, vignette and other steps cost almost nothing compared to a full-screen luma color grading (which I believed to be an almost free operation). I trusted a more experienced guy on this, everything was as explained up to the last line of code. So I will surely take some measures.
     
    Last edited: Dec 3, 2017
  34. o1o101

    o1o101

    Joined:
    Jan 19, 2014
    Posts:
    639
    Hi @Kumo-Kairo

    Your asset looks promising, could you give us a little more details on how exactly this is so different than other post processing solutions? Because it seems every PP asset seems to display the better promising FPS numbers but all generally have similar performance in the end, (From our experience).

    Also do you have any screenshots of the UI, etc. ?

    Thanks.
     
  35. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    @deverolirc Hi! I have a few comparison screenshots in the header post, it has fps couners on a bloom effect.

    What is different in my case is that it doesn't use any of the slow unity's APIs that are not flexible enough-
    No "OnRenderImage" or "Graphics.Blit" directly. It uses a custom render passes and does most of its work on downsampled textures. For example, two-pass blurring is done on a tiny 32x128 texture and these two passes take around 6.000 GPU cycles. As a reference - rendering a 3k polygon model with two textures that is taking about 30% of the screen will take around 4.000.000 cycles. And rendering a simple plain that takes around 80% of the screen with a standard Unity shader will take around 40.000.000 cycles (sick!)
    Right now the most expensive step is a pixel-by-pixel color grading (luma based color overlay), it's taking about 7.000.000 cycles just for luma calculations.
    * these cycles count is total cost from my 1280x736 tablet. These numbers will be different on other resolutions, but the idea and overall ratio will be the same.

    And there are still things that can drastically improve performance on older devices like master downscaling (works very well on hi-rez devices that are not very powerful), I'm just gathering some real-world use cases to create an automatic downscaler that knows which devices need this and which do not.

    I'm not the first one to do this by the way, there's an old post https://forum.unity.com/threads/pos...phics-blit-onrenderimage.414399/#post-2759255 where the guy uses a similar approach and is getting 60 fps bloom on an S2 phone.
    And what I'm doing is very similar to what graphics guys from https://play.google.com/store/apps/details?id=com.creativemobile.nns&hl=en did. They have a full post-processing stack made in Unity that works on mobile and doesn't slow them down to a halt (they even did a real motion blur and a radial blur that are also very fast).
    And these things usually pop up from time to time on forums, but no one has made a drag-n-drop solution to my surprise. Which is why I decided to step in.

    As for "they look promising but have similar performance" you can ask a few people that use it already, like @Shinobi1507 for whom this proved to be a deal-changer. We managed to get it running with all effects on the oldest tablet on pretty stable and high framerate. It also proved to be more consistent because it worked and looked exactly the same on all devices, where the standard post-processing stack turned green on a few of them.

    One downside of this approach is that it's not compatible with any other post processing effects that use OnRenderImage for example because it's so much different. But right now I don't see a big problem with this because OnRenderImage-based PP effects are usually too slow to be added in a mobile game any way.

    @deverolirc what do you think of an in-depth video explaining the differences between this Sleek Render approach and a common approach in Unity? What will help to assure you (and other people) that this really works?

    I will post a screenshot of the UI in package screenshots, thanks for pointing this out :)

    upload_2017-12-4_12-7-58.png

    This is how GUI of settings look like right now.
    I will make it look more like Standard Post Processing stack with an ability to turn separate features on/off to provide even more performance boost if you don't need some effects.
     
    Last edited: Dec 4, 2017
    tachen likes this.
  36. MP-ul

    MP-ul

    Joined:
    Jan 25, 2014
    Posts:
    230
    Well for me the 0.3 works okay!
     
  37. o1o101

    o1o101

    Joined:
    Jan 19, 2014
    Posts:
    639
    @Kumo-Kairo Thanks for the in depth response, you earned my purchase!

    I noticed an issue regarding what appears to be something to do with clipping plains, I can't exactly describe it but it seems to cause some odd rendering and flickering.
    Also, it seems to work fine along side Amplify Color, is this not meant to work this way?

    Lastly, it really important for me to be able to any of the the effects I do not need, eg. Color Overlay (Which you mentioned was eating performance compared to other effects, or is that something else?)

    Other than that everything is working good, nice work!

    Looking forward to some new effects!
    Is tone mapping an option, how heavy would this be?
     
  38. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    Thank you for your support :)

    Yes, this is currently in process, you can always check the open development trello board to see what I'm working with right now https://trello.com/b/2EneJjKX/beta-sleek-render-open-development-board

    This is a common issue with bloom as it usually flickers a lot. I have this anti-flicker feature already in my roadmap, so stay tuned. (Standard Post Processing stack also has this issue and clicking a "reduce flicker" checkbox sometimes even increases that artifact in certain cases)

    Amplify Color - this is interesting, I think I'll get to you in IM to get more info, maybe there IS a way to make it work with all the other post-processors just for the sake of user experience and consistency (if it's working with Amplify Color)

    About tone mapping - I have a unique idea on this, never seen anyone implement that before. But it may be because its performance is not acceptable anyway :) But LUT tonemapping will always be many times more expensive than Color Overlay I already have because Color Overlay is already almost as simple and as fast as it can get. I may win another clock cycle or two in a fragment shader (which will take down the total cycle count by about a million on most devices), but that's it. Tone Mapping will always incur dependent texture reads, even if it's done on a lower resolution so it's most likely won't be an option on lower end devices like my ZTE V811 or Asus ME173X, but again, we will see once I implement that and check how it performs on those devices.
     
    Last edited: Dec 5, 2017
  39. dualcarbon

    dualcarbon

    Joined:
    Jan 7, 2014
    Posts:
    30
    This is interesting, i will definitely be purchasing this soon to use in my project. Initially thought of using FxPro but after some experiments i have found it to be impacting performance.
     
  40. GoGoGadget

    GoGoGadget

    Joined:
    Sep 23, 2013
    Posts:
    864
    Hi there! Very curious as to where you get some of your info from regarding Post-Pro on mobile, particularly regarding the use of OnRenderImage and Graphics.Blit. In my experience, I have never had a user report any issues on mobile with a correctly optimized Graphics.Blit/OnRenderImage shader, and unless your special method is full-screen triangle rendering, there really shouldn't be anything different going on under the hood.

    Also, without using OnRenderImage, I assume this plugin doesn't work in scene view?

    How do you mean tone mapping will always incur dependent texture reads? If you are combining your effects correctly, the tonemap should simply be an ALU operation right at the end of your HDR pipeline.
     
  41. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    I can advise you to grab it while it's cheap as new features will increase the price slightly. But if you've already bought it you'll be able to get all of the updates and new features for free ;)

    @GoGoGadget Hi! Thanks for dropping by, nice to see some seasoned veterans here :)

    It does. It took some time to get it right, but now it works without any fuss.

    I haven't find a way to use OnRenderImage for downscaling of target textures. There might be one though, maybe you know how to do it?

    I have a fullscreen Shockwave effect in my roadmap, just like it was in the original Shadowgun and like it is in the Nitro Nation Stories, and it requires a custom mesh to render. (Graphics.Blit is always done on a quad, so it would not be possible)

    OnRenderImage and Graphics.Blit are OK as they are, they are just not flexible enough for my case. See a long discussion on this here https://forum.unity.com/threads/render-textures-vs-image-effects-on-mobile-why.502469/
    A quote from my last post there:
    But I can clearly and confidently say that this level of performance would not be possible without these custom solutions.

    I think the guy initially mentioned tone mapping as a way of LUT color correction just like in Amplify Color (what he currently works with right now). So the contexts was about Color Grading, not Tone Mapping. What you are talking about is HDR tone mapping and this package already contains a simple HDR tonemapper that allows to dim the overly bright bloom values (see header thread post). And yes, it is very cheap right now without any texture fetches.

    Hope I answered your questions :)
     
    Last edited: Dec 5, 2017
    GoGoGadget and MP-ul like this.
  42. GoGoGadget

    GoGoGadget

    Joined:
    Sep 23, 2013
    Posts:
    864
    Thanks for the responses, always good to see someone trying out something new! And yep, as long as we're talking about the same thing, you can downscale in OnRenderImage just by blitting into a texture that's smaller than the source RT.
     
    Kumo-Kairo likes this.
  43. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    Cool, I'll take a closer look at it. Thanks for the advice!
     
    GoGoGadget likes this.
  44. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    Wait, it seems that I misunderstood you. I thought you're talking about a game view in edit mode (because this is what took me quite some time to get right due to the Screen.width and Screen.height "bug" in the editor right after assembly reload), but now I understand that you're talking about actual scene view. No, it doesn't display any image effects in scene view directly, but I've done some quick searching and it seems that it's very easy to implement. I haven't even thought about it because neither I nor anyone who tried the package seemed to miss this feature. But it looks like a good addition to overall experience, thanks for pointing this out too.
     
    GoGoGadget and MP-ul like this.
  45. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    I have managed to win a few clock cycles on last Compose step (Color Grading). It's either 1 or 2 depending on GPU architecture (modern ones take care of lots of optimizations themselves and have combined ALU operations so it will be only one clock cycle less on them).

    And also I have received some feedback on using Sleek Render with Screen Space - Camera uGUI and have decided to switch back to OnRenderImage for now. Profiling showed that currently there are no differences at all.
    Now I have to explain why I didn't want to use OnRenderImage in the first place.
    The reason is that this method of post processing doesn't allow 3D master downscaling, when the 3D scene is rendered at 0.8 or 0.6 resolution (iPad 3 works flawlessly on 0.6 resolution, it looks like a miracle, there's barely any difference in visual quality of the 3D scene).
    These custom render calls also allow for some custom render texture formats, for example it allows to use RGB565 on most of the tiled GPUs like Adreno or PowerVR where dithering takes care of banding, but switch it back to RGBA32 on GPUs like Nvidia Tegra (up to K1).
    But as for the current 0.3 version (and 0.4 that is in review), I don't have this master downscaling solution (I call this feature a Downscaling Oracle), so there's nothing to lose.

    Once I get back to implementing this Downscaling Oracle, I will most likely switch back to custom render calls, but will make it work with that Screen Space - Camera uGUI rendering option.

    0.4 version with performance improvements and Screen Space - Camera uGUI solution is currently in review, and as feature list remains the same, the price will remain the same as well.
     
    Last edited: Dec 9, 2017
    MP-ul likes this.
  46. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    Just to keep you posted.

    I have received QUITE A LOT of feedback and real-world use cases of Sleek Render and some of those use cases caught me completely off-guard (like using post processing on uGUI canvas, using bloom on narrow lines, or using bloom with tiny dots that are usually considered white noise and get completely blurred away on the blur passes).

    All these things have changed my current backlog priorities, and I have updated the public trello board to reflect those.
    So currently on my TODO list:
    • Custom settings editor with ability to turn off separate post processing steps
    • Exposing Luma calculation vector in the inspector - turned out physically correct way of storing and calculating luma is not suitable for all use cases of bloom (currently bloom picks up saturated green much more easily than saturated blue)
    • Film grain and lens dirt textures - it will allow to mask out bloom areas for certain setups.
    • Other blur techniques like Kawase blur or Double-Filter blur for more quality bloom. It will allow Tron-like glow!
    • Relative post-processing cost calculator. Never seen it has been implemented by other post processing packages. It will show some relative cost of adding new effects or changing blur techniques. It will highlight the most expensive passes of effects so it will be easier to tweak the performance / quality ratio without having a whole lot of mobile devices to test on.
    Thanks to all that have been using Sleek Render so far and for all the feedback I got from you guys.

    Cheers and stay tuned.
     
    Last edited: Dec 12, 2017
  47. sylon

    sylon

    Joined:
    Mar 5, 2017
    Posts:
    246
    I just updated to v 0.4 and am happy to report that Sleek Render and depth based fog are working nicely together!
    Look forward to trying the new features.
    Thanks Kumo-Kairo.
     
    TylerCode_ and Kumo-Kairo like this.
  48. Fodalichking

    Fodalichking

    Joined:
    Mar 18, 2015
    Posts:
    14
    is it faster than Unity PP v2.0?
     
  49. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    It is, the performance gain is huge. You can take a look at the comparison screenshots in my first post.
    It looks a bit different - the bloom is horizontal anamorphic (and I'm currently working on other solutions), and the color grading doesn't use LUTs - it's a plain color overlay. Vignette should look mostly the same.
    My current goal is to increase overall visual fidelity without compromising performance, which is not a trivial task, especially on low-end ES2.0 hardware
     
  50. Kumo-Kairo

    Kumo-Kairo

    Joined:
    Sep 2, 2013
    Posts:
    343
    It's been a while since the last update. I surely had some time experimenting with static flow (uniform branching) on different platforms and it didn't turn out to be beneficial for the performance. So right now (as of 0.5) there's an ability to separately disable different effects. There's a new settings inspector that looks more like Standard Post Processing stack inspector (so less confusion with tweaking). I have also removed the HDR Compression calculations because they only work for bloom anyway and the settings closely match the bloom intensity settings. But I have added a new parameter - bloom tint, so you can influence the bloom color a bit.

    So:
    • Improved settings inspector
    • Ability to on/off effects separately
    • Removed HDR parameters
    • Added Bloom Tint
    Nearest roadmap:
    • Adding minor effects like film grain and lens dirt
    • Improving visual fidelity of Bloom (creating different Bloom alternatives)
    • Implementing a relative cost calculator that will enable you to look at how costly effects are, calculating overall relative cost
    As always, you can follow the current roadmap and implemented features on the Trello board https://trello.com/b/2EneJjKX/sleek-render-open-development-board
    Cheers and take care
     
    NeatWolf likes this.