You are on page 1of 7

MoodMachine User Manual

1. Setting up the image effect


Setting MoodMachine up is as easy as any other image effect. Just add Component MoodMachine to a Camera and choose a Mood from the list as a global Mood. Moods are objects defining the effect or look that is applied to the image. Kind of like lookup te tures! if you"re familiar #ith the concept. $ou can also change the intensity of the effect as #ell as depth! #hich controls in #hat order the Moods are applied. % Mood #ith lo#er depth is applied before one #ith higher depth. &lobal Moods affect to the #hole scene #ithout being controlled by a script. 'n many cases! this is all you #ill need to set up the atmosphere of your game. Sometimes! though! you might rather #ant to ha(e a different look for some locations! in #hich case Mood)rigger is the best choice. 'f you need to control the acti(e Moods by yourself! for e ample to change to a desaturated look on lo# health! read the script reference at the end of this manual. *or the settings! one can set the resolution of the generated lookup te tures. +igher resolution takes longer to generate! but offers finer results. 'n most cases though! the medium resolution is fine. )he other option is to limit the ma imum number of Moods acti(e. $ou can generally lea(e it as ,! because the performance is affected only by the acti(e Moods. )o see all the acti(e Moods! check the debug info. $ou can see their count and! more importantly! the number of Moods that are clipped because they don"t fit under the Mood count limit. Check your scripts if you"re seeing an insane number there.

2. MoodTrigger
Mood)rigger is a rather simple script allo#ing you to set up -ones in the scene that trigger a Mood to fade in #hen entered and fade back out #hen left. &ame.bject Create other Mood )rigger adds a ne# one to the scene! #here you can mo(e / scale and rotate it as you please. 't needs a reference to a MoodMachine it is applied to and a trigger object! that can be any &ame.bject that is supposed to trigger the -one. 't"s the camera by default. $ou! of course! need to set #hat Mood should be applied as #ell as the target intensity and the amount of time it takes for it to fade in / out #hen triggered.

3. Creating and editing Moods


)he main po#er of MoodMachine comes from the ability to create looks directly inside the 0nity editor. So here"s ho#1 2hen you select a Mood asset! you"re presented to this screen1

%s you can see! you can add (arious &rades to the Mood! as seen in the %pplied grades #indo#. 3ach &rade type affects the image in one #ay or another! as described in the ne t chapter. )he effect is also sho#n on the (isuali-er icons. % detail of the selected grade can be seen right belo# the #indo#. 'n the toolbar there"s a toggle for enabling / disabling the grade! buttons for shifting it to the left or to the right and remo(ing it completely. $ou can also change the type of the grade by clicking on its name. 4elo# the toolbar are the controls of the grade itself. 3(ery change you make is immediately applied to both the icons and the screen! so you can see the results of your actions in real time.

4. Grades
Contrast / Brightness Simply adjusts the contrast and brightness of the image. )he controls are non5linear to pre(ent clipping as much as possible and also to gi(e more pleasing results. 'f you"re looking for a more traditional form of these controls! use the contrast and offset sliders in the 6rimaries grade. i!rance / Saturation 0sed to change ho# (ibrant and colorful the image is. 7ibrance increases the saturation of less saturated colors more than those that are already (ibrant! boosting the colors #ithout clipping them. .r the other #ay around1 8ecrease the (ibrance to desaturate the #hole image e cept (ery saturated colors! resulting in an interesting! serious look.

Tint "Master#

Meet the color #heel1 Similar to just about e(ery color grading soft#are! the more you mo(e the selector a#ay from the center of the #heel! the more it tints the image #ith the color in the same direction. )he #heel lea(es the brightness untouched! so adjust it #ith the slider belo# in case you need to. 0se the reset button to set it back to default.

Tint "3$%a&# Similar to )int 9Master:! it allo#s you to tint the image using color #heels! but #ith a t#ist1 $ou can indi(idually tint the shado#s! midtones and highlights of the image. )his makes it a (ery po#erful tool that is generally the primary #ay of gi(ing the image a certain look. % common techni;ue to get this right is the push5pull method1 $ou first push a color into some part of the image and then balance it out by pulling complementary 9opposite on the color #heel: colors in the other parts! so that the shot looks more or less color natural. $ou can do the same #ith the (alue sliders as #ell. +ere"s a good e ample1 the 4lockbuster look. 't has blue / (iolet shado#s #ith teal midtones. <ea(ing highlights as they are #ould lead to an impression that you"re looking through a bluish filter. So #e balance the image back to more natural colors by pulling the highlights to orange = the complementary color to he blues. <ooks much better! but still lea(es in the cool shado#s #e #ant. Similarly! one can also increase the contrast in shado#s by pushing the brightness of the shado#s do#n! making them e(en darker! #hile pulling midtones and / or highlights back up.

'rimaries )his is a collection of primary color adjustments often used for initial color correction. Lift mo(es the black le(el! effecti(ely making the shado#s darker / brighter. Gamma adjusts the gamma of the image! affecting mostly the midtones. Gain mo(es the #hite le(el! making the highlights lighter or darker. Offset changes the brightness of the #hole image uniformly. Contrast adjusts the contrast! this time in a linear #ay. Pivot mo(es the midpoint! or gray le(el! of the contrast control. Saturation makes the colors either more (i(id or desaturated. Hue shift shifts the #hole color spectrum.

Cur(es 6robably the most po#erful of the bunch and common in many image editors! it allo#s you to change the response cur(e of each channel 9Red! Green and Blue tabs: or remap the brightness (alues 9Luma tab:! the saturation le(els 9Sat tab: and e(en shift the hue 9Hue tab:. )he cur(e controls are intuiti(e.. left click to add or mo(e a key! right click to remo(e it.

)GB Mi*er %llo#s you to mi and match the red! green and blue channels of the image.

)eplace Color Changes all colors of the image to a single flat color. )he alpha (alue determines the transparency. 't"s set to -ero by default! so remember to bring it up to make it #ork. 4y itself! it"s not of much use! but it can become a po#erful tool #hen combined #ith the >ualifier to limit it"s effect to only certain parts of the image.

+oo,up Te*ture ?eads an e ternal lookup te ture. )he format should follo# the 0nity standard1 )he dimension is red! y is green and - blue. )he third dimension needs to be laid out hori-ontally. Since some <0)s ha(e the green channel in(erted! there is an option to fi that as #ell.

Mood as a Grade *inally! you can also reuse an e isting Mood as a grade by itself! making the system truly modular and po#erful.

-. .ualifier
'n case you feel like you don"t ha(e enough po#er! the ;ualifier #as made for you. 't essentially narro#s do#n the effect of any grade only to certain colors of the image. 8o you #ant to desaturate e(ery color e cept red@ .r perhaps limit your agressi(e tint to just gray! desaturated colors! so that the (i(id parts stay unaffected@ .r simply make all that green! lo(ely grass turn bloody red@ $ou can do that #ith ;ualifiers.

)he SMH tab is a fast #ay to limit the grade to just the shado#s! midtones or highlights of the image and also change the intensity as a #hole. $ou can e(en go the other #ay around and increase the strength. +o#e(er! it can produce some artifacts! so do that #ith care. )he HSL tab pro(ides you control of the affected colors #ith a specific hue / saturation / brightness combination! accompanied by fancy histograms to treat your tortured soul. )he RGB tab filters the effect to specific le(els of the red! green and blue channel. 't does not ha(e many uses! but it"s there...

/. The 0istogram %indo1

%ccessible by 2indo# +istogram! this little tool tells you all you need to kno# about the image. )he #ide bars seemingly out of the bounds on the left and right side depict the amount of clipped blacks and #hites respecti(ely. )he colored bars on the bottom sho# the minimum and ma imum (alues for that channel! #ith the #hite dash marking the median (alue 9useful for fi ing #hite balance:. 't all updates in real time! for your analy-ing pleasure. Aote that the histogram re;uires a MoodMachine image effect to be acti(e on a camera. %lso! if it"s the last image effect acti(e! the target te ture is the frame buffer! #hich cannot be sampled to compute a histogram. So the histogram is instead based on the source te ture! #ithout your Moods applied. .h! and you need 8irectB CC.

2. Behind the scenes


So ho# does it actually #ork behind the scenes@ %re the grades applied to e(ery pi el in some sort of shader@ Ao... #hen you create a Mood! a script bakes the operations you"(e made into a lookup table. )his is usually done in real time! #ith (ery little delay. 'f you need to #ork on comple Moods #ith many grades! the &0' can get a bit laggy as a result and you should decrease the lut resolution temporarily. )he <0)s are also baked on the first time you use them or call Mood.0pdate<0)9:. )his can prolong the loading times and e(en introduce spikes if you"re not careful. 't is on my todo list to make the <0) itself seriali-able. MoodMachine maintains a list of acti(e Mood'nstances! #hich are created #hen you add a Mood to the camera. )hey make adding multiple instances of the same Mood possible. 3ach one has a depth! #hich determines the order in #hich it is applied! and intensity. 3(ery time you change something! MoodMachine sorts the Mood'nstances by the depth and sends the lookup te tures to a shader. 't samples them consecuti(ely! each using the result of the pre(ious one! so that the Moods are applied on top of each other. 't"s a bit more e pensi(e than sampling them all using just the input color and blending the results together! but that"s generally not #hat you"d e pect and the transition looks! more often than not! ugly. .n the other hand! shader key#ords are used to reduce the number of computations to a minimum! depending on ho# many Moods are acti(e. 2hene(er you set the intensity of a Mood'nstance to D! it is remo(ed from the list! so e(en a huge number inacti(e Mood'nstances do not affect the performance negati(ely.

3. Script )eference
MoodMachine is! more than anything! a tool for generating color correction lookup te tures. ' can"t possibly support e(ery use case though! so you"re encouraged to #rite your o#n scripts #hen you need anything more comple than -one blending. 't can be as simple as a time based flash bang effect or as inno(ati(e as applying the lookup te ture in a particle effect shader! for e ample. $ou can e(en create and edit Moods at runtime! if you so desire. MoodMachine )he main image effect. 0se it to apply Moods to the camera! set and control global Moods and change the ;uality settings.
lutResolution1 Sets the resolution of the lookup te tures! controlling the ;uality. moodCountLimit1 Sets the ma imum number of Moods acti(e at one time. MoodInstance AddMood(Mood mood = null, float intensity = 0.0f, depth = 0)1

0sed #hen adding a Mood for the first time. ?eturns a Mood'nstance object that you should use to edit the intensity and depth of the Mood. 0se Mood)rigger code as an e ample. MoodMachine.MoodInstance %n object representing an instance of a Mood. 't controls ho# and #hen it is applied to the camera.
Mood mood1 )he reference of a Mood that is applied. $ou can change this as #ell. float intensity1 +o# strong the effect is. 0sed for smooth transitions. Default: 0 int depth1 8etermines the order in #hich Moods are applied. % Mood'nstance #ith lo#er

depth gets applied before Mood'nstances #ith higher depth. Default: 0 MoodTrigger % helper class that defines a -one in the scene that trigger a specified Mood. 't is a Mono4eha(iour! so the actual (olume can be changed through Mood)rigger.transform.
Mood mood1 )he Mood that is applied #hen the -one is triggered. float intensity1 +o# strong the effect is #hen fully faded in. Default: 1 int depth1 )he order of the Mood. Default: 0 float fadeTime1 +o# long it takes for the effect to fade in and out #hen the -one is triggered.

Default: 3
GameObject triggerObject1 )he object that triggers the effect #hen it enters the -one.

Mood % class that holds the &rades that are used to create the look and is also responsible for creating and storing the lookup te ture. 't is! ho#e(er! a Scriptable.bject! so you need to call Scriptable.bject.Create'nstanceEMoodF9: #hen instantiating it.
Textu e!" lut1 Stores the generated lookup table. G ade#ist grades1 %part from the actual list! it contains #rappers to support seriali-ation! #hich

you don"t need to touch unless you plan on preser(ing the Mood in bet#een runs 9)hen #hy #ould you build it #ith a script@:
#ist$G ade% grades.list1 $ou should modify the list of applied grades through this. UpdateLut()1 Call this after you change the list of grades.

Grade % class all grades are deri(ed from. 't holds the >ualifier and #hether or not the grade is enabled. ?efer to the source code for the actual grade names and the accepted range of their parameters. )his manual #ould be t#ice as long if ' #ere to type it out here.

You might also like