[Bf-blender-cvs] [df64d865e1c] soc-2018-npr: Merge branch 'master' into soc-2018-npr
Yiming Wu
noreply at git.blender.org
Sat Apr 20 06:52:00 CEST 2019
Commit: df64d865e1c7f1f278a11f7266cb173a9644aff1
Author: Yiming Wu
Date: Sat Apr 20 12:51:21 2019 +0800
Branches: soc-2018-npr
https://developer.blender.org/rBdf64d865e1c7f1f278a11f7266cb173a9644aff1
Merge branch 'master' into soc-2018-npr
# Conflicts:
# intern/opensubdiv/internal/opensubdiv_evaluator.cc
# intern/opensubdiv/internal/opensubdiv_evaluator_internal.cc
# release/scripts/startup/bl_ui/properties_data_modifier.py
# source/blender/CMakeLists.txt
# source/blender/blenkernel/intern/scene.c
# source/blender/blenloader/intern/readfile.c
# source/blender/blenloader/intern/versioning_280.c
# source/blender/blenloader/intern/writefile.c
# source/blender/bmesh/intern/bmesh_polygon.c
# source/blender/draw/CMakeLists.txt
# source/blender/draw/intern/draw_manager.c
# source/blender/draw/modes/object_mode.c
# source/blender/editors/mesh/editmesh_tools.c
# source/blender/editors/mesh/mesh_ops.c
# source/blender/editors/render/render_intern.h
# source/blender/editors/render/render_ops.c
# source/blender/editors/space_outliner/outliner_draw.c
# source/blender/editors/space_view3d/space_view3d.c
# source/blender/makesdna/DNA_light_types.h
# source/blender/makesdna/DNA_modifier_types.h
# source/blender/makesdna/DNA_scene_types.h
# source/blender/makesdna/intern/makesdna.c
# source/blender/makesrna/intern/CMakeLists.txt
# source/blender/makesrna/intern/makesrna.c
# source/blender/makesrna/intern/rna_modifier.c
# source/blender/makesrna/intern/rna_scene.c
# source/blender/modifiers/CMakeLists.txt
# source/blender/modifiers/intern/MOD_util.c
===================================================================
===================================================================
diff --cc intern/opensubdiv/internal/opensubdiv_evaluator.cc
index 0fe9c7567ea,2500691885c..a8253a144e2
--- a/intern/opensubdiv/internal/opensubdiv_evaluator.cc
+++ b/intern/opensubdiv/internal/opensubdiv_evaluator.cc
@@@ -99,44 -91,33 +91,52 @@@ void refine(OpenSubdiv_Evaluator *evalu
evaluator->internal->eval_output->refine();
}
- void evaluateLimit(OpenSubdiv_Evaluator* evaluator,
+ void evaluateLimit(OpenSubdiv_Evaluator *evaluator,
const int ptex_face_index,
- const float face_u, const float face_v,
- float P[3], float dPdu[3], float dPdv[3]) {
- evaluator->internal->eval_output->evaluateLimit(ptex_face_index,
- face_u, face_v,
- P, dPdu, dPdv);
+ const float face_u,
+ const float face_v,
+ float P[3],
+ float dPdu[3],
+ float dPdv[3])
+ {
+ evaluator->internal->eval_output->evaluateLimit(ptex_face_index, face_u, face_v, P, dPdu, dPdv);
}
++<<<<<<< HEAD
+void evaluateLimit2(OpenSubdiv_Evaluator* evaluator,
+ const int ptex_face_index,
+ const float face_u, const float face_v,
+ float P[3],
+ float dPdu[3],
+ float dPdv[3],
+ float dPduu[3],
+ float dPduv[3],
+ float dPdvv[3]) {
+ evaluator->internal->eval_output->evaluateLimit2(ptex_face_index,
+ face_u, face_v,
+ P, dPdu, dPdv,
+ dPduu, dPduv, dPdvv);
+}
+
+void evaluateVarying(OpenSubdiv_Evaluator* evaluator,
++=======
+ void evaluateVarying(OpenSubdiv_Evaluator *evaluator,
++>>>>>>> master
const int ptex_face_index,
- float face_u, float face_v,
- float varying[3]) {
- evaluator->internal->eval_output->evaluateVarying(ptex_face_index,
- face_u, face_v,
- varying);
+ float face_u,
+ float face_v,
+ float varying[3])
+ {
+ evaluator->internal->eval_output->evaluateVarying(ptex_face_index, face_u, face_v, varying);
}
- void evaluateFaceVarying(OpenSubdiv_Evaluator* evaluator,
+ void evaluateFaceVarying(OpenSubdiv_Evaluator *evaluator,
const int face_varying_channel,
const int ptex_face_index,
- float face_u, float face_v,
- float face_varying[2]) {
+ float face_u,
+ float face_v,
+ float face_varying[2])
+ {
evaluator->internal->eval_output->evaluateFaceVarying(
face_varying_channel, ptex_face_index, face_u, face_v, face_varying);
}
diff --cc intern/opensubdiv/internal/opensubdiv_evaluator_internal.cc
index 810ec4a8f91,fa45c0119ec..ccc0ec846f7
--- a/intern/opensubdiv/internal/opensubdiv_evaluator_internal.cc
+++ b/intern/opensubdiv/internal/opensubdiv_evaluator_internal.cc
@@@ -458,70 -461,8 +461,75 @@@ class VolatileEvalOutput
}
}
++<<<<<<< HEAD
+ void evalPatchesWithDerivatives2(const PatchCoord& patch_coord,
+ float P[3],
+ float dPdu[3],
+ float dPdv[3],
+ float dPduu[3],
+ float dPduv[3],
+ float dPdvv[3])
+ {
+ StackAllocatedBuffer<6, 1> vertex_data;
+ StackAllocatedBuffer<6, 1> derivatives;
+ StackAllocatedBuffer<6, 1> derivatives1;
+ StackAllocatedBuffer<6, 1> derivatives2;
+ BufferDescriptor vertex_desc(0, 3, 6),
+ du_desc(0, 3, 6),
+ dv_desc(3, 3, 6),
+ duu_desc(0, 3, 6),
+ duv_desc(3, 3, 6),
+ dvv_desc(0, 3, 6);
+ SinglePatchCoordBuffer patch_coord_buffer(patch_coord);
+ const EVALUATOR *eval_instance =
+ OpenSubdiv::Osd::GetEvaluator<EVALUATOR>(evaluator_cache_,
+ src_desc_,
+ vertex_desc,
+ du_desc,
+ dv_desc,
+ duu_desc,
+ duv_desc,
+ dvv_desc,
+ device_context_);
+ EVALUATOR::EvalPatches(src_data_, src_desc_,
+ &vertex_data, vertex_desc,
+ &derivatives, du_desc,
+ &derivatives, dv_desc,
+ &derivatives1, duu_desc,
+ &derivatives1, duv_desc,
+ &derivatives2, dvv_desc,
+ patch_coord_buffer.GetNumVertices(),
+ &patch_coord_buffer,
+ patch_table_, eval_instance, device_context_);
+ float *refined_verts = vertex_data.BindCpuBuffer();
+ memcpy(P, refined_verts, sizeof(float) * 3);
+ if (dPdu != NULL || dPdv != NULL || dPduu != NULL || dPduv != NULL || dPdvv != NULL) {
+ float *refined_drivatives = derivatives.BindCpuBuffer();
+ float *refined_drivatives1 = derivatives1.BindCpuBuffer();
+ float *refined_drivatives2 = derivatives2.BindCpuBuffer();
+ if (dPdu) {
+ memcpy(dPdu, refined_drivatives, sizeof(float) * 3);
+ }
+ if (dPdv) {
+ memcpy(dPdv, refined_drivatives + 3, sizeof(float) * 3);
+ }
+ if (dPduu) {
+ memcpy(dPduu, refined_drivatives1, sizeof(float) * 3);
+ }
+ if (dPduv) {
+ memcpy(dPduv, refined_drivatives1 + 3, sizeof(float) * 3);
+ }
+ if (dPdvv) {
+ memcpy(dPdvv, refined_drivatives2, sizeof(float) * 3);
+ }
+ }
+ }
+
+ void evalPatchVarying(const PatchCoord& patch_coord, float varying[3]) {
++=======
+ void evalPatchVarying(const PatchCoord &patch_coord, float varying[3])
+ {
++>>>>>>> master
StackAllocatedBuffer<6, 1> varying_data;
BufferDescriptor varying_desc(3, 3, 6);
SinglePatchCoordBuffer patch_coord_buffer(patch_coord);
@@@ -710,40 -654,17 +721,44 @@@ void CpuEvalOutputAPI::evaluateLimit(co
PatchCoord patch_coord(*handle, face_u, face_v);
if (dPdu != NULL || dPdv != NULL) {
implementation_->evalPatchesWithDerivatives(patch_coord, P, dPdu, dPdv);
- } else {
+ }
+ else {
implementation_->evalPatchCoord(patch_coord, P);
- }}
+ }
+ }
+void CpuEvalOutputAPI::evaluateLimit2(const int ptex_face_index,
+ float face_u, float face_v,
+ float P[3],
+ float dPdu[3],
+ float dPdv[3],
+ float dPduu[3],
+ float dPduv[3],
+ float dPdvv[3]) {
+ assert(face_u >= 0.0f);
+ assert(face_u <= 1.0f);
+ assert(face_v >= 0.0f);
+ assert(face_v <= 1.0f);
+ const PatchTable::PatchHandle* handle =
+ patch_map_->FindPatch(ptex_face_index, face_u, face_v);
+ PatchCoord patch_coord(*handle, face_u, face_v);
+ if (dPdu != NULL || dPdv != NULL || dPduu != NULL || dPduv != NULL || dPdvv != NULL ) {
+ implementation_->evalPatchesWithDerivatives2(patch_coord,
+ P,
+ dPdu,
+ dPdv,
+ dPduu,
+ dPduv,
+ dPdvv);
+ } else {
+ implementation_->evalPatchCoord(patch_coord, P);
+ }}
+
void CpuEvalOutputAPI::evaluateVarying(const int ptex_face_index,
- float face_u, float face_v,
- float varying[3]) {
+ float face_u,
+ float face_v,
+ float varying[3])
+ {
assert(face_u >= 0.0f);
assert(face_u <= 1.0f);
assert(face_v >= 0.0f);
diff --cc intern/opensubdiv/internal/opensubdiv_evaluator_internal.h
index 4e5d396b57b,7c963227d17..d380b08fe54
--- a/intern/opensubdiv/internal/opensubdiv_evaluator_internal.h
+++ b/intern/opensubdiv/internal/opensubdiv_evaluator_internal.h
@@@ -96,22 -97,14 +97,23 @@@ class CpuEvalOutputAPI
// Evaluate given ptex face at given bilinear coordinate.
// If derivatives are NULL, they will not be evaluated.
void evaluateLimit(const int ptex_face_index,
- float face_u, float face_v,
- float P[3], float dPdu[3], float dPdv[3]);
+ float face_u,
+ float face_v,
+ float P[3],
+ float dPdu[3],
+ float dPdv[3]);
+ void evaluateLimit2(const int ptex_face_index,
+ float face_u, float face_v,
+ float P[3],
+ float dPdu[3],
+ float dPdv[3],
+ float dPduu[3],
+ float dPduv[3],
+ float dPdvv[3]);
+
// Evaluate varying data at a given bilinear coordinate of given ptex face.
- void evaluateVarying(const int ptes_face_index,
- float face_u, float face_v,
- float varying[3]);
+ void evaluateVarying(const int ptes_face_index, float face_u, float face_v, float varying[3]);
// Evaluate facee-varying data at a given bilinear coordinate of given
// ptex face.
diff --cc intern/opensubdiv/opensubdiv_evaluator_capi.h
index 8e6721ba767,ceb0c58feba..a84a52b13f3
--- a/intern/opensubdiv/opensubdiv_evaluator_capi.h
+++ b/intern/opensubdiv/opensubdiv_evaluator_capi.h
@@@ -83,25 -84,19 +84,29 @@@ typedef struct OpenSubdiv_Evaluator
// Evaluate given ptex face at given bilinear coordinate.
// If derivatives are NULL, they will not be evaluated.
- void (*evaluateLimit)(struct OpenSubdiv_Evaluator* evaluator,
+ void (*evaluateLimit)(struct OpenSubdiv_Evaluator *evaluator,
const int ptex_face_index,
- float face_u, float face_v,
- float P[3], float dPdu[3], float dPdv[3]);
+ float face_u,
+ float face_v,
+ float P[3],
+ float dPdu[3],
+ float dPdv[3]);
+ void (*evaluateLimit2)(struct OpenSubdiv_Evaluator* evaluator,
+ const int ptex_face_index,
+ float face_u, float face_v,
+ float P[3],
+ float dPdu[3],
+ float dPdv[3],
+ float dPduu[3],
+ float dPduv[3],
+ float dPdvv[3]);
+
// Evaluate varying data at a given bilinear coordinate of given ptex face.
- void (*ev
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list