How to modify convergence and separation?
Posted: Fri Jan 02, 2015 11:27 am
I'm used to the iz3D drivers, that provide extremely intuitive controls to change convergence and separation and which I regularly use with my HMZ-T1 head-mounted display in side-by-side mode; today I tried the Perception drivers, to see how they compare.
In order to have a better idea of their features and limitations, I decided to test them with a program I made, namely this one: http://devilmaster.altervista.org/tadpsid.html
What follows is the profile I have added at the end of profiles.xml:
And this is the additional Tadpsid.xml (residing into the shader_rules subdirectory) that is referred to within the profile:
The effect of this profile is that the virtual environment is actually displayed in 3D (a partial success), but everything looks way too small and close to my eyes. The farthest possible distance is at screen depth, which is completely unlike what I want (I want the closest possible distance to be at screen depth, and everything else to be farther away).
With the iz3D drivers, I would simply modify the convergence (so that the closest possible distance is at screen depth) and the separation (so that the farthest possible distance is not too close and not uncomfortably far), but how do I achieve that with the Perception drivers?
I have noticed that modifying the ipd_offset parameter (which, I presume, is supposed to modify the interpupillary distance) has no effect at all (I've tried values of 0, 1, 10 and 1000, and there were no changes at all in the scene). Then I tried the worldScaleFactor parameter, but this just changes the scale along the depth axis. Further tests with it (adjusting it with LCTRL+ALT and the mouse wheel) make me guess that this is the equivalent of the separation parameter in the iz3D driver... but what is the equivalent of the convergence parameter? The actual convergence parameter of the Perception driver has no noticeable effects: I tried changing its value to 0.001, 0.01, 0.1, 1 and 10, and the scene remains absolutely identical in every case!
What am I missing?
In order to have a better idea of their features and limitations, I decided to test them with a program I made, namely this one: http://devilmaster.altervista.org/tadpsid.html
What follows is the profile I have added at the end of profiles.xml:
Code: Select all
<profile game_name="Tadpsid" game_exe="Tadpsid.exe" cpu_architecture="32bit" shaderModRules="Tadpsid.xml" VRboostRules="" minVRboostShaderCount="40" maxVRboostShaderCount="999999" game_type="99999" rollEnabled="false" worldScaleFactor="57.5001" convergence="16.001" swap_eyes="true" ipd_offset="0" use_sdk_pose_prediction="true" y_offset="0" yaw_multiplier="5" pitch_multiplier="5" roll_multiplier="1" position_multiplier="1" position_x_multiplier="2" position_y_multiplier="2.5" position_z_multiplier="0.5" distortion_scale="-6.55651e-007" hud_3D_depth_mode="0" hud_3D_depth_1="0" hud_3D_depth_2="0" hud_3D_depth_3="0" hud_3D_depth_4="0" hud_distance_1="0.0001" hud_distance_2="0.0001" hud_distance_3="0.0001" hud_distance_4="0" hud_key_swap="0" hud_key_default="0" hud_key_small="0" hud_key_large="0" hud_key_full="0" gui_3D_depth_mode="1" gui_3D_depth_1="0" gui_3D_depth_2="0" gui_3D_depth_3="0" gui_3D_depth_4="0" gui_size_1="0.6" gui_size_2="0.5" gui_size_3="0.9" gui_size_4="1" gui_key_swap="111" gui_key_default="0" gui_key_small="0" gui_key_large="0" gui_key_full="0" VRBoost_key_reset="0" WorldFOV="91.2001" PlayerFOV="70.6005" FarPlaneFOV="95" CameraTranslateX="0" CameraTranslateY="0" CameraTranslateZ="0" CameraDistance="0" CameraZoom="0" CameraHorizonAdjustment="0" ConstantValue1="0" ConstantValue2="0" ConstantValue3="0" edge_peek_key="0" />
Code: Select all
<?xml version="1.0"?>
<shaderConfig>
<rules>
<rule constantName="ViewProjectionMatrix" partialName="true" id="1" constantType="MatrixC" modToApply="2" startReg="0" transpose="false" />
<rule constantName="ViewProjectionMatrix" partialName="true" id="9" constantType="MatrixC" modToApply="2" startReg="238" transpose="false" />
<rule constantName="ViewProjectionMatrix" partialName="true" id="2" constantType="MatrixC" modToApply="2" startReg="4" transpose="false" />
<rule constantName="PreviousViewProjectionMatrix" partialName="true" id="3" constantType="MatrixC" modToApply="2" startReg="12" transpose="false" />
<rule constantName="ViewProjectionMatrix" partialName="true" id="4" constantType="MatrixC" modToApply="2" startReg="8" transpose="false" />
<rule constantName="ViewProjectionMatrix" partialName="true" id="5" constantType="MatrixC" modToApply="2" startReg="5" transpose="false" />
<rule constantName="ViewProjectionMatrix" partialName="true" id="6" constantType="MatrixC" modToApply="2" startReg="1" transpose="false" />
<rule constantName="ViewProjectionMatrix" partialName="true" id="7" constantType="MatrixC" modToApply="2" startReg="235" transpose="false" />
<rule constantName="PreviousViewProjectionMatrix" partialName="true" id="8" constantType="MatrixC" modToApply="2" startReg="242" transpose="false" />
<rule constantName="ViewProjectionMatrix" partialName="true" id="10" constantType="MatrixC" modToApply="2" startReg="234" transpose="false" />
<rule constantName="ViewProjectionMatrix" partialName="true" id="11" constantType="MatrixC" modToApply="2" startReg="247" transpose="false" />
<rule constantName="ViewProjectionMatrix" partialName="true" id="12" constantType="MatrixC" modToApply="2" startReg="16" transpose="false" />
<rule constantName="PreviousViewProjectionMatrix" partialName="true" id="13" constantType="MatrixC" modToApply="2" startReg="8" transpose="false" />
<rule constantName="ViewProjectionMatrix" partialName="true" id="14" constantType="MatrixC" modToApply="2" startReg="236" transpose="false" />
</rules>
<defaultRuleIDs>
<ruleID id="1" />
<ruleID id="2" />
<ruleID id="3" />
<ruleID id="4" />
<ruleID id="5" />
<ruleID id="6" />
<ruleID id="7" />
<ruleID id="8" />
<ruleID id="9" />
<ruleID id="10" />
<ruleID id="11" />
<ruleID id="12" />
<ruleID id="13" />
<ruleID id="14" />
</defaultRuleIDs>
<shaderSpecificRuleIDs shaderHash="236630468" squishViewport="true" />
<shaderSpecificRuleIDs shaderHash="2720631710" squishViewport="true" />
</shaderConfig>
With the iz3D drivers, I would simply modify the convergence (so that the closest possible distance is at screen depth) and the separation (so that the farthest possible distance is not too close and not uncomfortably far), but how do I achieve that with the Perception drivers?
I have noticed that modifying the ipd_offset parameter (which, I presume, is supposed to modify the interpupillary distance) has no effect at all (I've tried values of 0, 1, 10 and 1000, and there were no changes at all in the scene). Then I tried the worldScaleFactor parameter, but this just changes the scale along the depth axis. Further tests with it (adjusting it with LCTRL+ALT and the mouse wheel) make me guess that this is the equivalent of the separation parameter in the iz3D driver... but what is the equivalent of the convergence parameter? The actual convergence parameter of the Perception driver has no noticeable effects: I tried changing its value to 0.001, 0.01, 0.1, 1 and 10, and the scene remains absolutely identical in every case!
What am I missing?