[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14943] branches/soc-2008-unclezeiv/source /blender/render/intern: Reverting light iteration functions and types ( added in rev.

Davide Vercelli davide.vercelli at gmail.com
Fri May 23 19:19:45 CEST 2008


Revision: 14943
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14943
Author:   unclezeiv
Date:     2008-05-23 19:19:45 +0200 (Fri, 23 May 2008)

Log Message:
-----------
Reverting light iteration functions and types (added in rev. 14672); will be replaced by a different scheme.

Modified Paths:
--------------
    branches/soc-2008-unclezeiv/source/blender/render/intern/include/lightcuts.h
    branches/soc-2008-unclezeiv/source/blender/render/intern/include/rendercore.h
    branches/soc-2008-unclezeiv/source/blender/render/intern/source/lightcuts.c
    branches/soc-2008-unclezeiv/source/blender/render/intern/source/pixelshading.c
    branches/soc-2008-unclezeiv/source/blender/render/intern/source/rendercore.c
    branches/soc-2008-unclezeiv/source/blender/render/intern/source/shadeoutput.c

Modified: branches/soc-2008-unclezeiv/source/blender/render/intern/include/lightcuts.h
===================================================================
--- branches/soc-2008-unclezeiv/source/blender/render/intern/include/lightcuts.h	2008-05-23 16:31:02 UTC (rev 14942)
+++ branches/soc-2008-unclezeiv/source/blender/render/intern/include/lightcuts.h	2008-05-23 17:19:45 UTC (rev 14943)
@@ -33,6 +33,4 @@
 
 void lightcuts_create_point_lights(Render * re);
 
-LampRen* lightcuts_iter_lights(LampIterData ** lida);
-
 #endif /*LIGHTCUTS_H_*/

Modified: branches/soc-2008-unclezeiv/source/blender/render/intern/include/rendercore.h
===================================================================
--- branches/soc-2008-unclezeiv/source/blender/render/intern/include/rendercore.h	2008-05-23 16:31:02 UTC (rev 14942)
+++ branches/soc-2008-unclezeiv/source/blender/render/intern/include/rendercore.h	2008-05-23 17:19:45 UTC (rev 14943)
@@ -90,14 +90,7 @@
 
 int get_sample_layers(struct RenderPart *pa, struct RenderLayer *rl, struct RenderLayer **rlpp);
 
-/* ------------------------------------------------------------------------- */
 
-typedef struct LampIterData LampIterData;
-typedef LampRen* (*LightIter)(LampIterData **);
-
-LampIterData * light_iter_init();
-LightIter light_get_iter();
-
 /* -------- ray.c ------- */
 
 extern void freeraytree(Render *re);

Modified: branches/soc-2008-unclezeiv/source/blender/render/intern/source/lightcuts.c
===================================================================
--- branches/soc-2008-unclezeiv/source/blender/render/intern/source/lightcuts.c	2008-05-23 16:31:02 UTC (rev 14942)
+++ branches/soc-2008-unclezeiv/source/blender/render/intern/source/lightcuts.c	2008-05-23 17:19:45 UTC (rev 14943)
@@ -384,27 +384,3 @@
 		lightcuts_build_tree();
 	}
 }
-
-/*
- * proof-of-concept functionality:
- * skip lights randomly while iterating
- */
-LampRen* lightcuts_iter_lights(LampIterData ** lida)
-{
-	GroupObject * go;
-	int skip = BLI_rand() % 3;
-	
-	if (!lida || !(*lida))
-		return NULL;
-		
-	for (go = ((GroupObject *)(*lida))->next; go; go=go->next)
-	{
-		if (go->lampren && (--skip) < 0)
-		{
-			*lida = (LampIterData*)(go);
-			return go->lampren;
-		}
-	}
-	
-	return NULL;	
-}

Modified: branches/soc-2008-unclezeiv/source/blender/render/intern/source/pixelshading.c
===================================================================
--- branches/soc-2008-unclezeiv/source/blender/render/intern/source/pixelshading.c	2008-05-23 16:31:02 UTC (rev 14942)
+++ branches/soc-2008-unclezeiv/source/blender/render/intern/source/pixelshading.c	2008-05-23 17:19:45 UTC (rev 14943)
@@ -69,8 +69,7 @@
 
 static void render_lighting_halo(HaloRen *har, float *colf)
 {
-	LampIterData *liter;
-	LightIter light_iter;
+	GroupObject *go;
 	LampRen *lar;
 	float i, inp, inpr, rco[3], dco[3], lv[3], lampdist, ld, t, *vn;
 	float ir, ig, ib, shadfac, soft, lacol[3];
@@ -82,9 +81,8 @@
 	
 	vn= har->no;
 	
-	liter = light_iter_init();
-	light_iter = light_get_iter();
-	while((lar=light_iter(&liter))) {
+	for(go=R.lights.first; go; go= go->next) {
+		lar= go->lampren;
 		
 		/* test for lamplayer */
 		if(lar->mode & LA_LAYER) if((lar->lay & har->lay)==0) continue;

Modified: branches/soc-2008-unclezeiv/source/blender/render/intern/source/rendercore.c
===================================================================
--- branches/soc-2008-unclezeiv/source/blender/render/intern/source/rendercore.c	2008-05-23 16:31:02 UTC (rev 14942)
+++ branches/soc-2008-unclezeiv/source/blender/render/intern/source/rendercore.c	2008-05-23 17:19:45 UTC (rev 14943)
@@ -43,7 +43,6 @@
 
 #include "BKE_utildefines.h"
 
-#include "DNA_group_types.h"
 #include "DNA_image_types.h"
 #include "DNA_lamp_types.h"
 #include "DNA_material_types.h"
@@ -59,7 +58,6 @@
 #include "IMB_imbuf.h"
 
 /* local include */
-#include "lightcuts.h"
 #include "renderpipeline.h"
 #include "render_types.h"
 #include "renderdatabase.h"
@@ -2588,47 +2586,3 @@
 	return R.bakebuf;
 }
 
-/*
- * lamp iterators: when looping through lamps, you need to initialize iteration
- * data first, then get an iterator function, and retrieve each light through
- * the iterator. E.g.:
- *    lid = light_iter_init();
- *    iter = light_get_iter();
- *    while ((lamp=iter(&lid))
- *    { ...per lamp operations...}
- * This is mainly needed for lightcuts (see lightcuts.c)
- */
-LampIterData * light_iter_init()
-{
-	if (R.r.mode & R_LIGHTCUTS)
-		return (LampIterData *)(R.pointlights.first);
-	return (LampIterData *)(R.lights.first);
-}
-
-/* default iterator: loops through groupobjects as usual */
-static LampRen* default_light_iter(LampIterData ** prev)
-{
-	GroupObject * go;
-	
-	if (!prev || !(*prev))
-		return NULL;
-		
-	for (go = ((GroupObject *)(*prev))->next; go; go=go->next)
-	{
-		if (go->lampren)
-		{
-			*prev = (LampIterData*)(go);
-			return go->lampren;
-		}
-	}
-	
-	return NULL;	
-}
-
-LightIter light_get_iter()
-{
-	if (R.r.mode & R_LIGHTCUTS)
-		return lightcuts_iter_lights;
-	return default_light_iter;
-}
-

Modified: branches/soc-2008-unclezeiv/source/blender/render/intern/source/shadeoutput.c
===================================================================
--- branches/soc-2008-unclezeiv/source/blender/render/intern/source/shadeoutput.c	2008-05-23 16:31:02 UTC (rev 14942)
+++ branches/soc-2008-unclezeiv/source/blender/render/intern/source/shadeoutput.c	2008-05-23 17:19:45 UTC (rev 14943)
@@ -65,17 +65,10 @@
 		return &shi->light_override->gobject;
 	else if(shi->mat && shi->mat->group)
 		return &shi->mat->group->gobject;
-	else if(R.r.mode & R_LIGHTCUTS)
-		return &R.pointlights;
 	else
 		return &R.lights;
 }
 
-static LampIterData * light_iter_init_shadeoutput(ShadeInput *shi)
-{
-	return (LampIterData *)get_lights(shi);
-}
-
 #if 0
 static void fogcolor(float *colf, float *rco, float *view)
 {
@@ -347,17 +340,18 @@
 
 void renderspothalo(ShadeInput *shi, float *col, float alpha)
 {
-	LampIterData *liter;
-	LightIter light_iter;
+	ListBase *lights;
+	GroupObject *go;
 	LampRen *lar;
 	float i;
 	
 	if(alpha==0.0f) return;
 	
-	liter = light_iter_init_shadeoutput(shi);
-	light_iter = light_get_iter();
-	while((lar=light_iter(&liter)))
-	{
+	lights= get_lights(shi);
+	for(go=lights->first; go; go= go->next) {
+		lar= go->lampren;
+		if(lar==NULL) continue;
+		
 		if(lar->type==LA_SPOT && (lar->mode & LA_HALO) && lar->haint>0) {
 			
 			if(lar->mode & LA_LAYER) 
@@ -1451,9 +1445,9 @@
 {
 	
 	if(R.r.mode & R_SHADOW) {
-		LampIterData *liter;
-		LightIter light_iter;
+		ListBase *lights;
 		LampRen *lar;
+		GroupObject *go;
 		float inpr, lv[3];
 		float *vn, *view, shadfac[4];
 		float ir, accum, visifac, lampdist;
@@ -1462,10 +1456,11 @@
 		view= shi->view;
 
 		accum= ir= 0.0f;
-
-		liter = light_iter_init_shadeoutput(shi);
-		light_iter = light_get_iter();
-		while((lar=light_iter(&liter))) {
+		
+		lights= get_lights(shi);
+		for(go=lights->first; go; go= go->next) {
+			lar= go->lampren;
+			if(lar==NULL) continue;
 			
 			/* yafray: ignore shading by photonlights, not used in Blender */
 			if (lar->type==LA_YF_PHOTON) continue;
@@ -1614,13 +1609,15 @@
 	
 	/* lighting pass */
 	if(passflag & (SCE_PASS_COMBINED|SCE_PASS_DIFFUSE|SCE_PASS_SPEC|SCE_PASS_SHADOW)) {
-		LampIterData *liter;
-		LightIter light_iter;
+		GroupObject *go;
+		ListBase *lights;
 		LampRen *lar;
 		
-		liter = light_iter_init_shadeoutput(shi);
-		light_iter = light_get_iter();
-		while((lar=light_iter(&liter))) {
+		lights= get_lights(shi);
+		for(go=lights->first; go; go= go->next) {
+			lar= go->lampren;
+			if(lar==NULL) continue;
+			
 			/* yafray: ignore shading by photonlights, not used in Blender */
 			if (lar->type==LA_YF_PHOTON) continue;
 			





More information about the Bf-blender-cvs mailing list