Merging r49149 through r49167 from trunk into soc-2011-tomato

This commit is contained in:
Sergey Sharybin
2012-07-24 09:03:40 +00:00
9 changed files with 80 additions and 72 deletions

View File

@@ -376,7 +376,7 @@ dict_uimsgs = {
"chebychev",
"kutta",
"lennard",
"minkowsky",
"minkowski",
"minnaert",
"musgrave",
"nayar",

View File

@@ -2094,7 +2094,7 @@ void do_versions_ipos_to_animato(Main *main)
bAction *new_act;
/* add a new action for this, and convert all data into that action */
new_act = add_empty_action("ConvIPO_Action"); // XXX need a better name...
new_act = add_empty_action(id->name+2);
ipo_to_animato(NULL, ipo, NULL, NULL, NULL, NULL, &new_act->curves, &drivers);
new_act->idroot = ipo->blocktype;
}

View File

@@ -260,6 +260,7 @@ void convolve(float *dst, MemoryBuffer *in1, MemoryBuffer *in2)
float *imageBuffer = in1->getBuffer();
MemoryBuffer *rdst = new MemoryBuffer(NULL, in1->getRect());
memset(rdst->getBuffer(), 0, rdst->getWidth() * rdst->getHeight() * COM_NUMBER_OF_CHANNELS * sizeof(float));
// convolution result width & height
w2 = 2 * kernelWidth - 1;

View File

@@ -173,6 +173,11 @@ typedef enum GPUDynamicType {
GPU_DYNAMIC_SAMPLER_2DBUFFER = 12,
GPU_DYNAMIC_SAMPLER_2DIMAGE = 13,
GPU_DYNAMIC_SAMPLER_2DSHADOW = 14,
GPU_DYNAMIC_LAMP_DISTANCE = 15,
GPU_DYNAMIC_LAMP_ATT1 = 16,
GPU_DYNAMIC_LAMP_ATT2 = 17,
GPU_DYNAMIC_LAMP_SPOTSIZE = 18,
GPU_DYNAMIC_LAMP_SPOTBLEND = 19,
} GPUDynamicType;
typedef enum GPUDataType {
@@ -231,6 +236,8 @@ void GPU_lamp_shadow_buffer_unbind(GPULamp *lamp);
void GPU_lamp_update(GPULamp *lamp, int lay, int hide, float obmat[][4]);
void GPU_lamp_update_colors(GPULamp *lamp, float r, float g, float b, float energy);
void GPU_lamp_update_distance(GPULamp *lamp, float distance, float att1, float att2);
void GPU_lamp_update_spot(GPULamp *lamp, float spotsize, float spotblend);
int GPU_lamp_shadow_layer(GPULamp *lamp);
#ifdef __cplusplus

View File

@@ -117,6 +117,7 @@ struct GPULamp {
float dynimat[4][4];
float spotsi, spotbl, k;
float dyndist, dynatt1, dynatt2;
float dist, att1, att2;
float shadow_color[3];
@@ -413,13 +414,13 @@ static GPUNodeLink *lamp_get_visibility(GPUMaterial *mat, GPULamp *lamp, GPUNode
case LA_FALLOFF_CONSTANT:
break;
case LA_FALLOFF_INVLINEAR:
GPU_link(mat, "lamp_falloff_invlinear", GPU_uniform(&lamp->dist), *dist, &visifac);
GPU_link(mat, "lamp_falloff_invlinear", GPU_dynamic_uniform(&lamp->dist, GPU_DYNAMIC_LAMP_DISTANCE, lamp->ob), *dist, &visifac);
break;
case LA_FALLOFF_INVSQUARE:
GPU_link(mat, "lamp_falloff_invsquare", GPU_uniform(&lamp->dist), *dist, &visifac);
GPU_link(mat, "lamp_falloff_invsquare", GPU_dynamic_uniform(&lamp->dist, GPU_DYNAMIC_LAMP_DISTANCE, lamp->ob), *dist, &visifac);
break;
case LA_FALLOFF_SLIDERS:
GPU_link(mat, "lamp_falloff_sliders", GPU_uniform(&lamp->dist), GPU_uniform(&lamp->att1), GPU_uniform(&lamp->att2), *dist, &visifac);
GPU_link(mat, "lamp_falloff_sliders", GPU_dynamic_uniform(&lamp->dist, GPU_DYNAMIC_LAMP_DISTANCE, lamp->ob), GPU_dynamic_uniform(&lamp->att1, GPU_DYNAMIC_LAMP_ATT1, lamp->ob), GPU_dynamic_uniform(&lamp->att2, GPU_DYNAMIC_LAMP_ATT2, lamp->ob), *dist, &visifac);
break;
case LA_FALLOFF_CURVE:
{
@@ -427,13 +428,13 @@ static GPUNodeLink *lamp_get_visibility(GPUMaterial *mat, GPULamp *lamp, GPUNode
int size;
curvemapping_table_RGBA(lamp->curfalloff, &array, &size);
GPU_link(mat, "lamp_falloff_curve", GPU_uniform(&lamp->dist), GPU_texture(size, array), *dist, &visifac);
GPU_link(mat, "lamp_falloff_curve", GPU_dynamic_uniform(&lamp->dist, GPU_DYNAMIC_LAMP_DISTANCE, lamp->ob), GPU_texture(size, array), *dist, &visifac);
}
break;
}
if (lamp->mode & LA_SPHERE)
GPU_link(mat, "lamp_visibility_sphere", GPU_uniform(&lamp->dist), *dist, visifac, &visifac);
GPU_link(mat, "lamp_visibility_sphere", GPU_dynamic_uniform(&lamp->dist, GPU_DYNAMIC_LAMP_DISTANCE, lamp->ob), *dist, visifac, &visifac);
if (lamp->type == LA_SPOT) {
if (lamp->mode & LA_SQUARE) {
@@ -445,7 +446,7 @@ static GPUNodeLink *lamp_get_visibility(GPUMaterial *mat, GPULamp *lamp, GPUNode
GPU_link(mat, "lamp_visibility_spot_circle", GPU_dynamic_uniform(lamp->dynvec, GPU_DYNAMIC_LAMP_DYNVEC, lamp->ob), *lv, &inpr);
}
GPU_link(mat, "lamp_visibility_spot", GPU_uniform(&lamp->spotsi), GPU_uniform(&lamp->spotbl), inpr, visifac, &visifac);
GPU_link(mat, "lamp_visibility_spot", GPU_dynamic_uniform(&lamp->spotsi, GPU_DYNAMIC_LAMP_SPOTSIZE, lamp->ob), GPU_dynamic_uniform(&lamp->spotbl, GPU_DYNAMIC_LAMP_SPOTSIZE, lamp->ob), inpr, visifac, &visifac);
}
GPU_link(mat, "lamp_visibility_clamp", visifac, &visifac);
@@ -1570,6 +1571,19 @@ void GPU_lamp_update_colors(GPULamp *lamp, float r, float g, float b, float ener
lamp->col[2]= b* lamp->energy;
}
void GPU_lamp_update_distance(GPULamp *lamp, float distance, float att1, float att2)
{
lamp->dist = distance;
lamp->att1 = att1;
lamp->att2 = att2;
}
void GPU_lamp_update_spot(GPULamp *lamp, float spotsize, float spotblend)
{
lamp->spotsi= cos(M_PI*spotsize/360.0);
lamp->spotbl= (1.0f - lamp->spotsi)*spotblend;
}
static void gpu_lamp_from_blender(Scene *scene, Object *ob, Object *par, Lamp *la, GPULamp *lamp)
{
float temp, angle, pixsize, wsize;

View File

@@ -155,56 +155,38 @@ static StructRNA *rna_Curve_refine(PointerRNA *ptr)
static void rna_BezTriple_handle1_get(PointerRNA *ptr, float *values)
{
BezTriple *bt = (BezTriple *)ptr->data;
values[0] = bt->vec[0][0];
values[1] = bt->vec[0][1];
values[2] = bt->vec[0][2];
BezTriple *bezt = (BezTriple *)ptr->data;
copy_v3_v3(values, bezt->vec[0]);
}
static void rna_BezTriple_handle1_set(PointerRNA *ptr, const float *values)
{
BezTriple *bt = (BezTriple *)ptr->data;
bt->vec[0][0] = values[0];
bt->vec[0][1] = values[1];
bt->vec[0][2] = values[2];
BezTriple *bezt = (BezTriple *)ptr->data;
copy_v3_v3(bezt->vec[0], values);
}
static void rna_BezTriple_handle2_get(PointerRNA *ptr, float *values)
{
BezTriple *bt = (BezTriple *)ptr->data;
values[0] = bt->vec[2][0];
values[1] = bt->vec[2][1];
values[2] = bt->vec[2][2];
BezTriple *bezt = (BezTriple *)ptr->data;
copy_v3_v3(values, bezt->vec[2]);
}
static void rna_BezTriple_handle2_set(PointerRNA *ptr, const float *values)
{
BezTriple *bt = (BezTriple *)ptr->data;
bt->vec[2][0] = values[0];
bt->vec[2][1] = values[1];
bt->vec[2][2] = values[2];
BezTriple *bezt = (BezTriple *)ptr->data;
copy_v3_v3(bezt->vec[2], values);
}
static void rna_BezTriple_ctrlpoint_get(PointerRNA *ptr, float *values)
{
BezTriple *bt = (BezTriple *)ptr->data;
values[0] = bt->vec[1][0];
values[1] = bt->vec[1][1];
values[2] = bt->vec[1][2];
BezTriple *bezt = (BezTriple *)ptr->data;
copy_v3_v3(values, bezt->vec[1]);
}
static void rna_BezTriple_ctrlpoint_set(PointerRNA *ptr, const float *values)
{
BezTriple *bt = (BezTriple *)ptr->data;
bt->vec[1][0] = values[0];
bt->vec[1][1] = values[1];
bt->vec[1][2] = values[2];
BezTriple *bezt = (BezTriple *)ptr->data;
copy_v3_v3(bezt->vec[1], values);
}
static void rna_Curve_texspace_set(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)

View File

@@ -250,60 +250,42 @@ static void rna_MaskSplinePoint_handle1_get(PointerRNA *ptr, float *values)
{
MaskSplinePoint *point = (MaskSplinePoint*) ptr->data;
BezTriple *bezt = &point->bezt;
values[0] = bezt->vec[0][0];
values[1] = bezt->vec[0][1];
values[2] = bezt->vec[0][2];
copy_v2_v2(values, bezt->vec[0]);
}
static void rna_MaskSplinePoint_handle1_set(PointerRNA *ptr, const float *values)
{
MaskSplinePoint *point = (MaskSplinePoint*) ptr->data;
BezTriple *bezt = &point->bezt;
bezt->vec[0][0] = values[0];
bezt->vec[0][1] = values[1];
bezt->vec[0][2] = values[2];
copy_v2_v2(bezt->vec[0], values);
}
static void rna_MaskSplinePoint_handle2_get(PointerRNA *ptr, float *values)
{
MaskSplinePoint *point = (MaskSplinePoint*) ptr->data;
BezTriple *bezt = &point->bezt;
values[0] = bezt->vec[2][0];
values[1] = bezt->vec[2][1];
values[2] = bezt->vec[2][2];
copy_v2_v2(values, bezt->vec[2]);
}
static void rna_MaskSplinePoint_handle2_set(PointerRNA *ptr, const float *values)
{
MaskSplinePoint *point = (MaskSplinePoint*) ptr->data;
BezTriple *bezt = &point->bezt;
bezt->vec[2][0] = values[0];
bezt->vec[2][1] = values[1];
bezt->vec[2][2] = values[2];
copy_v2_v2(bezt->vec[2], values);
}
static void rna_MaskSplinePoint_ctrlpoint_get(PointerRNA *ptr, float *values)
{
MaskSplinePoint *point = (MaskSplinePoint*) ptr->data;
BezTriple *bezt = &point->bezt;
values[0] = bezt->vec[1][0];
values[1] = bezt->vec[1][1];
values[2] = bezt->vec[1][2];
copy_v2_v2(values, bezt->vec[1]);
}
static void rna_MaskSplinePoint_ctrlpoint_set(PointerRNA *ptr, const float *values)
{
MaskSplinePoint *point = (MaskSplinePoint*) ptr->data;
BezTriple *bezt = &point->bezt;
bezt->vec[1][0] = values[0];
bezt->vec[1][1] = values[1];
bezt->vec[1][2] = values[2];
copy_v2_v2(bezt->vec[1], values);
}
static int rna_MaskSplinePoint_handle_type_get(PointerRNA *ptr)
@@ -324,7 +306,7 @@ static void rna_MaskSplinePoint_handle_type_set(PointerRNA *ptr, int value)
/* ** API ** */
static MaskLayer *rna_Mask_layer_new(Mask *mask, const char *name)
static MaskLayer *rna_Mask_layers_new(Mask *mask, const char *name)
{
MaskLayer *masklay = BKE_mask_layer_new(mask, name);
@@ -333,13 +315,25 @@ static MaskLayer *rna_Mask_layer_new(Mask *mask, const char *name)
return masklay;
}
void rna_Mask_layer_remove(Mask *mask, MaskLayer *masklay)
void rna_Mask_layers_remove(Mask *mask, ReportList *reports, MaskLayer *masklay)
{
if (BLI_findindex(&mask->masklayers, masklay) == -1) {
BKE_reportf(reports, RPT_ERROR, "MaskLayer '%s' not found in mask '%s'", masklay->name, mask->id.name + 2);
return;
}
BKE_mask_layer_remove(mask, masklay);
WM_main_add_notifier(NC_MASK | NA_EDITED, mask);
}
static void rna_Mask_layers_clear(Mask *mask)
{
BKE_mask_layer_free_list(&mask->masklayers);
WM_main_add_notifier(NC_MASK | NA_EDITED, mask);
}
static void rna_MaskLayer_spline_add(ID *id, MaskLayer *masklay, int number)
{
Mask *mask = (Mask*) id;
@@ -467,19 +461,19 @@ static void rna_def_maskSplinePoint(BlenderRNA *brna)
/* Vector values */
prop = RNA_def_property(srna, "handle_left", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_array(prop, 3);
RNA_def_property_array(prop, 2);
RNA_def_property_float_funcs(prop, "rna_MaskSplinePoint_handle1_get", "rna_MaskSplinePoint_handle1_set", NULL);
RNA_def_property_ui_text(prop, "Handle 1", "Coordinates of the first handle");
RNA_def_property_update(prop, 0, "rna_Mask_update_data");
prop = RNA_def_property(srna, "co", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_array(prop, 3);
RNA_def_property_array(prop, 2);
RNA_def_property_float_funcs(prop, "rna_MaskSplinePoint_ctrlpoint_get", "rna_MaskSplinePoint_ctrlpoint_set", NULL);
RNA_def_property_ui_text(prop, "Control Point", "Coordinates of the control point");
RNA_def_property_update(prop, 0, "rna_Mask_update_data");
prop = RNA_def_property(srna, "handle_right", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_array(prop, 3);
RNA_def_property_array(prop, 2);
RNA_def_property_float_funcs(prop, "rna_MaskSplinePoint_handle2_get", "rna_MaskSplinePoint_handle2_set", NULL);
RNA_def_property_ui_text(prop, "Handle 2", "Coordinates of the second handle");
RNA_def_property_update(prop, 0, "rna_Mask_update_data");
@@ -680,16 +674,21 @@ static void rna_def_masklayers(BlenderRNA *brna, PropertyRNA *cprop)
RNA_def_struct_sdna(srna, "Mask");
RNA_def_struct_ui_text(srna, "Mask Layers", "Collection of layers used by mask");
func = RNA_def_function(srna, "new", "rna_Mask_layer_new");
func = RNA_def_function(srna, "new", "rna_Mask_layers_new");
RNA_def_function_ui_description(func, "Add layer to this mask");
RNA_def_string(func, "name", "", 0, "Name", "Name of new layer");
parm = RNA_def_pointer(func, "layer", "MaskLayer", "", "New mask layer");
RNA_def_function_return(func, parm);
func = RNA_def_function(srna, "remove", "rna_Mask_layer_remove");
func = RNA_def_function(srna, "remove", "rna_Mask_layers_remove");
RNA_def_function_flag(func, FUNC_USE_REPORTS);
RNA_def_function_ui_description(func, "Remove layer from this mask");
RNA_def_pointer(func, "layer", "MaskLayer", "", "Shape to be removed");
/* clear all layers */
func = RNA_def_function(srna, "clear", "rna_Mask_layers_clear");
RNA_def_function_ui_description(func, "Remove all mask layers");
/* active layer */
prop = RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE);
RNA_def_property_struct_type(prop, "MaskLayer");

View File

@@ -1759,7 +1759,7 @@ static void rna_def_object_modifiers(BlenderRNA *brna, PropertyRNA *cprop)
/* RNA_def_property_collection_active(prop, prop_act); */
#endif
/* add target */
/* add modifier */
func = RNA_def_function(srna, "new", "rna_Object_modifier_new");
RNA_def_function_flag(func, FUNC_USE_CONTEXT | FUNC_USE_REPORTS);
RNA_def_function_ui_description(func, "Add a new modifier");
@@ -1772,11 +1772,11 @@ static void rna_def_object_modifiers(BlenderRNA *brna, PropertyRNA *cprop)
parm = RNA_def_pointer(func, "modifier", "Modifier", "", "Newly created modifier");
RNA_def_function_return(func, parm);
/* remove target */
/* remove modifier */
func = RNA_def_function(srna, "remove", "rna_Object_modifier_remove");
RNA_def_function_flag(func, FUNC_USE_CONTEXT | FUNC_USE_REPORTS);
RNA_def_function_ui_description(func, "Remove an existing modifier from the object");
/* target to remove*/
/* modifier to remove */
parm = RNA_def_pointer(func, "modifier", "Modifier", "", "Modifier to remove");
RNA_def_property_flag(parm, PROP_REQUIRED | PROP_NEVER_NULL);

View File

@@ -67,10 +67,13 @@ KX_LightObject::KX_LightObject(void* sgReplicationInfo,SG_Callbacks callbacks,
KX_LightObject::~KX_LightObject()
{
GPULamp *lamp;
Lamp *la = (Lamp*)GetBlenderObject()->data;
if ((lamp = GetGPULamp())) {
float obmat[4][4] = {{0}};
GPU_lamp_update(lamp, 0, 0, obmat);
GPU_lamp_update_distance(lamp, la->dist, la->att1, la->att2);
GPU_lamp_update_spot(lamp, la->spotsize, la->spotblend);
}
m_rendertools->RemoveLight(&m_lightobj);
@@ -206,6 +209,8 @@ void KX_LightObject::Update()
GPU_lamp_update(lamp, m_lightobj.m_layer, 0, obmat);
GPU_lamp_update_colors(lamp, m_lightobj.m_red, m_lightobj.m_green,
m_lightobj.m_blue, m_lightobj.m_energy);
GPU_lamp_update_distance(lamp, m_lightobj.m_distance, m_lightobj.m_att1, m_lightobj.m_att2);
GPU_lamp_update_spot(lamp, m_lightobj.m_spotsize, m_lightobj.m_spotblend);
}
}