‘Spice Up’ is a large selection of effects to give juice to your FPS / VR games. It consists of the following effects:
All ‘Spice Up’ effects are developed for ‘Universal Render Pipeline’ (or URP), which means they will not work with Built-In, or HDRP.
You will need to have URP version 12.1.15 or higher installed. If you don’t know how to do it, I recommend you to follow this official tutorial.
Once installed, you have to add the effect you want to use from ‘Spice Up’ as a ‘Render Feature’. This official tutorial tells how to do it.
Remember that the camera you are using must have the ‘Post Processing’ option enabled.
To increase compatibility with VR devices, I recommend that you select ‘Stereo Rendering Mode’ in ‘Multi Pass’ mode:
Once you have added the effect in the Editor, you can also handle ‘Spice Up’ effects by code.
First you must add the corresponding namespace. They are all of the style ‘FronkonGames.SpiceUp.XXXX’, where XXXX is the name of the effect. For example, if the effect you want to use is ‘Damage’ the code would be:
using FronkonGames.SpiceUp.Damage;
To modify any of the effect parameters, you must first request its settings. In the following example we change the intensity of the effect by half.
Damage.Settings settings = Damage.GetSettings();
settings.intensity = 0.5f;
If you are using an effect other than ‘Damage’ just change it to its name. Check the source code comments for more information.
‘Damage’ is a visual indicator of the damage suffered by the player. Once installed, when you select your ‘Universal Renderer Data’, you will see something like this:
With ‘Intensity’ (1) you can control the intensity of the effect. If it is 0, the effect will not be active.
The damage must be normalized, or in other words between 0 and 1 (inclusive). Being 0 a perfectly healthy player and 1 a perfectly dead one. You can adjust its value with ‘Damage’ (1), although most commonly you will modify it via code.
Let’s say that ‘DamageMax’ is a constant that indicates the maximum amount of damage the player can receive and ‘damage’ is the variable with the damage received:
Damage.GetSettings().damage = damage / DamageMax;
It can also be calculated from health:
Damage.GetSettings().damage = 1.0f - (health / HealthMax);
Visually the damage is represented by three effects: Liquid, Veins and Drops. You can configure how much they affect the final result using their sliders.
To indicate impacts, and the direction they come from, you can use ‘Impact strength’ (3). These impacts will be displayed on the edges of the screen and will indicate the direction from which the impact is coming, the top part being a frontal impact, and the bottom part a rear impact.
The time it stays on screen can be configured with: ‘Rise time’, ‘Wait time’ and ‘Fall time’. You can also adjust its thickness and the smoothness of the edges.
To get an idea of the effect, you can do it with ‘Simulate impact’ (13).
And how do I do it in the game? Very simple, ‘Damage’ takes care of everything. First it sets the target of the hits. The most typical case would be on the player. If ‘player’ is a GameObject that represents the player, it would be like this:
Damage.Target = player.transform;
Now you will only have to call the ‘Impact’ function every time the unfortunate player receives an impact. If you do not specify the origin of the hit, a flash effect (general damage) will be created. If you specify who caused the damage, an impact with direction will be created.
// Flash effect.
Damage.Impact(0.25f);
// Impact with direction.
Damage.Impact(0.5f, zombie.transform);
You can change the color in ‘Color gradient’. From the gradient used (4), through the color and ending with how the effect blends with the screen.
To modify the definition of the edges, change ‘Definition’ (5). The final brightness of the effect can be set with ‘Brightness’ (6).
To simulate a more organic substance, a Vonoroi type noise can be applied to distort the effect. You can adjust its parameters in ‘Noise’ (7).
With ‘Distortion’ (9) you can modify how much the effect distorts the screen.
In some games you may have seen how they apply a black and white effect as the player loses life. You can recreate it with ‘Desaturation’ (9). This parameter is not modified according to ‘Damage’ (2), so you will have to modify it manually.
To simulate some volume to the liquid, a slight shimmer effect is applied to the top edges. Modify this effect in ‘Edge’ (10).
Another effect you may have seen in other games, is how the player blinks, or loses peripheral vision. This effect can be adjusted with ‘Blink’ (11). Like ‘Desaturation’ (9), this effect must be adjusted manually.
Do values close to 1 of ‘Damage’ (2) make the effect too intense? Adjust the range with ‘Remap damage’ (12). By lowering the upper range somewhat, you will make very high values lower.
With ‘Drunk’ you can let players know that they are drinking too much.
Once installed, when you select your ‘Universal Renderer Data’, you will see something like this:
With ‘Intensity’ (1) you can control the intensity of the effect. If it is 0, the effect will not be active.
With ‘Drunkenness’ (2) you control the overall intensity of the effect. The higher the value, the more intense the result. You can also adjust the speed of the oscillations and their amplitude.
‘Swinging’ (3) causes the camera to swing. In addition to the intensity, you can control its speed.
With ‘Distortion’ you can modify how the image is distorted, you can also control the speed and frequency of the distortion. You can also add to the image distortion, a displacement of the color channels (RGB) with ‘Aberration’ (5).
‘Blink’ (6) adds to the effect a blinking of the eyes. You can also control with ‘Eye’ (7) the point of the vision, being (0.5, 0.5) the center of the screen.
Do values close to 1 of ‘Drunkenness’ (2) make the effect too intense? Adjust the range with ‘Remap damage’ (8). By lowering the upper range somewhat, you will make very high values lower.
Too many potions? With ‘Stoned’ you can simulate the effect of drinking too many.
Once installed, when you select your ‘Universal Renderer Data’, you will see something like this:
With ‘Intensity’ (1) you can control the intensity of the effect. If it is 0, the effect will not be active.
With ‘Stoned’ (2) you control the overall intensity of the effect. The higher the value, the more intense the result.
The first thing you can adjust is the speed of the effect with ‘Speed’ (3). You can add some volume with ‘Definition’ (4).
With ‘Displacement’ (5) you can adjust the screen deformation. You can increase the granularity with ‘Noise’ (6).
With ‘Hue’ (7) you can shift the final color of the effect (is not the same control as the one in ‘Color’).
Adjust the strength of each color channel with ‘Channel’ (8).
Internally, the effect uses the YIQ color space (used by the analog NTSC TV). In ‘Luma info’ you can adjust its parameters. See more information about the YIQ color space here.
Lines (10) transforms the clouds of the effect into lines of intense color.
With ‘Tint’ (11) you can color the final result with the color of your choice. In ‘Blend’ (12) you can select from a large list of color mixing functions. The selected function will be the one that blends the effect with the screen.
Experience a realistic and immersive freezing effect. Once installed, when you select your ‘Universal Renderer Data’, you will see something like this:
With ‘Intensity’ (1) you can control the intensity of the effect. If it is 0, the effect will not be active.
With ‘Frozen’ (2) you control the overall intensity of the effect. The higher the value, the more intense the result.
The effect is created with two layers, you can configure them in ‘Blend Layers’ (3). The first thing is how they are blended, if you have the slider set to 0 or 1, only one layer will be used (’Layer 0’ or ‘Layer 1’ respectively). If you leave it in the middle, both layers will be blended equally. You can also choose how the color of each layer is blended with the screen.
To increase detail, or decrease smoothing, use ‘Sharpness’ (4). You can also increase the granularity effect with ‘Bump’ (5) and ‘Volume’ (6).
Modify the distortion that the effect produces on the screen with ‘Distortion’ (7).
With ‘Vision tint’ (8) you can modify the color of the effect.
Anime speed lines. Once installed, when you select your ‘Universal Renderer Data’, you will see something like this:
With ‘Intensity’ (1) you can control the intensity of the effect. If it is 0, the effect will not be active.
With ‘Strength’ (2) you control the intensity of its parameters.
The radius, or amplitude, of the effect can be modified with ‘Radius’ (3), as well as the length of the arrows with ‘Length’ (4).
The speed with which they move on the screen can be adjusted with ‘Speed’ (5). You can also change how many arrows are displayed on the screen with ‘Frequency’ (6), as well as the softness of the edges with ‘Softness’ (7).
With ‘Noise’ (8) you can modify how different some arrows are from others.
The color of the effect can be adjusted in ‘Color blend’ (9). From the type of operation used to blend with the background of the screen, to brightness, colors, etc.
If you check ‘Aspect ratio’ (10), the effect will not conform to the screen and will form a circle inside the screen instead of conforming to the edges of the screen.
Blurred vision based on previous frames. Once installed, when you select your ‘Universal Renderer Data’, you will see something like this:
With ‘Intensity’ (1) you can control the intensity of the effect. If it is 0, the effect will not be active.
With ‘Strength’ (2) you control the intensity of its parameters.
The number of frames the effect will use can be set in ‘Frames’ (3). The more frames, the more blurriness you will get. You can also set in ‘Step’ (4) if you want to skip frames.
By default the frames used will have the same resolution as the screen. You can change this with ‘Resolution’ (5) to make them smaller. This not only improves the performance of the effect, but also makes the image more blurred.
Dual vision effect with steroids. Once installed, when you select your ‘Universal Renderer Data’, you will see something like this:
With ‘Intensity’ (1) you can control the intensity of the effect. If it is 0, the effect will not be active.
With ‘Strength’ (2) you control the intensity of its parameters. Adjust the intensity of the effect on each axis with ‘X’ and ‘Y’. You can also control the speed of the effect with ‘Speed’ (3), and its axes.
You can also add a color channel phase effect (4) and adjust its intensity on each color channel.
With ‘Blend strength’ (5) you can configure how the effect mixes with the screen and which operation is used to mix them.
Simulates the raindrops on the screen. Once installed, when you select your ‘Universal Renderer Data’, you will see something like this:
With ‘Intensity’ (1) you can control the intensity of the effect. If it is 0, the effect will not be active.
In the ‘Droplets’ (2) section you can configure how the drops are: the amount, the size, their speed, their angle and finally how much they distort the background color.
In the next section, ‘Color’ (3) you can change its color. If you activate ‘Tint trails’, the drops will also have a trail.
With ‘Layers’ (4) you can configure the drop layers. Three layers are available. The first, ‘Static’, are droplets that do not move on the screen. The next two correspond to drops that do scroll on the screen.
The vision of strange creatures. Once installed, when you select your ‘Universal Renderer Data’, you will see something like this:
With ‘Intensity’ (1) you can control the intensity of the effect. If it is 0, the effect will not be active.
‘Quality’ (2) can select different quality levels of the noise used to generate the effect. A ‘Custom’ mode is also included in which you can manually adjust the octaves of the noise.
‘Strength’ (3) modulates the intensity of the rest of the parameters.
By default the focus of the vision is positioned in the center of the screen (at 0, 0), if you want to modify it, you can use ‘Focus’ (3). You can also modify its aperture (5) and zoom (6).
With ‘Speed’ (7) you can change the speed of the effect and by activating ‘Aspect ratio’ (8) it will be adjusted to the resolution of the monitor.
You can also modify the color of the central viewing area, ‘Inner color’ (9), and the outer area, ‘Outer color’ (10).
Cameras, Monitors and Robots. Once installed, when you select your ‘Universal Renderer Data’, you will see something like this:
With ‘Intensity’ (1) you can control the intensity of the effect. If it is 0, the effect will not be active. ‘Strength’ (2) modulates the intensity of the rest of the parameters.
With ‘Lines’ (3) you can adjust the number of lines, their color and how the line blends with the background color. In the spaces between lines you can also modify its color, ‘Background’ (4) and the function used to mix its color.
‘Scanline’ (5) is one line in a raster scanning pattern, such as a line of video on a cathode ray tube (CRT). Band noise’ (6) is another similar effect that can also be found on older TV sets.
The frame jumps, can be adjusted with ‘Frame noise’ (7), the higher the values, the more the frame jumps. You can also add more noise to the signal with ‘Signal noise’ (8), ‘Interlace noise’ (9) and ‘Bad signal’ (10).
You can simulate the typical curvature of old monitors with ‘Barrel’ (11). The higher your values, the more curved the image will appear. You can also change the color and size.
To add a shadow effect on the edges you can use ‘Vignette’ (12).
The last screen. Once installed, when you select your ‘Universal Renderer Data’, you will see something like this:
With ‘Intensity’ (1) you can control the intensity of the effect. If it is 0, the effect will not be active.
To move the effect, use ‘Progress’ (2). If its value is 0, you will not see any effect. As it reaches 1, it will scroll across the screen.
To adjust the color, use ‘Blood’ (3). You can also change the formula used to blend the effect with the background (4) and the glow effect on the edges (5). To change the shape of the border use ‘Wave seed’ (6).
If you want to modify the color of the areas where the effect does not act, use ‘Not blood’ (7).
When the level of luminance drops below a certain threshold, the stimuli from rod cells supersedes that of cone cells. Due to the rod cells’ minimal sensitivity to red light and heightened sensitivity to blue-green light, it leads to the perception of blue images during nighttime. This asset attempts to correct colour by simulating the above effect.
With ‘Purkinje’ you can create night scenes that really feel nocturnal, not just darker.
Once installed, when you select your ‘Universal Renderer Data’, you will see something like this:
With ‘Intensity’ (1) you can control the intensity of the effect. If it is 0, the effect will not be active.
You can modify the hue with ‘Tint’ (2) and adjust the darkness of the image with ‘Darkness’ (3).
Real-time glass fractures. Once installed, when you select your ‘Universal Renderer Data’, you will see something like this:
With ‘Intensity’ (1) you can control the intensity of the effect. If it is 0, the effect will not be active.
Adjust the fracture center with ‘Impact’ (2), the number of branches with ‘Splits’ (3) and its thickness with ‘Width’ (4).
The operation used to blend the color of the fracture with the background can be modified with ‘Blend’ (5), as well as its tint with ‘Color’ (6). Modify ‘Threashold’ (7) to limit the zones where color operations are applied.
Add distortion effects to the background image and its colors with ‘Distortion’ (8) and ‘Aberration’ (9).
With ‘Seed’ (10) you can change the random seed used to generate the fractures. The same random seed will generate the same shapes in the fractures.
Focus on one point on the screen. Once installed, when you select your ‘Universal Renderer Data’, you will see something like this:
With ‘Intensity’ (1) you can control the intensity of the effect. If it is 0, the effect will not be active.
Set the origin of the pulse with ‘Center’ (2), the coordinates (0.5, 0.5) being the center of the screen. With ‘Duration’ (3) you can set the duration of the pulse.
Each pulse is created with one frame scaling from a center. ‘Alpha’ (4) is the transparency of that frame. With ‘Scale’ (5) you control how much the frame is scaled.
You can change the color with ‘Tint’ (6) and the operation that will be used to mix the frame color with the background color (7).
To see the result in the editor, press ‘Test’ (8).
Creating a new pulse with code is very simple. As always the first thing to do is to include the namespace:
using FronkonGames.SpiceUp.Pulse;
Now, when you want to create a new pulse, simply do:
Pulse.Start();
Shakes like in an earthquake! Once installed, when you select your ‘Universal Renderer Data’, you will see something like this:
With ‘Intensity’ (1) you can control the intensity of the effect. If it is 0, the effect will not be active.
The direction of the impact can be controlled using ‘Direction’ (2), the default value (0, 1) being an impact at the top center of the screen. The duration of the effect can be adjusted with ‘Duration’ (3).
For small impacts use a small ‘Zoom’ (4) value. As you increase this value, the feeling will be of stronger jolts. Something similar happens with ‘Shake’ (5). You can also set the frequency of the shaking with ‘Frequency’. It adds an extra to the shaking sensation by adding image distortion and chromatic aberration.
To add even more chaos, if you want, ‘Noise’ (6) adds some noise to all the above values.
To check the results in the Editor, you can use the ‘Test’ button (7).
Creating a new shake with code is very simple. As always the first thing to do is to include the namespace:
using FronkonGames.SpiceUp.Shake;
Now, when you want to create a new shake, simply do:
Shake.Start();
The most versatile solution for night vision. Once installed, when you select your ‘Universal Renderer Data’, you will see something like this:
With ‘Intensity’ (1) you can control the intensity of the effect. If it is 0, the effect will not be active.
You can decrease the resolution with ‘Resolution’ (2). Doing this will make the effect faster and the image blurred. You can also do this by modifying ‘Blur’ (3) and add a ‘Glow’ effect (4).
You can select a wide variety of color gradients. First set the gradient strength (5) and then select one of those shown in ‘Tint’. You can use your own gradient if you select ‘Custom’.
Gradients work by calculating the brightness of the original pixel and replacing it with the corresponding color in the gradient. If the scale is too dark (or too bright), you can modify the brightness range in ‘Luminance’.
‘Exposure’ (6), ‘Brightness’ (7), ‘Contrast’ (9) and ‘Saturation’ (10) change the original color, do not confuse them with the controls in the ‘Color’ section that modify the final color.
With ‘RGB offset’ (10) you can shift the black and white range.
You can add an effect that defines the edges with ‘Edge’ (11), add noises (12 and 14). With ‘Distortion’ (13) you can curve the image and add chromatic aberration.
‘UI’ (16) adds some interface elements such as a grid of points, crosses, etc.
With ‘Vignette’ (17) you can select a shading on the edges of the screen, binoculars or monoculars.
To create a convincing night vision effect, a light is usually added in the direction of the camera. This is not done by the effect and you can do it on your own, but I have added the ‘Night Vision Manager’ component to make this task easier for you.
Add it to the camera you are going to use. Set the on (1) and off (2) time of the effect.
In ‘Light intensity’ (3) you can configure the light that will be added to the camera.
If you want the other lights in the scene to be automatically turned off when the effect is activated, activate ‘Light management’. You can add to the ‘Light to ignore’ list the lights you want to be ignored.
To turn the effect on and off using ‘Night Vision Manager’ just do this:
// Turn on.
nightVisionManager.On = true;
// Turn off.
nightVisionManager.On = false;
Body camera (BWC) or wearable camera. Once installed, when you select your ‘Universal Renderer Data’, you will see something like this:
With ‘Intensity’ (1) you can control the intensity of the effect. If it is 0, the effect will not be active.
With ‘Fish Eye’ (2) you can control the deformation typical of cameras with small lenses or a very large focus. Softness**’ and ‘Abberation**’ are effects that define the edge of the camera.
Add a ‘Blur’ effect (3), setting its quality with ‘Samples’. Remember that the higher the number of samples, the higher the quality of the effect, but the worse the performance.
You can simulate a reflection of a light with ‘Flare’ (4). You can manually change its ‘Angle’, or you can synchronize it with the Y axis of your character’s rotation:
settings.flareAngle = this.transform.eulerAngles.y;
With ‘Chroma band’ (5) and ‘Luma band’ (6) you can simulate the defects that some poor quality cameras have. Add some ‘Noise’ (8) for extra reality.
By default dark colors tend to a blue, change it in ‘Shadow tint’ (7) and adjust its White / Black balance.
If you look at the demo, and the video, the center of the effect seems to move with some inertia depending on the rotation of the player. This can be easily achieved by adding the ‘Body Cam Roll’ component to the camera.
In this simple component you can adjust the ‘Strength’ (1) and ‘Speed’ (2) of the inertia.
Note that this component is designed for objects that move in the XZ plane, and therefore rotate on the Y axis (as in the vast majority of FPS). If in your game the displacement planes are different, you will have to modify the code.
Lens flare effect, intended for scenes with high brightness contrast (e.g. night scenes with lights). Once installed, when you select your ‘Universal Renderer Data’, you will see something like this:
With ‘Intensity’ (1) you can control the intensity of the effect. If it is 0, the effect will not be active.
The number of ‘Iterations’ (2) will define the quality of the effect. Note that the higher the number, the better the effect but the worse the performance. You can achieve a good balance by adjusting ‘Scale’ (3) to reduce the number of iterations.
With ‘Threshold’ (4) you can filter the brightness threshold used to calculate the flares.
Add a cinematic touch with ‘ACES’ (5), a tonemapper widely used in the film industry, ‘Grain’ (6) and ‘Bands’ (8).
You can change the operation used to blend the color of the flares with the original image with ‘Blend’ (7), as well as their color and gamma.
All effects have a panel, ‘Color’, in which you can modify the final color of the effect.
They also have an ‘Advanced’ panel with these options:
Activate ‘Affect the Scene View?’ (1) if you want the effect to be applied also in the ‘Scene’ window of the Editor. With ‘Filter mode’ (2) you can change the type of filter used.
Although it is not recommended to change it, with ‘RenderPass event’ (3) you can modify at which point in the render pipeline the effect is applied. Finally, activate ‘Enable profiling’ (4) to show in the ‘Profiling’ window the metrics of the effect.
In order for the UI not to be affected by the effect, you should set the ‘Render Mode’ of your canvas from ‘Screen Space - Overlay’ to ‘Screen Space - Camera’ and dragging your camera with to ‘Render Camera’.
Note that when you make this change, the coordinates of your UI will be in camera space, so you will have to change them.
Bloom’s URP Unity effect is not compatible with postprocessing effects based on ScriptableRendererFeature (like this one).
You will have to add your own one based on ScriptableRendererFeature or you can use this one at no cost ;)
Yes! Any effect can easily be used on a material. Just follow these steps:
Do you have any problem or any suggestions? Send me an email to fronkongames@gmail.com and I’ll be happy to help you.
Remember that if you want to inform me of an error, it would help me if you sent to me the log file.
If you are happy with this asset, consider write a review in the store
❤️ thanks! ❤️
Just write an email to fronkongames@gmail.com