GraphicsAPI

v1.0.0·Updated 2024-02-29

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

  1. The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
  2. 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.
  3. Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
  4. 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.

Dependencies

Install these first, or the mod will not work:

BepInEx-BepInExPack

File & checksum

Filename
GraphicsAPI-1.0.0.zip
File size
56.5 KiB