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

Chromatica Studio - The definitive color grading suite for Unity - Easy, Fast, Powerful

Discussion in 'Assets and Asset Store' started by Chman, Aug 15, 2014.

  1. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    Thanks for the kind words :)

    Unfortunately no, I don't have any plan to support third-party image effect blending. Chromatica does expose the volume API though (so you can detect volume collisions and start the blending process via scripting) so it should be possible to leverage the system with your own image effects. I can expand the API if needed but this feature won't be included anytime soon.

    Regarding the in & out time for transitions... That's a good idea, I'll add it to the roadmap ! How should it behave when going from one volume to another ? Should it use the "out time" from volume 1 or "in time" from volume 2 ?
     
  2. S_Darkwell

    S_Darkwell

    Joined:
    Oct 20, 2013
    Posts:
    320
    @Chman: It seems most logical that it should be the average of the two.

    Also, any chance support might be added for the transition being by distance, instead of time -- That way, if you are half-way into a volume with a 2m transition, the affect would be interpolated half-way through. This could help fix the incongruity between very quick velocities and slow transitions.
     
  3. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    I'll go with the average, it makes sense.

    The distance check instead of time... Why not, I'll look into it but can't make any promises. The performance cost could rapidly get out of control with many volumes (ray/sphere casts and distance checks...) so it would require a smarter solution than simply going brute-force.
     
    S_Darkwell likes this.
  4. S_Darkwell

    S_Darkwell

    Joined:
    Oct 20, 2013
    Posts:
    320
    @Chman: Perhaps if the blending region is within the perimeter of the volume, or is pre-determined by a squared raycast distance, I imagine that the calculation could be kept to simply the volume with which one is actually interacting. I have no idea what your actual detection method is, though, so I'm just tossing out ideas.
     
  5. psimek

    psimek

    Joined:
    Nov 9, 2014
    Posts:
    7
    I can see cases in which the volume or the in/out time average would be useful. I'd say the average user would prefer the in/out time option, and the more advance user would go with the volume in some cases(where performance wasnt a concern).
     
  6. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    May the 4th be with you ! New update available :)

    Changelog (2.1) :
    • Added : Screen mask feature. You can now use a Texture2D / RenderTexture / MovieTexture to mask the effect on screen. The mask can be black & white or colored so you can mask individual color channels.
    • Added : A new operator, "Vintage", with 24 Instagram-like presets.
    • Added : "Context" button in the editor toolbar to quickly switch between volume contexts (it's a shortcut to "Volume Context" in the component inspector).
    • Fixed : A few errors on build.
    • Fixed : An issue with the startup dialog on package update.
    • Fixed : Documentation links in the startup dialog and Help menu.
    • Misc : Reworked the inspector UI to make it more readable and pleasing to the eyes.
    • Misc : Documentation update.
    Next update will bring in/out transition times and probably a new operator. I'll also investigate adding an option to use distance instead of time for the volume transition.

    Enjoy and don't forget to leave a review on the store :)
     
    GoGoGadget likes this.
  7. GoGoGadget

    GoGoGadget

    Joined:
    Sep 23, 2013
    Posts:
    864
    Love the mask idea, can't wait to have a play around with it!
     
  8. psimek

    psimek

    Joined:
    Nov 9, 2014
    Posts:
    7
    Very cool additions in 2.1!. Really looking forward to the custom in/out times for volumes (We could used the (time)float based version well before the volumes one, if that would hold up release much ;-).
     
  9. Sprak

    Sprak

    Joined:
    May 20, 2008
    Posts:
    28
    Hm, doesn't seem to allow multiple ChromaticaStudio components on a camera.
     
  10. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    Not anymore. It was sub-optimal (performance-wise) and the UI part was kind of broken. You should rely on volumes now or use the ChromaticaStudio.BlendTo() method via scripting. It's easier to setup this way and everything's done in one pretty fast draw call :)

    See the "Volumes" section in the documentation, there's also a quick video tutorial.
     
  11. Almakos

    Almakos

    Joined:
    Dec 13, 2013
    Posts:
    179
    hey @Chman, why have you decided to close comments on your videos?
     
  12. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    Because a few years ago some random dude decided to troll on my videos. Instead of wasting my time with him I choose to close the comments. There's also the fact that I don't like how the comment system works on Youtube and I'm not a dedicated Youtuber, I just use the website to host my videos, nothing more :)
     
  13. Almakos

    Almakos

    Joined:
    Dec 13, 2013
    Posts:
    179
    I see.
    These days it's super easy to ban troll entirely from the channel and majority of spammers are automatically filtered. On the other hand Youtube is a great place to communicate as it's quite social platform :)

    Instagram filters are fun, but would be really nice to have couple 'realistic' presets to use as a starting point. As not many really know how to colour grade.

    Thank you :)
     
  14. Steve-Tack

    Steve-Tack

    Joined:
    Mar 12, 2013
    Posts:
    1,240
    Is there a way to have certain materials or GameObjects exempt from color grading with Chromatica? I've just started experimenting with color grading (actually I'm using the Lookup Filter shader in Colorful) and it looks weird when there are objects in the scene that are backlit displays that are receiving color grading. I'd like the 3D elements in my game's cockpit (like screen bezels) to receive the color adjustments, but not the computer screens themselves.

    It looks like in Amplify Color you can apply a mask, which you can generate dynamically. I own that too, but frankly, I'd rather try Chromatica, if it has that feature. I didn't have good luck with the whole live Photoshop integration thing. In fact, it was actually less painful to just manually apply color adjustments to a neutral LUT texture and be done with it.
     
  15. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    It's on my todo list. If everything goes well, there will be a way to exclude specific game objects from the color grading pass.
     
    S_Darkwell and Steve-Tack like this.
  16. Steve-Tack

    Steve-Tack

    Joined:
    Mar 12, 2013
    Posts:
    1,240
    Excellent! Good to hear.
     
  17. psimek

    psimek

    Joined:
    Nov 9, 2014
    Posts:
    7
    exclusion of objects would be awesome at some point! Really looking forward to the advanced volume fade in/out :).
     
    Last edited: May 26, 2015
  18. 3Duaun

    3Duaun

    Joined:
    Dec 29, 2009
    Posts:
    600
    When adding the new vintage operator(thanks for adding it in from colorful), upon choosing one of the presets, the game view turns solid white, and no effect is applied. Is anyone else getting this error?
     
  19. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    Hmm what version of Unity are you running ? Any error in the console ?
     
  20. 3Duaun

    3Duaun

    Joined:
    Dec 29, 2009
    Posts:
    600
    I'm using Unity 5.0.2f1. In addition to the vintage issue I mentioned, my LUTs being generated (in the "LUTs" folder) are bright pink(solid colored) often too; no matter what operators I use.

    I'm not getting any console errors.

    I've deleted everything in the project, except for chromatica, and it still has the same issue. I'm going to attempt a flush of the library, selectively. Chromatica is performing properly when installed cleanly, however, after my recent upgrade from the asset store, this issue began to arise.

    EDIT: upon reimporting Chromatica, after deleting it, I got a GUID error in the console (something about matching IDs).. unfortunately I didnt get to copy it before it was cleared :-\ Maybe there is an issue with the asset database, though I deleted the entire library, and had unity do a full re-import... same issue is still present.

    If you have any time available to assist in diagnosing the issue, I could send you a small unity project demonstrating the issue. If not, I understand.
     
    Last edited: May 27, 2015
  21. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    That's weird. Send me the sample project (link via PM or via email), I'll look into it :)
     
  22. Lumen-Digital

    Lumen-Digital

    Joined:
    Aug 3, 2012
    Posts:
    16
    This asset is incredible value for money.
    Totally blown away by the flexibility and quality.
    Good work!

    I am sure I will find this out with some exploration but is it possible to edit the attributes of the operators and burn a new LUT at run-time? I realize that we would need to build a set of run-time UI components.
     
    Last edited: Jun 16, 2015
  23. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    Thanks :)
    No, right now the whole thing uses a bake process because, well, that's the whole point of lookup textures :p To be fast at runtime.

    But the way Chromatica is done internally could potentially allow the generation of LUTs at runtime with a few modifications... Although to be honest, now that Chromatica supports fast blending between LUTs I don't think there's a point in adding this feature. Baking a LUT is fast but isn't free. You would have to carefully choose when to bake it to not impact the frame rate. If you need to tween / blend LUTs, look for the "Volume" chapter in the documentation (or "Scripting" if you don't care about volumes and want to control it yourself).
     
  24. Lumen-Digital

    Lumen-Digital

    Joined:
    Aug 3, 2012
    Posts:
    16
    I am actually creating an internal tool for processing camera input so can afford frame glitching while editing attributes. Then it would be good to benefit from the speed of the LUT when processing the input.
    I am most interested in using the Three-Way Color Corrector (you are a mad man!). :confused:
    How long did it take you to develop this set of tools?
    Can you point me toward the classes that will require modification to enable the editing of operators and run-time LUT generation?
     
  25. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    It's hard to say, I built this tool over time using existing code from my previous projects.
    You'll need to create a custom renderer but a lot of the code is already there and can be copy-pasted-tweaked for your needs.

    Operator settings are serialized into the /Scripts/ChromaticaBase.Operators and /Scripts/ChromaticaBase.DepthOperators lists. Each operator has a data class in /Scripts/Operators/. These are all accessible at runtime so you don't need to modify them.

    Now, for the editor part: each operator has a Renderer and an Editor in /Scripts/Editor/Renderers/ and /Scripts/Editor/Editors/. The LUT baking logic (which makes use of the previous Operator and Renderer classes) is done in /Scripts/Editor/ChromaticaRenderer. It's quite straightforward : prepare a RenderTexture for the LUT, loop through the operator list and call the operator renderer on the RenderTexture.

    Obviously you'll have to build the UI part yourself as Chromatica makes use of Editor classes. Oh, and the code to generate the color wheel is in /Scripts/Editor/ColorWheelRenderer, you'll need this to make your own Three-Way CC.

    So... It will require some work on your side, but it's definitely doable.
     
  26. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Very nice. I wondered why it only operates in LDR though?
     
  27. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    Mostly because not all operators work well in HDR, some color transformation algorithms work in [0;1] range. And lookup textures are LDR by definition. But I plan to integrate a customizable tone mapper to the mix to alleviate this issue.
     
    hopeful likes this.
  28. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    New version available ! The tone mapper will most likely be in the next release.

    Changelog (2.2) :
    • Added : A new operator, "Hue Focus", to only display the colors in a given hue range and show the rest as black & white. Works great when used before an "Exposure" operator to give a sort of Sin City look, where only a few colors are visible and the rest is high-contrast duotone.
    • Added : 3 new filters to the "Vintage" effect : Juno, Lark, Reyes.
    • Added : Enter / Exit transition time for volumes.
    • Fixed : Better compatibility with Unity 5.1.
    Very quick demo of the Hue Focus operator (great to isolate a single hue, red in this case) :

     
    hopeful likes this.
  29. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    Hotfix !

    Changelog (2.2.1) :
    • Fixed : Compilation issue when upgrading to Unity 5.1 from an earlier Unity version (UnityEditor API change).
     
  30. Lumen-Digital

    Lumen-Digital

    Joined:
    Aug 3, 2012
    Posts:
    16
    You are a scholar and a gentleman!
    Ill let you know how I get on.:)
     
  31. backwheelbates

    backwheelbates

    Joined:
    Jan 14, 2014
    Posts:
    231
    This looks fantastic!

    Just curious, how is performance on older devices like the iphone 4s?

    Thanks!!
     
  32. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    I'm not sure to be honest. It runs great on last & new gen devices and it runs fine on an iPad 2, but unfortunately I don't have access to older hardware to test on. I'd say get it, test it, and if it doesn't run as good as you'd like drop me an email and we'll figure something out :)
     
  33. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    4S = iPad2 roughly. Sort of. 4S is actually newer though, but really only in launch dates. It's a few months younger.
     
  34. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    Yeah I just noticed both are based on the A5 (Cortex A9) chip. The 4S is underclocked though (800Mhz vs 1Ghz), but the screen res is slightly smaller.
     
  35. backwheelbates

    backwheelbates

    Joined:
    Jan 14, 2014
    Posts:
    231
    Thanks for the info guys.

    I'll take the plunge and give it a try:)
     
  36. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Hiya,

    For me the real purpose of using Chromatica is the wonderful way you author the LUTs, the shader is secondary, so I was wondering for what reason you went with a really big LUT as opposed to Unity's or amplify's standard lut (amplify is same as unity, just flipped).

    And if you were open to exporting standard Unity style LUTs from the package? Is there a benefit to such big custom LUTs ?
     
  37. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    I'm currently putting the final touches to Colorful 4 and SSAO Pro 1.6 and I'll focus on Chromatica next (very soon). Next update will add support for the standard horizontal strip LUT (same as Unity's) instead of the square one. Initially I went with this one for the extra precision and the fact that it can run everywhere but in retrospect this probably wasn't the best move, I agree.

    Other features include more color operators (one of them I really, really like) and a simple, flexible tonemapper as we discussed previously. Also, massive performance improvements on SM3.0 compatible hardware (not that it was slow but hey, more speed is always welcomed).
     
    hippocoder and hopeful like this.
  38. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Indeed! great news, thanks :)
     
  39. AcidArrow

    AcidArrow

    Joined:
    May 20, 2010
    Posts:
    11,631
    @hippocoder out of curiosity, why would you want it to use a standard LUT (since the one it uses now does have a few precision advantages).

    I'm guessing it's to use the resulting LUT with a different plugin (or... *gasp* the default Unity filter?), but which one? (is it a potential Scion update that supports LUT?)
     
  40. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    It's for scion and all future things. Having it support the basic Unity lut means Chromatica's output is useful far beyond it's own shaders. Scion does have support for reading Chromatica's output but we can't expect that from all assets.

    When I tried Chromatica, I was in love. The shader didn't matter, but the controls - boy oh boy - were a complete revelation. The author has created a better way to do colour grading than any of this photoshop back and forth nonsense. It's on par with the best editing systems out there - and you can tweak as your game runs. That's brilliant. Chromatica is essential and has hit my top 10 list of all time best assets for Unity.

    The extra precision offers no real-world perceptual change btw, which is why nobody, not AAA, not UE4, not Unity, bothers with it.
     
    hopeful likes this.
  41. AcidArrow

    AcidArrow

    Joined:
    May 20, 2010
    Posts:
    11,631
    Cheers hippo, thanks for the explanation.

    I had actually at some point started doing a "compose lut into screenshot" and then a "get lut back from the screenshot" script, so I could *somewhat* easily create luts, but when you can get something like Chromatica for 40$ it seems like wasted effort (and it was a crappy workflow anyway).

    Hopefully I'll be able to buy stuff from the asset store again soon (Greece, capital controls...).
     
  42. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Sorry to be a bother but I can't seem to relocate Chromatica Studio or SSAO Pro - I have organised all my assets into folders which do not recompile and to keep the main project really organised. Chromatica and SSAO Pro both resist my attempts to do so with:

    Instance of ChromaticaEditor couldn't be created. The script class needs to derive from ScriptableObject and be placed in the Assets/Editor folder.

    Any advice welcome!
     
  43. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    Hmm you should be able to move the folders just fine, that's what I'm doing in my projects (putting them all in a /Ext/ folder). A few pointers :
    • Make sure you're not moving them into the /Standard Assets/ or /Plugins/ folders as it will fail with editor scripts.
    • Use the latest versions from the Asset Store (1.5.1 for SSAO Pro, 2.2.1 for Chromatica).
    • Maybe try and restart the editor ?
    That's a strange error, because ChromaticaEditor does extend UnityEditor.Editor (which inherits from ScriptableObject) like any other editor classes...

    I'm guessing the error is the same with SSAO Pro ("Instance of SSAOProEditor couldn't be created [...]") ? What Unity version are you running ?
     
  44. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Hiya, will download latest today. Is /Ext/ a folder which precompiles? That's the main reason for doing it really. I just wanted to reduce compile times as much as possible. But I doubt your assets contribute too badly to compile times so it's OK :)

    Candlelight Interactive (Ragdoll studio) makes heavy use of editor scripts yet functions OK in Plugins (it's the default install location) so that one is odd.

    Unity Version 5.1 latest (and some betas).

    Thanks for tips :)
     
  45. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    Nope, just a dummy folder where I put all the external assets I make use of to keep the rest of my project clean ("Ext" for "External", some people use "Vendor" or "Third Party").

    One other reason it could fail is if there's a script error somewhere else. In my experience if you try to import or move/recompile a script while there are errors in the project it will fail most of the time... But other than that, it should work OK (just tried in empty projects in Unity 4.5, 4.6, 5.0.1 and 5.1.2 using randomly named subfolders), so to be honest I'm not sure why you're getting editor errors :/

    This may sounds stupid, but you could also try right-clicking /Chromatica/Scripts/Editor/ChromaticaEditor.cs -> Reimport.
     
  46. Chman

    Chman

    Unity Technologies

    Joined:
    Feb 6, 2010
    Posts:
    721
    Version 2.3 is available !

    I recommend you only upgrade to this version if you really need the new features or when starting a new project. See the changelog :)

    Changelog (2.3) :
    • Modified: New LUT format, massive performance boost (especially on mobile platforms). Please note that the old LUT format isn't compatible anymore so you'll have to convert them using the bundled tool or by simply re-baking them. See the Upgrade Guide.
    • Added: Per request, Tonemapping (optional) ! The algorithm used is the optimized formula by Jim Hejl and Richard Burgess-Dawson. It's very fast and gives good results in scenes that really make use of HDR.
    • Added: A new operator, "S-Curve Contrast".
    • Fixed: Flipped mask when MSAA is enabled on DirectX.
    • Fixed: Compilation error on PS4.
    • Fixed: Help button in the Chromatica window not working.
    • Misc: Brand new, faster and more complete documentation, as well as a dedicated website !
     
  47. shmomo

    shmomo

    Joined:
    Oct 11, 2011
    Posts:
    127
    Will the LUT work on both cameras if I have two cameras in scene? (they use culling layers). Unity image effects does not work.
     
  48. snlehton

    snlehton

    Joined:
    Jun 11, 2010
    Posts:
    99
    Hi,

    the plugin works great on editor, but I'm unable to make builds for Standalone and iOS.

    I'm running on Unity 4.6.8p4

    On iOS, the import phase of the build crashes on this line:

    Code (CSharp):
    1. CS_StartupWindow.Init()
    2. {
    3. TextAsset textAsset = LoadAssetAt<TextAsset>(pathChangelog);
    4. ...
    5. }
    Probably because it's trying to show the about dialog while making a build in command line. Not good! Was able to fix this by commenting out the whole Chromatica_StartupWindowProcessor.

    Next, the post process effect was completely pink on iOS.

    I made a standalone build to test this, and it showed pink too (DX11 and DX9). There was an error in the log:

    WARNING: Shader Unsupported: 'Hidden/Chroma/LUT' - Setting to default shader.
    I have no idea how to fix this. Is this the reason the iOS version is giving pink too? Haven't had time to check out the real logs on iOS as I'm doing builds from the Unity Cloud.

    Otherwise the plugin seems really promising. Already have few UX improvements in my mind ;)

    Cheers,
    Sampsa
     
  49. snlehton

    snlehton

    Joined:
    Jun 11, 2010
    Posts:
    99
    I also tested this on 4.6.9p3. Same thing, a pink screen. Therefore it seems that this plugin does not support Unity 4 anymore.

    Any ideas?

    PS. The project I'm working on needs to be converted to Unity 5 sooner or later, so this might not be relevant. I will report back once I have a change to test it.
     
  50. snlehton

    snlehton

    Joined:
    Jun 11, 2010
    Posts:
    99
    I tried Amplify Color, but it suffered from the same issue. Instead of pink screen it just didn't do anything. Same unsupported shader stuff in the log.

    I then started to investigate Chromatica and after some trial-and-error I found out that this line was the culprit:

    Code (CSharp):
    1. #pragma multi_compile __ CHROMA_TONEMAPPING
    Commeting it out fixed the issue. The game run on both standalone (DX9) and iOS.

    Why this is happening -- no idea. But this works for me.

    Cheers,
    Sampsa