Render Passes
PlaceholderMod handles Rendering of various object types through a "Render Pass" system. This system breaks down the rendering process into multiple passes, with each pass dedicated to rendering specific elements or effects in distinct ways. Render Passes allow for fine-tuned control over how objects render in the world.
Built-In Render Passes
Render Pass | Purpose |
---|---|
Opaque Pass | Renders all Mesh Entities that are Opaque (Non-Transparent) |
Lighting Pass | Applies all Lighting. |
Screenspace GUI Pass | Renders all Screenspace GUIs to the screen. |
Defining a Custom Render Pass
Code Mods allow you to define custom Render Passes via their Entry-Point. To create a new Render Pass, define a class that inherits from BaseRenderPass
, and then register it in your Mod's Entry-Point using RenderPassManager.RegisterPass(new PassClassName());
Render Pass Definition:
public class ScreenspaceGUIPass : BaseRenderPass
{
// Enable Blending
public override List<RenderFlag> RenderPassFlags => new List<RenderFlag> { RenderFlag.Blend };
// Run RenderEntity on render
public override void OnRender() => RenderEntities<GUICanvasEntity>(EntityManager.Root);
// Render Screenspace GUIs
protected override void RenderEntity<TEntity>(TEntity entity)
{
if (entity is GUICanvasEntity guiEntity)
{
Renderer.RenderScreenspaceGUI(guiEntity);
}
}
}
Render Pass Registry:
// Entry-Point for MyMod
public class MyMod : IMod
{
// Runs once on Mod Load
public void OnLoad()
{
RenderPassManager.RegisterPass(new ScreenspaceGUIRenderPass()); // Register Screenspace GUI Render Pass
}
}