Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMorten Mikkelsen <mikkelsen7@gmail.com>2011-12-10 03:26:06 +0400
committerMorten Mikkelsen <mikkelsen7@gmail.com>2011-12-10 03:26:06 +0400
commit965c287630b7528a4a0b146212e8f1783a904948 (patch)
treed54baf4bcaaadc72c6910a0dd48705721bdea5d3 /source/blender/render
parent82480e99954f3618e953c5f669577efd72ba3f1f (diff)
fixes scale on derivative maps
Diffstat (limited to 'source/blender/render')
-rw-r--r--source/blender/render/intern/source/render_texture.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/source/blender/render/intern/source/render_texture.c b/source/blender/render/intern/source/render_texture.c
index ae48b0f777f..e55d2676b17 100644
--- a/source/blender/render/intern/source/render_texture.c
+++ b/source/blender/render/intern/source/render_texture.c
@@ -1932,11 +1932,13 @@ static int ntap_bump_compute(NTapBump *ntap_bump, ShadeInput *shi, MTex *mtex, T
float *nvec = texres->nor;
texres->nor = NULL;
- if( mtex->texflag & MTEX_BUMP_TEXTURESPACE ) {
- if(tex->ima)
- Hscale *= 13.0f; // appears to be a sensible default value
- } else
- Hscale *= 0.1f; // factor 0.1 proved to look like the previous bump code
+ if(found_deriv_map==0) {
+ if( mtex->texflag & MTEX_BUMP_TEXTURESPACE ) {
+ if(tex->ima)
+ Hscale *= 13.0f; // appears to be a sensible default value
+ } else
+ Hscale *= 0.1f; // factor 0.1 proved to look like the previous bump code
+ }
if( !ntap_bump->init_done ) {
copy_v3_v3(ntap_bump->vNacc, shi->vn);
@@ -1958,15 +1960,18 @@ static int ntap_bump_compute(NTapBump *ntap_bump, ShadeInput *shi, MTex *mtex, T
}
if(found_deriv_map) {
- float dBdu, dBdv;
+ float dBdu, dBdv, auto_bump;
float s = 1; // negate this if flipped texture coordinate
texco_mapping(shi, tex, mtex, co, dx, dy, texvec, dxt, dyt);
rgbnor = multitex_mtex(shi, mtex, texvec, dxt, dyt, texres);
+
+ auto_bump = shi->obr->ob->derivedFinal->auto_bump_scale;
+ auto_bump /= sqrtf((float) (dimx*dimy));
// this variant using a derivative map is described here
// http://mmikkelsen3d.blogspot.com/2011/07/derivative-maps.html
- dBdu = Hscale*dimx*(2*texres->tr-1);
- dBdv = Hscale*dimy*(2*texres->tg-1);
+ dBdu = auto_bump*Hscale*dimx*(2*texres->tr-1);
+ dBdv = auto_bump*Hscale*dimy*(2*texres->tg-1);
dHdx = dBdu*dxt[0] + s * dBdv*dxt[1];
dHdy = dBdu*dyt[0] + s * dBdv*dyt[1];