[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40714] trunk/blender/source/blender: Bump maps flip: now white means salience, black means concavity
Sergey Sharybin
g.ulairi at gmail.com
Fri Sep 30 11:55:22 CEST 2011
Revision: 40714
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40714
Author: nazgul
Date: 2011-09-30 09:55:21 +0000 (Fri, 30 Sep 2011)
Log Message:
-----------
Bump maps flip: now white means salience, black means concavity
Files created in blender before this revision should be rendered in
exactly the same way they used to render before.
Patch by Morten Mikkelsen, finished by Ton and me.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_blender.h
trunk/blender/source/blender/blenkernel/intern/texture.c
trunk/blender/source/blender/blenloader/intern/readfile.c
trunk/blender/source/blender/gpu/intern/gpu_material.c
trunk/blender/source/blender/makesdna/DNA_texture_types.h
trunk/blender/source/blender/render/intern/source/render_texture.c
Modified: trunk/blender/source/blender/blenkernel/BKE_blender.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_blender.h 2011-09-30 09:25:53 UTC (rev 40713)
+++ trunk/blender/source/blender/blenkernel/BKE_blender.h 2011-09-30 09:55:21 UTC (rev 40714)
@@ -44,7 +44,7 @@
* and keep comment above the defines.
* Use STRINGIFY() rather than defining with quotes */
#define BLENDER_VERSION 259
-#define BLENDER_SUBVERSION 3
+#define BLENDER_SUBVERSION 4
#define BLENDER_MINVERSION 250
#define BLENDER_MINSUBVERSION 0
Modified: trunk/blender/source/blender/blenkernel/intern/texture.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/texture.c 2011-09-30 09:25:53 UTC (rev 40713)
+++ trunk/blender/source/blender/blenkernel/intern/texture.c 2011-09-30 09:55:21 UTC (rev 40714)
@@ -640,7 +640,11 @@
mtex->size[1]= 1.0;
mtex->size[2]= 1.0;
mtex->tex= NULL;
- mtex->texflag= MTEX_3TAP_BUMP | MTEX_BUMP_OBJECTSPACE;
+
+ /* MTEX_BUMP_FLIPPED is temporary before 2.61 release to prevent flipping normals
+ when creating file in 2.60, opening it in 2.59, saving and opening in 2.60 again */
+ mtex->texflag= MTEX_3TAP_BUMP | MTEX_BUMP_OBJECTSPACE | MTEX_BUMP_FLIPPED;
+
mtex->colormodel= 0;
mtex->r= 1.0;
mtex->g= 0.0;
Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c 2011-09-30 09:25:53 UTC (rev 40713)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c 2011-09-30 09:55:21 UTC (rev 40714)
@@ -12063,9 +12063,7 @@
}
}
- /* put compatibility code here until next subversion bump */
-
- {
+ if (main->versionfile < 259 || (main->versionfile == 259 && main->subversionfile < 4)){
{
/* Adaptive time step for particle systems */
ParticleSettings *part;
@@ -12074,45 +12072,72 @@
part->time_flag &= ~PART_TIME_AUTOSF;
}
}
+
+ {
+ /* set defaults for obstacle avoidance, recast data */
+ Scene *sce;
+ for(sce = main->scene.first; sce; sce = sce->id.next)
+ {
+ if (sce->gm.levelHeight == 0.f)
+ sce->gm.levelHeight = 2.f;
+
+ if(sce->gm.recastData.cellsize == 0.0f)
+ sce->gm.recastData.cellsize = 0.3f;
+ if(sce->gm.recastData.cellheight == 0.0f)
+ sce->gm.recastData.cellheight = 0.2f;
+ if(sce->gm.recastData.agentmaxslope == 0.0f)
+ sce->gm.recastData.agentmaxslope = (float)M_PI/4;
+ if(sce->gm.recastData.agentmaxclimb == 0.0f)
+ sce->gm.recastData.agentmaxclimb = 0.9f;
+ if(sce->gm.recastData.agentheight == 0.0f)
+ sce->gm.recastData.agentheight = 2.0f;
+ if(sce->gm.recastData.agentradius == 0.0f)
+ sce->gm.recastData.agentradius = 0.6f;
+ if(sce->gm.recastData.edgemaxlen == 0.0f)
+ sce->gm.recastData.edgemaxlen = 12.0f;
+ if(sce->gm.recastData.edgemaxerror == 0.0f)
+ sce->gm.recastData.edgemaxerror = 1.3f;
+ if(sce->gm.recastData.regionminsize == 0.0f)
+ sce->gm.recastData.regionminsize = 8.f;
+ if(sce->gm.recastData.regionmergesize == 0.0f)
+ sce->gm.recastData.regionmergesize = 20.f;
+ if(sce->gm.recastData.vertsperpoly<3)
+ sce->gm.recastData.vertsperpoly = 6;
+ if(sce->gm.recastData.detailsampledist == 0.0f)
+ sce->gm.recastData.detailsampledist = 6.0f;
+ if(sce->gm.recastData.detailsamplemaxerror == 0.0f)
+ sce->gm.recastData.detailsamplemaxerror = 1.0f;
+ }
+ }
+
+ {
+ /* flip normals */
+ Material *ma= main->mat.first;
+ while(ma) {
+ int a;
+ for(a= 0; a<MAX_MTEX; a++) {
+ MTex *mtex= ma->mtex[a];
+
+ if(mtex) {
+ if((mtex->texflag&MTEX_BUMP_FLIPPED)==0) {
+ if((mtex->mapto&MAP_NORM) && mtex->texflag&(MTEX_COMPAT_BUMP|MTEX_3TAP_BUMP|MTEX_5TAP_BUMP)) {
+ mtex->norfac= -mtex->norfac;
+ mtex->texflag|= MTEX_BUMP_FLIPPED;
+ }
+ }
+ }
+ }
+
+ ma= ma->id.next;
+ }
+ }
+
}
- //set defaults for obstacle avoidance, recast data
+ /* put compatibility code here until next subversion bump */
{
- Scene *sce;
- for(sce = main->scene.first; sce; sce = sce->id.next)
- {
- if (sce->gm.levelHeight == 0.f)
- sce->gm.levelHeight = 2.f;
+ }
- if(sce->gm.recastData.cellsize == 0.0f)
- sce->gm.recastData.cellsize = 0.3f;
- if(sce->gm.recastData.cellheight == 0.0f)
- sce->gm.recastData.cellheight = 0.2f;
- if(sce->gm.recastData.agentmaxslope == 0.0f)
- sce->gm.recastData.agentmaxslope = (float)M_PI/4;
- if(sce->gm.recastData.agentmaxclimb == 0.0f)
- sce->gm.recastData.agentmaxclimb = 0.9f;
- if(sce->gm.recastData.agentheight == 0.0f)
- sce->gm.recastData.agentheight = 2.0f;
- if(sce->gm.recastData.agentradius == 0.0f)
- sce->gm.recastData.agentradius = 0.6f;
- if(sce->gm.recastData.edgemaxlen == 0.0f)
- sce->gm.recastData.edgemaxlen = 12.0f;
- if(sce->gm.recastData.edgemaxerror == 0.0f)
- sce->gm.recastData.edgemaxerror = 1.3f;
- if(sce->gm.recastData.regionminsize == 0.0f)
- sce->gm.recastData.regionminsize = 8.f;
- if(sce->gm.recastData.regionmergesize == 0.0f)
- sce->gm.recastData.regionmergesize = 20.f;
- if(sce->gm.recastData.vertsperpoly<3)
- sce->gm.recastData.vertsperpoly = 6;
- if(sce->gm.recastData.detailsampledist == 0.0f)
- sce->gm.recastData.detailsampledist = 6.0f;
- if(sce->gm.recastData.detailsamplemaxerror == 0.0f)
- sce->gm.recastData.detailsamplemaxerror = 1.0f;
- }
- }
-
/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
/* WATCH IT 2!: Userdef struct init has to be in editors/interface/resources.c! */
Modified: trunk/blender/source/blender/gpu/intern/gpu_material.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_material.c 2011-09-30 09:25:53 UTC (rev 40713)
+++ trunk/blender/source/blender/gpu/intern/gpu_material.c 2011-09-30 09:55:21 UTC (rev 40714)
@@ -1101,7 +1101,12 @@
if( mtex->texflag & MTEX_BUMP_TEXTURESPACE )
hScale = hScaleTex;
- norfac = hScale * mtex->norfac;
+
+ // The negate on norfac is done because the
+ // normal in the renderer points inward which corresponds
+ // to inverting the bump map. Should this ever change
+ // this negate must be removed.
+ norfac = -hScale * mtex->norfac;
tnorfac = GPU_uniform(&norfac);
if(GPU_link_changed(stencil))
Modified: trunk/blender/source/blender/makesdna/DNA_texture_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_texture_types.h 2011-09-30 09:25:53 UTC (rev 40713)
+++ trunk/blender/source/blender/makesdna/DNA_texture_types.h 2011-09-30 09:55:21 UTC (rev 40714)
@@ -466,6 +466,7 @@
#define MTEX_5TAP_BUMP 512
#define MTEX_BUMP_OBJECTSPACE 1024
#define MTEX_BUMP_TEXTURESPACE 2048
+#define MTEX_BUMP_FLIPPED 4096 /* temp flag for 2.59/2.60 */
/* blendtype */
#define MTEX_BLEND 0
Modified: trunk/blender/source/blender/render/intern/source/render_texture.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/render_texture.c 2011-09-30 09:25:53 UTC (rev 40713)
+++ trunk/blender/source/blender/render/intern/source/render_texture.c 2011-09-30 09:55:21 UTC (rev 40714)
@@ -1748,7 +1748,7 @@
TexResult ttexr = {0, 0, 0, 0, 0, texres->talpha, NULL}; // temp TexResult
float tco[3], texv[3], cd, ud, vd, du, dv, idu, idv;
const int fromrgb = ((tex->type == TEX_IMAGE) || ((tex->flag & TEX_COLORBAND)!=0));
- const float bf = 0.04f*Tnor*mtex->norfac;
+ const float bf = -0.04f*Tnor*mtex->norfac;
int rgbnor;
// disable internal bump eval
float* nvec = texres->nor;
@@ -1904,7 +1904,14 @@
TexResult ttexr = {0, 0, 0, 0, 0, texres->talpha, NULL}; // temp TexResult
const int fromrgb = ((tex->type == TEX_IMAGE) || ((tex->flag & TEX_COLORBAND)!=0));
- float Hscale = Tnor*mtex->norfac;
+
+ // The negate on Hscale is done because the
+ // normal in the renderer points inward which corresponds
+ // to inverting the bump map. The normals are generated
+ // this way in calc_vertexnormals(). Should this ever change
+ // this negate must be removed.
+ float Hscale = -Tnor*mtex->norfac;
+
int dimx=512, dimy=512;
const int imag_tspace_dimension_x = 1024; // only used for texture space variant
float aspect = 1.0f;
More information about the Bf-blender-cvs
mailing list