Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/SoulRider/StrideOutlineRenderer

Stride Outline Renderer - Renderer for Rendering 3D Object (Model Component) Outlines
https://github.com/SoulRider/StrideOutlineRenderer

Last synced: 3 days ago
JSON representation

Stride Outline Renderer - Renderer for Rendering 3D Object (Model Component) Outlines

Awesome Lists containing this project

README

        

# StrideOutlineRenderer
Stride Outline Renderer - Renderer for Rendering 3D Object (Model Component) Outlines

## Features:
- Halo/Bloom/Blend outline effect for model components (this is not a shader)
- Enable/Disable outline on model components by changing render group at runtime
- Permanently enable outline on model components by assigning render group on Outline Component and enable "AlwaysOutlined"
- Performance should scale (horizontally) directly with PostFX Bloom process

## How it works:
- Uses physics ray casting in camera controller to activate outline on objects, requires colliders
- Model components are set to RenderGroup9, when they are highlighted they are changed to RenderGroup10 (arbitrary assignments)
- Model components have an OutlineComponent attached to them, assigning a highlight color and outline RenderGroup (RenderGroup10)
- RenderTextureSceneRenderer in Compositor writes only RenderGroup10 to a render texture (InputRenderTexture)
- OutlineRenderer uses SpriteBatch to write a new RenderTexture (OutputRenderTexture) by saturating color
- OutlineUiOutput Entity/UiComponent in Scene renders the OutputRenderTexture to the camera as RenderGroup30
- RenderGroup30 has PostFX applied through SharedRenderer (This is how the bloom occurs)
- InputRenderTexture is excluded from PostFX, but added as a SingleStageRenderer for Transparent pass "on top of" bloom effect

Scene:

Compositor:



Compositor Expanded:



Compositor Render Texture (Item 0):

Compositor Outline Renderer (Item 1):

Compositor Shared Renderer to Post FX Omit Group 9 (Item 2):

Compositor Group 9 Single Stag Renderer (Item 3):

Compositor Group 31 Single Stage Renderer (Item 4):



## Potential Improvements
- You could combine the RenderTextureSceneRenderer functionality into the OutlineRenderer

## Other Implementations
- Check my GitHub profile, I will also release the non-bloom version with a combined Renderer (RenderTexture and SpriteBatcher), should be titled something like "RenderGroupOutlineRenderer"