Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
106 commits
Select commit Hold shift + click to select a range
1971e73
chore(ui): update discord banner (#1493)
zndxcvbn Sep 18, 2025
9e1dc9c
fix: use proper filename settingsuser.json (#1491)
davo0411 Sep 18, 2025
76cb9a0
chore(upscaling): increase fsr sharpness
doodlum Sep 18, 2025
dd48e10
chore: rename d3d12interop to d3d12SwapChainActive (#1494)
doodlum Sep 19, 2025
21d498f
feat(llf): remove particle lights (#1495)
doodlum Sep 19, 2025
44ba961
feat(llf): move llf to core (#1496)
doodlum Sep 19, 2025
40c5709
fix: remove water clamp (#1497)
jiayev Sep 19, 2025
a4ad64d
fix(upscaling): more upscaling fixes (#1498)
doodlum Sep 19, 2025
beed579
fix: fix some internal errors when debugging (#1500)
doodlum Sep 20, 2025
1cd2640
fix(ui): fix save settings conflicts & welcome screen (#1501)
davo0411 Sep 21, 2025
bfafeff
fix(ui): add constraints for discord banner size (#1463)
davo0411 Sep 21, 2025
199f4e9
fix(VR): fix exiting menu using controllers (#1502)
alandtse Sep 22, 2025
aa8bc76
build: fix warnings (#1505)
alandtse Sep 22, 2025
2788014
feat(UI): allow tooltips for disabled elements (#1503)
alandtse Sep 22, 2025
fb1c908
feat(upscaling): add downscale percentages (#1506)
alandtse Sep 22, 2025
a04ff60
perf(ssgi): optimize (#1499)
doodlum Sep 22, 2025
a2969f8
feat(ui): font size and perf overlay improvements (#1511)
soda3000 Sep 22, 2025
b3129e2
chore: remove unused hooks (#1510)
doodlum Sep 22, 2025
7d9c28a
fix: adjust IsInterior to consider kNoSky or kFixedDimensions flags (…
doodlum Sep 23, 2025
856de37
fix(hair): correct hair indirect normal, marschner by default (#1515)
jiayev Sep 23, 2025
f1a0c7b
chore: mostly revert ISHDR to 1.3.6 (#1516)
doodlum Sep 23, 2025
cf9c400
chore(upscaling): simplify interop and upscale methods (#1514)
doodlum Sep 23, 2025
594d2de
fix(hair): typo in code (#1517)
jiayev Sep 23, 2025
84c9f1f
feat(ibl): lerp sky ibl using skylighting (#1519)
jiayev Sep 24, 2025
ed2d75a
fix(sss): burley artifacts with effect blend (#1518)
jiayev Sep 24, 2025
b1b8ee8
fix(upscaling): fix screenshots when upscaling enabled (#1520)
doodlum Sep 24, 2025
3b88a64
fix(upscaling): fix mipbias sometimes being wrong (#1521)
doodlum Sep 24, 2025
f55206c
fix: fix compile error if snow shader on (#1522)
doodlum Sep 24, 2025
c87922b
chore(upscaling): revert fsr to typical settings (#1523)
doodlum Sep 24, 2025
25346c0
fix: fix minor ui issues (#1524)
doodlum Sep 25, 2025
a10806c
chore(grass collision): simpler grass collision (#1525)
doodlum Sep 25, 2025
48266de
fix: update skylighting and version
doodlum Sep 25, 2025
2ea3b3a
fix(pbr): fix inconsistencies (#1526)
doodlum Sep 26, 2025
5828c61
feat(upscaling): sharpening slider (#1527)
doodlum Sep 26, 2025
62834b8
chore: bump versions
doodlum Sep 26, 2025
e91f159
fix(ibl): add ibl to reflection normalization (#1528)
jiayev Sep 27, 2025
8047cd3
fix(hair): remove pbr lighting mult for hair (#1531)
jiayev Sep 27, 2025
19c6f4e
chore(upscaling): add back upscale multiplier (#1532)
doodlum Sep 27, 2025
2995572
fix(upscaling): fix minor upscaling issues (#1536)
doodlum Sep 29, 2025
d39ce16
chore: gamma space normalisation (#1535)
doodlum Oct 5, 2025
5fc0ef9
feat(grass collision): implement with texture and history (#1539)
doodlum Oct 5, 2025
95a1e86
chore(grass collision): less aggressive (#1546)
doodlum Oct 6, 2025
b981d7f
fix(skylighting): fix cell id casting (#1544)
doodlum Oct 6, 2025
04f4ff6
chore(emat): auto detect terrain parallax (#1545)
doodlum Oct 6, 2025
cc98ce3
chore: update versions
doodlum Oct 5, 2025
92f0f66
feat(VR): enable upscaling (#1507)
alandtse Oct 6, 2025
b14bac3
fix(terrain shadows): fix brightened lods (#1547)
doodlum Oct 6, 2025
337da72
chore(upscaling): reduce ghosting near camera (#1548)
doodlum Oct 6, 2025
f4582e8
fix: fix grass not animating (#1549)
doodlum Oct 6, 2025
3934cf7
fix(grass collision): fix non-standard timescales (#1550)
doodlum Oct 7, 2025
259fdcb
build: deploy only updated files (#1556)
alandtse Oct 9, 2025
a5dac9a
feat: add Clear Shader Cache to Advanced (#1555)
alandtse Oct 9, 2025
3d4b46c
chore(featureissues): default collapse testing menu (#1554)
alandtse Oct 9, 2025
1837df2
fix(VR): use only supported shaders from cache (#1553)
alandtse Oct 9, 2025
c87b6cd
build: use gersemi cmake formatter (#1557)
alandtse Oct 9, 2025
814cb4a
fix(terrain): vanilla diffuse in pbr terrain cell too bright due to w…
ThePagi Oct 9, 2025
84e0da3
docs: add new feature development template guide (#1529)
davo0411 Oct 9, 2025
26f8f76
docs(UI): remove duplicate GPL license statement (#1561)
davo0411 Oct 11, 2025
62fa347
feat: add renderdoc for debugging (#1560)
Copilot Oct 12, 2025
222ffee
fix(ui): welcome popup size issues (#1573)
davo0411 Oct 13, 2025
b7d731c
chore(grass collision): minor tweaks (#1568)
doodlum Oct 13, 2025
aa52781
fix(terrain helper): fix conflicting bit (#1566)
doodlum Oct 13, 2025
f02fe29
feat(UI): separate theme settings, UI refactor, font support (#1571)
davo0411 Oct 13, 2025
79aebb6
chore: bump versions
doodlum Oct 18, 2025
f263c84
build: fix zipping aio (#1579)
jiayev Oct 21, 2025
f8b7754
fix(grass collision): clamp maximum depth of grass (#1578)
doodlum Oct 21, 2025
8f51609
feat(UI): enhance shader blocking (#1564)
Copilot Oct 25, 2025
b47ad5d
fix: remove duplicate buffer setup (#1586)
soda3000 Oct 29, 2025
be9b960
feat: update shader compile elapsed time every second (#1587)
soda3000 Nov 1, 2025
b7a71e5
build: add cmake install commands (#1372)
ArcEarth Nov 4, 2025
0dee391
feat(perf-overlay): add size controls (#1591)
davo0411 Nov 4, 2025
dc0f75b
fix(perf-overlay): fix infinite draw calls table height (#1590)
davo0411 Nov 4, 2025
3f14125
refactor(perf-overlay): remove collapsible headers (#1572)
davo0411 Nov 5, 2025
268de33
fix(perf-overlay): removed ImGuiTableFlags_ScrollX/Y for scroll bar i…
kuplion Nov 6, 2025
7a53214
build: fix shader copying to relative paths (#1603)
alandtse Nov 16, 2025
94c04c6
fix(ibl): apply ibl to cubemap normalisation for non deferred (#1604)
jiayev Nov 16, 2025
ab9a64b
fix(grass): use correct light direction (#1602)
jiayev Nov 16, 2025
b19be49
fix(welcome-popup): adjust font size & window spacing (#1592)
davo0411 Nov 16, 2025
967b8ad
feat(lod): add gamma sliders (#1588)
jiayev Nov 16, 2025
c301939
build: correct CodeRabbit schema syntax (#1608)
Copilot Nov 16, 2025
cb52e92
build: add compile-time validation of GPU buffers (#1427)
Copilot Nov 16, 2025
0015163
ci: run shader validation on CMake and CI config changes (#1606)
Copilot Nov 17, 2025
6afefc2
feat: procedural sun
jiayev Nov 17, 2025
36ecd89
limb darkening
jiayev Nov 17, 2025
190dcb8
another darkening
jiayev Nov 19, 2025
b102274
build(deps): remove orphaned Intel XeSS dependency (#1611)
alandtse Nov 19, 2025
ad1632f
fix: accumulate sunlight color in pixel shader output
jiayev Nov 19, 2025
7cec036
fix(ui): enter key now behaves properly when first time popup is open…
soda3000 Nov 28, 2025
4612c18
feat(ui): add tabs to advanced settings & PBR search (#1599)
davo0411 Nov 28, 2025
39aa9d7
build: add HLSL intellisense (#1614)
Gistix Dec 1, 2025
520945a
refactor(UI): move light limit visualization into debug (#1619)
brucenguyen Dec 3, 2025
db72d81
refactor(ui): add settings for shader block hotkeys (#1624)
midona-rhel Dec 4, 2025
d7675dd
fix(ui): anchor reset settings button position (#1621)
midona-rhel Dec 6, 2025
f9ca01f
fix(hair): use indirect normal for deferred marschner hair (#1626)
jiayev Dec 7, 2025
5dbef94
build: fix Package-AIO-Manual for fresh pulls (#1625)
midona-rhel Dec 7, 2025
80ece1a
fix(snow): use world space vectors (#1618)
midona-rhel Dec 7, 2025
5dce430
feat(UI): add gaussian blur shader core files (#1595)
davo0411 Dec 10, 2025
1482e28
feat(ui): add test conditions button (#1637)
davo0411 Dec 13, 2025
b6b531c
fix(ui): blocked shader info overflow in Shader Debug tab (#1632)
Copilot Dec 13, 2025
11d4be3
fix(upscaling): replace NIS with RCAS for DLSS (#1620)
midona-rhel Dec 13, 2025
d221945
fix(dynamic cubemaps): add a check for timeskip (#1639)
midona-rhel Dec 13, 2025
93e0690
refactor: restructure lighting (#1633)
jiayev Dec 13, 2025
ecf23ed
feat(ui): add themes & fonts (#1596)
davo0411 Dec 13, 2025
b3cb42e
feat(water): add flowmap parallax (#1636)
davo0411 Dec 13, 2025
88ccc51
Merge branch 'dev' into psky-procedural-sun
jiayev Dec 16, 2025
1aaf516
fix cloud shadow setting saving
jiayev Dec 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
102 changes: 91 additions & 11 deletions .claude/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,22 +21,38 @@ powershell.exe -Command "./BuildRelease.bat [PRESET_NAME]"

**Available Presets** (from CMakePresets.json):

- `ALL` (default) - Builds for SE/AE/VR in single binary
- `SE` - Skyrim Special Edition only
- `AE` - Anniversary Edition only
- `VR` - Skyrim VR only
- `ALL-TRACY` - Includes Tracy profiler support
- `ALL-WITH-AUTO-DEPLOYMENT` - Auto-deploys to configured Skyrim directories when template used.
- `ALL` (default) - Builds universal binary supporting SE/AE/VR runtime detection
- `SE` - Skyrim Special Edition only (compile-time targeting)
- `AE` - Anniversary Edition only (compile-time targeting)
- `VR` - Skyrim VR only (compile-time targeting)
- `PRE-AE` - SE + VR (excludes AE)
- `FLATRIM` - SE + AE (excludes VR)
- `ALL-TRACY` - Universal binary with Tracy profiler support enabled

**User Preset Template**:

- `ALL-WITH-AUTO-DEPLOYMENT` - Extends `ALL` with `AUTO_PLUGIN_DEPLOYMENT=ON` (copy template to use)

### Development Setup

1. Copy `CMakeUserPresets.json.template` → `CMakeUserPresets.json`
2. Configure `CommunityShadersOutputDir` for auto-deployment to Skyrim installations
3. Set build options in user preset:
- `AUTO_PLUGIN_DEPLOYMENT`: Auto-copy to Skyrim dirs
- `AIO_ZIP_TO_DIST`: Creates all-in-one distribution package
- `ZIP_TO_DIST`: Creates individual feature packages
- `TRACY_SUPPORT`: Enables performance profiling
3. Set build options in user preset or CMake cache:

**Build Options** (CMake cache variables):

- `AUTO_PLUGIN_DEPLOYMENT` (default: OFF) - Auto-copy build output to `CommunityShadersOutputDir`
- `ZIP_TO_DIST` (default: ON) - Creates individual feature packages as 7z files in `/dist`
- `AIO_ZIP_TO_DIST` (default: ON) - Creates all-in-one distribution package as 7z in `/dist`
- `TRACY_SUPPORT` (default: OFF) - Enables Tracy profiler integration for performance analysis

**Auto-Deployment Configuration**:

Set `CommunityShadersOutputDir` environment variable to semicolon-separated Skyrim Data directories:

```
CommunityShadersOutputDir=F:/MySkyrimModpack/mods/CommunityShaders;F:/SteamLibrary/steamapps/common/SkyrimVR/Data;F:/SteamLibrary/steamapps/common/Skyrim Special Edition/Data
```

### Shader Development and Testing

Expand Down Expand Up @@ -73,8 +89,72 @@ hlslkit-generate-defines --log CommunityShaders.log
hlslkit-buffer-scan --features-dir features/
```

### Custom CMake Targets

**Package and Deployment Targets**:

```bash
# Prepare AIO package structure (automatic with AIO_ZIP_TO_DIST or AUTO_PLUGIN_DEPLOYMENT)
cmake --build ./build/ALL --target PREPARE_AIO

# Prepare shaders only (useful for CI shader validation)
cmake --build ./build/ALL --target prepare_shaders

# Copy shaders to deployment directories (when AUTO_PLUGIN_DEPLOYMENT=ON)
cmake --build ./build/ALL --target COPY_SHADERS

# Create AIO zip package (when AIO_ZIP_TO_DIST=ON)
cmake --build ./build/ALL --target AIO_ZIP_PACKAGE
```

**Development Targets**:

```bash
# Format all C++ and HLSL code (requires clang-format)
cmake --build ./build/ALL --target FORMAT_CODE

# Generate shader validation configs from game logs (requires PowerShell)
cmake --build ./build/ALL --target generate_shader_configs
```

## Architecture Overview

### Manual packaging targets (detailed)

The project also provides a set of manual packaging targets that create distributable 7z packages or install the project into the AIO folder. These targets are useful when you want precise control over packaging (CI artifacts, local QA, or manual deployment).

Quick commands:

```bash
# Create the Core package (includes CORE features + plugin DLL)
cmake --build ./build/ALL --target Package-Core

# Create a manual AIO package (.7z) via install + tar
cmake --build ./build/ALL --target Package-AIO-Manual

# Create an individual feature package (name is sanitized from the feature folder)
cmake --build ./build/ALL --target Package-<Feature>

# Install into the AIO folder (installs to build/<preset>/aio)
cmake --build ./build/ALL --target AIO

# Alternatively use cmake --install to install to a custom prefix
cmake --install ./build/ALL --prefix <TARGET_DIR> # installs files according to CMake install() rules
```

Notes and behaviour:

- `Package-Core` collects everything marked as CORE and the built plugin into a temporary folder, then tars it to `dist/${PROJECT_NAME}-${UTC_NOW}.7z`.
- `Package-<Feature>` targets are generated per feature directory (non-CORE features). They create `${FEATURE}-${UTC_NOW}.7z` in `dist/`.
- `Package-AIO-Manual` performs an install to the AIO folder and then creates a single AIO archive. This is similar to the automated `AIO_ZIP_PACKAGE`, but wired as an explicit file-producing custom target (useful for CI reproducibility).
- `AIO` target runs `cmake --install` with the `aio` prefix so you can locally inspect the AIO folder layout without creating an archive.
- The install-based packaging uses the CMake `install()` rules defined near the top of `CMakeLists.txt` (the project installs `SKSE/Plugins`, copies `package/` and feature folders, and removes the Core placeholder). This makes manual installs and CI artifacts consistent with the runtime AIO layout.

Where to look in `CMakeLists.txt`:

- Manual packaging targets are defined in the "Manual packaging targets (Package-XXX)" section and create files under `${CMAKE_SOURCE_DIR}/dist`.
- The `install()` rules near the top of the file show what gets placed into the AIO layout when running `cmake --install`.

### Plugin Architecture

**Core Pattern**: Feature-driven modular system where each graphics enhancement is an independent `Feature` class that can be enabled/disabled at runtime.
Expand Down
39 changes: 20 additions & 19 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -1,26 +1,27 @@
# CodeRabbit AI Configuration

instructions: |
When reviewing PRs, please provide suggestions for:

1. **Conventional Commit Titles** (if not following https://www.conventionalcommits.org/ or
if the existing title does not describe the code changes):
Format: type(scope): description
Length: 50 characters limit for title, 72 for body
Style: lowercase description, no ending period
Examples:
- feat(vr): add cross-eye sampling
- fix(water): resolve flowmap bug
- docs: update shader documentation
reviews:
path_instructions:
- path: "**/*"
instructions: |
When reviewing PRs, please provide suggestions for:

2. **Issue References** (if PR fixes bugs or implements features):
Suggest adding appropriate GitHub keywords:
- "Fixes #123" or "Closes #123" for bug fixes
- "Implements #123" or "Addresses #123" for features
- "Related to #123" for partial implementations
1. **Conventional Commit Titles** (if not following https://www.conventionalcommits.org/ or
if the existing title does not describe the code changes):
Format: type(scope): description
Length: 50 characters limit for title, 72 for body
Style: lowercase description, no ending period
Examples:
- feat(vr): add cross-eye sampling
- fix(water): resolve flowmap bug
- docs: update shader documentation

Otherwise, use your standard review approach focusing on code quality.
2. **Issue References** (if PR fixes bugs or implements features):
Suggest adding appropriate GitHub keywords:
- "Fixes #123" or "Closes #123" for bug fixes
- "Implements #123" or "Addresses #123" for features
- "Related to #123" for partial implementations

reviews:
Otherwise, use your standard review approach focusing on code quality.
path_filters:
- "**/*.hlsl"
50 changes: 48 additions & 2 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ on:
- "vcpkg-configuration.json"
- ".gitmodules"
- "extern/**"
- "cmake/**"
- ".github/workflows/**"
- ".github/configs/**"

permissions:
contents: read
Expand All @@ -52,7 +55,7 @@ jobs:
if: ${{ github.event_name == 'pull_request_target' }}
outputs:
should-build: ${{ steps.changed-files.outputs.build_any_changed == 'true' || steps.changed-files.outputs.cpp_any_changed == 'true' || steps.changed-files.conclusion == 'failure' }}
hlsl-should-build: ${{ steps.changed-files.outputs.hlsl_any_changed == 'true' || steps.changed-files.conclusion == 'failure' }}
hlsl-should-build: ${{ steps.changed-files.outputs.hlsl_any_changed == 'true' || steps.changed-files.outputs.cmake_any_changed == 'true' || steps.changed-files.outputs.ci_any_changed == 'true' || steps.changed-files.conclusion == 'failure' }}
steps:
- uses: actions/checkout@v4
with:
Expand Down Expand Up @@ -86,6 +89,13 @@ jobs:
- 'vcpkg-configuration.json'
- '.gitmodules'
- 'extern/**'
cmake:
- 'CMakeLists.txt'
- 'CMakePresets.json'
- 'cmake/**'
ci:
- '.github/workflows/**'
- '.github/configs/**'
hlsl:
- '**.hlsl'
- '**.hlsli'
Expand Down Expand Up @@ -387,6 +397,37 @@ jobs:
with:
vcpkgJsonGlob: vcpkg.json

- name: Locate fxc.exe
if: steps.check-hlsl.outputs.skip != 'true'
id: find_fxc
shell: pwsh
run: |
# Try to find fxc.exe on PATH first
$fxcCmd = Get-Command -Name fxc.exe -ErrorAction SilentlyContinue
if ($fxcCmd) {
$fxcPath = $fxcCmd.Source
Write-Host "Found fxc.exe at $fxcPath"
Add-Content -Path $env:GITHUB_OUTPUT -Value "fxc_path=$fxcPath"
} else {
# Try known Windows SDK locations (x64)
$fxcPath = ''
$sdkRoot = 'C:\Program Files (x86)\Windows Kits\10\bin'
if (Test-Path $sdkRoot) {
$versions = Get-ChildItem -Path $sdkRoot -Directory | Sort-Object -Descending
foreach ($v in $versions) {
$candidate = Join-Path $v.FullName 'x64\fxc.exe'
if (Test-Path $candidate) { $fxcPath = $candidate; break }
}
}
if ($fxcPath -ne '') {
Write-Host "Found fxc.exe at $fxcPath"
Add-Content -Path $env:GITHUB_OUTPUT -Value "fxc_path=$fxcPath"
} else {
Write-Warning "fxc.exe not found in PATH or common SDK locations"
Add-Content -Path $env:GITHUB_OUTPUT -Value "fxc_path="
}
}

- name: Cache CMake build output
if: steps.check-hlsl.outputs.skip != 'true'
uses: actions/cache@v4
Expand Down Expand Up @@ -437,7 +478,12 @@ jobs:

- name: Validate shader compilation (${{ matrix.config.name }})
if: steps.check-hlsl.outputs.skip != 'true'
run: hlslkit-compile --shader-dir build/ALL/aio/Shaders --output-dir build/ShaderCache --config ${{ matrix.config.file }} --max-warnings 0 --suppress-warnings X1519
run: |
if [ -z "${{ steps.find_fxc.outputs.fxc_path }}" ]; then
echo "fxc.exe not found - shader validation requires fxc.exe. Set --fxc to a valid path or ensure fxc.exe is in PATH." >&2
exit 1
fi
hlslkit-compile --fxc "${{ steps.find_fxc.outputs.fxc_path }}" --shader-dir build/ALL/aio/Shaders --output-dir build/ShaderCache --config ${{ matrix.config.file }} --max-warnings 0 --suppress-warnings X1519
shell: bash

- name: Upload shader validation logs
Expand Down
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,6 @@
[submodule "extern/Streamline-DX12"]
path = extern/Streamline-DX12
url = https://github.com/NVIDIAGameWorks/Streamline.git
[submodule "extern/FidelityFX-SDK"]
path = extern/FidelityFX-SDK
url = https://github.com/MapleHinata/FidelityFX-SDK
5 changes: 5 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ repos:
additional_dependencies: ["prettier@3.1.0"]
files: \.(json|md|yml|yaml)$
exclude: ^(\.\/)?(extern|include|build|dist)\/
- repo: https://github.com/BlankSpruce/gersemi
rev: 0.22.3
hooks:
- id: gersemi
files: '(^CMakeLists.txt$|.*\\.cmake$)'
ci:
autofix_commit_msg: |
style: 🎨 apply pre-commit.ci formatting
Expand Down
20 changes: 20 additions & 0 deletions AI-INSTRUCTIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,26 @@ SKSE plugin providing advanced DirectX 11 graphics modifications for Skyrim SE/A
- **Shader Test**: `hlslkit-compile --shader-dir [target]` (install via pip first)
- **Feature Access**: `globals::features::*` namespace

### Build Options

**Runtime Presets**: `ALL` (universal), `SE`, `AE`, `VR`, `PRE-AE`, `FLATRIM`, `ALL-TRACY`

**CMake Options** (set in user preset):

- `AUTO_PLUGIN_DEPLOYMENT=ON` - Auto-copy to `CommunityShadersOutputDir`
- `ZIP_TO_DIST=ON` (default) - Create individual feature 7z packages
- `AIO_ZIP_TO_DIST=ON` (default) - Create all-in-one 7z package
- `TRACY_SUPPORT=ON` - Enable Tracy profiler integration

### Custom CMake Targets

**Quick targets** (common):

- `PREPARE_AIO`, `prepare_shaders`, `COPY_SHADERS`, `AIO_ZIP_PACKAGE`
- `FORMAT_CODE`, `generate_shader_configs`

For full details about manual packaging targets (Package-Core, Package-AIO-Manual, Package-<Feature>, AIO) and example workflows, see the "Manual packaging targets (detailed)" section in `.claude/CLAUDE.md` to avoid duplication.

### AI Assistant Role

**Act as an experienced graphics programming and Skyrim modding expert.**
Expand Down
Loading