Lethal Company
This package has been deprecated and may no longer be maintained. We recommend looking for an alternative.
Install with App

Details

Latest version
1.0.2
Last Updated
First Uploaded
Downloads
127.2K
Likes
4
Size
63KB
Dependants

Tags

Deprecated

CustomPostProcessingAPI

Made this tool for Diversity.

Usage:

  • Create A full screen shader and apply it to a material for later use. Note: We're back at using the custom color buffer. Please use it in your shaders from now on!
  • 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. A PostProcess 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 the CustomPostProcessingManager!
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);
        }
    }
}
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.