Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorSebastian Parborg <darkdefende@gmail.com>2021-01-20 20:18:38 +0300
committerSebastian Parborg <darkdefende@gmail.com>2021-01-20 20:18:38 +0300
commitc07c110467ca3c41fcebf7b9062a96b0fb1a3eef (patch)
treeb94cb128a7a27ad53c28553ed96fc3f8eacd4aab /source
parente12eb89f22c6ee17971195e0221a8e8b8ee3db8a (diff)
parentb33d839162b6d4b8b85937eb095b661ac93cbddd (diff)
Merge branch 'blender-v2.92-release'
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/BKE_geometry_set.hh2
-rw-r--r--source/blender/blenkernel/intern/geometry_set.cc10
-rw-r--r--source/blender/editors/gpencil/gpencil_primitive.c3
-rw-r--r--source/blender/editors/object/object_bake_api.c6
-rw-r--r--source/blender/nodes/geometry/nodes/node_geo_transform.cc12
-rw-r--r--source/blender/render/intern/render_result.c5
6 files changed, 35 insertions, 3 deletions
diff --git a/source/blender/blenkernel/BKE_geometry_set.hh b/source/blender/blenkernel/BKE_geometry_set.hh
index 391bd243edf..ad5a5d57045 100644
--- a/source/blender/blenkernel/BKE_geometry_set.hh
+++ b/source/blender/blenkernel/BKE_geometry_set.hh
@@ -456,6 +456,8 @@ class InstancesComponent : public GeometryComponent {
blender::Span<blender::float3> scales() const;
blender::Span<int> ids() const;
blender::MutableSpan<blender::float3> positions();
+ blender::MutableSpan<blender::float3> rotations();
+ blender::MutableSpan<blender::float3> scales();
int instances_amount() const;
bool is_empty() const final;
diff --git a/source/blender/blenkernel/intern/geometry_set.cc b/source/blender/blenkernel/intern/geometry_set.cc
index 5d2b82dcc5f..81958b81213 100644
--- a/source/blender/blenkernel/intern/geometry_set.cc
+++ b/source/blender/blenkernel/intern/geometry_set.cc
@@ -540,6 +540,16 @@ MutableSpan<float3> InstancesComponent::positions()
return positions_;
}
+MutableSpan<float3> InstancesComponent::rotations()
+{
+ return rotations_;
+}
+
+MutableSpan<float3> InstancesComponent::scales()
+{
+ return scales_;
+}
+
int InstancesComponent::instances_amount() const
{
const int size = instanced_data_.size();
diff --git a/source/blender/editors/gpencil/gpencil_primitive.c b/source/blender/editors/gpencil/gpencil_primitive.c
index 99242e48cc1..ef86b19cc66 100644
--- a/source/blender/editors/gpencil/gpencil_primitive.c
+++ b/source/blender/editors/gpencil/gpencil_primitive.c
@@ -1022,7 +1022,7 @@ static void gpencil_primitive_update_strokes(bContext *C, tGPDprimitive *tgpi)
tpt->uv_fac = 0.0f;
}
- tpt->uv_rot = p2d->uv_rot;
+ tpt->uv_rot = 0.0f;
gpd->runtime.sbuffer_used++;
@@ -1044,6 +1044,7 @@ static void gpencil_primitive_update_strokes(bContext *C, tGPDprimitive *tgpi)
pt->time = 0.0f;
pt->flag = 0;
pt->uv_fac = tpt->uv_fac;
+ pt->uv_rot = 0.0f;
ED_gpencil_point_vertex_color_set(ts, brush, pt, tpt);
if (gps->dvert != NULL) {
diff --git a/source/blender/editors/object/object_bake_api.c b/source/blender/editors/object/object_bake_api.c
index 8a63ab22b36..113a0395e8c 100644
--- a/source/blender/editors/object/object_bake_api.c
+++ b/source/blender/editors/object/object_bake_api.c
@@ -441,6 +441,12 @@ static bool bake_object_check(ViewLayer *view_layer,
}
Mesh *me = (Mesh *)ob->data;
+
+ if (me->totpoly == 0) {
+ BKE_reportf(reports, RPT_ERROR, "No faces found in the object \"%s\"", ob->id.name + 2);
+ return false;
+ }
+
if (target == R_BAKE_TARGET_VERTEX_COLORS) {
MPropCol *mcol = CustomData_get_layer(&me->vdata, CD_PROP_COLOR);
MLoopCol *mloopcol = CustomData_get_layer(&me->ldata, CD_MLOOPCOL);
diff --git a/source/blender/nodes/geometry/nodes/node_geo_transform.cc b/source/blender/nodes/geometry/nodes/node_geo_transform.cc
index abfa603b584..4fe61dff72d 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_transform.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_transform.cc
@@ -92,6 +92,8 @@ static void transform_instances(InstancesComponent &instances,
const float3 scale)
{
MutableSpan<float3> positions = instances.positions();
+ MutableSpan<float3> rotations = instances.rotations();
+ MutableSpan<float3> scales = instances.scales();
/* Use only translation if rotation and scale don't apply. */
if (use_translate(rotation, scale)) {
@@ -101,9 +103,15 @@ static void transform_instances(InstancesComponent &instances,
}
else {
float mat[4][4];
+ float instance_mat[4][4];
+ float quaternion[4];
+
loc_eul_size_to_mat4(mat, translation, rotation, scale);
- for (float3 &position : positions) {
- mul_m4_v3(mat, position);
+ for (int i = 0; i < positions.size(); i++) {
+ loc_eul_size_to_mat4(instance_mat, positions[i], rotations[i], scales[i]);
+ mul_m4_m4_post(instance_mat, mat);
+ mat4_decompose(positions[i], quaternion, scales[i], instance_mat);
+ quat_to_eul(rotations[i], quaternion);
}
}
}
diff --git a/source/blender/render/intern/render_result.c b/source/blender/render/intern/render_result.c
index 1ed894751ce..f135adc9f05 100644
--- a/source/blender/render/intern/render_result.c
+++ b/source/blender/render/intern/render_result.c
@@ -1229,6 +1229,10 @@ void render_result_exr_file_begin(Render *re, RenderEngine *engine)
/* end write of exr tile file, read back first sample */
void render_result_exr_file_end(Render *re, RenderEngine *engine)
{
+ /* Preserve stamp data. */
+ struct StampData *stamp_data = re->result->stamp_data;
+ re->result->stamp_data = NULL;
+
/* Close EXR files. */
for (RenderResult *rr = re->result; rr; rr = rr->next) {
LISTBASE_FOREACH (RenderLayer *, rl, &rr->layers) {
@@ -1243,6 +1247,7 @@ void render_result_exr_file_end(Render *re, RenderEngine *engine)
BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE);
render_result_free_list(&re->fullresult, re->result);
re->result = render_result_new(re, &re->disprect, RR_USE_MEM, RR_ALL_LAYERS, RR_ALL_VIEWS);
+ re->result->stamp_data = stamp_data;
BLI_rw_mutex_unlock(&re->resultmutex);
LISTBASE_FOREACH (RenderLayer *, rl, &re->result->layers) {