Divide by 3 instead of multiplying by variations of 0.333
Fixes small precision problems.
This commit is contained in:
@@ -562,7 +562,7 @@ int closest_point_on_surface(SurfaceModifierData *surmd, const float co[3], floa
|
||||
if (mface->v4)
|
||||
add_v3_v3(surface_vel, surmd->v[mface->v4].co);
|
||||
|
||||
mul_v3_fl(surface_vel, mface->v4 ? 0.25f : 0.333f);
|
||||
mul_v3_fl(surface_vel, mface->v4 ? 0.25f : (1.0f / 3.0f));
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -912,7 +912,7 @@ void outside_lattice(Lattice *lt)
|
||||
bp->vec[1] += (1.0f - fac1) * bp1->vec[1] + fac1 * bp2->vec[1];
|
||||
bp->vec[2] += (1.0f - fac1) * bp1->vec[2] + fac1 * bp2->vec[2];
|
||||
|
||||
mul_v3_fl(bp->vec, 0.3333333f);
|
||||
mul_v3_fl(bp->vec, 1.0f / 3.0f);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2013,7 +2013,7 @@ static void ob_parvert3(Object *ob, Object *par, float mat[4][4])
|
||||
else {
|
||||
add_v3_v3v3(mat[3], v1, v2);
|
||||
add_v3_v3(mat[3], v3);
|
||||
mul_v3_fl(mat[3], 0.3333333f);
|
||||
mul_v3_fl(mat[3], 1.0f / 3.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -802,7 +802,7 @@ static void distribute_threads_exec(ParticleThread *thread, ParticleData *pa, Ch
|
||||
if (mface->v4)
|
||||
psys_uv_to_w(0.5f, 0.5f, mface->v4, pa->fuv);
|
||||
else
|
||||
psys_uv_to_w(0.33333f, 0.33333f, mface->v4, pa->fuv);
|
||||
psys_uv_to_w(1.0f / 3.0f, 1.0f / 3.0f, mface->v4, pa->fuv);
|
||||
}
|
||||
else {
|
||||
ctx->jitoff[i] = fmod(ctx->jitoff[i],(float)ctx->jitlevel);
|
||||
|
||||
@@ -39,9 +39,9 @@
|
||||
|
||||
void cent_tri_v3(float cent[3], const float v1[3], const float v2[3], const float v3[3])
|
||||
{
|
||||
cent[0] = 0.33333f * (v1[0] + v2[0] + v3[0]);
|
||||
cent[1] = 0.33333f * (v1[1] + v2[1] + v3[1]);
|
||||
cent[2] = 0.33333f * (v1[2] + v2[2] + v3[2]);
|
||||
cent[0] = (v1[0] + v2[0] + v3[0]) / 3.0f;
|
||||
cent[1] = (v1[1] + v2[1] + v3[1]) / 3.0f;
|
||||
cent[2] = (v1[2] + v2[2] + v3[2]) / 3.0f;
|
||||
}
|
||||
|
||||
void cent_quad_v3(float cent[3], const float v1[3], const float v2[3], const float v3[3], const float v4[3])
|
||||
|
||||
@@ -447,8 +447,8 @@ static void ui_draw_panel_dragwidget(const rctf *rect)
|
||||
ymin = rect->ymin;
|
||||
ymax = rect->ymax;
|
||||
|
||||
dx = 0.333f * (xmax - xmin);
|
||||
dy = 0.333f * (ymax - ymin);
|
||||
dx = (xmax - xmin) / 3.0f;
|
||||
dy = (ymax - ymin) / 3.0f;
|
||||
|
||||
glEnable(GL_BLEND);
|
||||
glColor4ub(255, 255, 255, 50);
|
||||
|
||||
@@ -1112,7 +1112,7 @@ static void recalc_emitter_field(Object *ob, ParticleSystem *psys)
|
||||
mul_v3_fl(vec, 0.25);
|
||||
}
|
||||
else
|
||||
mul_v3_fl(vec, 0.3333f);
|
||||
mul_v3_fl(vec, 1.0f / 3.0f);
|
||||
|
||||
normalize_v3(nor);
|
||||
|
||||
|
||||
@@ -161,7 +161,7 @@ static void createFacepa(ExplodeModifierData *emd,
|
||||
mul_v3_fl(center, 0.25);
|
||||
}
|
||||
else
|
||||
mul_v3_fl(center, 0.3333f);
|
||||
mul_v3_fl(center, 1.0f / 3.0f);
|
||||
|
||||
p = BLI_kdtree_find_nearest(tree, center, NULL, NULL);
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ void nodestack_get_vec(float *in, short type_in, bNodeStack *ns)
|
||||
if (ns->sockettype==SOCK_FLOAT)
|
||||
*in= *from;
|
||||
else
|
||||
*in= 0.333333f*(from[0]+from[1]+from[2]);
|
||||
*in= (from[0]+from[1]+from[2]) / 3.0f;
|
||||
}
|
||||
else if (type_in==SOCK_VECTOR) {
|
||||
if (ns->sockettype==SOCK_FLOAT) {
|
||||
|
||||
@@ -171,9 +171,9 @@ static void tex_normal_derivate(Tex *tex, TexResult *texres)
|
||||
do_colorband(tex->coba, texres->nor[2], col);
|
||||
fac3= (col[0]+col[1]+col[2]);
|
||||
|
||||
texres->nor[0]= 0.3333f*(fac0 - fac1);
|
||||
texres->nor[1]= 0.3333f*(fac0 - fac2);
|
||||
texres->nor[2]= 0.3333f*(fac0 - fac3);
|
||||
texres->nor[0]= (fac0 - fac1) / 3.0f;
|
||||
texres->nor[1]= (fac0 - fac2) / 3.0f;
|
||||
texres->nor[2]= (fac0 - fac3) / 3.0f;
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -1754,7 +1754,7 @@ static int compatible_bump_compute(CompatibleBump *compat_bump, ShadeInput *shi,
|
||||
/* center, main return value */
|
||||
texco_mapping(shi, tex, mtex, co, dx, dy, texvec, dxt, dyt);
|
||||
rgbnor = multitex_mtex(shi, mtex, texvec, dxt, dyt, texres, pool);
|
||||
cd = fromrgb ? (texres->tr + texres->tg + texres->tb)*0.33333333f : texres->tin;
|
||||
cd = fromrgb ? (texres->tr + texres->tg + texres->tb) / 3.0f : texres->tin;
|
||||
|
||||
if (mtex->texco == TEXCO_UV) {
|
||||
/* for the uv case, use the same value for both du/dv,
|
||||
@@ -1768,7 +1768,7 @@ static int compatible_bump_compute(CompatibleBump *compat_bump, ShadeInput *shi,
|
||||
tco[2] = 0.f;
|
||||
texco_mapping(shi, tex, mtex, tco, dx, dy, texv, dxt, dyt);
|
||||
multitex_mtex(shi, mtex, texv, dxt, dyt, &ttexr, pool);
|
||||
ud = idu*(cd - (fromrgb ? (ttexr.tr + ttexr.tg + ttexr.tb)*0.33333333f : ttexr.tin));
|
||||
ud = idu*(cd - (fromrgb ? (ttexr.tr + ttexr.tg + ttexr.tb) / 3.0f : ttexr.tin));
|
||||
|
||||
/* +v val */
|
||||
tco[0] = co[0] + compat_bump->dudnv*du;
|
||||
@@ -1776,7 +1776,7 @@ static int compatible_bump_compute(CompatibleBump *compat_bump, ShadeInput *shi,
|
||||
tco[2] = 0.f;
|
||||
texco_mapping(shi, tex, mtex, tco, dx, dy, texv, dxt, dyt);
|
||||
multitex_mtex(shi, mtex, texv, dxt, dyt, &ttexr, pool);
|
||||
vd = idu*(cd - (fromrgb ? (ttexr.tr + ttexr.tg + ttexr.tb)*0.33333333f : ttexr.tin));
|
||||
vd = idu*(cd - (fromrgb ? (ttexr.tr + ttexr.tg + ttexr.tb) / 3.0f : ttexr.tin));
|
||||
}
|
||||
else {
|
||||
float tu[3], tv[3];
|
||||
@@ -1810,7 +1810,7 @@ static int compatible_bump_compute(CompatibleBump *compat_bump, ShadeInput *shi,
|
||||
tco[2] = co[2] + tu[2]*du;
|
||||
texco_mapping(shi, tex, mtex, tco, dx, dy, texv, dxt, dyt);
|
||||
multitex_mtex(shi, mtex, texv, dxt, dyt, &ttexr, pool);
|
||||
ud = idu*(cd - (fromrgb ? (ttexr.tr + ttexr.tg + ttexr.tb)*0.33333333f : ttexr.tin));
|
||||
ud = idu*(cd - (fromrgb ? (ttexr.tr + ttexr.tg + ttexr.tb) / 3.0f : ttexr.tin));
|
||||
|
||||
/* +v val */
|
||||
tco[0] = co[0] + tv[0]*dv;
|
||||
@@ -1818,7 +1818,7 @@ static int compatible_bump_compute(CompatibleBump *compat_bump, ShadeInput *shi,
|
||||
tco[2] = co[2] + tv[2]*dv;
|
||||
texco_mapping(shi, tex, mtex, tco, dx, dy, texv, dxt, dyt);
|
||||
multitex_mtex(shi, mtex, texv, dxt, dyt, &ttexr, pool);
|
||||
vd = idv*(cd - (fromrgb ? (ttexr.tr + ttexr.tg + ttexr.tb)*0.33333333f : ttexr.tin));
|
||||
vd = idv*(cd - (fromrgb ? (ttexr.tr + ttexr.tg + ttexr.tb) / 3.0f : ttexr.tin));
|
||||
}
|
||||
|
||||
/* bumped normal */
|
||||
|
||||
@@ -185,7 +185,7 @@ static void load_frame_image_sequence(VoxelData *vd, Tex *tex)
|
||||
for (y = 0; y < ibuf->y; y++) {
|
||||
for (x = 0; x < ibuf->x; x++) {
|
||||
/* currently averaged to monchrome */
|
||||
vd->dataset[BLI_VOXEL_INDEX(x, y, z, vd->resol)] = (rf[0] + rf[1] + rf[2]) * 0.333f;
|
||||
vd->dataset[BLI_VOXEL_INDEX(x, y, z, vd->resol)] = (rf[0] + rf[1] + rf[2]) / 3.0f;
|
||||
rf += 4;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user