Added render target size multiplier option.

Fix formatting
This commit is contained in:
Malcolm Nixon 2023-02-18 10:50:55 -05:00
parent 1f4f73f860
commit d91e75b6f7
5 changed files with 42 additions and 2 deletions

View file

@ -43,6 +43,9 @@
<member name="display_refresh_rate" type="float" setter="set_display_refresh_rate" getter="get_display_refresh_rate" default="0.0">
The display refresh rate for the current HMD. Only functional if this feature is supported by the OpenXR runtime and after the interface has been initialized.
</member>
<member name="render_target_size_multiplier" type="float" setter="set_render_target_size_multiplier" getter="get_render_target_size_multiplier" default="1.0">
The render size multiplier for the current HMD. Must be set before the interface has been initialized.
</member>
</members>
<signals>
<signal name="pose_recentered">

View file

@ -1418,8 +1418,8 @@ Size2 OpenXRAPI::get_recommended_target_size() {
Size2 target_size;
target_size.width = view_configuration_views[0].recommendedImageRectWidth;
target_size.height = view_configuration_views[0].recommendedImageRectHeight;
target_size.width = view_configuration_views[0].recommendedImageRectWidth * render_target_size_multiplier;
target_size.height = view_configuration_views[0].recommendedImageRectHeight * render_target_size_multiplier;
return target_size;
}
@ -1953,6 +1953,14 @@ Array OpenXRAPI::get_available_display_refresh_rates() const {
return Array();
}
double OpenXRAPI::get_render_target_size_multiplier() const {
return render_target_size_multiplier;
}
void OpenXRAPI::set_render_target_size_multiplier(double multiplier) {
render_target_size_multiplier = multiplier;
}
OpenXRAPI::OpenXRAPI() {
// OpenXRAPI is only constructed if OpenXR is enabled.
singleton = this;

View file

@ -116,6 +116,7 @@ private:
XrSessionState session_state = XR_SESSION_STATE_UNKNOWN;
bool running = false;
XrFrameState frame_state = { XR_TYPE_FRAME_STATE, NULL, 0, 0, false };
double render_target_size_multiplier = 1.0;
OpenXRGraphicsExtensionWrapper *graphics_extension = nullptr;
XrSystemGraphicsProperties graphics_properties;
@ -362,6 +363,10 @@ public:
void set_display_refresh_rate(float p_refresh_rate);
Array get_available_display_refresh_rates() const;
// Render Target size multiplier
double get_render_target_size_multiplier() const;
void set_render_target_size_multiplier(double multiplier);
// action map
String get_default_action_map_resource_name();

View file

@ -47,6 +47,11 @@ void OpenXRInterface::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_display_refresh_rate", "refresh_rate"), &OpenXRInterface::set_display_refresh_rate);
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "display_refresh_rate"), "set_display_refresh_rate", "get_display_refresh_rate");
// Render Target size multiplier
ClassDB::bind_method(D_METHOD("get_render_target_size_multiplier"), &OpenXRInterface::get_render_target_size_multiplier);
ClassDB::bind_method(D_METHOD("set_render_target_size_multiplier", "multiplier"), &OpenXRInterface::set_render_target_size_multiplier);
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "render_target_size_multiplier"), "set_render_target_size_multiplier", "get_render_target_size_multiplier");
ClassDB::bind_method(D_METHOD("is_action_set_active", "name"), &OpenXRInterface::is_action_set_active);
ClassDB::bind_method(D_METHOD("set_action_set_active", "name", "active"), &OpenXRInterface::set_action_set_active);
ClassDB::bind_method(D_METHOD("get_action_sets"), &OpenXRInterface::get_action_sets);
@ -657,6 +662,22 @@ Array OpenXRInterface::get_action_sets() const {
return arr;
}
double OpenXRInterface::get_render_target_size_multiplier() const {
if (openxr_api == nullptr) {
return 1.0;
} else {
return openxr_api->get_render_target_size_multiplier();
}
}
void OpenXRInterface::set_render_target_size_multiplier(double multiplier) {
if (openxr_api == nullptr) {
return;
} else {
openxr_api->set_render_target_size_multiplier(multiplier);
}
}
Size2 OpenXRInterface::get_render_target_size() {
if (openxr_api == nullptr) {
return Size2();

View file

@ -127,6 +127,9 @@ public:
void set_action_set_active(const String &p_action_set, bool p_active);
Array get_action_sets() const;
double get_render_target_size_multiplier() const;
void set_render_target_size_multiplier(double multiplier);
virtual Size2 get_render_target_size() override;
virtual uint32_t get_view_count() override;
virtual Transform3D get_camera_transform() override;