[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27225] branches/render25: Render Branch: compatibility related fixes for lamp power/energy/fallof,
Brecht Van Lommel
brecht at blender.org
Tue Mar 2 20:21:35 CET 2010
Revision: 27225
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27225
Author: blendix
Date: 2010-03-02 20:21:35 +0100 (Tue, 02 Mar 2010)
Log Message:
-----------
Render Branch: compatibility related fixes for lamp power/energy/fallof,
trying to get conversion to match existing renders better.
Modified Paths:
--------------
branches/render25/release/scripts/ui/properties_data_lamp.py
branches/render25/source/blender/blenkernel/BKE_node.h
branches/render25/source/blender/blenkernel/intern/object.c
branches/render25/source/blender/blenloader/intern/readfile.c
branches/render25/source/blender/editors/space_view3d/view3d_draw.c
branches/render25/source/blender/gpu/GPU_material.h
branches/render25/source/blender/gpu/intern/gpu_draw.c
branches/render25/source/blender/gpu/intern/gpu_material.c
branches/render25/source/blender/makesdna/DNA_lamp_types.h
branches/render25/source/blender/makesrna/intern/rna_lamp.c
branches/render25/source/blender/render/intern/include/lamp.h
branches/render25/source/blender/render/intern/source/cache.c
branches/render25/source/blender/render/intern/source/convertblender.c
branches/render25/source/blender/render/intern/source/lamp.c
branches/render25/source/blender/render/intern/source/material.c
branches/render25/source/blender/render/intern/source/rayshade.c
branches/render25/source/gameengine/Converter/BL_BlenderDataConversion.cpp
Modified: branches/render25/release/scripts/ui/properties_data_lamp.py
===================================================================
--- branches/render25/release/scripts/ui/properties_data_lamp.py 2010-03-02 18:49:09 UTC (rev 27224)
+++ branches/render25/release/scripts/ui/properties_data_lamp.py 2010-03-02 19:21:35 UTC (rev 27225)
@@ -96,9 +96,9 @@
col = split.column()
sub = col.column()
sub.prop(lamp, "color", text="")
- sub.prop(lamp, "power")
- if lamp.type in ('POINT', 'SPOT'):
+ if lamp.type in ('POINT', 'SPOT', 'AREA'):
+ sub.prop(lamp, "power")
sub.label(text="Falloff:")
sub.prop(lamp, "falloff_type", text="")
if lamp.falloff_type == 'CUSTOM_CURVE':
@@ -107,11 +107,9 @@
sub.prop(lamp, "falloff_smooth", text="Smooth")
col.prop(lamp, "sphere")
+ else:
+ sub.prop(lamp, "energy")
- if lamp.type == 'AREA':
- col.prop(lamp, "falloff_distance", text="Distance")
- col.prop(lamp, "gamma")
-
if wide_ui:
col = split.column()
col.prop(lamp, "negative")
@@ -258,8 +256,6 @@
else:
if wide_ui:
col = split.column()
-
-
elif lamp.shadow_method == 'BUFFER_SHADOW':
col = layout.column()
col.label(text="Buffer Type:")
@@ -306,6 +302,9 @@
sub.active = not lamp.auto_clip_end
sub.prop(lamp, "shadow_buffer_clip_end", text=" Clip End")
+ elif lamp.type == 'AREA':
+ col = layout.column()
+ col.prop(lamp, "shadow_ray_samples_x", text="Samples")
class DATA_PT_area(DataButtonsPanel):
bl_label = "Area Shape"
Modified: branches/render25/source/blender/blenkernel/BKE_node.h
===================================================================
--- branches/render25/source/blender/blenkernel/BKE_node.h 2010-03-02 18:49:09 UTC (rev 27224)
+++ branches/render25/source/blender/blenkernel/BKE_node.h 2010-03-02 19:21:35 UTC (rev 27225)
@@ -36,25 +36,26 @@
/* not very important, but the stack solver likes to know a maximum */
#define MAX_SOCKET 64
-struct ID;
-struct bNodeTree;
+struct bContext;
struct bNode;
struct bNodeLink;
struct bNodeSocket;
struct bNodeStack;
-struct uiLayout;
+struct bNodeTree;
+struct GPUMaterial;
+struct GPUNode;
+struct GPUNodeStack;
+struct ID;
+struct ListBase;
+struct Main;
+struct MTex;
+struct PointerRNA;
struct rctf;
-struct ListBase;
+struct Render;
struct RenderData;
-struct Render;
struct Scene;
-struct Main;
struct Tex;
-struct GPUMaterial;
-struct GPUNode;
-struct GPUNodeStack;
-struct PointerRNA;
-struct bContext;
+struct uiLayout;
/* ************** NODE TYPE DEFINITIONS ***** */
Modified: branches/render25/source/blender/blenkernel/intern/object.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/object.c 2010-03-02 18:49:09 UTC (rev 27224)
+++ branches/render25/source/blender/blenkernel/intern/object.c 2010-03-02 19:21:35 UTC (rev 27225)
@@ -789,8 +789,9 @@
la->r= la->g= la->b= la->k= 1.0f;
la->haint= 1.0f;
- la->energy= 80.0f;
- la->dist= 0.0f;
+ la->energy= 1.0f;
+ la->power= 80.0f;
+ la->dist= 30.0f;
la->spotsize= 45.0f;
la->spotblend= 0.15f;
la->mode= LA_SHAD_BUF;
Modified: branches/render25/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/render25/source/blender/blenloader/intern/readfile.c 2010-03-02 18:49:09 UTC (rev 27224)
+++ branches/render25/source/blender/blenloader/intern/readfile.c 2010-03-02 19:21:35 UTC (rev 27225)
@@ -6429,8 +6429,18 @@
if(la->falloff_type == LA_FALLOFF_SLIDERS)
la->falloff_type= LA_FALLOFF_INVLINEAR;
- la->energy *= M_PI*la->dist;
- la->falloff_smooth = 1.0f;
+ la->power= la->energy*M_PI*la->dist;
+ la->falloff_smooth = 1.0f/(M_PI*la->energy);
+
+ if(la->type == LA_AREA) {
+ la->mode &= ~LA_SPHERE;
+
+ if(la->ray_samp == 1)
+ la->ray_samp = 5;
+
+ la->power *= M_PI/2*la->dist;
+ la->falloff_smooth = 0.0f;
+ }
}
for(ob= main->object.first; ob; ob= ob->id.next) {
Modified: branches/render25/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- branches/render25/source/blender/editors/space_view3d/view3d_draw.c 2010-03-02 18:49:09 UTC (rev 27224)
+++ branches/render25/source/blender/editors/space_view3d/view3d_draw.c 2010-03-02 19:21:35 UTC (rev 27225)
@@ -1773,7 +1773,7 @@
if(lamp) {
GPU_lamp_update(lamp, ob->lay, obmat);
- GPU_lamp_update_colors(lamp, la->r, la->g, la->b, la->energy);
+ GPU_lamp_update_colors(lamp, la->r, la->g, la->b, la->power);
if((ob->lay & v3d->lay) && GPU_lamp_has_shadow_buffer(lamp)) {
shadow= MEM_callocN(sizeof(View3DShadow), "View3DShadow");
Modified: branches/render25/source/blender/gpu/GPU_material.h
===================================================================
--- branches/render25/source/blender/gpu/GPU_material.h 2010-03-02 18:49:09 UTC (rev 27224)
+++ branches/render25/source/blender/gpu/GPU_material.h 2010-03-02 19:21:35 UTC (rev 27225)
@@ -159,7 +159,7 @@
void GPU_lamp_shadow_buffer_unbind(GPULamp *lamp);
void GPU_lamp_update(GPULamp *lamp, int lay, float obmat[][4]);
-void GPU_lamp_update_colors(GPULamp *lamp, float r, float g, float b, float energy);
+void GPU_lamp_update_colors(GPULamp *lamp, float r, float g, float b, float power);
int GPU_lamp_shadow_layer(GPULamp *lamp);
#ifdef __cplusplus
Modified: branches/render25/source/blender/gpu/intern/gpu_draw.c
===================================================================
--- branches/render25/source/blender/gpu/intern/gpu_draw.c 2010-03-02 18:49:09 UTC (rev 27224)
+++ branches/render25/source/blender/gpu/intern/gpu_draw.c 2010-03-02 19:21:35 UTC (rev 27225)
@@ -1170,7 +1170,7 @@
Base *base;
Lamp *la;
int count;
- float position[4], direction[4], energy[4];
+ float position[4], direction[4], energy[4], power;
/* disable all lights */
for(count=0; count<8; count++)
@@ -1226,11 +1226,13 @@
else
glLightf(GL_LIGHT0+count, GL_SPOT_CUTOFF, 180.0);
}
+
+ power= (ELEM(la->type, LA_SUN, LA_HEMI))? la->energy*M_PI: la->power;
/* setup energy */
- energy[0]= la->energy*la->r;
- energy[1]= la->energy*la->g;
- energy[2]= la->energy*la->b;
+ energy[0]= power*la->r;
+ energy[1]= power*la->g;
+ energy[2]= power*la->b;
energy[3]= 1.0;
glLightfv(GL_LIGHT0+count, GL_DIFFUSE, energy);
Modified: branches/render25/source/blender/gpu/intern/gpu_material.c
===================================================================
--- branches/render25/source/blender/gpu/intern/gpu_material.c 2010-03-02 18:49:09 UTC (rev 27224)
+++ branches/render25/source/blender/gpu/intern/gpu_material.c 2010-03-02 19:21:35 UTC (rev 27225)
@@ -105,8 +105,8 @@
int type, mode, lay;
- float dynenergy, dyncol[3];
- float energy, col[3];
+ float dynpower, dyncol[3];
+ float power, col[3];
float co[3], vec[3];
float dynco[3], dynvec[3];
@@ -257,11 +257,11 @@
lamp= nlink->data;
if((lamp->lay & viewlay) && (!(lamp->mode & LA_LAYER) || (lamp->lay & oblay))) {
- lamp->dynenergy = lamp->energy;
+ lamp->dynpower = lamp->power;
VECCOPY(lamp->dyncol, lamp->col);
}
else {
- lamp->dynenergy = 0.0f;
+ lamp->dynpower = 0.0f;
lamp->dyncol[0]= lamp->dyncol[1]= lamp->dyncol[2] = 0.0f;
}
}
@@ -673,7 +673,7 @@
if(lamp->mode & LA_ONLYSHADOW) {
GPU_link(mat, "shade_only_shadow", i, shadfac,
- GPU_dynamic_uniform(&lamp->dynenergy), &shadfac);
+ GPU_dynamic_uniform(&lamp->dynpower), &shadfac);
if(!(lamp->mode & LA_NO_DIFF))
GPU_link(mat, "shade_only_shadow_diffuse", shadfac, shi->rgb,
@@ -1302,14 +1302,14 @@
invert_m4_m4(lamp->imat, mat);
}
-void GPU_lamp_update_colors(GPULamp *lamp, float r, float g, float b, float energy)
+void GPU_lamp_update_colors(GPULamp *lamp, float r, float g, float b, float power)
{
- lamp->energy = energy;
- if(lamp->mode & LA_NEG) lamp->energy= -lamp->energy;
+ lamp->power = power;
+ if(lamp->mode & LA_NEG) lamp->power= -lamp->power;
- lamp->col[0]= r* lamp->energy;
- lamp->col[1]= g* lamp->energy;
- lamp->col[2]= b* lamp->energy;
+ lamp->col[0]= r* lamp->power;
+ lamp->col[1]= g* lamp->power;
+ lamp->col[2]= b* lamp->power;
}
static void gpu_lamp_from_blender(Scene *scene, Object *ob, Object *par, Lamp *la, GPULamp *lamp)
@@ -1325,12 +1325,12 @@
lamp->mode = la->mode;
lamp->type = la->type;
- lamp->energy = la->energy;
- if(lamp->mode & LA_NEG) lamp->energy= -lamp->energy;
+ lamp->power= (ELEM(la->type, LA_SUN, LA_HEMI))? la->energy*M_PI: la->power;
+ if(lamp->mode & LA_NEG) lamp->power= -lamp->power;
- lamp->col[0]= la->r*lamp->energy;
- lamp->col[1]= la->g*lamp->energy;
- lamp->col[2]= la->b*lamp->energy;
+ lamp->col[0]= la->r*lamp->power;
+ lamp->col[1]= la->g*lamp->power;
+ lamp->col[2]= la->b*lamp->power;
GPU_lamp_update(lamp, ob->lay, ob->obmat);
Modified: branches/render25/source/blender/makesdna/DNA_lamp_types.h
===================================================================
--- branches/render25/source/blender/makesdna/DNA_lamp_types.h 2010-03-02 18:49:09 UTC (rev 27224)
+++ branches/render25/source/blender/makesdna/DNA_lamp_types.h 2010-03-02 19:21:35 UTC (rev 27225)
@@ -53,8 +53,8 @@
float r, g, b, k;
float shdwr, shdwg, shdwb;
- float energy, spotsize, spotblend;
- float haint;
+ float energy, power, spotsize, spotblend;
+ float haint, pad6;
struct CurveMapping *curfalloff;
short falloff_type, pad2;
Modified: branches/render25/source/blender/makesrna/intern/rna_lamp.c
===================================================================
--- branches/render25/source/blender/makesrna/intern/rna_lamp.c 2010-03-02 18:49:09 UTC (rev 27224)
+++ branches/render25/source/blender/makesrna/intern/rna_lamp.c 2010-03-02 19:21:35 UTC (rev 27225)
@@ -344,23 +344,6 @@
RNA_def_property_ui_text(prop, "Type", "Type of Lamp");
RNA_def_property_update(prop, 0, "rna_Lamp_draw_update");
- prop= RNA_def_property(srna, "falloff_distance", PROP_FLOAT, PROP_DISTANCE);
- RNA_def_property_float_sdna(prop, NULL, "dist");
- RNA_def_property_ui_range(prop, 0, 1000, 1.0, 2);
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list