[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20368] branches/soc-2009-yukishiro/source /blender: fix colour overflow bug
Jingyuan Huang
jingyuan.huang at gmail.com
Sun May 24 00:19:25 CEST 2009
Revision: 20368
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20368
Author: yukishiro
Date: 2009-05-24 00:19:25 +0200 (Sun, 24 May 2009)
Log Message:
-----------
fix colour overflow bug
Modified Paths:
--------------
branches/soc-2009-yukishiro/source/blender/blenkernel/intern/lightenv.c
branches/soc-2009-yukishiro/source/blender/editors/space_view3d/drawobject.c
branches/soc-2009-yukishiro/source/blender/sh/intern/compute.c
Modified: branches/soc-2009-yukishiro/source/blender/blenkernel/intern/lightenv.c
===================================================================
--- branches/soc-2009-yukishiro/source/blender/blenkernel/intern/lightenv.c 2009-05-23 20:33:04 UTC (rev 20367)
+++ branches/soc-2009-yukishiro/source/blender/blenkernel/intern/lightenv.c 2009-05-23 22:19:25 UTC (rev 20368)
@@ -51,11 +51,11 @@
// TODO: simple function to return value for 3 channels. needs improvement
void def_synthetic(float theta, float phi, float *val)
{
- if (theta < M_PI / 3) {
- val[0] = val[1] = val[2] = 255;
+ if (theta < M_PI / 6) {
+ val[0] = val[1] = val[2] = 1.0;
}
else {
- val[0] = val[1] = val[2] = 0;
+ val[0] = val[1] = val[2] = 0.0;
}
}
Modified: branches/soc-2009-yukishiro/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- branches/soc-2009-yukishiro/source/blender/editors/space_view3d/drawobject.c 2009-05-23 20:33:04 UTC (rev 20367)
+++ branches/soc-2009-yukishiro/source/blender/editors/space_view3d/drawobject.c 2009-05-23 22:19:25 UTC (rev 20368)
@@ -124,6 +124,7 @@
(((vd->drawtype==OB_SOLID) && (dt>=OB_SOLID) && (vd->flag2 & V3D_SOLID_TEX) && (vd->flag & V3D_ZBUF_SELECT)) == 0) \
)
+#define FTOCHAR(val) ((val)<=0.0f)? 0 : (((val)>(1.0f-0.5f/255.0f))? 255 : (char)((255.0f*(val))+0.5f))
/* pretty stupid */
/* editmball.c */
@@ -2291,23 +2292,26 @@
// TODO: get vertex material colour
mat = me->mat[0]; //me->mat[(int)v.mat_nr];
if (mat != NULL) {
- color[0] = 255 * mat->r;
- color[1] = 255 * mat->g;
- color[2] = 255 * mat->b;
+ color[0] = mat->r;
+ color[1] = mat->g;
+ color[2] = mat->b;
} else {
- color[0] = color[1] = color[2] = 128;
+ color[0] = color[1] = color[2] = 0.8;
}
brightness[0] = brightness[1] = brightness[2] = 0;
- for (k = 0; k < 25; k++) {
+ for (k = 0; k < 9; k++) {
brightness[0] += mco[vert].val[k] * lco[k][0];
brightness[1] += mco[vert].val[k] * lco[k][1];
brightness[2] += mco[vert].val[k] * lco[k][2];
}
+ color[0] *= brightness[0];
+ color[1] *= brightness[1];
+ color[2] *= brightness[2];
- col[0] = brightness[0] * color[0];
- col[1] = brightness[1] * color[1];
- col[2] = brightness[2] * color[2];
+ col[0] = FTOCHAR(color[0]);
+ col[1] = FTOCHAR(color[1]);
+ col[2] = FTOCHAR(color[2]);
col[3] = 255;
}
@@ -2444,7 +2448,7 @@
LightEnv *env;
MShCoeffs *mco;
MFace *mf = me->mface;
- int i, k;
+ int i;
shcol = DM_get_face_data_layer(dm, CD_SH_MCOL);
mco = CustomData_get_layer(&me->vdata, CD_MSHCOEFFS);
Modified: branches/soc-2009-yukishiro/source/blender/sh/intern/compute.c
===================================================================
--- branches/soc-2009-yukishiro/source/blender/sh/intern/compute.c 2009-05-23 20:33:04 UTC (rev 20367)
+++ branches/soc-2009-yukishiro/source/blender/sh/intern/compute.c 2009-05-23 22:19:25 UTC (rev 20368)
@@ -292,9 +292,9 @@
int k, m;
float phi, theta, *y_val;
float l_val[3];
- float weight = 4.0f/(float)NUM_SAMPLES;
int num_sh = (L+1)*(L+1);
+ // scaling is not done for light coeffs. an extra factor would be used
for (k = 0; k < NUM_SAMPLES; k++) {
phi = sample_angles[k][0];
theta = sample_angles[k][1];
@@ -309,8 +309,10 @@
}
for (m = 0; m < num_sh; m++) {
- env->shcoeffs[m][0] *= weight;
- env->shcoeffs[m][1] *= weight;
- env->shcoeffs[m][2] *= weight;
+ printf("%f %f %f\n",
+ env->shcoeffs[m][0],
+ env->shcoeffs[m][1],
+ env->shcoeffs[m][2]
+ );
}
}
More information about the Bf-blender-cvs
mailing list