[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15141] branches/soc-2008-unclezeiv/source /blender/render/intern/source/lightcuts.c: Using luminance instead of lamp intensity (energy) at all levels.
Davide Vercelli
davide.vercelli at gmail.com
Fri Jun 6 00:40:27 CEST 2008
Revision: 15141
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15141
Author: unclezeiv
Date: 2008-06-06 00:40:26 +0200 (Fri, 06 Jun 2008)
Log Message:
-----------
Using luminance instead of lamp intensity (energy) at all levels. Calculations should be more accurate, but I have seen little to no difference in my tests.
Modified Paths:
--------------
branches/soc-2008-unclezeiv/source/blender/render/intern/source/lightcuts.c
Modified: branches/soc-2008-unclezeiv/source/blender/render/intern/source/lightcuts.c
===================================================================
--- branches/soc-2008-unclezeiv/source/blender/render/intern/source/lightcuts.c 2008-06-05 22:18:13 UTC (rev 15140)
+++ branches/soc-2008-unclezeiv/source/blender/render/intern/source/lightcuts.c 2008-06-05 22:40:26 UTC (rev 15141)
@@ -61,6 +61,7 @@
float min[3];
float max[3];
float col[3];
+ float luminance;
LampRen * lar;
} LightcutsCluster;
@@ -116,7 +117,7 @@
VECSUB(diff, max, min);
- return (one->intensity + two->intensity) * VEC_LEN_SQ(diff);
+ return (one->luminance + two->luminance) * VEC_LEN_SQ(diff);
}
static void add_new_cluster(LightcutsCluster * array, LightcutsClusterPair * minpair, int * root)
@@ -134,7 +135,7 @@
dest->id = *root;
dest->child1 = minpair->first;
dest->child2 = minpair->second;
- dest->intensity = one->intensity + two->intensity;
+ dest->luminance = one->luminance + two->luminance;
/* compute new bounding box */
VECCOPY(dest->min, one->min);
@@ -143,7 +144,7 @@
DO_MINMAX(two->max, dest->min, dest->max);
/* the representative light is chosen randomly among children */
- if (BLI_frand() * (one->intensity + two->intensity) < one->intensity) {
+ if (BLI_frand() * (one->luminance + two->luminance) < one->luminance) {
dest->lar= one->lar;
VECCOPY(dest->col, one->col);
}
@@ -151,6 +152,7 @@
dest->lar= two->lar;
VECCOPY(dest->col, two->col);
}
+ dest->intensity= dest->luminance / LC_LUMINOSITY(dest->col);
(*root)++;
}
@@ -225,6 +227,7 @@
clus->col[0]= lar->r / lar->energy;
clus->col[1]= lar->g / lar->energy;
clus->col[2]= lar->b / lar->energy;
+ clus->luminance= LC_LUMINOSITY(clus->col) * lar->energy;
clus++;
lcd->free_local++;
@@ -237,7 +240,7 @@
int i;
for (i = 0; i < lev; i++)
printf("-");
- printf(" id %d, int %f\n", el->id, el->intensity);
+ printf(" id %d, int %f, lum %f\n", el->id, el->intensity, el->luminance);
if (el->child1 == 0 && el->child2 == 0)
return;
More information about the Bf-blender-cvs
mailing list