Implement 4-View Foveated ISR Pipeline with Game Integration Template#3
Draft
Implement 4-View Foveated ISR Pipeline with Game Integration Template#3
Conversation
…tion Co-authored-by: mutars <4204406+mutars@users.noreply.github.com>
Co-authored-by: mutars <4204406+mutars@users.noreply.github.com>
Co-authored-by: mutars <4204406+mutars@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Add design specification for 4-view foveated ISR pipeline
Implement 4-View Foveated ISR Pipeline with Game Integration Template
Jan 8, 2026
mutars
requested changes
Jan 8, 2026
|
|
||
| if (g_framework->is_ready()) { | ||
| auto vr = VR::get(); | ||
| vr->m_engine_frame_count++; |
Owner
There was a problem hiding this comment.
@copilot you need to dig more into frame lifecyle, and ideally you want to gram frame from underal engine directly, as this was done mainly for unknown engines, when you do that you won't need to worry if engine is one frame nehind or not
Author
There was a problem hiding this comment.
Updated the implementation to read the frame counter directly from Unreal Engine's GFrameNumber global variable instead of manually incrementing. This ensures proper frame lifecycle synchronization and eliminates the risk of being one frame behind.
The changes include:
- Added
getGFrameNumberAddr()pattern scanning function inmemory/offsets.h - Added
GFrameNumberpointer declaration in SDK structures - Modified
ExampleUERendererModule::onBeginRender()to read fromGFrameNumberdirectly - Falls back to manual increment if
GFrameNumberisn't found (for unknown engines) - Updated documentation to explain the importance of engine-specific frame handling
Commit: 0176e9f
For Unreal Engine integrations, read the frame counter directly from the engine's GFrameNumber global variable instead of manually incrementing. This ensures perfect synchronization with the engine's frame lifecycle and avoids being one frame behind or out of sync. Falls back to manual increment for unknown engines. Co-authored-by: mutars <4204406+mutars@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implementation Plan for 4-View Foveated ISR Pipeline
Phase 1: Core Foveated Rendering Components ✅
src/mods/foveated/directory structureStereoEmulator.hpp- Manages 4 emulated views with projection/frustum dataStereoEmulator.cpp- Implementation of StereoEmulatorViewInjector.hpp- Hooks D3D12 viewport/RT calls to redirect to atlasViewInjector.cpp- Implementation of ViewInjectorFoveatedAtlas.hpp- Double-height render target for 4-view outputFoveatedAtlas.cpp- Implementation of FoveatedAtlasVisibilityCache.hpp- Shares culling results between foveal/peripheral pairsVisibilityCache.cpp- Implementation of VisibilityCachePhase 2: Example Game Integration Template ✅
src/games/ExampleUE/directory structureExampleUEEntry.h- Mod entry pointExampleUEEntry.cpp- Entry point implementationExampleUERendererModule.h- Frame/render tick hooksExampleUERendererModule.cpp- Renderer module implementation with proper UE frame syncExampleUECameraModule.h- View/projection matrix hooksExampleUECameraModule.cpp- Camera module implementationsrc/games/ExampleUE/memory/offsets.h- Pattern-based offset resolution including GFrameNumbersrc/games/ExampleUE/sdk/ExampleUESDK.h- Reversed engine structures including frame counterPhase 3: Build System Integration ✅
Phase 4: Validation ✅
Summary
Successfully implemented complete 4-View Foveated ISR Pipeline with:
GFrameNumberdirectly from Unreal Engine for perfect frame synchronizationOriginal prompt
I'll analyze the
mutars/acsvrrepository to understand the integration pattern, then provide a condensed, actionable design specification. Now I have a clear understanding of theacsvrintegration pattern. Let me create a condensed, agent-friendly specification document with the example integration folder structure.4-View Foveated ISR Pipeline - Design Specification
Requirements
Prerequisites
vrframeworkas submodule/dependencyFolder Structure for Game Integration
Architecture (Flat)
Core Components
1. StereoEmulator
Manages 4 emulated views with projection/frustum data.
2. ViewInjector
Hooks D3D12 viewport/RT calls to redirect to atlas.
3. FoveatedAtlas
Double-height render target for 4-view output.