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
diff options
context:
space:
mode:
authorJoerg Mueller <nexyon@gmail.com>2011-07-07 00:26:56 +0400
committerJoerg Mueller <nexyon@gmail.com>2011-07-07 00:26:56 +0400
commit34c5784f992f64e52f5b07e0f457ec53d9709874 (patch)
treeedad94020584cc192007960edf17da0957a66c51 /source/blender
parent44220bba7a8f2f09264ea1e581096d65a00579e4 (diff)
parenta83c3c0b1422713d8553965988c3096955eaa452 (diff)
Merging trunk up to r38167.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/avi/AVI_avi.h11
-rw-r--r--source/blender/avi/CMakeLists.txt1
-rw-r--r--source/blender/avi/SConscript2
-rw-r--r--source/blender/avi/intern/avi.c12
-rw-r--r--source/blender/avi/intern/options.c2
-rw-r--r--source/blender/blenkernel/intern/anim.c19
-rw-r--r--source/blender/blenkernel/intern/material.c6
-rw-r--r--source/blender/blenlib/BLI_math_base.h4
-rw-r--r--source/blender/blenlib/BLI_winstuff.h9
-rw-r--r--source/blender/blenlib/intern/storage.c2
-rw-r--r--source/blender/editors/object/object_relations.c1
-rw-r--r--source/blender/editors/space_sequencer/sequencer_draw.c10
-rw-r--r--source/blender/editors/space_sequencer/sequencer_edit.c26
-rw-r--r--source/blender/imbuf/intern/util.c1
-rw-r--r--source/blender/nodes/intern/TEX_nodes/TEX_texture.c18
-rw-r--r--source/blender/render/intern/source/rendercore.c6
-rw-r--r--source/blender/render/intern/source/shadeinput.c8
17 files changed, 94 insertions, 44 deletions
diff --git a/source/blender/avi/AVI_avi.h b/source/blender/avi/AVI_avi.h
index 85685e2bd4c..1446971a8ac 100644
--- a/source/blender/avi/AVI_avi.h
+++ b/source/blender/avi/AVI_avi.h
@@ -55,11 +55,12 @@
#ifndef __AVI_H__
#define __AVI_H__
+#include "MEM_sys_types.h"
#include <stdio.h> /* for FILE */
typedef struct _AviChunk {
int fcc;
- int size;
+ int64_t size;
} AviChunk;
typedef struct _AviList {
@@ -185,16 +186,16 @@ typedef struct _AviMovie {
#define AVI_MOVIE_READ 0
#define AVI_MOVIE_WRITE 1
- unsigned long size;
+ int64_t size;
AviMainHeader *header;
AviStreamRec *streams;
AviIndexEntry *entries;
int index_entries;
- int movi_offset;
- int read_offset;
- long *offset_table;
+ int64_t movi_offset;
+ int64_t read_offset;
+ int64_t *offset_table;
/* Local data goes here */
int interlace;
diff --git a/source/blender/avi/CMakeLists.txt b/source/blender/avi/CMakeLists.txt
index b62e0cc5afd..bae61fd678b 100644
--- a/source/blender/avi/CMakeLists.txt
+++ b/source/blender/avi/CMakeLists.txt
@@ -27,6 +27,7 @@
set(INC
.
../../../intern/guardedalloc
+ ../blenlib
)
set(INC_SYS
diff --git a/source/blender/avi/SConscript b/source/blender/avi/SConscript
index 0bf8c3c74db..4d2ce8fd845 100644
--- a/source/blender/avi/SConscript
+++ b/source/blender/avi/SConscript
@@ -3,7 +3,7 @@ Import ('env')
sources = env.Glob('intern/*.c')
-incs = '. #/intern/guardedalloc'
+incs = '. #/intern/guardedalloc ../blenlib'
incs += ' ' + env['BF_JPEG_INC']
env.BlenderLib ('bf_avi', sources, Split(incs), [], libtype=['core','player'], priority = [190,120] )
diff --git a/source/blender/avi/intern/avi.c b/source/blender/avi/intern/avi.c
index 82bf3a3d21b..ff3aafbf065 100644
--- a/source/blender/avi/intern/avi.c
+++ b/source/blender/avi/intern/avi.c
@@ -42,6 +42,9 @@
#include <ctype.h>
#include "MEM_guardedalloc.h"
+#include "MEM_sys_types.h"
+
+#include "BLI_winstuff.h"
#include "AVI_avi.h"
#include "avi_intern.h"
@@ -593,7 +596,6 @@ AviError AVI_open_movie (const char *name, AviMovie *movie) {
movie->movi_offset = ftell (movie->fp);
movie->read_offset = movie->movi_offset;
- if (AVI_DEBUG) printf ("movi_offset is %d\n", movie->movi_offset);
/* Read in the index if the file has one, otherwise create one */
if (movie->header->Flags & AVIF_HASINDEX) {
@@ -707,8 +709,8 @@ AviError AVI_open_compress (char *name, AviMovie *movie, int streams, ...) {
AviList list;
AviChunk chunk;
int i;
- int header_pos1, header_pos2;
- int stream_pos1, stream_pos2;
+ int64_t header_pos1, header_pos2;
+ int64_t stream_pos1, stream_pos2;
movie->type = AVI_MOVIE_WRITE;
movie->fp = fopen (name, "wb");
@@ -718,7 +720,7 @@ AviError AVI_open_compress (char *name, AviMovie *movie, int streams, ...) {
if (movie->fp == NULL)
return AVI_ERROR_OPEN;
- movie->offset_table = (long *) MEM_mallocN ((1+streams*2) * sizeof (long),"offsettable");
+ movie->offset_table = (int64_t *) MEM_mallocN ((1+streams*2) * sizeof (int64_t),"offsettable");
for (i=0; i < 1 + streams*2; i++)
movie->offset_table[i] = -1L;
@@ -897,7 +899,7 @@ AviError AVI_write_frame (AviMovie *movie, int frame_num, ...) {
AviIndexEntry *temp;
va_list ap;
int stream;
- long rec_off;
+ int64_t rec_off;
AviFormat format;
void *buffer;
int size;
diff --git a/source/blender/avi/intern/options.c b/source/blender/avi/intern/options.c
index edb708d8a69..96c62843436 100644
--- a/source/blender/avi/intern/options.c
+++ b/source/blender/avi/intern/options.c
@@ -40,6 +40,8 @@
#include "avi_intern.h"
#include "endian.h"
+#include "BLI_winstuff.h"
+
/* avi_set_compress_options gets its own file... now don't WE feel important? */
AviError AVI_set_compress_option (AviMovie *movie, int option_type, int stream, AviOption option, void *opt_data) {
diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c
index 0747d87a0ab..8aa816f9cb5 100644
--- a/source/blender/blenkernel/intern/anim.c
+++ b/source/blender/blenkernel/intern/anim.c
@@ -719,12 +719,13 @@ static void group_duplilist(ListBase *lb, Scene *scene, Object *ob, int level, i
/* note, if you check on layer here, render goes wrong... it still deforms verts and uses parent imat */
if(go->ob!=ob) {
- /* Group Dupli Offset, should apply after everything else */
- if (group->dupli_ofs[0] || group->dupli_ofs[1] || group->dupli_ofs[2]) {
+ /* group dupli offset, should apply after everything else */
+ if(!is_zero_v3(group->dupli_ofs)) {
copy_m4_m4(tmat, go->ob->obmat);
sub_v3_v3v3(tmat[3], tmat[3], group->dupli_ofs);
mul_m4_m4m4(mat, tmat, ob->obmat);
- } else {
+ }
+ else {
mul_m4_m4m4(mat, go->ob->obmat, ob->obmat);
}
@@ -1395,7 +1396,17 @@ static void new_particle_duplilist(ListBase *lb, ID *id, Scene *scene, Object *p
if(part->ren_as==PART_DRAW_GR && psys->part->draw & PART_DRAW_WHOLE_GR) {
for(go= part->dup_group->gobject.first, b=0; go; go= go->next, b++) {
- mul_m4_m4m4(tmat, oblist[b]->obmat, pamat);
+
+ /* group dupli offset, should apply after everything else */
+ if(!is_zero_v3(part->dup_group->dupli_ofs)) {
+ copy_m4_m4(tmat, oblist[b]->obmat);
+ sub_v3_v3v3(tmat[3], tmat[3], part->dup_group->dupli_ofs);
+ mul_m4_m4m4(tmat, tmat, pamat);
+ }
+ else {
+ mul_m4_m4m4(tmat, oblist[b]->obmat, pamat);
+ }
+
mul_mat3_m4_fl(tmat, size*scale);
if(par_space_mat)
mul_m4_m4m4(mat, tmat, par_space_mat);
diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c
index 334f018efc9..2f29074834b 100644
--- a/source/blender/blenkernel/intern/material.c
+++ b/source/blender/blenkernel/intern/material.c
@@ -867,6 +867,10 @@ static void do_init_render_material(Material *ma, int r_mode, float *amb)
if(ma->strand_surfnor > 0.0f)
ma->mode_l |= MA_STR_SURFDIFF;
+
+ /* parses the geom+tex nodes */
+ if(ma->nodetree && ma->use_nodes)
+ ntreeShaderGetTexcoMode(ma->nodetree, r_mode, &ma->texco, &ma->mode_l);
}
static void init_render_nodetree(bNodeTree *ntree, Material *basemat, int r_mode, float *amb)
@@ -887,8 +891,6 @@ static void init_render_nodetree(bNodeTree *ntree, Material *basemat, int r_mode
init_render_nodetree((bNodeTree *)node->id, basemat, r_mode, amb);
}
}
- /* parses the geom+tex nodes */
- ntreeShaderGetTexcoMode(ntree, r_mode, &basemat->texco, &basemat->mode_l);
}
void init_render_material(Material *mat, int r_mode, float *amb)
diff --git a/source/blender/blenlib/BLI_math_base.h b/source/blender/blenlib/BLI_math_base.h
index 6ff57b08724..b5bab6f15be 100644
--- a/source/blender/blenlib/BLI_math_base.h
+++ b/source/blender/blenlib/BLI_math_base.h
@@ -39,6 +39,10 @@
#include <math.h>
#include "BLI_math_inline.h"
+#ifdef __sun__
+#include <ieeefp.h> /* for finite() */
+#endif
+
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
diff --git a/source/blender/blenlib/BLI_winstuff.h b/source/blender/blenlib/BLI_winstuff.h
index d0eb3c7d67d..e0c819c2dba 100644
--- a/source/blender/blenlib/BLI_winstuff.h
+++ b/source/blender/blenlib/BLI_winstuff.h
@@ -98,6 +98,15 @@ extern "C" {
typedef unsigned int mode_t;
#endif
+/* use functions that take a 64 bit offset for files larger than 4GB */
+#ifndef FREE_WINDOWS
+#include <stdio.h>
+#define fseek(stream, offset, origin) _fseeki64(stream, offset, origin)
+#define ftell(stream) _ftelli64(stream)
+#define lseek(fd, offset, origin) _lseeki64(fd, offset, origin)
+#define tell(fd) _telli64(fd)
+#endif
+
/* mingw using _SSIZE_T_ to declare ssize_t type */
#ifndef _SSIZE_T_
#define _SSIZE_T_
diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c
index e9db148e992..41eedef8835 100644
--- a/source/blender/blenlib/intern/storage.c
+++ b/source/blender/blenlib/intern/storage.c
@@ -478,7 +478,7 @@ LinkNode *BLI_read_file_as_lines(const char *name)
FILE *fp= fopen(name, "r");
LinkNode *lines= NULL;
char *buf;
- int size;
+ int64_t size;
if (!fp) return NULL;
diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c
index f3b67867d7f..285b08c521b 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -1660,6 +1660,7 @@ void ED_object_single_users(Main *bmain, Scene *scene, int full)
if(full) {
single_obdata_users(bmain, scene, 0);
+ single_object_action_users(scene, 0);
single_mat_users_expand(bmain);
single_tex_users_expand(bmain);
}
diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c
index e1efd5b4622..1ed262c3e23 100644
--- a/source/blender/editors/space_sequencer/sequencer_draw.c
+++ b/source/blender/editors/space_sequencer/sequencer_draw.c
@@ -644,10 +644,12 @@ static void draw_seq_strip(Scene *scene, ARegion *ar, Sequence *seq, int outline
if (G.moving && (seq->flag & SELECT)) {
if(seq->flag & SEQ_OVERLAP) {
col[0]= 255; col[1]= col[2]= 40;
- } else UI_GetColorPtrBlendShade3ubv(col, col, col, 0.0, 120);
+ }
+ else
+ UI_GetColorPtrBlendShade3ubv(col, col, col, 0.0, 120+outline_tint);
}
-
- UI_GetColorPtrBlendShade3ubv(col, col, col, 0.0, outline_tint);
+ else
+ UI_GetColorPtrBlendShade3ubv(col, col, col, 0.0, outline_tint);
glColor3ubv((GLubyte *)col);
@@ -970,7 +972,7 @@ static void draw_seq_strips(const bContext *C, Editing *ed, ARegion *ar)
/* loop through strips, checking for those that are visible */
for (seq= ed->seqbasep->first; seq; seq= seq->next) {
/* boundbox and selection tests for NOT drawing the strip... */
- if ((seq->flag & SELECT) == sel) continue;
+ if ((seq->flag & SELECT) != sel) continue;
else if (seq == last_seq) continue;
else if (MIN2(seq->startdisp, seq->start) > v2d->cur.xmax) continue;
else if (MAX2(seq->enddisp, seq->start+seq->len) < v2d->cur.xmin) continue;
diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c
index 46638007fb1..4252d051154 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -125,6 +125,7 @@ typedef struct TransSeq {
int startstill, endstill;
int startdisp, enddisp;
int startofs, endofs;
+ int anim_startofs, anim_endofs;
/* int final_left, final_right; */ /* UNUSED */
int len;
} TransSeq;
@@ -732,8 +733,10 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence * seq, int cutframe)
ts.endstill= seq->endstill;
ts.startdisp= seq->startdisp;
ts.enddisp= seq->enddisp;
- ts.startofs= seq->anim_startofs;
- ts.endofs= seq->anim_endofs;
+ ts.startofs= seq->startofs;
+ ts.endofs= seq->endofs;
+ ts.anim_startofs= seq->anim_startofs;
+ ts.anim_endofs= seq->anim_endofs;
ts.len= seq->len;
/* First Strip! */
@@ -783,7 +786,7 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence * seq, int cutframe)
if ((seqn->startstill) && (cutframe == seqn->start + 1)) {
seqn->start = ts.start;
seqn->startstill= ts.start- cutframe;
- seqn->anim_endofs = ts.endofs;
+ seqn->anim_endofs = ts.anim_endofs;
seqn->endstill = ts.endstill;
}
@@ -792,8 +795,9 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence * seq, int cutframe)
seqn->start = cutframe;
seqn->startstill = 0;
seqn->startofs = 0;
+ seqn->endofs = ts.endofs;
seqn->anim_startofs += cutframe - ts.start;
- seqn->anim_endofs = ts.endofs;
+ seqn->anim_endofs = ts.anim_endofs;
seqn->endstill = ts.endstill;
}
@@ -828,6 +832,8 @@ static Sequence *cut_seq_soft(Scene *scene, Sequence * seq, int cutframe)
ts.enddisp= seq->enddisp;
ts.startofs= seq->startofs;
ts.endofs= seq->endofs;
+ ts.anim_startofs= seq->anim_startofs;
+ ts.anim_endofs= seq->anim_endofs;
ts.len= seq->len;
/* First Strip! */
@@ -1781,19 +1787,21 @@ static int sequencer_separate_images_exec(bContext *C, wmOperator *op)
/* new seq */
se = give_stripelem(seq, cfra);
- seq_new= alloc_sequence(ed->seqbasep, start_ofs, seq->machine);
+ seq_new= seq_dupli_recursive(scene, scene, seq, SEQ_DUPE_UNIQUE_NAME);
+ BLI_addtail(&ed->seqbase, seq_new);
+
+ seq_new->start= start_ofs;
seq_new->type= SEQ_IMAGE;
seq_new->len = 1;
seq_new->endstill = step-1;
/* new strip */
- seq_new->strip= strip_new= MEM_callocN(sizeof(Strip)*1, "strip");
+ strip_new= seq_new->strip;
strip_new->len= 1;
strip_new->us= 1;
- strncpy(strip_new->dir, seq->strip->dir, FILE_MAXDIR-1);
/* new stripdata */
- strip_new->stripdata= se_new= MEM_callocN(sizeof(StripElem)*1, "stripelem");
+ se_new= strip_new->stripdata;
BLI_strncpy(se_new->name, se->name, sizeof(se_new->name));
calc_sequence(scene, seq_new);
@@ -1805,8 +1813,6 @@ static int sequencer_separate_images_exec(bContext *C, wmOperator *op)
}
/* XXX, COPY FCURVES */
- strncpy(seq_new->name+2, seq->name+2, sizeof(seq->name)-2);
- seqbase_unique_name_recursive(&scene->ed->seqbase, seq_new);
cfra++;
start_ofs += step;
diff --git a/source/blender/imbuf/intern/util.c b/source/blender/imbuf/intern/util.c
index fe85f63e109..6db8dcc06cf 100644
--- a/source/blender/imbuf/intern/util.c
+++ b/source/blender/imbuf/intern/util.c
@@ -113,6 +113,7 @@ const char *imb_ext_movie[] = {
".m4v",
".m2v",
".m2t",
+ ".m2ts",
".mts",
".mv",
".avs",
diff --git a/source/blender/nodes/intern/TEX_nodes/TEX_texture.c b/source/blender/nodes/intern/TEX_nodes/TEX_texture.c
index d4d77b5fd5a..c58595866af 100644
--- a/source/blender/nodes/intern/TEX_nodes/TEX_texture.c
+++ b/source/blender/nodes/intern/TEX_nodes/TEX_texture.c
@@ -49,18 +49,18 @@ static bNodeSocketType outputs[]= {
static void colorfn(float *out, TexParams *p, bNode *node, bNodeStack **in, short thread)
{
+ Tex *nodetex = (Tex *)node->id;
static float red[] = {1,0,0,1};
static float white[] = {1,1,1,1};
- float *co = p->co;
-
- Tex *nodetex = (Tex *)node->id;
+ float co[3], dxt[3], dyt[3];
+
+ copy_v3_v3(co, p->co);
+ copy_v3_v3(dxt, p->dxt);
+ copy_v3_v3(dyt, p->dyt);
if(node->custom2 || node->need_exec==0) {
/* this node refers to its own texture tree! */
- QUATCOPY(
- out,
- (fabs(co[0] - co[1]) < .01) ? white : red
- );
+ QUATCOPY(out, (fabs(co[0] - co[1]) < .01) ? white : red );
}
else if(nodetex) {
TexResult texres;
@@ -70,9 +70,9 @@ static void colorfn(float *out, TexParams *p, bNode *node, bNodeStack **in, shor
tex_input_rgba(col1, in[0], p, thread);
tex_input_rgba(col2, in[1], p, thread);
-
+
texres.nor = nor;
- textype = multitex_nodes(nodetex, co, p->dxt, p->dyt, p->osatex,
+ textype = multitex_nodes(nodetex, co, dxt, dyt, p->osatex,
&texres, thread, 0, p->shi, p->mtex);
if(textype & TEX_RGB) {
diff --git a/source/blender/render/intern/source/rendercore.c b/source/blender/render/intern/source/rendercore.c
index 2fa6bed5aae..3aca334cffe 100644
--- a/source/blender/render/intern/source/rendercore.c
+++ b/source/blender/render/intern/source/rendercore.c
@@ -627,6 +627,12 @@ static void add_passes(RenderLayer *rl, int offset, ShadeInput *shi, ShadeResult
*fp= (float)shi->obr->ob->index;
}
break;
+ case SCE_PASS_INDEXMA:
+ if(shi->vlr) {
+ fp= rpass->rect + offset;
+ *fp= (float)shi->mat->index;
+ }
+ break;
case SCE_PASS_MIST:
fp= rpass->rect + offset;
*fp= shr->mist;
diff --git a/source/blender/render/intern/source/shadeinput.c b/source/blender/render/intern/source/shadeinput.c
index a1b79346824..eab66aaf2ec 100644
--- a/source/blender/render/intern/source/shadeinput.c
+++ b/source/blender/render/intern/source/shadeinput.c
@@ -771,7 +771,8 @@ void shade_input_set_uv(ShadeInput *shi)
t00= v3[axis1]-v1[axis1]; t01= v3[axis2]-v1[axis2];
t10= v3[axis1]-v2[axis1]; t11= v3[axis2]-v2[axis2];
- detsh= 1.0f/(t00*t11-t10*t01);
+ detsh= (t00*t11-t10*t01);
+ detsh= (detsh != 0.0f)? 1.0f/detsh: 0.0f;
t00*= detsh; t01*=detsh;
t10*=detsh; t11*=detsh;
@@ -1272,8 +1273,9 @@ void shade_input_set_shade_texco(ShadeInput *shi)
s11= ho3[1]/ho3[3] - ho2[1]/ho2[3];
detsh= s00*s11-s10*s01;
- s00/= detsh; s01/=detsh;
- s10/=detsh; s11/=detsh;
+ detsh= (detsh != 0.0f)? 1.0f/detsh: 0.0f;
+ s00*= detsh; s01*=detsh;
+ s10*=detsh; s11*=detsh;
/* recalc u and v again */
hox= x/Zmulx -1.0f;