Skip to content

Releases: RemixProjGroup/camera-proxy

v0.3.0

26 Feb 18:45
edbf13c

Choose a tag to compare

v0.3.0

🚀 Highlights

This release merges the shaders branch into mainline, bringing production shader tooling, Remix API integration, advanced lighting systems, and a completely redesigned menu interface.

  • Shader inspection & dumping - Bulk shader export, assembly search, and disassembly viewer
  • Remix API integration - Direct Remix runtime API support with custom light authoring
  • Advanced lighting system - Shader lighting metadata parsing, deterministic light forwarding, custom light animations
  • Complete menu redesign - Professional multi-tab interface with Camera, Shaders, Lights, Remix API, and About sections
  • Custom Remix API - Programmable light control and raster/Remix compositing modes
  • Barnyard profile - Hybrid SetTransform interception for mixed-pipeline engines
  • Enhanced overlay - Scalable UI, JetBrains Mono/Roboto fonts, modern theme

The shaders branch transforms the camera proxy from a matrix forwarding tool into a comprehensive RTX Remix development and debugging platform.


✨ Added & Improved

Shader Inspection & Analysis

New Shaders tab with comprehensive tooling:

  • Shader viewer - Live display of active vertex/pixel shaders with disassembly
  • Bulk shader dump - Export all captured shaders with one click
  • Assembly search - Filter shaders by keyword (dcl, def, mov, tex, etc.) with configurable scopes
  • Search scopes - Target specific instruction types or shader sections
  • Shader metadata - View usage counts, register layouts, and constant dependencies

Enables rapid shader analysis for engine reverse engineering.

Remix API Integration

Direct access to Remix runtime API:

  • remixapi integration - Loads and initializes Remix API on startup
  • API status monitoring - Real-time connection status and error reporting
  • Custom API tab - Dedicated interface for Remix API operations
  • Optional logging - remix_api.log diagnostics for troubleshooting
  • Per-frame API calls - Synchronized draw-time and present-phase operations

Foundation for advanced Remix integration features.

Advanced Lighting System

Shader-driven light metadata forwarding:

  • Deterministic light parsing - Extract lighting data from shader constants
  • Custom light authoring - Create, edit, and manage custom light sources
  • Light animations - Keyframe-based light position/color/intensity animations
  • Shader lighting overrides - Override detected lights with custom configurations
  • Present-phase light injection - Dynamic light creation at present time
  • Ambient radius defaults - Configurable ambient light falloff (default 1.0)
  • Light import/export - Save and load custom light configurations

Enables full lighting control for Remix scenes.

Raster/Remix Compositing

Experimental blend modes between raster and path-traced output:

  • Opt-in fullscreen blend - Configurable via [RasterBlend] INI section
  • Multiple blend modes - Control how raster and Remix layers combine
  • Per-scene tuning - Balance between original raster and path-traced lighting
  • Runtime toggle - Enable/disable compositing without restart

Useful for partial Remix integration or artistic effects.

Complete Menu Redesign

Professional multi-tab overlay interface:

  • Tab organization:

    • Camera - Per-matrix panels with source metadata and custom projection preview
    • Shaders - Shader viewer, search, and bulk dump controls
    • Lights - Custom light management with animation tools
    • Remix API - API status, configuration, and advanced controls
    • About - Comprehensive usage guide and matrix-hunting tutorial
    • Constants - Shader register viewer (existing, now organized)
    • Memory Scanner - Background scanning (existing, now organized)
    • Logs - Real-time log stream (existing, now organized)
  • Typography overhaul:

    • JetBrains Mono - Primary monospace font for code/data
    • Roboto Regular + Bold - UI text with clear hierarchy
    • Improved readability at all scales
  • Theme improvements:

    • Modern color palette with better contrast
    • Consistent spacing and alignment
    • Visual hierarchy with section headings
    • Centered non-clickable button headers for organization
  • Camera tab rework:

    • Separate panels for World, View, Projection
    • Custom projection preview with parameters
    • Source metadata display (register, confidence, frame)
  • About tab:

    • Step-by-step matrix hunting guide
    • Example register layouts for known games
    • Best practices and troubleshooting tips
    • Makes Camera tab default on menu open

Game Profile: Barnyard (2006)

New hybrid profile for mixed-pipeline engines:

  • Intercepts native SetTransform(VIEW/PROJECTION) calls
  • Captures and re-forwards at draw time for synchronization
  • Shader-based WORLD detection from constants
  • BarnyardForceWorldFromC0 - Force c0-c3 as WORLD
  • BarnyardUseGameSetTransformsForViewProjection - Enable interception

Enhanced Matrix Detection

Expanded detection capabilities:

  • Transpose probing (ProbeTransposedLayouts=1) - Check transposed layouts
  • Inverse-view support (ProbeInverseView=1) - Derive view from inverse-view constants
  • Improved structural validation - Better disambiguation between View and inverse candidates
  • Runtime override reset - F7 hotkey returns registers to auto-detect
  • Per-matrix register forcing - Granular control over detection

Hotkey System

Single-key controls that work even with input conflicts:

  • F10 - Toggle overlay (HotkeyToggleMenuVK)
  • F9 - Pause/unpause emission (HotkeyTogglePauseVK)
  • F8 - Force emit matrices once (HotkeyEmitMatricesVK)
  • F7 - Reset register overrides (HotkeyResetMatrixOverridesVK)

All keys configurable via VK codes in INI.

SetTransform Compatibility

Modes for engines with mixed transform behavior:

  • SetTransformBypassProxyWhenGameProvides=1 - Detect and skip double-forwarding
  • SetTransformRoundTripCompatibilityMode=1 - Round-trip for strict API compliance
  • Hybrid interception for partial fixed-function usage

Memory Scanner

Runtime matrix pattern discovery:

  • Background process memory scanning
  • Configurable confidence thresholds
  • Quick-assign to World/View/Projection
  • Minimal overhead with smart scanning

Matrix Emission Improvements

  • Avoid identity emission - Skip forwarding identity matrices
  • Retain last-known state - Persist valid matrices across frames
  • Combined MVP/VP/MV fixes - Improved decomposition math

⚙️ Default Configuration Behavior

All v0.2.0 defaults remain unchanged.

New defaults in v0.3.0:

  • ProbeTransposedLayouts=1
  • ProbeInverseView=0
  • ImGuiScalePercent=100
  • SetTransformBypassProxyWhenGameProvides=0
  • SetTransformRoundTripCompatibilityMode=0

Experimental features (disabled by default):

  • Shader bulk dumping (manual trigger)
  • Remix API custom lights
  • Raster/Remix compositing
  • Memory scanner
  • Light animations

🐛 Known Issues

Same issues from v0.2.0 remain:

  • Combined MVP decomposition requires testing
  • Custom projection is experimental
  • Some games may need manual register overrides

New considerations in v0.3.0:

  • Remix runtime fallback distant lights or custom remix api lights appear to follow the camera
  • Custom lights are experimental - validate visually
  • Raster/Remix compositing may not work with all render paths
  • Shader dumping can generate large file sets
  • Memory scanner may impact performance on large games

🙌 Credits

  • mencelot
  • cobalticarus92
  • Kim2091

v0.2.0

14 Feb 12:32
0120a47

Choose a tag to compare

v0.2.0

🚀 Highlights

This release merges the experimental branch into the mainline camera proxy flow.

  • Deterministic DX9 matrix reconstruction
  • Stricter structural validation
  • Reliable fixed-function transform emission
  • Expanded fallback and override controls for RTX Remix workflows

The transform pipeline is now more predictable, configurable, and stable under mixed shader upload patterns.


✨ Added & Improved

Deterministic Matrix Classification

  • Structural classification of World, View, and Projection from shader constant uploads
  • Enabled via AutoDetectMatrices=1
  • Stricter validation logic for projection and view matrices
  • Reduced ambiguity in register-based detection

Draw-Time Fixed-Function Transform Emission

  • Emits SetTransform for:
    • D3DTS_WORLD
    • D3DTS_VIEW
    • D3DTS_PROJECTION
  • Keeps Remix-visible transform state synchronized with actual draw calls
  • Controlled via EmitFixedFunctionTransforms=1

Optional Combined-MVP Decomposition Fallback

New fallback path for engines that upload a combined matrix instead of separate W/V/P.

  • EnableCombinedMVP
  • CombinedMVPRequireWorld
  • CombinedMVPAssumeIdentityWorld
  • CombinedMVPForceDecomposition
  • CombinedMVPLogDecomposition

Disabled by default. Intended for edge-case engines.

Experimental Custom Projection System

  • Manual projection matrix override mode
  • Auto-generated projection mode
  • Override support for detected and combined-MVP projection paths

Disabled by default.

Game Profile Handling

  • MetalGearRising
  • DevilMayCry4 / DMC4

Profiles can remain empty for generic structural detection with optional register overrides.

Runtime UX Improvements

  • Overlay scaling improvements
  • Single-key hotkeys for:
    • Menu toggle
    • Pause
    • Emit
    • Reset

⚙️ Default Configuration Behavior

  • EmitFixedFunctionTransforms=1
  • AutoDetectMatrices=1

Disabled by default:

  • Combined-MVP fallback
  • Experimental projection overrides

Stable behavior is preserved unless advanced features are explicitly enabled.


🧭 Migration Notes

  • camera_proxy.ini is now the authoritative configuration source.
  • Use profile and fallback flags to control behavior.
  • Experimental branch documentation is no longer applicable for v0.2.0.

🙌 Credits

  • mencelot — Original DMC4 camera proxy foundation
  • cobalticarus92 — Camera proxy project development

v0.1.1

12 Feb 12:19
6d185f7

Choose a tag to compare

What's Changed

  • Added richer matrix source tracking (sourceLabel + extraction register) and updated Camera tab source rendering so World/View/Projection/MVP now show clearer origin/shader/register details.
  • Implemented camera-tab register pinning for World/View/Projection with persistence back to camera_proxy.ini (direct replacement for doing this via Heuristics tab controls).
  • Updated capture paths to tag matrix origin correctly (configured register detection, auto-detect stable promotions, MVP-derived view/projection, memory scanner assignments), improving displayed source provenance and register attribution.
  • Expanded the Heuristics tab diagnostics to show stable candidates plus ranked VIEW/PROJECTION candidates.

New Contributors

Full Changelog: v0.1.0...v0.1.1

[Experimental] Camera Proxy for RTX Remix v0.1.0

11 Feb 17:25
1f2844a

Choose a tag to compare

📸 Camera Proxy for RTX Remix v0.1.0

Initial release of Camera Proxy for RTX Remix.

Extracts World, View, and Projection matrices from shader constant registers and emits fixed-function SetTransform() calls for RTX Remix compatibility with dx9.0c titles*

Features

  • Shader constant interception (SetVertexShaderConstantF)

  • Manual register configuration via camera_proxy.ini

  • Heuristic-based matrix detection

  • Stability filtering and candidate scoring

  • RTX Remix runtime chaining

  • Fixed-function transform emission

  • Auto Detection of camera matrices - Experimental ⚠️

  • Experimental memory scanner ⚠️


Installation

  1. Rename Remix's d3d9.dll to d3d9_remix.dll (if using Remix).

  2. Place this d3d9.dll in the game directory.

  3. Configure camera_proxy.ini.


Notes

  • Most dx9.0c or shader-dependant games may not work "right out of the box" when using the Auto Detection feature since this tool is meant for analyzing shader structures and interpreting matrices manually. Initial results might vary per game and might not look correct at all.

  • Some games use VP or MVP instead of pure view matrices so that is something to keep in mind

  • Fixed-function transform emission does not disable programmable shaders.