GraphicsAPI
Made this tool for Diversity.
About this mod Author’s original text
GraphicsAPI
Made this tool for Diversity.
Graphic Settings (EXPERIMENTAL)
Usage:
- Add the following namespaces:
using GraphicsAPI;
using UnityEngine.Rendering.HighDefinition;
using UnityEngine.Rendering;
using static UnityEngine.Rendering.HighDefinition.RenderPipelineSettings;
- Fetch the current HDRP Render Pipeline Settings with the following:
RenderPipelineSettings settings = HDRPGraphicSettings.GetCurrentSettings();
- Then make changes to the settings:
settings.customBufferFormat = CustomBufferFormat.R11G11B10;
- Finally apply the new settings:
HDRPGraphicSettings.ApplySettings(settings);
Full example:
using GraphicsAPI;
using HarmonyLib;
using UnityEngine.Rendering.HighDefinition;
using UnityEngine.Rendering;
using static UnityEngine.Rendering.HighDefinition.RenderPipelineSettings;
using UnityEngine;
namespace SuperAwesomeMod.Patches
{
[HarmonyPatch(typeof(PreInitSceneScript))]
public class PreInitPatch
{
[HarmonyPatch(typeof(PreInitSceneScript), "Awake")] // This patch happens as soon the game opens.
[HarmonyPrefix]
static void Awake()
{
RenderPipelineSettings settings = HDRPGraphicSettings.GetCurrentSettings();
settings.customBufferFormat = CustomBufferFormat.R11G11B10;
HDRPGraphicSettings.ApplySettings(settings);
}
}
}
CustomPostProcessing
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 GraphicsAPI.CustomPostProcessing and Unity's rendering namespaces!
using UnityEngine.Rendering.HighDefinition;
using UnityEngine.Rendering;
using GraphicsAPI.CustomPostProcessing;
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 GraphicsAPI.CustomPostProcessing;
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 GraphicsAPI.CustomPostProcessing;
using GameNetcodeStuff;
using BepIn
Install & use Install: BepInEx plugin
- The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
- Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
- Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
- Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.
Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file.
Install these first, or the mod will not work: