[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