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/intern
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2019-03-20 20:40:10 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-03-20 20:40:10 +0300
commite0d95b7f79a31c6dcee15132f9de2861204f2a5b (patch)
treed40eca49cd906238328d99b3c6987eea07c6f550 /intern
parenteb94a0db4f50cdf751144ec19cbab05b6110b338 (diff)
parentd7cecc2ba3f6ee9c907af456253dcf3417157644 (diff)
Merge branch 'blender2.7'
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/render/merge.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/intern/cycles/render/merge.cpp b/intern/cycles/render/merge.cpp
index 3a85ae18f06..289bb023d72 100644
--- a/intern/cycles/render/merge.cpp
+++ b/intern/cycles/render/merge.cpp
@@ -392,34 +392,35 @@ static bool merge_pixels(const vector<MergeImage>& images,
for(size_t li = 0; li < image.layers.size(); li++) {
const MergeImageLayer& layer = image.layers[li];
- const size_t stride = out_spec.nchannels;
+ const size_t stride = image.in->spec().nchannels;
+ const size_t out_stride = out_spec.nchannels;
const size_t num_pixels = pixels.size();
for(const MergeImagePass& pass: layer.passes) {
size_t offset = pass.offset;
- size_t merge_offset = pass.merge_offset;
+ size_t out_offset = pass.merge_offset;
switch(pass.op) {
case MERGE_CHANNEL_NOP:
break;
case MERGE_CHANNEL_COPY:
- for(size_t i = 0; i < num_pixels; i += stride) {
- out_pixels[i + merge_offset] = pixels[i + offset];
+ for(; offset < num_pixels; offset += stride, out_offset += out_stride) {
+ out_pixels[out_offset] = pixels[offset];
}
break;
case MERGE_CHANNEL_SUM:
- for(size_t i = 0; i < num_pixels; i += stride) {
- out_pixels[i + merge_offset] += pixels[i + offset];
+ for(; offset < num_pixels; offset += stride, out_offset += out_stride) {
+ out_pixels[out_offset] += pixels[offset];
}
break;
case MERGE_CHANNEL_AVERAGE:
/* Weights based on sample metadata. Per channel since not
* all files are guaranteed to have the same channels. */
- const int total_samples = channel_total_samples[offset];
+ const int total_samples = channel_total_samples[out_offset];
const float t = (float)layer.samples / (float)total_samples;
- for(size_t i = 0; i < num_pixels; i += stride) {
- out_pixels[i + merge_offset] += t * pixels[i + offset];
+ for(; offset < num_pixels; offset += stride, out_offset += out_stride) {
+ out_pixels[out_offset] += t * pixels[offset];
}
break;
}