Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
3ecf223
docs: add Phase 1 AI sharpness/resolution design spec
opariffazman Jun 23, 2026
60cb6a3
docs: self-review fixes — defer present-path minification from Phase 1
opariffazman Jun 23, 2026
695238c
docs: Phase 1 AI sharpness/resolution implementation plan
opariffazman Jun 23, 2026
00b4865
docs: plan Task 2 — fully-DRY VFX path resolver (refactor aigs to share)
opariffazman Jun 23, 2026
eed43c5
feat(shim): real measured fps in cos_get_status (replaces 30.0 stub)
opariffazman Jun 23, 2026
d5e4e52
fix(shim): correct FpsCounter window semantics + test expectation (re…
opariffazman Jun 23, 2026
292f630
refactor(shim): shared VFX SDK path resolver (green screen + new effe…
opariffazman Jun 23, 2026
e49135d
feat(shim): Maxine VFX Artifact Reduction effect
opariffazman Jun 23, 2026
8ec212c
fix(shim): define ArtifactReduction selector in-source, drop external…
opariffazman Jun 23, 2026
dad29bf
feat(shim): Maxine VFX Super Resolution effect (1.5x/2x)
opariffazman Jun 23, 2026
bbaca8a
fix(shim): destroy CUDA stream on CreateEffect failure in SuperRes/Ar…
opariffazman Jun 23, 2026
63b0246
feat(shim): ABI — AR/SR params + capability gates (CosParams/CosCaps …
opariffazman Jun 23, 2026
76ffe9d
feat(shim): run Artifact Reduction (first) + Super Resolution (last) …
opariffazman Jun 23, 2026
8c0a999
feat(core): AR/SR params, capability gates, persistence, live push
opariffazman Jun 23, 2026
c1dddf1
feat(app): Artifact Reduction + Super Resolution UI, 4K frame buffer
opariffazman Jun 23, 2026
51e4e9a
fix: Super-res scale combo is factor-only (1.5x/2x); toggle owns on/off
opariffazman Jun 23, 2026
8807c7f
docs: record real VFX 1.2.0.0 NGC feature catalog + verify-before-cod…
opariffazman Jun 23, 2026
76b28f8
feat(capture): select highest-fps native camera mode (+ capture_probe…
opariffazman Jun 23, 2026
ed392b5
Merge branch 'feat/ai-sharpness-resolution' into feat/ai-sharpness-vsr
opariffazman Jun 24, 2026
d3c4911
docs(#15): VSR-only resume plan + gitignore .env
opariffazman Jun 24, 2026
1e111aa
refactor(#15): remove dead Artifact Reduction effect
opariffazman Jun 24, 2026
0173379
feat(#15): rewrite SuperRes against real VSR API (T2)
opariffazman Jun 24, 2026
554ff64
feat(#15): VSR mode/quality through the stack — ABI, capture, MVVM, U…
opariffazman Jun 24, 2026
7fadde8
feat(#15): bundle VSR + re-scope spec (T8, T0)
opariffazman Jun 24, 2026
5319823
fix(#15): SR before green screen + drop upscale, clamp stale mode
opariffazman Jun 25, 2026
9570a4a
ci: prefer x64 .NET on PATH (x86 dotnet shadows the SDK)
opariffazman Jun 25, 2026
99ec921
ci: prefer x64 .NET on PATH in release workflow too
opariffazman Jun 25, 2026
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
10 changes: 10 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,16 @@ jobs:
- name: Checkout
uses: actions/checkout@v4

# The runner host has an x86 .NET (no SDK) at "C:\Program Files (x86)\dotnet"
# that can shadow the x64 SDK on PATH -> `dotnet build` fails "No .NET SDKs were
# found". Prepend the x64 install so the SDK wins for all later steps.
- name: Prefer x64 .NET on PATH
shell: pwsh
run: |
if (Test-Path "C:\Program Files\dotnet\dotnet.exe") {
"C:\Program Files\dotnet" | Out-File -FilePath $env:GITHUB_PATH -Append -Encoding utf8
}

- name: Build native shim (SDK config, x64 Release)
shell: pwsh
run: |
Expand Down
10 changes: 10 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,16 @@ jobs:
- name: Checkout
uses: actions/checkout@v4

# The runner host has an x86 .NET (no SDK) at "C:\Program Files (x86)\dotnet"
# that can shadow the x64 SDK on PATH -> `dotnet build` (inside build-installer.ps1)
# fails "No .NET SDKs were found". Prepend the x64 install for all later steps.
- name: Prefer x64 .NET on PATH
shell: pwsh
run: |
if (Test-Path "C:\Program Files\dotnet\dotnet.exe") {
"C:\Program Files\dotnet" | Out-File -FilePath $env:GITHUB_PATH -Append -Encoding utf8
}

# Self-hosted runner runs as NETWORK SERVICE, but _work is owned by Administrators,
# so git's dubious-ownership guard blocks `gh release create --verify-tag` (which
# shells out to git). Trust the workspace under THIS account's gitconfig — an
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
[Bb]in/
[Oo]bj/
dist/
.env
*.user
.vs/
*.suo
Expand Down
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ Three projects: `src/CameraOnScreen.Core` (pure .NET 8 logic, no WinUI/Win32 typ
## Maxine SDKs (not in repo; redistribution governed by the 2025 NVIDIA Software License + Open/Community Model Licenses)

- **VFX** green screen (`nvvfxgreenscreen`) and **AR** eye contact (gaze) are separate NVIDIA products. No import `.lib` — link via the SDKs' proxy stubs (`nvVideoEffectsProxy.cpp`, `nvCVImageProxy.cpp`, `nvARProxy.cpp`) compiled into the shim. Models are prebuilt per-arch TensorRT engines; the bundle ships **sm75/86/89/100** (Turing/Ampere/Ada/Blackwell) — fetched from NGC by arch. **sm86 is the only arch verified on real silicon (RTX 3090); the others ship best-effort and grey out gracefully if an engine fails to deserialize.**
- **VFX feature catalog — verify availability + the REAL API BEFORE coding an effect (cost ~6 wasted tasks once).** Authoritative installable set: `<VFX_SDK>\features\install_feature.ps1 -list_features` (NGC key via `NGC_CLI_API_KEY`). VFX 1.2.0.0 = `aigsrelighting, backgroundblur, denoising, greenscreen, relighting, transfer, upscale, videosuperres` (8). **There is NO `nvvfxartifactreduction`** — it's in the script's help text but NOT the catalog (removed since older VFX SDKs); coding against it = a dead, always-unavailable effect. **Super Resolution = NGX VSR** (`nvvfxvideosuperres`; ships `nvngx_vsr.dll`, NOT a per-arch TRT engine — "no models" is normal): real header `features\nvvfxvideosuperres\include\nvVFXVideoSuperRes.h` → selector `NVVFX_FX_VIDEO_SUPER_RES "VideoSuperRes"` + param `NVVFX_QUALITY_LEVEL` (NOT `"SuperRes"`/`NVVFX_MODE`/scale-from-dims). A feature's real selector + params + image format live ONLY in its per-feature header (`features\<name>\include\*.h`), installed on demand — never infer them; if the NGC key is the gate, get it up front.
- **App-relative discovery** (`paths.{h,cpp}` `ShimModuleDir()` via `GetModuleHandleExW(FROM_ADDRESS)`, CWD-independent): both resolvers gain an `<app>\maxine\` tier so a shipped app finds the runtimes beside the exe with no env vars. Single shared co-versioned `maxine\` root (one TRT/CUDA runtime, dispatcher + feature DLLs, `models\vfx` + `models\ar`).
- **Stage + Bundler.** Two steps now (dispatcher + per-feature-DLL SDK layout): (1) `scripts/assemble-maxine-stage.ps1` curates a co-versioned flat **stage** from the VFX 1.2.0.0 + AR 1.1.1.0 SDK trees (shared DLLs from VFX; AR dispatcher + 3 gaze feature DLLs from AR; the 6 license files; multi-arch engines via `scripts/fetch-maxine-engines.ps1`, NGC key). (2) `scripts/bundle-maxine.ps1 -OutDir X -MaxineStage <stage>` PRUNES the stage to the manifest's verified load-closure (`native/shim/bundle/maxine-manifest.psd1`; the 19-DLL `Dlls` list was produced by `native/shim/smoke/trace_closure.cpp`) + model globs + required `LicenseFiles`, into `<output>\maxine\`. Co-version is enforced at stage assembly, not by the bundler. `trace_closure`/`bundle_probe` re-run against the produced bundle (`COS_*` unset → both effects load) is the verify gate. End-user need: an **RTX GPU + recent driver**; no NVIDIA account or SDK download.
- **Installer** (`scripts/bundle-maxine.ps1` consumer): `scripts/build-installer.ps1 -MaxineStage <stage>`
Expand Down
Loading
Loading