Merging r49149 through r49167 from trunk into soc-2011-tomato
This commit is contained in:
@@ -376,7 +376,7 @@ dict_uimsgs = {
|
||||
"chebychev",
|
||||
"kutta",
|
||||
"lennard",
|
||||
"minkowsky",
|
||||
"minkowski",
|
||||
"minnaert",
|
||||
"musgrave",
|
||||
"nayar",
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user