summaryrefslogtreecommitdiff
path: root/servers/xr/xr_interface.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2022-11-18 16:19:22 +0100
committerRémi Verschelde <rverschelde@gmail.com>2022-11-18 16:19:22 +0100
commit58cb11b396fa3c424bec35d201df5e3d123c466a (patch)
treefde387980da0289d3dc3a90391a31d8c5586d624 /servers/xr/xr_interface.cpp
parentb1605c6d35139dab8b17eff3a6ce38fbdadaf89f (diff)
parent616ba8745fb475fa626dbbffbd34ebc47ae3dbea (diff)
Merge pull request #68710 from BastiaanOlij/fix_vrs
Fix VRS issues
Diffstat (limited to 'servers/xr/xr_interface.cpp')
-rw-r--r--servers/xr/xr_interface.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/servers/xr/xr_interface.cpp b/servers/xr/xr_interface.cpp
index 4d58d24405..ec4ae98397 100644
--- a/servers/xr/xr_interface.cpp
+++ b/servers/xr/xr_interface.cpp
@@ -167,11 +167,12 @@ RID XRInterface::get_vrs_texture() {
// Default logic will return a standard VRS image based on our target size and default projections.
// Note that this only gets called if VRS is supported on the hardware.
- Size2 texel_size = Size2(16.0, 16.0); // For now we assume we always use 16x16 texels, seems to be the standard.
+ int32_t texel_width = RD::get_singleton()->limit_get(RD::LIMIT_VRS_TEXEL_WIDTH);
+ int32_t texel_height = RD::get_singleton()->limit_get(RD::LIMIT_VRS_TEXEL_HEIGHT);
int view_count = get_view_count();
Size2 target_size = get_render_target_size();
real_t aspect = target_size.x / target_size.y; // is this y/x ?
- Size2 vrs_size = Size2(round(0.5 + target_size.x / texel_size.x), round(0.5 + target_size.y / texel_size.y));
+ Size2 vrs_size = Size2(round(0.5 + target_size.x / texel_width), round(0.5 + target_size.y / texel_height));
real_t radius = vrs_size.length() * 0.5;
Size2 vrs_sizei = vrs_size;
@@ -179,6 +180,8 @@ RID XRInterface::get_vrs_texture() {
const uint8_t densities[] = {
0, // 1x1
1, // 1x2
+ // 2, // 1x4 - not supported
+ // 3, // 1x8 - not supported
// 4, // 2x1
5, // 2x2
6, // 2x4