SKSE core plugin for advanced graphics modifications for Skyrim and fork of Community Shaders.
Open Shaders developer wiki · Upstream Community Shaders on Nexus · Upstream source · Upstream developer wiki
Open Shaders is a fork of Community Shaders. All of the architecture, the shader pipeline, the feature framework, and the vast majority of the code in this repository originated upstream and is the work of the upstream Community Shaders authors and contributors. Copyrights and authorship are preserved unchanged. See the upstream contributors page for the team behind the project.
Naming convention used throughout this repo and the in-game UI:
| Term | Refers to |
|---|---|
| Community Shaders | The upstream project (community-shaders/skyrim-community-shaders, Nexus mod 86492) |
| Open Shaders | This fork (alandtse/open-shaders, Nexus mod 180419) |
CommunityShaders (as a path / filename / identifier in source) |
Runtime-compat identifier; intentionally kept identical to upstream so settings, themes, and SKSE plugin discovery work without migration |
The upstream branding (logo, Nexus icon, typography) is non-GPL and not redistributed by this fork — see the "Icons" section under License below.
Install from the Open Shaders Nexus page, from GitHub releases, or build from source.
- Any terminal of your choice (e.g., PowerShell)
- Visual Studio Community 2026
- Desktop development with C++
- CMake Tools for Windows
- HLSL Tools
- Git
- Edit the
PATHenvironment variable and add the Git.exe install path as a new value
- Edit the
CMake & Vcpkg comes with Visual Studio in Developer Command Prompts already.
Install them manually only if you want them in everywhere.
- CMake
- No need to install manually if you have Visual Studio CMake Tools installed
- CMake 4.2+ is required now
- Edit the
PATHenvironment variable and add the cmake.exe install path as a new value - Instructions for finding and editing the
PATHenvironment variable can be found here
- Vcpkg
- Install vcpkg using the directions in vcpkg's Quick Start Guide
- After install, add a new environment variable named
VCPKG_ROOTwith the value as the path to the folder containing vcpkg - Make sure your local vcpkg repo matches the commit id specified in
builtin-baselineinvcpkg.jsonotherwise you might get another version of a non pinned vcpkg dependency causing undefined behaviour
- Address Library for SKSE
- Needed for SSE/AE
- VR Address Library for SKSEVR
- Needed for VR
To clone the repository with all submodules, run the following command in your terminal:
git clone https://github.com/alandtse/open-shaders.git --recursive
cd open-shadersThe DLL filename is
CommunityShaders.dlland the SKSE plugin directory isSKSE/Plugins/CommunityShaders/— identical to upstream Community Shaders, so user settings, themes, and mod-manager profiles are drop-in compatible. Only the public name and in-game branding are "Open Shaders".
To build the project, just open ./open-shaders with Visual Studio's "Open Folder" feature. (Ensure you have CMake Tools for Windows selected when installing VS)
Follow the prompts to Configure and Build the project.
It should generate the AIO package in the ./build/ALL/aio folder by default.
If you change the Solution Explorer into CMake Targets View, you can find optional targets to create zip packages for each feature.
Right click on the target and select Build to create the zip package in ./dist/.
Open the "Developer PowerShell for VS 2026" or the "x64 Native Tools Command Prompt" (these set up the Visual Studio toolchain for you).
Then from the repository root run:
# Generate the build files (uses the ALL preset)
cmake --preset ALL
# Build using the preset
cmake --build --preset ALL
# Install an AIO package somewhere, e.g. $MOD_FOLDER
cmake --install --preset ALL -- --prefix $MOD_FOLDER- If you prefer to run the VC environment manually, launch Developer PowerShell or the x64 Native Tools prompt instead of calling vcvarsall.bat directly from PowerShell.
- The convenience wrapper
BuildRelease.batalso captures these steps.
You can build zip packages for optional cmake targets.
Currently support AIO_ZIP_PACKAGE, Package-AIO-Manual, Package-Core, and Package-<Feature>:
# Create a AIO package in ./dist/
# Automated AIO zip (requires AIO_ZIP_TO_DIST=ON)
cmake --build ./build/ALL --config Release --target AIO_ZIP_PACKAGE
# Manual AIO package (install + tar)
cmake --build ./build/ALL --config Release --target Package-AIO-Manual
# Create a CommunityShaders core package in ./dist/
cmake --build ./build/ALL --config Release --target Package-Core
# Create a feature package in ./dist/ (example: GrassLighting)
cmake --build ./build/ALL --config Release --target Package-GrassLightingThe AIO bundles only features marked autoupload = true in their feature .ini — features not yet ready for release are built but excluded from the AIO. To include everything in a local build, see the AIO_INCLUDE_NON_AUTOUPLOAD CMake option.
For more details about packaging targets, options, and the difference between automated and manual packaging, see the "Manual Packaging Targets" section in the Release Process guide.
If you want an example CMakeUserPreset to start off with you can copy the CMakeUserPresets.json.template -> CMakeUserPresets.json
- This option is default
"OFF" - Make sure
"AUTO_PLUGIN_DEPLOYMENT"is set to"ON"inCMakeUserPresets.json - Change the
"CommunityShadersOutputDir"value to match your desired outputs, if you want multiple folders you can separate them by;is shown in the template example
- This option is default
"OFF" - This will enable tracy support, might need to delete build folder when this option is changed
When using custom preset you can call BuildRelease.bat with an parameter to specify which preset to configure eg:
.\BuildRelease.bat ALL-WITH-AUTO-DEPLOYMENT
When switching between different presets you might need to remove the build folder
For those who prefer to not install Visual Studio or other build dependencies on their machine, this encapsulates it. This uses Windows Containers, so no WSL for now.
- Install Docker first if not already there.
- In a shell of your choice run to switch to Windows containers and create the build container:
& 'C:\Program Files\Docker\Docker\DockerCli.exe' -SwitchWindowsEngine; `
docker build -t open-shaders .- Then run the build:
docker run -it --rm -v .:C:/open-shaders open-shaders:latest- Retrieve the generated build files from the
build/aiofolder. - In subsequent builds only run the build step (3.)
If you run into Access violation build errors during step 3, you can try adding --isolation=process:
docker run -it --rm --isolation=process -v .:C:/open-shaders open-shaders:latest- Open Steam
- Close ModOrganizer GUI
- Add
ModOrganizer.exe(MO2 Folder) to your PATH, or use the path of it - Run the commands:
# Change Working Directory
cd "C:/Program Files (x86)/Steam/steamapps/common/Skyrim Special Edition"
# Launch SKSE with MO2
ModOrganizer.exe --log run "C:\Program Files (x86)\Steam\steamapps\common\Skyrim Special Edition\skse64_loader.exe"In Launch Application Menu, use the following settings:
- Executable Path:
PATH/TO/ModOrganizer.exe - Working Directory:
C:/Program Files (x86)/Steam/steamapps/common/Skyrim Special Edition - Command-line Arguments:
--log run "C:\Program Files (x86)\Steam\steamapps\common\Skyrim Special Edition\skse64_loader.exe" - Capture Child Process
GPL-3.0-or-later WITH Modding Exception AND GPL-3.0 Linking Exception (with Corresponding Source).
Specifically, the Modded Code includes:
- Skyrim (and its variants)
- Hardware drivers to enable additional functionality provided via proprietary SDKs, such as Nvidia DLSS and AMD FidelityFX FSR3
The Modding Libraries include:
- SKSE
- Commonlib (and variants).
See LICENSE within each directory; if none, it's Default
Open Shaders does not ship the upstream Community Shaders logo. The upstream logo is non-GPL, not trademark-licensed, and may only be used in unmodified form with the Community Shaders team's permission — none of which extends to forks. Action icons and category icons are bundled as before; the upstream Discord banner has been removed since the fork has no affiliated Discord channel. The menu renders without a logo image when none is present (the load path is null-safe).