Merge branch 'blender-v2.90-release'

This commit is contained in:
Julian Eisel 2020-08-14 17:18:09 +02:00
commit e8dfe91767
Notes: blender-bot 2023-02-13 21:29:26 +01:00
Referenced by issue #79811, MacOS: Edit Mode - vertex/edge/face selection is missing
5 changed files with 29 additions and 21 deletions

View File

@ -555,6 +555,7 @@ void GeometryManager::create_volume_mesh(Mesh *mesh, Progress &progress)
mesh->clear(true);
mesh->reserve_mesh(vertices.size(), indices.size() / 3);
mesh->used_shaders.push_back(volume_shader);
mesh->need_update_rebuild = true;
for (size_t i = 0; i < vertices.size(); ++i) {
mesh->add_vertex(vertices[i]);

View File

@ -23,6 +23,7 @@
#include <cassert>
#include <sstream>
#include <string>
#include <string_view>
#include "GHOST_Types.h"
#include "GHOST_XrException.h"
@ -348,7 +349,8 @@ static bool openxr_layer_is_available(const std::vector<XrApiLayerProperties> &l
}
static bool openxr_extension_is_available(
const std::vector<XrExtensionProperties> &extensions_info, const std::string &extension_name)
const std::vector<XrExtensionProperties> &extensions_info,
const std::string_view &extension_name)
{
for (const XrExtensionProperties &ext_info : extensions_info) {
if (ext_info.extensionName == extension_name) {
@ -405,14 +407,12 @@ void GHOST_XrContext::getExtensionsToEnable(
const std::vector<GHOST_TXrGraphicsBinding> &graphics_binding_types,
std::vector<const char *> &r_ext_names)
{
std::vector<std::string> try_ext;
std::vector<std::string_view> try_ext;
/* Try enabling debug extension. */
#ifndef WIN32
if (isDebugMode()) {
try_ext.push_back(XR_EXT_DEBUG_UTILS_EXTENSION_NAME);
}
#endif
r_ext_names.reserve(try_ext.size() + graphics_binding_types.size());
@ -424,9 +424,9 @@ void GHOST_XrContext::getExtensionsToEnable(
r_ext_names.push_back(gpu_binding);
}
for (const std::string &ext : try_ext) {
for (const std::string_view &ext : try_ext) {
if (openxr_extension_is_available(m_oxr->extensions, ext)) {
r_ext_names.push_back(ext.c_str());
r_ext_names.push_back(ext.data());
}
}
}

View File

@ -4953,8 +4953,6 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
const View3D *v3d_default = DNA_struct_default_get(View3D);
wm->xr.session_settings.shading = v3d_default->shading;
/* Don't rotate light with the viewer by default, make it fixed. */
wm->xr.session_settings.shading.flag |= V3D_SHADING_WORLD_ORIENTATION;
wm->xr.session_settings.draw_flags = (V3D_OFSDRAW_SHOW_GRIDFLOOR |
V3D_OFSDRAW_SHOW_ANNOTATION);
wm->xr.session_settings.clip_start = v3d_default->clip_start;
@ -5112,6 +5110,12 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
}
}
for (wmWindowManager *wm = bmain->wm.first; wm; wm = wm->id.next) {
/* Don't rotate light with the viewer by default, make it fixed. Shading settings can't be
* edited and this flag should always be set. So we can always execute this. */
wm->xr.session_settings.shading.flag |= V3D_SHADING_WORLD_ORIENTATION;
}
/* Keep this block, even when empty. */
}
}

View File

@ -1732,6 +1732,8 @@ void ED_view3d_xr_shading_update(wmWindowManager *wm, const View3D *v3d, const S
{
if (v3d->runtime.flag & V3D_RUNTIME_XR_SESSION_ROOT) {
View3DShading *xr_shading = &wm->xr.session_settings.shading;
/* Flags that shouldn't be overridden by the 3D View shading. */
const int flag_copy = V3D_SHADING_WORLD_ORIENTATION;
BLI_assert(WM_xr_session_exists(&wm->xr));
@ -1749,7 +1751,9 @@ void ED_view3d_xr_shading_update(wmWindowManager *wm, const View3D *v3d, const S
}
/* Copy shading from View3D to VR view. */
const int old_xr_shading_flag = xr_shading->flag;
*xr_shading = v3d->shading;
xr_shading->flag = (xr_shading->flag & ~flag_copy) | (old_xr_shading_flag & flag_copy);
if (v3d->shading.prop) {
xr_shading->prop = IDP_CopyProperty(xr_shading->prop);
}

View File

@ -513,15 +513,15 @@ void RE_engine_active_view_set(RenderEngine *engine, const char *viewname)
float RE_engine_get_camera_shift_x(RenderEngine *engine, Object *camera, bool use_spherical_stereo)
{
Render *re = engine->re;
/* When using spherical stereo, get camera shift without multiview,
* leaving stereo to be handled by the engine. */
if (use_spherical_stereo) {
re = NULL;
Render *re = engine->re;
if (use_spherical_stereo || re == NULL) {
return BKE_camera_multiview_shift_x(NULL, camera, NULL);
}
else {
return BKE_camera_multiview_shift_x(&re->r, camera, re->viewname);
}
return BKE_camera_multiview_shift_x(re ? &re->r : NULL, camera, re->viewname);
}
void RE_engine_get_camera_model_matrix(RenderEngine *engine,
@ -529,16 +529,15 @@ void RE_engine_get_camera_model_matrix(RenderEngine *engine,
bool use_spherical_stereo,
float *r_modelmat)
{
Render *re = engine->re;
/* When using spherical stereo, get model matrix without multiview,
* leaving stereo to be handled by the engine. */
if (use_spherical_stereo) {
re = NULL;
Render *re = engine->re;
if (use_spherical_stereo || re == NULL) {
BKE_camera_multiview_model_matrix(NULL, camera, NULL, (float(*)[4])r_modelmat);
}
else {
BKE_camera_multiview_model_matrix(&re->r, camera, re->viewname, (float(*)[4])r_modelmat);
}
BKE_camera_multiview_model_matrix(
re ? &re->r : NULL, camera, re->viewname, (float(*)[4])r_modelmat);
}
bool RE_engine_get_spherical_stereo(RenderEngine *engine, Object *camera)