Merge branch 'master' into blender2.8
This commit is contained in:
@@ -579,13 +579,16 @@ static void MergeVertsFast(int piTriList_in_and_out[], STmpVert pTmpVert[], cons
|
|||||||
{
|
{
|
||||||
// make bbox
|
// make bbox
|
||||||
int c=0, l=0, channel=0;
|
int c=0, l=0, channel=0;
|
||||||
float fvMin[3] = {INFINITY, INFINITY, INFINITY};
|
float fvMin[3], fvMax[3];
|
||||||
float fvMax[3] = {-INFINITY, -INFINITY, -INFINITY};
|
|
||||||
float dx=0, dy=0, dz=0, fSep=0;
|
float dx=0, dy=0, dz=0, fSep=0;
|
||||||
for (l=iL_in; l<=iR_in; l++)
|
|
||||||
for (c=0; c<3; c++)
|
for (c=0; c<3; c++)
|
||||||
|
{ fvMin[c]=pTmpVert[iL_in].vert[c]; fvMax[c]=fvMin[c]; }
|
||||||
|
for (l=(iL_in+1); l<=iR_in; l++) {
|
||||||
|
for (c=0; c<3; c++) {
|
||||||
if (fvMin[c]>pTmpVert[l].vert[c]) fvMin[c]=pTmpVert[l].vert[c];
|
if (fvMin[c]>pTmpVert[l].vert[c]) fvMin[c]=pTmpVert[l].vert[c];
|
||||||
else if (fvMax[c]<pTmpVert[l].vert[c]) fvMax[c]=pTmpVert[l].vert[c];
|
if (fvMax[c]<pTmpVert[l].vert[c]) fvMax[c]=pTmpVert[l].vert[c];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
dx = fvMax[0]-fvMin[0];
|
dx = fvMax[0]-fvMin[0];
|
||||||
dy = fvMax[1]-fvMin[1];
|
dy = fvMax[1]-fvMin[1];
|
||||||
|
|||||||
18
make.bat
18
make.bat
@@ -126,24 +126,12 @@ set BUILD_DIR=%BUILD_DIR%_%TARGET%_%BUILD_ARCH%_vc%BUILD_VS_VER%_%BUILD_TYPE%
|
|||||||
|
|
||||||
if "%target%"=="Release" (
|
if "%target%"=="Release" (
|
||||||
rem for vc12 check for both cuda 7.5 and 8
|
rem for vc12 check for both cuda 7.5 and 8
|
||||||
if "%BUILD_VS_VER%"=="12" (
|
if "%CUDA_PATH%"=="" (
|
||||||
if "%CUDA_PATH_V7_5%"=="" (
|
echo Cuda Not found, aborting!
|
||||||
echo Cuda 7.5 Not found, aborting!
|
|
||||||
goto EOF
|
goto EOF
|
||||||
)
|
)
|
||||||
)
|
|
||||||
if "%CUDA_PATH_V8_0%"=="" (
|
|
||||||
echo Cuda 8.0 Not found, aborting!
|
|
||||||
goto EOF
|
|
||||||
)
|
|
||||||
if "%BUILD_VS_VER%"=="12" (
|
|
||||||
set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
|
set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
|
||||||
-C"%BLENDER_DIR%\build_files\cmake\config\blender_release.cmake" -DCUDA_NVCC_EXECUTABLE:FILEPATH=%CUDA_PATH_V7_5%/bin/nvcc.exe -DCUDA_NVCC8_EXECUTABLE:FILEPATH=%CUDA_PATH_V8_0%/bin/nvcc.exe
|
-C"%BLENDER_DIR%\build_files\cmake\config\blender_release.cmake"
|
||||||
)
|
|
||||||
if "%BUILD_VS_VER%"=="14" (
|
|
||||||
set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
|
|
||||||
-C"%BLENDER_DIR%\build_files\cmake\config\blender_release.cmake" -DCUDA_NVCC_EXECUTABLE:FILEPATH=%CUDA_PATH_V8_0%/bin/nvcc.exe -DCUDA_NVCC8_EXECUTABLE:FILEPATH=%CUDA_PATH_V8_0%/bin/nvcc.exe
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
:DetectMSVC
|
:DetectMSVC
|
||||||
|
|||||||
@@ -1006,10 +1006,10 @@ class WM_OT_doc_view(Operator):
|
|||||||
|
|
||||||
doc_id = doc_id
|
doc_id = doc_id
|
||||||
if bpy.app.version_cycle == "release":
|
if bpy.app.version_cycle == "release":
|
||||||
_prefix = ("http://www.blender.org/documentation/blender_python_api_%s%s_release" %
|
_prefix = ("https://www.blender.org/api/blender_python_api_%s%s_release" %
|
||||||
("_".join(str(v) for v in bpy.app.version[:2]), bpy.app.version_char))
|
("_".join(str(v) for v in bpy.app.version[:2]), bpy.app.version_char))
|
||||||
else:
|
else:
|
||||||
_prefix = ("http://www.blender.org/documentation/blender_python_api_%s" %
|
_prefix = ("https://www.blender.org/api/blender_python_api_%s" %
|
||||||
"_".join(str(v) for v in bpy.app.version))
|
"_".join(str(v) for v in bpy.app.version))
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
@@ -1023,79 +1023,6 @@ class WM_OT_doc_view(Operator):
|
|||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
|
|
||||||
|
|
||||||
'''
|
|
||||||
class WM_OT_doc_edit(Operator):
|
|
||||||
"""Edit online reference docs"""
|
|
||||||
bl_idname = "wm.doc_edit"
|
|
||||||
bl_label = "Edit Documentation"
|
|
||||||
|
|
||||||
doc_id = doc_id
|
|
||||||
doc_new = doc_new
|
|
||||||
|
|
||||||
_url = "http://www.mindrones.com/blender/svn/xmlrpc.php"
|
|
||||||
|
|
||||||
def _send_xmlrpc(self, data_dict):
|
|
||||||
print("sending data:", data_dict)
|
|
||||||
|
|
||||||
import xmlrpc.client
|
|
||||||
user = "blenderuser"
|
|
||||||
pwd = "blender>user"
|
|
||||||
|
|
||||||
docblog = xmlrpc.client.ServerProxy(self._url)
|
|
||||||
docblog.metaWeblog.newPost(1, user, pwd, data_dict, 1)
|
|
||||||
|
|
||||||
def execute(self, context):
|
|
||||||
|
|
||||||
doc_id = self.doc_id
|
|
||||||
doc_new = self.doc_new
|
|
||||||
|
|
||||||
class_name, class_prop = doc_id.split('.')
|
|
||||||
|
|
||||||
if not doc_new:
|
|
||||||
self.report({'ERROR'}, "No input given for '%s'" % doc_id)
|
|
||||||
return {'CANCELLED'}
|
|
||||||
|
|
||||||
# check if this is an operator
|
|
||||||
op_name = class_name.upper() + '_OT_' + class_prop
|
|
||||||
op_class = getattr(bpy.types, op_name, None)
|
|
||||||
|
|
||||||
# Upload this to the web server
|
|
||||||
upload = {}
|
|
||||||
|
|
||||||
if op_class:
|
|
||||||
rna = op_class.bl_rna
|
|
||||||
doc_orig = rna.description
|
|
||||||
if doc_orig == doc_new:
|
|
||||||
return {'RUNNING_MODAL'}
|
|
||||||
|
|
||||||
print("op - old:'%s' -> new:'%s'" % (doc_orig, doc_new))
|
|
||||||
upload["title"] = 'OPERATOR %s:%s' % (doc_id, doc_orig)
|
|
||||||
else:
|
|
||||||
rna = getattr(bpy.types, class_name).bl_rna
|
|
||||||
doc_orig = rna.properties[class_prop].description
|
|
||||||
if doc_orig == doc_new:
|
|
||||||
return {'RUNNING_MODAL'}
|
|
||||||
|
|
||||||
print("rna - old:'%s' -> new:'%s'" % (doc_orig, doc_new))
|
|
||||||
upload["title"] = 'RNA %s:%s' % (doc_id, doc_orig)
|
|
||||||
|
|
||||||
upload["description"] = doc_new
|
|
||||||
|
|
||||||
self._send_xmlrpc(upload)
|
|
||||||
|
|
||||||
return {'FINISHED'}
|
|
||||||
|
|
||||||
def draw(self, context):
|
|
||||||
layout = self.layout
|
|
||||||
layout.label(text="Descriptor ID: '%s'" % self.doc_id)
|
|
||||||
layout.prop(self, "doc_new", text="")
|
|
||||||
|
|
||||||
def invoke(self, context, event):
|
|
||||||
wm = context.window_manager
|
|
||||||
return wm.invoke_props_dialog(self, width=600)
|
|
||||||
'''
|
|
||||||
|
|
||||||
|
|
||||||
rna_path = StringProperty(
|
rna_path = StringProperty(
|
||||||
name="Property Edit",
|
name="Property Edit",
|
||||||
description="Property data_path edit",
|
description="Property data_path edit",
|
||||||
|
|||||||
@@ -254,6 +254,21 @@ static void library_foreach_paint(LibraryForeachIDData *data, Paint *paint)
|
|||||||
FOREACH_FINALIZE_VOID;
|
FOREACH_FINALIZE_VOID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void library_foreach_ID_as_subdata_link(
|
||||||
|
ID *id, LibraryIDLinkCallback callback, void *user_data, int flag, LibraryForeachIDData *data)
|
||||||
|
{
|
||||||
|
if (flag & IDWALK_RECURSE) {
|
||||||
|
/* Defer handling into main loop, recursively calling BKE_library_foreach_ID_link in IDWALK_RECURSE case is
|
||||||
|
* troublesome, see T49553. */
|
||||||
|
if (!BLI_gset_haskey(data->ids_handled, id)) {
|
||||||
|
BLI_gset_add(data->ids_handled, id);
|
||||||
|
BLI_LINKSTACK_PUSH(data->ids_todo, id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
BKE_library_foreach_ID_link(id, callback, user_data, flag);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loop over all of the ID's this datablock links to.
|
* Loop over all of the ID's this datablock links to.
|
||||||
@@ -271,6 +286,8 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
|
|||||||
|
|
||||||
data.ids_handled = BLI_gset_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, __func__);
|
data.ids_handled = BLI_gset_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, __func__);
|
||||||
BLI_LINKSTACK_INIT(data.ids_todo);
|
BLI_LINKSTACK_INIT(data.ids_todo);
|
||||||
|
|
||||||
|
BLI_gset_add(data.ids_handled, id);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
data.ids_handled = NULL;
|
data.ids_handled = NULL;
|
||||||
@@ -315,7 +332,7 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
|
|||||||
CALLBACK_INVOKE(scene->clip, IDWALK_USER);
|
CALLBACK_INVOKE(scene->clip, IDWALK_USER);
|
||||||
if (scene->nodetree) {
|
if (scene->nodetree) {
|
||||||
/* nodetree **are owned by IDs**, treat them as mere sub-data and not real ID! */
|
/* nodetree **are owned by IDs**, treat them as mere sub-data and not real ID! */
|
||||||
BKE_library_foreach_ID_link((ID *)scene->nodetree, callback, user_data, flag);
|
library_foreach_ID_as_subdata_link((ID *)scene->nodetree, callback, user_data, flag, &data);
|
||||||
}
|
}
|
||||||
/* DO NOT handle scene->basact here, it's doubling with the loop over whole scene->base later,
|
/* DO NOT handle scene->basact here, it's doubling with the loop over whole scene->base later,
|
||||||
* since basact is just a pointer to one of those items. */
|
* since basact is just a pointer to one of those items. */
|
||||||
@@ -570,7 +587,7 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
|
|||||||
}
|
}
|
||||||
if (material->nodetree) {
|
if (material->nodetree) {
|
||||||
/* nodetree **are owned by IDs**, treat them as mere sub-data and not real ID! */
|
/* nodetree **are owned by IDs**, treat them as mere sub-data and not real ID! */
|
||||||
BKE_library_foreach_ID_link((ID *)material->nodetree, callback, user_data, flag);
|
library_foreach_ID_as_subdata_link((ID *)material->nodetree, callback, user_data, flag, &data);
|
||||||
}
|
}
|
||||||
CALLBACK_INVOKE(material->group, IDWALK_USER);
|
CALLBACK_INVOKE(material->group, IDWALK_USER);
|
||||||
break;
|
break;
|
||||||
@@ -581,7 +598,7 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
|
|||||||
Tex *texture = (Tex *) id;
|
Tex *texture = (Tex *) id;
|
||||||
if (texture->nodetree) {
|
if (texture->nodetree) {
|
||||||
/* nodetree **are owned by IDs**, treat them as mere sub-data and not real ID! */
|
/* nodetree **are owned by IDs**, treat them as mere sub-data and not real ID! */
|
||||||
BKE_library_foreach_ID_link((ID *)texture->nodetree, callback, user_data, flag);
|
library_foreach_ID_as_subdata_link((ID *)texture->nodetree, callback, user_data, flag, &data);
|
||||||
}
|
}
|
||||||
CALLBACK_INVOKE(texture->ima, IDWALK_USER);
|
CALLBACK_INVOKE(texture->ima, IDWALK_USER);
|
||||||
if (texture->env) {
|
if (texture->env) {
|
||||||
@@ -614,7 +631,7 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
|
|||||||
}
|
}
|
||||||
if (lamp->nodetree) {
|
if (lamp->nodetree) {
|
||||||
/* nodetree **are owned by IDs**, treat them as mere sub-data and not real ID! */
|
/* nodetree **are owned by IDs**, treat them as mere sub-data and not real ID! */
|
||||||
BKE_library_foreach_ID_link((ID *)lamp->nodetree, callback, user_data, flag);
|
library_foreach_ID_as_subdata_link((ID *)lamp->nodetree, callback, user_data, flag, &data);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -654,7 +671,7 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
|
|||||||
}
|
}
|
||||||
if (world->nodetree) {
|
if (world->nodetree) {
|
||||||
/* nodetree **are owned by IDs**, treat them as mere sub-data and not real ID! */
|
/* nodetree **are owned by IDs**, treat them as mere sub-data and not real ID! */
|
||||||
BKE_library_foreach_ID_link((ID *)world->nodetree, callback, user_data, flag);
|
library_foreach_ID_as_subdata_link((ID *)world->nodetree, callback, user_data, flag, &data);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -751,7 +768,7 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u
|
|||||||
}
|
}
|
||||||
if (linestyle->nodetree) {
|
if (linestyle->nodetree) {
|
||||||
/* nodetree **are owned by IDs**, treat them as mere sub-data and not real ID! */
|
/* nodetree **are owned by IDs**, treat them as mere sub-data and not real ID! */
|
||||||
BKE_library_foreach_ID_link((ID *)linestyle->nodetree, callback, user_data, flag);
|
library_foreach_ID_as_subdata_link((ID *)linestyle->nodetree, callback, user_data, flag, &data);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (lsm = linestyle->color_modifiers.first; lsm; lsm = lsm->next) {
|
for (lsm = linestyle->color_modifiers.first; lsm; lsm = lsm->next) {
|
||||||
|
|||||||
@@ -3049,6 +3049,14 @@ static bool constructive_modifier_is_deform_modified(ModifierData *md)
|
|||||||
ScrewModifierData *smd = (ScrewModifierData *)md;
|
ScrewModifierData *smd = (ScrewModifierData *)md;
|
||||||
return smd->ob_axis != NULL && object_moves_in_time(smd->ob_axis);
|
return smd->ob_axis != NULL && object_moves_in_time(smd->ob_axis);
|
||||||
}
|
}
|
||||||
|
else if (md->type == eModifierType_MeshSequenceCache) {
|
||||||
|
/* NOTE: Not ideal because it's unknown whether topology changes or not.
|
||||||
|
* This will be detected later, so by assuming it's only deformation
|
||||||
|
* going on here we allow to bake deform-only mesh to Alembic and have
|
||||||
|
* proper motion blur after that.
|
||||||
|
*/
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ static void ed_keymap_gpencil_editing(wmKeyConfig *keyconf)
|
|||||||
RNA_string_set(kmi->ptr, "data_path_primary", "user_preferences.edit.grease_pencil_eraser_radius");
|
RNA_string_set(kmi->ptr, "data_path_primary", "user_preferences.edit.grease_pencil_eraser_radius");
|
||||||
|
|
||||||
/* Interpolation */
|
/* Interpolation */
|
||||||
WM_keymap_add_item(keymap, "GPENCIL_OT_interpolate", EKEY, KM_PRESS, KM_CTRL, 0);
|
WM_keymap_add_item(keymap, "GPENCIL_OT_interpolate", EKEY, KM_PRESS, KM_CTRL | KM_ALT, 0);
|
||||||
WM_keymap_add_item(keymap, "GPENCIL_OT_interpolate_sequence", EKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0);
|
WM_keymap_add_item(keymap, "GPENCIL_OT_interpolate_sequence", EKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0);
|
||||||
|
|
||||||
/* Sculpting ------------------------------------- */
|
/* Sculpting ------------------------------------- */
|
||||||
|
|||||||
@@ -2639,6 +2639,7 @@ static void ui_draw_separator(const rcti *rect, uiWidgetColors *wcol)
|
|||||||
|
|
||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
glColor4ubv(col);
|
glColor4ubv(col);
|
||||||
|
glLineWidth(1.0f);
|
||||||
sdrawline(rect->xmin, y, rect->xmax, y);
|
sdrawline(rect->xmin, y, rect->xmax, y);
|
||||||
glDisable(GL_BLEND);
|
glDisable(GL_BLEND);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user