Flickering/aliasing effects
Opened this issue · 0 comments
Description
Short version:
Fine details (like lines) show flickering or aliasing effects resulting in a visually unstable experience.
Longer version:
I compared Meta Quest Link (with maxed out resolution, i.e. on its 1.3x setting) with ALVR where I tried to replicate Meta Quest Link's resolution as truthfully as possible. Interestingly for me, while Meta Quest Link's image quality shows the typical compression "smushedness", I perceived it as visually "more stable" and less flickering than ALVR's output. It took me some time to understand why I felt this way. And I think I understand now: Meta Quest Link seems to handle fine lines better than ALVR, maybe by using some anti-aliasing functionality.
I've created a recording that demonstrates the issue:
- I used ALVR's Debug commands (Start Recording / Stop Recordings) to record a few seconds as a raw h265 file.
- I imported the recording into Blender, applied a simple 2D stabilization & cropped the video to show only the books on the Steam VR Home bookshelf, and exported the stabilized video in its cropped resolution (274x376), using PNG as video codec. (To go absolutely sure I retain the original effect, I also made sure to use "nearest neighbor" filtering in all of Blender's scaling/transform settings - but because I exported the video without scaling / any resolution change anyway, this should not really have been relevant.)
- I was not sure if GitHub applies additional scaling/filtering & compression, causing the effect to disappear. Therefore, I went sure and created an 1080p-upscaled version of a part of the exported file (again, using nearest neighbor scaling). And here it is:
enlarged.mp4
I would have liked to upload the stabilized original as well - but GitHub rejected the 18 MB file as being too large. I therefore applied a super careful compression to the original and provide it here:
original-carefully-compressed.mp4
I would have liked to also provide a Meta Quest Link comparison video recording from the same perspective - but as the built-in camera app is not working while in Link mode (and because it would produce a heavily post-processed video anyway), I don't quite know how I would produce something like that. But if you want to see for yourself: Maybe it's already sufficient to compare the look of the lines of the Steam VR "void" floor: When using Meta Quest Link, there are effectively no aliasing effects. When using ALVR, the aliasing effects are noticeable.
General Troubleshooting
- I carefully followed the instructions in the README and successfully completed the setup wizard
- I read the ALVR GitHub Wiki
Environment
Hardware
CPU: Intel(R) Core(TM) i9-14900HX, 2200 MHz
GPU: NVIDIA GeForce RTX 4070 Laptop GPU
GPU Driver Version: 32.0.15.6103
Audio: Realtek High Definition Audio(SST)
Installation
ALVR Version: ALVR streamer v21.0.0-dev01+nightly.2024.12.12
ALVR Settings File:
session.json
{
"server_version": "21.0.0-dev01+nightly.2024.12.12",
"drivers_backup": {
"alvr_path": "<...>",
"other_paths": []
},
"openvr_config": {
"eye_resolution_width": 2688,
"eye_resolution_height": 2912,
"target_eye_resolution_width": 2688,
"target_eye_resolution_height": 2912,
"tracking_ref_only": false,
"enable_vive_tracker_proxy": false,
"minimum_idr_interval_ms": 100,
"adapter_index": 0,
"codec": 1,
"h264_profile": 0,
"refresh_rate": 72,
"use_10bit_encoder": true,
"use_full_range_encoding": true,
"encoding_gamma": 1.0,
"enable_hdr": false,
"force_hdr_srgb_correction": false,
"clamp_hdr_extended_range": false,
"enable_pre_analysis": false,
"enable_vbaq": false,
"enable_hmqb": false,
"use_preproc": false,
"preproc_sigma": 4,
"preproc_tor": 7,
"amd_encoder_quality_preset": 2,
"rate_control_mode": 0,
"filler_data": false,
"entropy_coding": 1,
"force_sw_encoding": false,
"sw_thread_count": 0,
"controller_is_tracker": false,
"controllers_enabled": true,
"body_tracking_vive_enabled": false,
"body_tracking_has_legs": false,
"enable_foveated_encoding": false,
"foveation_center_size_x": 0.0,
"foveation_center_size_y": 0.0,
"foveation_center_shift_x": 0.0,
"foveation_center_shift_y": 0.0,
"foveation_edge_ratio_x": 0.0,
"foveation_edge_ratio_y": 0.0,
"enable_color_correction": false,
"brightness": 0.0,
"contrast": 0.0,
"saturation": 0.0,
"gamma": 0.0,
"sharpening": 0.0,
"linux_async_compute": false,
"linux_async_reprojection": false,
"nvenc_quality_preset": 4,
"nvenc_tuning_preset": 2,
"nvenc_multi_pass": 1,
"nvenc_adaptive_quantization_mode": 2,
"nvenc_low_delay_key_frame_scale": -1,
"nvenc_refresh_rate": -1,
"enable_intra_refresh": false,
"intra_refresh_period": -1,
"intra_refresh_count": -1,
"max_num_ref_frames": -1,
"gop_length": -1,
"p_frame_strategy": -1,
"nvenc_rate_control_mode": -1,
"rc_buffer_size": -1,
"rc_initial_delay": -1,
"rc_max_bitrate": -1,
"rc_average_bitrate": -1,
"nvenc_enable_weighted_prediction": false,
"capture_frame_dir": "/tmp",
"amd_bitrate_corruption_fix": false,
"use_separate_hand_trackers": true,
"_controller_profile": 1,
"_server_impl_debug": false,
"_client_impl_debug": false,
"_server_core_debug": false,
"_client_core_debug": false,
"_conncection_debug": false,
"_sockets_debug": false,
"_server_gfx_debug": false,
"_client_gfx_debug": false,
"_encoder_debug": false,
"_decoder_debug": false
},
"client_connections": {
<...>
},
"session_settings": {
"video": {
"passthrough": {
"enabled": false,
"content": {
"AugmentedReality": {
"brightness": 0.4
},
"Blend": {
"opacity": 0.5
},
"variant": "AugmentedReality"
}
},
"bitrate": {
"gui_collapsed": false,
"mode": {
"ConstantMbps": 300,
"Adaptive": {
"gui_collapsed": false,
"saturation_multiplier": 0.95,
"max_throughput_mbps": {
"enabled": false,
"content": 100
},
"min_throughput_mbps": {
"enabled": false,
"content": 5
},
"max_network_latency_ms": {
"enabled": false,
"content": 8
},
"encoder_latency_limiter": {
"enabled": true,
"content": {
"max_saturation_multiplier": 0.9
}
},
"decoder_latency_limiter": {
"enabled": true,
"content": {
"gui_collapsed": false,
"max_decoder_latency_ms": 30,
"latency_overstep_frames": 90,
"latency_overstep_multiplier": 0.99
}
}
},
"variant": "ConstantMbps"
},
"adapt_to_framerate": {
"enabled": false,
"content": {
"framerate_reset_threshold_multiplier": 2.0
}
},
"history_size": 256,
"image_corruption_fix": false
},
"preferred_codec": {
"variant": "Hevc"
},
"foveated_encoding": {
"enabled": false,
"content": {
"force_enable": false,
"center_size_x": 0.45,
"center_size_y": 0.4,
"center_shift_x": 0.4,
"center_shift_y": 0.1,
"edge_ratio_x": 4.0,
"edge_ratio_y": 5.0
}
},
"color_correction": {
"enabled": false,
"content": {
"brightness": 0.0,
"contrast": 0.0,
"saturation": -2.2351742e-8,
"gamma": 1.0,
"sharpening": 0.59999996
}
},
"max_buffering_frames": 2.0,
"buffering_history_weight": 0.9,
"encoder_config": {
"gui_collapsed": false,
"rate_control_mode": {
"variant": "Cbr"
},
"filler_data": false,
"h264_profile": {
"variant": "High"
},
"entropy_coding": {
"variant": "Cavlc"
},
"use_10bit": true,
"server_overrides_use_10bit": true,
"use_full_range": true,
"server_overrides_use_full_range": false,
"encoding_gamma": 1.0,
"server_overrides_encoding_gamma": false,
"enable_hdr": false,
"server_overrides_enable_hdr": false,
"force_hdr_srgb_correction": false,
"clamp_hdr_extended_range": false,
"nvenc": {
"gui_collapsed": false,
"quality_preset": {
"variant": "P4"
},
"tuning_preset": {
"variant": "LowLatency"
},
"multi_pass": {
"variant": "QuarterResolution"
},
"adaptive_quantization_mode": {
"variant": "Temporal"
},
"low_delay_key_frame_scale": -1,
"refresh_rate": -1,
"enable_intra_refresh": false,
"intra_refresh_period": -1,
"intra_refresh_count": -1,
"max_num_ref_frames": -1,
"gop_length": -1,
"p_frame_strategy": -1,
"rate_control_mode": -1,
"rc_buffer_size": -1,
"rc_initial_delay": -1,
"rc_max_bitrate": -1,
"rc_average_bitrate": -1,
"enable_weighted_prediction": false
},
"amf": {
"gui_collapsed": true,
"quality_preset": {
"variant": "Speed"
},
"enable_vbaq": false,
"enable_hmqb": false,
"use_preproc": false,
"preproc_sigma": 4,
"preproc_tor": 7,
"enable_pre_analysis": false
},
"software": {
"force_software_encoding": false,
"thread_count": 0
}
},
"force_software_decoder": false,
"mediacodec_extra_options": {
"gui_collapsed": true,
"key": "",
"value": {
"ty": {
"variant": "Int32"
},
"value": "0"
},
"content": [
[
"operating-rate",
{
"ty": {
"variant": "Int32"
},
"value": "2147483647"
}
],
[
"priority",
{
"ty": {
"variant": "Int32"
},
"value": "0"
}
],
[
"vendor.qti-ext-dec-low-latency.enable",
{
"ty": {
"variant": "Int32"
},
"value": "1"
}
]
]
},
"transcoding_view_resolution": {
"Scale": 1.0,
"Absolute": {
"width": 2704,
"height": {
"set": true,
"content": 2912
}
},
"variant": "Absolute"
},
"emulated_headset_view_resolution": {
"Scale": 1.0,
"Absolute": {
"width": 2704,
"height": {
"set": true,
"content": 2912
}
},
"variant": "Absolute"
},
"preferred_fps": 72.0,
"adapter_index": 0,
"clientside_foveation": {
"enabled": false,
"content": {
"mode": {
"Static": {
"level": {
"variant": "High"
}
},
"Dynamic": {
"max_level": {
"variant": "High"
}
},
"variant": "Dynamic"
},
"vertical_offset_deg": 0.0
}
}
},
"audio": {
"game_audio": {
"enabled": true,
"content": {
"gui_collapsed": true,
"device": {
"set": false,
"content": {
"NameSubstring": "",
"Index": 0,
"variant": "NameSubstring"
}
},
"mute_when_streaming": true,
"buffering": {
"gui_collapsed": true,
"average_buffering_ms": 50,
"batch_ms": 10
}
}
},
"microphone": {
"enabled": false,
"content": {
"gui_collapsed": true,
"devices": {
"Custom": {
"sink": {
"NameSubstring": "",
"Index": 0,
"variant": "NameSubstring"
},
"source": {
"NameSubstring": "",
"Index": 0,
"variant": "NameSubstring"
}
},
"variant": "Automatic"
},
"buffering": {
"gui_collapsed": true,
"average_buffering_ms": 50,
"batch_ms": 10
}
}
}
},
"headset": {
"position_recentering_mode": {
"Local": {
"view_height": 1.5
},
"variant": "LocalFloor"
},
"rotation_recentering_mode": {
"variant": "Yaw"
},
"controllers": {
"enabled": true,
"content": {
"gui_collapsed": false,
"tracked": true,
"hand_skeleton": {
"enabled": true,
"content": {
"steamvr_input_2_0": true,
"predict": false
}
},
"multimodal_tracking": false,
"hand_tracking_interaction": {
"enabled": false,
"content": {
"only_touch": false,
"pinch_touch_distance": 0.0,
"pinch_trigger_distance": 0.25,
"curl_touch_distance": 2.0,
"curl_trigger_distance": 2.5,
"joystick_deadzone": 40.0,
"joystick_offset_horizontal": 0.0,
"joystick_offset_vertical": 0.0,
"joystick_range": 1.0,
"activation_delay": 50,
"deactivation_delay": 100,
"repeat_delay": 100
}
},
"steamvr_pipeline_frames": 3.0,
"haptics": {
"enabled": true,
"content": {
"gui_collapsed": true,
"intensity_multiplier": 1.0,
"amplitude_curve": 1.0,
"min_duration_s": 0.01
}
},
"emulation_mode": {
"Custom": {
"serial_number": "ALVR Controller",
"button_set": {
"gui_collapsed": false,
"element": "/user/hand/left/input/a/click",
"content": []
}
},
"variant": "Quest2Touch"
},
"extra_openvr_props": {
"gui_collapsed": true,
"element": {
"key": {
"variant": "TrackingSystemNameString"
},
"value": ""
},
"content": []
},
"linear_velocity_cutoff": 0.05,
"angular_velocity_cutoff": 10.0,
"left_controller_position_offset": {
"gui_collapsed": true,
"content": [
0.0,
0.0,
-0.11
]
},
"left_controller_rotation_offset": {
"gui_collapsed": true,
"content": [
-20.0,
0.0,
0.0
]
},
"left_hand_tracking_position_offset": {
"gui_collapsed": true,
"content": [
0.04,
-0.02,
-0.13
]
},
"left_hand_tracking_rotation_offset": {
"gui_collapsed": true,
"content": [
0.0,
-45.0,
-90.0
]
},
"button_mappings": {
"set": false,
"content": {
"gui_collapsed": false,
"key": "/user/hand/left/input/a/click",
"value": {
"gui_collapsed": false,
"element": {
"destination": "/user/hand/left/input/a/click",
"mapping_type": {
"HysteresisThreshold": {
"value": 0.5,
"deviation": 0.05
},
"BinaryToScalar": {
"off": 0.0,
"on": 1.0
},
"Remap": {
"min": 0.0,
"max": 1.0
},
"variant": "Passthrough"
},
"binary_conditions": {
"gui_collapsed": true,
"element": "/user/hand/left/input/trigger/touch",
"content": []
}
},
"content": []
},
"content": []
}
},
"button_mapping_config": {
"gui_collapsed": true,
"click_threshold": {
"value": 0.5,
"deviation": 0.05
},
"touch_threshold": {
"value": 0.1,
"deviation": 0.05
},
"force_threshold": 0.8
}
}
},
"emulation_mode": {
"Custom": {
"serial_number": "Unknown"
},
"variant": "Quest2"
},
"extra_openvr_props": {
"gui_collapsed": true,
"element": {
"key": {
"variant": "TrackingSystemNameString"
},
"value": ""
},
"content": []
},
"tracking_ref_only": false,
"enable_vive_tracker_proxy": false,
"face_tracking": {
"enabled": false,
"content": {
"gui_collapsed": true,
"sources": {
"eye_tracking_fb": true,
"face_tracking_fb": true,
"eye_expressions_htc": true,
"lip_expressions_htc": true
},
"sink": {
"VrchatEyeOsc": {
"port": 9000
},
"variant": "VrchatEyeOsc"
}
}
},
"body_tracking": {
"enabled": false,
"content": {
"gui_collapsed": true,
"sources": {
"body_tracking_fb": {
"enabled": true,
"content": {
"full_body": true
}
}
},
"sink": {
"VrchatBodyOsc": {
"port": 9000
},
"variant": "FakeViveTracker"
},
"tracked": true
}
},
"vmc": {
"enabled": false,
"content": {
"gui_collapsed": true,
"host": "127.0.0.1",
"port": 39539,
"publish": true,
"orientation_correction": true
}
}
},
"connection": {
"stream_protocol": {
"variant": "Udp"
},
"client_discovery": {
"enabled": true,
"content": {
"auto_trust_clients": false
}
},
"wired_client_type": {
"Custom": "alvr.client",
"variant": "Github"
},
"wired_client_autolaunch": true,
"on_connect_script": "",
"on_disconnect_script": "",
"avoid_video_glitching": false,
"packet_size": 1400,
"stream_port": 9944,
"web_server_port": 8082,
"osc_local_port": 9942,
"server_send_buffer_bytes": {
"Custom": 100000,
"variant": "Maximum"
},
"server_recv_buffer_bytes": {
"Custom": 100000,
"variant": "Maximum"
},
"client_send_buffer_bytes": {
"Custom": 100000,
"variant": "Maximum"
},
"client_recv_buffer_bytes": {
"Custom": 100000,
"variant": "Maximum"
},
"max_queued_server_video_frames": 1024,
"statistics_history_size": 256,
"minimum_idr_interval_ms": 100,
"dscp": {
"set": false,
"content": {
"ClassSelector": 7,
"AssuredForwarding": {
"class": 4,
"drop_probability": {
"variant": "Low"
}
},
"variant": "ExpeditedForwarding"
}
}
},
"extra": {
"steamvr_launcher": {
"driver_launch_action": {
"variant": "UnregisterOtherDriversAtStartup"
},
"open_close_steamvr_with_dashboard": false
},
"capture": {
"startup_video_recording": false,
"rolling_video_files": {
"enabled": false,
"content": {
"duration_s": 5
}
},
"capture_frame_dir": "/tmp"
},
"logging": {
"show_notification_tip": true,
"prefer_backtrace": false,
"notification_level": {
"variant": "Warning"
},
"client_log_report_level": {
"enabled": true,
"content": {
"variant": "Error"
}
},
"show_raw_events": {
"enabled": false,
"content": {
"hide_spammy_events": false
}
},
"log_to_disk": false,
"log_tracking": false,
"log_button_presses": false,
"log_haptics": false,
"debug_groups": {
"server_impl": false,
"client_impl": false,
"server_core": false,
"client_core": false,
"connection": false,
"sockets": false,
"server_gfx": false,
"client_gfx": false,
"encoder": false,
"decoder": false
}
},
"patches": {
"linux_async_compute": false,
"linux_async_reprojection": false
},
"open_setup_wizard": false
}
}
}
SteamVR Version: 2.8.8
Install Type:
- Packaged (
exe
,deb
,rpm
, etc) - Portable (
zip
) - Source
OS Name and Version (winver
on Windows or grep PRETTY_NAME /etc/os-release
on most Linux distributions): Windows 11, Version 24H2