[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