OpenGL3DVision Wrapper Documentation

### Welcome

Welcome to the official documentation for "OpenGL3DVision" wrapper. For the latest news please visit: 3DSurroundGaming.com

# New in Version 6.12

This is a MAJOR Release with 2 weeks+ in testing to "squash all bugs". This doesn't mean some of them might not still linger around!

- New Features: - Changed from using Nvidia 3D Vision Automatic to Nvidia 3D Vision Direct. - Nvidia 3D Vision Direct: Gained an additional 10 FPS in 3D vs 3D Vision Automatic Mode. - Nvidia 3D Vision Direct: Fixed a crash and locking of the whole render-pipeline (that appeared when using 3D Vision Automatic Mode). - Nvidia 3D Vision Direct: Simplified rendering loop. The backbuffer doesn't need to be 2xWidth anymore. Less instructions are executed now, as well, and wrapper memory allocation is smaller. - Nvidia 3D Vision Direct: The Nvidia 3D Vision Overlay(s) is(are) now displayed correctly. (Previously they were cut or missing). - New Predominant Eye Rendering Mechanism:
  - - Added support to render the Stereo Frame by maintaing one eye (Left or Right) as it is and instead offseting the other one based on separation + convergence.
  - - Supported modes for predominant eye: Left, Right, Mono.
  - - Left Dominant Eye: No stereo offset is added to the left eye. Only the left eye is calculated.
  - - Right Dominant Eye: No stereo offset is added to the right eye. Only the left eye is calculated. Implementatio is exactly like the one in "Deus Ex: Mankind Divided". This method allows you to perfectly AIM in 3D Shooters when you look down the gun's iron-sight.
  - - Mono Dominant Eye: Default Nvidia 3D Vision Automatic approach, where each eye is translated left/right from the Monoscopic Camera.
  - Added ability to Reset/Reinitialise the Wrapper Renderer by pressing CTRL + F10. Before doing this, CTRL + T to deactivate 3D Vision. Also, BE patient as it takes some time to do it! It doesn't work in all Apps, but in 80% of them it works! - Added ability to switch between Reshade's Depth3D and Geometry 3D Mode by pressing CTRL + F11. In order for this to work, Depth3D must be configured with OpenGL-3D Vision wrapper in the ini file and must be present in next to the wrapper. - Added ability to chose between Geometry 3D and Depth 3D at start-up (via the ini file flag).
- Updates: - Updated the ability to Deactivate 3D Vision (CTRL+T) as follows:
  - - When 3D Vision is deactivated, no stereo correction will be made and the 2D (mono) image will be displayed.
  - - When 3D Vision is deactivated, only one buffer will be displayed instead of both L/R buffers side-by-side.
  - Improvements in the Key Handler. Detection of pressing keys should be much more responsive now!

# New in Version 5.0 - Internal release only

- New Features: - Added ability to load Reshade library and insert post process effects. - Memory hack in Reshader library to hook only the OpenGL context and not the DirectX one as well. - Memory hack in Reshader library to disable calling the wglSwapBuffers() from the System32/opengl32.dll library as we present the results in the DirectX9 context. - Added special rendering method that enables usage of Depth3D Reshade Shader (by BlueSkyDefender). See "EnableCompatibilityMode3D" in "3DVisionWrapper.ini" - Added special key combination [Ctrl + F10] to re-initialise/re-generate the renderer. !!! Works only in Window Mode. In exclusive fullscreen will HALT the app/driver !!! - Cleaned up and removed some deprecated options in 3DVisionWrapper.ini.

# New in Version 4.25

- Updates: - Extended the Shortcut Keys to allow passing of .xyzw parameters on key press.

# New in Version 4.19.19

- Updates: - Fixed a bug that prevented the wrapper from working in Windows 7. - Fixed various bugs in the Shortcut Key Handler. - Minor improvements to the rendering pipeline.

# New in Version 4.19

- New Features: - Massive changes and complete RE-WRITE of the Stereo Rendering Pipeline. Should remove any latency introduced by the wrapper. - Added Unity 5 Renderer Compatibility. - Added ability for fullscreen support in Windows 10 for Single GPU configurations. - Various other improvements
- Updates: - Improvements regarding the Window Handler.

# New in Version 3.67

- New Features: - Wrapper is now UNIFIED. One version for both development and release modes. - Added support to change a shader based on a vertex+pixel shader checksum. - Implemented full support for Pixel Shader code injection. - Added support for Xbox360 controller for key bindings. - Added Resolution and Aspect Ratio access in all shaders. - Added wildcard for sending custom paramters to shaders.
- Updates: - Lots of improvements in the shader manager and shader dummping/swapping. - Various improvements regarding the Window Handler.

# New in Version 3.19 Beta

- New Features: - Add ability to pass float parameters as a vec4 to shaders. - Updated the wrapper to properly enumerate GL_EXTENSIONS on OpenGL contexts up to OpenGL 4.x. - Rewrote the way the shaders are loaded. They now rely on CRC32 to be correctly identified. - Shaders are now swapped at initialization in order to avoid other complications when swapped after creation. - Added ability to load the [Shader_Compiler_Options] section real-time by pressing [F11] key. - Added ability to specify specific separation & convergence value to different Shader Programs from the ini file. - Updated the ini file parser so is more robust. - Added ability to force the Wrapper to create a Fullscreen context if the information from the engine window says is in window mode when in fact is not. - [Development version] Added ability to disable both pixel & vertex shader when is being selected. - [Development version] Added ability to disable pixel & vertex shaders between and interval or not to stereorize them.
- Updates: - Rewrote the whole Shader Manager! - Added CRC32 calculation to properly identy shaders. - Massive rework on shader dump and loading/swapping mechanisms. - Fixed a bug where the wrapper wasn't injection stereoscopy in vertex shaders in all possible & valid locations.

# New in Version 2.00 Beta

- New Features: - Added ability to enable/disable Legacy OpenGL calls for modifying the projection matrix and adding stereoscopy.(More functions require detouring.) - Added ability to work on Aurora Engine games (Star Wars: Kotor 1 & 2). - Added ability to get the Nvidia Profile associated with the game (via NVAPI) and enable 3D Vision compatibility: a. If a profile does not exist, the wrapper will generate a profile. (Name of Profile :"app.exe-3D Vision Wrapper".) b. If a profile exists, the wrapper will add the 3D Vision flags. c. If the Nvidia driver is reinstalled, the wrapper will automatically detect this and apply the correct profile again. - Added Default Convergence Setting in the ini file. It is set when the profile is created initially. - Added Ability to read and apply a Game Profile (from a Profile.nip file). It is set when the profile is updated initially. (The Application will require a restart in order for the settings to take effect.)
- Updates: - Updated to NVAPI 343. - Added Thread Safety in the NVAPI threads. - Updated Windows Version Query Mechanism from a legacy one as there were problems with correct initialization of the 3D Vision driver. - Updated the Wrapper so it doesn't crash if/when 3D Vision is not present/disabled in NVPanel. - Fixed other various crashes that appeared on improper initialization. - Updated the Log Generation with additional information.

# New in Version 1.50

- New Features: - Automatic Hooking Mode. - Alternative Buffer Flipping Mode. - Partial implementation of loading ARB Object Shaders (required by Minecraft). ShaderSource, Compile & Link to be done.
- Updates: - Updated the Shader Source Hooking algorithm as sometimes the shader source code was incomplete. - Fixed some crashes when using the Debug Info option (for intercepting draw calls). - Implemented Window Resize (still prototype phase as it crashes in multiple games).

# All Information below is more or less DEPRECATED NOW!

# It still applies for version 1.50 of the wrapper. See Release Notes(above) for new functionality and fixes!!!

# Feature List

- Ability to log the wrapper functions.
- [3D Vision Specific] - Ability to toggle 3D Vision Support ON/OFF (so you don't need to delete the wrapper files) - Ability to trace some of the OpenGL draw functions (Hooking points for the wrapper) - Ability to specify which hooking point to use
- [3D Vision Automatic Enabling] - Ability to enable or disable the Stereoscopic Shader Injection (equivalent of 3D Vision Automatic) - Ability to specify up to 3 distinct Shader Stereoscopy Injection points and 3 distinct Shader Uniform Injection points - Ability to specify the Stereoscopic Injection function.
- [Shader Compiler] - Automatic detection of Shader Compilation & Linking errors + full debug information. - Ability to select a pair of shaders between which the Stereocopy will not be applied (for hunting shaders down) - Ability to Change & Compile + Link a shader In real-time (so you can immediately see the difference) - Ability to dump all shaders as soon as they are created. - Ability to load own shaders during shader creation stage.

Shader Support: Only GLSL is currently supported. No ARB Shaders support. (Please contact me if you want to help in this section)

- [Alternative 3D Vision Settings] - Ability to query the current separation (depth) and convergence values that are being applied - Ability to bind a different convergence value to a keyboard key/mouse button (hold to work/ toggle mode)
- [FPS Frame cap Remover Support] - Ability to write your own plugin that removes the FPS lock in a game.
- [Wrapper Versions] - A Development version for creating a FIX. - A Public Release version for using a FIX.
- Supported Platforms: - Windows 7(and above) x86(32 bits) and x64(64 bits).

# Hot-Keys used for Developement

Keyboard Key : | Functionality :
[F8] | Shader Compiler: Toggle between Vertex and Pixel Shader for the current selected Shader Program
[F9] | Shader Compiler: Compile & Link the Current Vertex or Pixel Shader for the current selected Shader Program
[F10] | Show Current 3D Vision Settings: Separation/Depth and Convergence values that are being applied
[CTRL] + [+] | Shader Compiler: Select the Next Shader Program
[CTRL] + [-] | Shader Compiler: Select the Previous Shader Program

# Video Documentation

- 1. Introduction - General Information about the tool. - How it works. - How it is made. - What modes are supported. - What OpenGL spec is supported. - Tool Versions.

- 2. Getting Started. - How to start fixing a game. - Hooking the wrapper with the game. - Enabling 3D Vision.

- 3. Inserting Stereoscopy into a game. - General Shader information: used variables, used uniforms - Dumping the shaders - How to insert Stereoscopy into the shaders - The Stereo String "Magic" - Shader Compiling Status and Errors - Checking to see if all shaders are hooked

- 4. Finding shaders and Depth Hack Option - Shader Dump functionality - Depth Hack option - How to find a shader responsible for something - Using the Shader Pair function.

- 5. Adding Your Modified shaders and swap them at runtime. - Information about the two existing options (in swapping shaders) and how/WHY to use them.

- 6. Enabling the additional Convergence Preset. - How to get the convergence value that you want to use - How to bind a keyboard key or mouse button - Toggle or Hold to work description.

- [Advanced] 7. Fixing Shaders: - Using the Real-time shader Compiler to fix a shader. - Selecting the shader you want to start from. - Cycling through shader Programs - Select Between the Vertex and Fragment Shader - Re-compile the shader. - How does the Shader Compiler remembers the last source used. - New compiled shader generates a separate file. Extra: - How to add Custom Convergence for the UI - How to add Automatic Convergence based on the scene position from the Camera

- [HIGHLY Advanced] 8. FPS Injector: - General information about what it is. - How to use it.

- 9. Making A Fix Release. - Creating the Release configuration file. - Creating the nVidia Profile. - Using the Release Version of the wrapper. - Adding your custom LOGO.

All rights reserved. "OpenGL3DVision" @ www.3dsurroundgaming.com. Octavian Mihai Vasilovici a.k.a "Helifax". 2014.