Awesome
VolFx
VolFx is selective post-processing for Unity Urp<br> designed for visual effects creation ✨
Tested with 2022.2, 2023.2 Web (2021 not supported)
- this is a non-commercial version that can be used for familiarisation, game jams or to determine whether you need it in your project, for commercial use consider purchasing the extended version on the AssetStore
- visual effect can be controlled via timeline using ScreenFx
- can use effects from PostArt project as render passes
Features
- Custom passes - expandable, has minimal set of custom effects and generic blit feature
- Selective post processing - can be applied to scene objects by layer mask
- Downlodable art effects - all effects from PostArt projects can be added as passes to VolFx without cluttering RenderFeature list
- Volume control - all build in effects controlled via volume profile and linked to a layer mask, so scene processing can be easily made dynamic
- Buffer system - can render object to a buffer texture to provide additional textures(like light maps, pattern animations, height etc) then process and use them later through a shader
- Configurable pipeline - each effect can be reordered and configured depending on the application
----------------------------------------- - - - - - - - <br>
Selective post processing
Visual novel example, post processing applyed to scene objects by LayerMask to blur the background and fade character sprite<br> Thus you can make the appearance effect or apply graphical changes separately to scene objects <br>
<br>
Work with 3D
Selective application to a 3D object with depth buffer support
Custom texture processing
There is an example of light texture post processing generated by GiLight2D<br> Volume control allows to tweack texture at runtime to achive desiared light visualization<br>
<br>
Extended AssetStore store version
Additional custom passets and option to support the project
Fx creation via timeline using ScreenFx
Timeline clip editing using post processing effects
Editor workflow
Selective application and customizable effects sequence<br>
<br>
Install and usage
Install via Unity PackageManager <br>
https://github.com/NullTale/VolFx.git
Add VolFxProc
feature to UrpRenderer add post-process passes to it, control via volume profile <br>
<br>
<sup>* optionally configure the render event, source with output and volume mask</sup>
If use LayerMask
as a source you need to exclude objects redering by filtering option in UrpRenderer asset to prevent twice rendering <br>(objects will be rendered by VolFx)
VolFxBuffers
feature can be used to collect specific object to a texture to provide some texture source<br>
that can be post processed at runtime and used later throug a shader as a texture or screen space mask for selective application
Example of global texture accessed via shader graph (name match, no exposed checkbox)
Build in Effects
VolFx was built to be highly configurable and most of the effects are powerful in their combination <br>
There can be a number of custom Blit
passes controlled via material for easy effect implementation.
Extended Color Adjustments
With the curve you can adjust the range on which part of the image to apply Color Adjustement <br> Other option are classic exept the alpha channel that used to adjust alpha chennel to blend images properly <br>
Bloom
Threshold controlled by curve, color made with gradient(support blending) <br> Also has some advanved options in effect pass like flickering, samples count and scuttering curve. <br> Basically extended remplementation of moust popular effect to process the images <br>
Blur
Blur with radial and distortion options
Mask
Post processing mask from scene objects with alpha support
Custom Effect
There is an example of simple grayscale effect that can be found in Project Samples
All effect must be inherated from VolFxProc.Pass
and then added to a VolFxRenderFeature
<br>
Material creates automatically using ShaderName
attribute, VolumeSettings
implemented using Unity API
[ShaderName("Hidden/VolFx/Grayscale")] // shader name for pass material
public class GrayscalePass : VolFxProc.Pass
{
// =======================================================================
public override bool Validate(Material mat)
{
// use stack from feature settings, feature use custom VolumeStack with its own LayerMask
var settings = Stack.GetComponent<GrayscaleVol>();
// return false if we don't want to execute pass, standart check
if (settings.IsActive() == false)
return false;
// setup material before drawing
mat.SetFloat("_Weight", settings.m_Weight.value);
return true;
}
}
Grayscale shader
Shader "Hidden/VolFx/Grayscale" // name of the shader for ShaderNameAttribute
...
half luma(half3 rgb)
{
return dot(rgb, half3(0.299, 0.587, 0.114));
}
frag_in vert(const vert_in v)
{
frag_in o;
o.vertex = v.vertex;
o.uv = v.uv;
return o;
}
half4 frag(const frag_in i) : SV_Target
{
half4 main = tex2D(_MainTex, i.uv);
half4 col = luma(main.rgb);
return half4(lerp(main.rgb, luma(col.rgb), _Weight), main.a);
}
Feature work as a wrapper but can be extended by override low level methods, to gain access to a CommandBuffer and other rendering API stuff<br>
/// called to perform rendering
public virtual void Invoke(CommandBuffer cmd, RTHandle source, RTHandle dest,
ScriptableRenderContext context, ref RenderingData renderingData)
{
Utils.Blit(cmd, source, dest, _material, 0, Invert);
}
PostArt
More effects can be downloaded separately for use in combination<br>
If VolFx
is installed they will work as part of the framework and will not appear in the RenderFeature list
Effects applied sequentially to a 3D object
<br>