chore(conductor): Add new track 'Custom Shader and Window Frame Support'

This commit is contained in:
2026-03-09 21:37:57 -04:00
parent e3fd58a0c8
commit fe0f349c12
5 changed files with 87 additions and 3 deletions

View File

@@ -48,6 +48,11 @@ This file tracks all major tracks for the project. Each track has its own detail
*Link: [./tracks/markdown_highlighting_20260308/](./tracks/markdown_highlighting_20260308/)*
*Goal: Add rich text rendering with GFM support and syntax highlighting for PowerShell, Python, and JSON/TOML in read-only message and log views.*
5. [x] **Track: NERV UI Theme Integration** (Archived 2026-03-09)
6. [ ] **Track: Custom Shader and Window Frame Support**
*Link: [./tracks/custom_shaders_20260309/](./tracks/custom_shaders_20260309/)*
---
### C/C++ Language Support
@@ -116,9 +121,6 @@ This file tracks all major tracks for the project. Each track has its own detail
### Completed / Archived
- [x] **Track: NERV UI Theme Integration** (Archived 2026-03-09)
### Phase 3: Early Tracks (Archived 2026-03-08)
- [x] **Track: True Parallel Worker Execution (The DAG Realization)**
- [x] **Track: Deep AST-Driven Context Pruning (RAG for Code)**

View File

@@ -0,0 +1,5 @@
# Track custom_shaders_20260309 Context
- [Specification](./spec.md)
- [Implementation Plan](./plan.md)
- [Metadata](./metadata.json)

View File

@@ -0,0 +1,8 @@
{
"track_id": "custom_shaders_20260309",
"type": "feature",
"status": "new",
"created_at": "2026-03-09T00:00:00Z",
"updated_at": "2026-03-09T00:00:00Z",
"description": "Implement proper custom shader support for customizable post-process rendering and background to the gui's imgui. Figure out if we can make the default os window frame bar overloaded with our own to have it work with the theme. ."
}

View File

@@ -0,0 +1,35 @@
# Implementation Plan: Custom Shader and Window Frame Support
## Phase 1: Investigation & Architecture Prototyping
- [ ] Task: Investigate `imgui-bundle` and Dear PyGui capabilities for injecting raw custom shaders (OpenGL/D3D11) vs extending ImDrawList batching.
- [ ] Task: Investigate Python ecosystem capabilities for overloading OS window frames (e.g., `pywin32` for DWM vs ImGui borderless mode).
- [ ] Task: Draft architectural design document (`docs/guide_shaders_and_window.md`) detailing the chosen shader injection method and window frame overloading strategy.
- [ ] Task: Conductor - User Manual Verification 'Phase 1: Investigation & Architecture Prototyping' (Protocol in workflow.md)
## Phase 2: Custom OS Window Frame Implementation
- [ ] Task: Write Tests: Verify the application window launches with the custom frame/borderless mode active.
- [ ] Task: Implement: Integrate custom window framing logic into the main GUI loop (`src/gui_2.py` / Dear PyGui setup).
- [ ] Task: Write Tests: Verify standard window controls (minimize, maximize, close, drag) function correctly with the new frame.
- [ ] Task: Implement: Add custom title bar and window controls matching the application's theme.
- [ ] Task: Conductor - User Manual Verification 'Phase 2: Custom OS Window Frame Implementation' (Protocol in workflow.md)
## Phase 3: Core Shader Pipeline Integration
- [ ] Task: Write Tests: Verify the shader manager class initializes without errors and can load a basic shader program.
- [ ] Task: Implement: Create `src/shader_manager.py` (or extend `src/shaders.py`) to handle loading, compiling, and binding true GPU shaders or advanced Faux-Shaders.
- [ ] Task: Write Tests: Verify shader uniform data can be updated from Python dictionaries/TOML configurations.
- [ ] Task: Implement: Add support for uniform passing (time, resolution, mouse pos) to the shader pipeline.
- [ ] Task: Conductor - User Manual Verification 'Phase 3: Core Shader Pipeline Integration' (Protocol in workflow.md)
## Phase 4: Specific Shader Implementations (CRT, Post-Process, Backgrounds)
- [ ] Task: Write Tests: Verify background shader logic can render behind the main ImGui layer.
- [ ] Task: Implement: Add "Dynamic Background" shader implementation (e.g., animated noise/gradients).
- [ ] Task: Write Tests: Verify post-process shader logic can capture the ImGui output and apply an effect over it.
- [ ] Task: Implement: Add "CRT / Retro" (NERV theme) and general "Post-Processing" (bloom/blur) shaders.
- [ ] Task: Conductor - User Manual Verification 'Phase 4: Specific Shader Implementations' (Protocol in workflow.md)
## Phase 5: Configuration and Live Editor UI
- [ ] Task: Write Tests: Verify shader and window frame settings can be parsed from `config.toml`.
- [ ] Task: Implement: Update `src/theme.py` / `src/project_manager.py` to parse and apply shader/window configurations from TOML.
- [ ] Task: Write Tests: Verify the Live UI Editor panel renders and modifying its values updates the shader uniforms.
- [ ] Task: Implement: Create a "Live UI Editor" Dear PyGui/ImGui panel to tweak shader uniforms in real-time.
- [ ] Task: Conductor - User Manual Verification 'Phase 5: Configuration and Live Editor UI' (Protocol in workflow.md)

View File

@@ -0,0 +1,34 @@
# Specification: Custom Shader and Window Frame Support
## Overview
Implement proper custom shader support for post-process rendering and backgrounds within the Manual Slop GUI (using Dear PyGui/imgui-bundle). Additionally, investigate and implement a method to overload or replace the default OS window frame to ensure it matches the application's theme.
## Functional Requirements
- **Shader Pipeline:**
- Support a hybrid approach: true GPU shaders (if feasible within the Python/imgui-bundle constraints) alongside extensions to the existing ImDrawList "faux-shader" batching system.
- Implement rendering for a variety of shader effects, including:
- CRT / Retro effects (scanlines, curvature, chromatic aberration for the NERV theme).
- Post-Processing (bloom, blur, color grading, vignetting).
- Dynamic Backgrounds (animated noise, gradients, particles).
- **Custom Window Frame:**
- Overload or replace the default OS window frame to match the active UI theme.
- Utilize the most convenient approach for the Python ecosystem (e.g., borderless window mode with an ImGui-drawn custom title bar, or accessible native hooks).
- Ensure standard window controls (minimize, maximize, close, drag to move) remain fully functional.
- **Configuration & Tooling:**
- **Theme TOML:** Allow users to define shader parameters and window frame styles within existing `config.toml` or theme configuration files.
- **Live UI Editor:** Provide an in-app GUI panel to tweak shader uniforms and window settings in real-time.
## Non-Functional Requirements
- **Performance:** Shader implementations must not severely degrade GUI performance or responsiveness. Target 60 FPS for standard operations.
- **Maintainability:** Ensure the shader pipeline integrates cleanly with the existing event-driven metrics and theme architecture (`src/theme_*.py`, `src/gui_2.py`).
## Acceptance Criteria
- [ ] A dynamic background shader can be successfully loaded and displayed behind the main ImGui workspace.
- [ ] A post-processing shader (e.g., CRT scanlines or bloom) can be applied over the ImGui render output.
- [ ] The default OS window frame is successfully replaced or styled to match the selected theme, with working title bar controls.
- [ ] Shader and window settings can be configured via a TOML file.
- [ ] A "Live UI Editor" panel is available to adjust shader variables in real-time.
## Out of Scope
- Building a full node-based shader graph editor from scratch.
- Cross-platform native window hook wrappers (if not conveniently supported by existing Python libraries, we will fallback to pure ImGui borderless implementation).