This package has been marked as deprecated, and it's suggested another
alternative is used.
You are viewing a potentially older version of this package.
View all versions.
Date uploaded | 7 months ago |
Version | 1.0.1 |
Download link | IntegrityChaos-CustomPostProcessingAPI-1.0.1.zip |
Downloads | 51547 |
Dependency string | IntegrityChaos-CustomPostProcessingAPI-1.0.1 |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2100README
CustomPostProcessingAPI
Made this tool for Diversity.
Usage:
- Create A full screen shader and apply it to a material for later use. Note:
It is VERY important to use the custom color buffer of HDRP in order to to see the original post process of Lethal Company!Instead of the Custom Color Buffer, expose a Texture2D with both name and property name to "_PlayerView" in your shader! - In your script make sure to include
CustomPostProcessingAPI
and Unity's rendering namespaces!
using UnityEngine.Rendering.HighDefinition;
using UnityEngine.Rendering;
using CustomPostProcessingAPI;
Create a new PostProcess
- Create a new
PostProcess
and give it a name and assign your previously created material. APostProcess
will define and set up both "Custom Pass Volume" and the "Full Screen Pass".
PostProcess myNewPass = new PostProcess("PassName", material);
Note: You can't have 2 PostProcess
of the same name!
Apply the new PostProcess
- Simply add the newly created
PostProcess
into theCustomPostProcessingManager
!
CustomPostProcessingManager.Instance.AddPostProcess(myNewPass);
Note: This method returns a FullScreenCustomPass
.
Enable / Disable
- If you wish to enable or disable a pass you can simply use
.EnablePass(pass);
or.DisablePass(pass);
to do so!
CustomPostProcessingManager.Instance.EnablePass(myPass);
- Or you can get a pass from its name:
FullScreenCustomPass myPass = CustomPostProcessingManager.Instance.GetPass("MyPass");
CustomPostProcessingManager.Instance.EnablePass(myPass);
Example 1:
using UnityEngine;
using UnityEngine.Rendering.HighDefinition;
using UnityEngine.Rendering;
using System.Collections;
using CustomPostProcessingAPI;
using GameNetcodeStuff;
namespace SuperAwesomeMod
{
public class AddPostProcessing : MonoBehaviour
{
private FullScreenCustomPass vignetteFSPass;
public PlayerControllerB player;
public Material myFullscreenMaterial;
void Start()
{
// Creating the PostProcess.
PostProcess vignettePass = new PostProcess("VignettePass", myFullscreenMaterial)
{
InjectionType = InjectionType.AfterPostProcess, // You can predefine the PostProcess on creation.
Enabled = false // Disabling it on creation for example.
};
// Adding the PostProcess and assigning it to 'vignetteFSPass'.
vignetteFSPass = CustomPostProcessingManager.Instance.AddPostProcess(vignettePass);
// Note that you can't 'remove' a pass. You can simply disable it.
}
void Update()
{
// Simple if statement to enable/disable the pass according to the dead value of the player.
if (player.isPlayerDead && vignetteFSPass.enabled)
{
vignetteFSPass.enabled = false;
}
else if (!vignetteFSPass.enabled)
{
vignetteFSPass.enabled = true;
}
}
}
}
Example 2:
using UnityEngine;
using UnityEngine.Rendering.HighDefinition;
using UnityEngine.Rendering;
using System.Collections;
using CustomPostProcessingAPI;
using GameNetcodeStuff;
using BepInEx;
namespace SuperAwesomeMod
{
[BepInPlugin(modGUID, modName, modVersion)]
public class Plugin : BaseUnityPlugin
{
public const string modGUID = "Chaos.SuperAwesomeMod";
public const string modName = "SuperAwesomeMod";
public const string modVersion = "1.0.0";
public FullScreenCustomPass myFsPass;
public PlayerControllerB player;
void Awake()
{
// Subscribing to the OnLoad event.
CustomPostProcessingManager.OnLoad += OnLoad;
}
private void OnLoad(object sender, System.EventArgs e)
{
// The sender will always be 'CustomPostProcessingManager'.
CustomPostProcessingManager manager = (CustomPostProcessingManager)sender;
Material myFullscreenMaterial = manager.dither; // Using a premade fullscreen material that comes with the API.
PostProcess myPostProcess = new PostProcess("MyFsPass", myFullscreenMaterial)
{
InjectionType = InjectionType.AfterPostProcess // You can predefine the PostProcess on creation.
};
// Adding the PostProcess and assigning it to 'myFsPass'.
myFsPass = CustomPostProcessingManager.Instance.AddPostProcess(myPostProcess);
}
}
}
CHANGELOG
1.0.0 Initial Release
- Initial release of CustomPostProcessingAPI.
1.0.1 Rework
- Reworked the API to be simply better.
1.0.2 Optimization
- Optimized the post processing system.