# community-shaders/skyrim-community-shaders architecture

> Architecture diagram of the GitHub repository community-shaders/skyrim-community-shaders, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/community-shaders/skyrim-community-shaders
- Repository: https://github.com/community-shaders/skyrim-community-shaders

## Overview

Skyrim Community Shaders is an SKSE plugin that adds configurable graphics features and engine fixes to Skyrim. Its principal workflow is game/plugin initialization, feature configuration, then graphics changes during runtime rendering. The tree and excerpts support the major subsystems, but most feature implementations and plugin dispatch code were not sampled, so their internal wiring is shown only at a high level.

Main entry points: [`src/Features`](https://github.com/community-shaders/skyrim-community-shaders/tree/dev/src/Features) (Graphics Features), [`src/XSEPlugin.cpp`](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/XSEPlugin.cpp) (Plugin Entry), [`src/Menu.cpp`](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Menu.cpp) (Configuration Menu), [`src/Feature.cpp`](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Feature.cpp) (Feature Settings)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Plugin Runtime"]
  node_plugin["Plugin Entry<br/>[XSEPlugin.cpp]"]
  node_hooks["Engine Hooks<br/>[Hooks.cpp]"]
  node_fixes["Engine Fixes<br/>[EngineFix.cpp]"]
end

subgraph group_graphics["Graphics Features"]
  node_features["Graphics Features"]
  node_effects["Effects11<br/>[EffectManager.cpp]"]
  node_textures["Effect Textures<br/>[TextureManager.cpp]"]
  node_weatherfx["Weather Effects<br/>[WeatherManager.cpp]"]
  node_upscale["Upscaling<br/>[Upscaling.cpp]"]
  node_pbr["True PBR<br/>[TruePBR.cpp]"]
  node_shaderhooks["Shader Hooks<br/>[BSShaderHooks.cpp]"]
end

subgraph group_config["Settings and UI"]
  node_settings["Feature Settings<br/>[Feature.cpp]"]
  node_weather["Weather Settings<br/>[WeatherManager.cpp]"]
  node_scene["Scene Settings"]
  node_overrides["Settings Overrides"]
  node_menu["Configuration Menu<br/>[Menu.cpp]"]
  node_editor["Community Shader Editor<br/>[EditorWindow.cpp]"]
  node_themes["Theme Management<br/>[ThemeManager.cpp]"]
  node_effectsettings["Effect Settings<br/>[SettingManager.cpp]"]
end

subgraph group_integrations["Graphics Integrations"]
  node_d3d["Direct3D 11"]
  node_fidelityfx["FidelityFX<br/>[FidelityFX.cpp]"]
  node_streamline["NVIDIA Streamline<br/>[Streamline.cpp]"]
end

node_skyrim(("Skyrim / SKSE"))

node_skyrim -->|"loads plugin"| node_plugin
node_plugin -->|"initializes hooks"| node_hooks
node_plugin -->|"installs fixes"| node_fixes
node_hooks -->|"dispatches runtime"| node_features
node_features -->|"renders effects"| node_d3d
node_effects -->|"uses textures"| node_textures
node_effects -->|"issues draw calls"| node_d3d
node_textures -->|"creates resources"| node_d3d
node_effectsettings -->|"provides settings"| node_weatherfx
node_weatherfx -->|"reads weather data"| node_weather
node_scene -->|"applies feature values"| node_settings
node_overrides -->|"modifies settings"| node_settings
node_menu -->|"edits settings"| node_settings
node_editor -->|"opens editor UI"| node_menu
node_themes -->|"styles interface"| node_menu
node_upscale -.->|"uses upscaling"| node_fidelityfx
node_upscale -.->|"uses integration"| node_streamline
node_shaderhooks -->|"supports rendering"| node_features
node_pbr -->|"adds material rendering"| node_features

click node_plugin "https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/XSEPlugin.cpp"
click node_hooks "https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Hooks.cpp"
click node_fixes "https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/EngineFix.cpp"
click node_features "https://github.com/community-shaders/skyrim-community-shaders/tree/dev/src/Features"
click node_effects "https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Features/Effects11/EffectManager.cpp"
click node_textures "https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Features/Effects11/TextureManager.cpp"
click node_weatherfx "https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Features/Effects11/WeatherManager.cpp"
click node_upscale "https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Features/Upscaling.cpp"
click node_pbr "https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/TruePBR.cpp"
click node_shaderhooks "https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/ShaderTools/BSShaderHooks.cpp"
click node_settings "https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Feature.cpp"
click node_weather "https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/WeatherManager.cpp"
click node_scene "https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/SceneSettingsManager.cpp"
click node_overrides "https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/SettingsOverrideManager.cpp"
click node_menu "https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Menu.cpp"
click node_editor "https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/CSEditor/EditorWindow.cpp"
click node_themes "https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Menu/ThemeManager.cpp"
click node_effectsettings "https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Features/Effects11/SettingManager.cpp"
click node_fidelityfx "https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Features/Upscaling/FidelityFX.cpp"
click node_streamline "https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Features/Upscaling/Streamline.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_plugin,node_hooks,node_fixes toneBlue
class node_features,node_effects,node_textures,node_weatherfx,node_upscale,node_pbr,node_shaderhooks toneAmber
class node_settings,node_weather,node_scene,node_overrides,node_menu,node_editor,node_themes,node_effectsettings toneMint
class node_d3d,node_fidelityfx,node_streamline toneRose
class node_skyrim toneIndigo
```

## Components

### Plugin Runtime

- [Plugin Entry](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/XSEPlugin.cpp): `src/XSEPlugin.cpp`
- [Engine Hooks](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Hooks.cpp): `src/Hooks.cpp`
- [Engine Fixes](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/EngineFix.cpp): `src/EngineFix.cpp`

### Graphics Features

- [Graphics Features](https://github.com/community-shaders/skyrim-community-shaders/tree/dev/src/Features): `src/Features`
- [Effects11](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Features/Effects11/EffectManager.cpp): `src/Features/Effects11/EffectManager.cpp`
- [Effect Textures](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Features/Effects11/TextureManager.cpp): `src/Features/Effects11/TextureManager.cpp`
- [Weather Effects](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Features/Effects11/WeatherManager.cpp): `src/Features/Effects11/WeatherManager.cpp`
- [Upscaling](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Features/Upscaling.cpp): `src/Features/Upscaling.cpp`
- [True PBR](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/TruePBR.cpp): `src/TruePBR.cpp`
- [Shader Hooks](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/ShaderTools/BSShaderHooks.cpp): `src/ShaderTools/BSShaderHooks.cpp`

### Settings and UI

- [Feature Settings](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Feature.cpp): `src/Feature.cpp`
- [Weather Settings](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/WeatherManager.cpp): `src/WeatherManager.cpp`
- [Scene Settings](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/SceneSettingsManager.cpp): `src/SceneSettingsManager.cpp`
- [Settings Overrides](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/SettingsOverrideManager.cpp): `src/SettingsOverrideManager.cpp`
- [Configuration Menu](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Menu.cpp): `src/Menu.cpp`
- [Community Shader Editor](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/CSEditor/EditorWindow.cpp): `src/CSEditor/EditorWindow.cpp`
- [Theme Management](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Menu/ThemeManager.cpp): `src/Menu/ThemeManager.cpp`
- [Effect Settings](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Features/Effects11/SettingManager.cpp): `src/Features/Effects11/SettingManager.cpp`

### Graphics Integrations

- **Direct3D 11**
- [FidelityFX](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Features/Upscaling/FidelityFX.cpp): `src/Features/Upscaling/FidelityFX.cpp`
- [NVIDIA Streamline](https://github.com/community-shaders/skyrim-community-shaders/blob/dev/src/Features/Upscaling/Streamline.cpp): `src/Features/Upscaling/Streamline.cpp`

### Other components

- **Skyrim / SKSE**

## Connections

- Skyrim / SKSE → Plugin Entry: loads plugin
- Plugin Entry → Engine Hooks: initializes hooks
- Plugin Entry → Engine Fixes: installs fixes
- Engine Hooks → Graphics Features: dispatches runtime
- Graphics Features → Direct3D 11: renders effects
- Effects11 → Effect Textures: uses textures
- Effects11 → Direct3D 11: issues draw calls
- Effect Textures → Direct3D 11: creates resources
- Effect Settings → Weather Effects: provides settings
- Weather Effects → Weather Settings: reads weather data
- Scene Settings → Feature Settings: applies feature values
- Settings Overrides → Feature Settings: modifies settings
- Configuration Menu → Feature Settings: edits settings
- Community Shader Editor → Configuration Menu: opens editor UI
- Theme Management → Configuration Menu: styles interface
- Upscaling → FidelityFX: uses upscaling
- Upscaling → NVIDIA Streamline: uses integration
- Shader Hooks → Graphics Features: supports rendering
- True PBR → Graphics Features: adds material rendering
