[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14150] trunk/blender/source/blender/ render/intern/source/texture.c:
Brecht Van Lommel
brechtvanlommel at pandora.be
Mon Mar 17 13:27:31 CET 2008
Revision: 14150
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14150
Author: blendix
Date: 2008-03-17 13:27:17 +0100 (Mon, 17 Mar 2008)
Log Message:
-----------
Bugfix: image texture with texface would not render sometimes, wasn't
setting image user correct. Also found that this texface rendering was
not threadsafe for > 2 threads.
Modified Paths:
--------------
trunk/blender/source/blender/render/intern/source/texture.c
Modified: trunk/blender/source/blender/render/intern/source/texture.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/texture.c 2008-03-17 10:15:38 UTC (rev 14149)
+++ trunk/blender/source/blender/render/intern/source/texture.c 2008-03-17 12:27:17 UTC (rev 14150)
@@ -2488,21 +2488,29 @@
void render_realtime_texture(ShadeInput *shi, Image *ima)
{
TexResult texr;
- static Tex tex1, tex2; // threadsafe
+ static Tex imatex[BLENDER_MAX_THREADS]; // threadsafe
static int firsttime= 1;
Tex *tex;
float texvec[3], dx[2], dy[2];
ShadeInputUV *suv= &shi->uv[shi->actuv];
+ int a;
if(firsttime) {
- firsttime= 0;
- default_tex(&tex1);
- default_tex(&tex2);
- tex1.type= TEX_IMAGE;
- tex2.type= TEX_IMAGE;
+ BLI_lock_thread(LOCK_IMAGE);
+ if(firsttime) {
+ for(a=0; a<BLENDER_MAX_THREADS; a++) {
+ memset(&imatex[a], 0, sizeof(Tex));
+ default_tex(&imatex[a]);
+ imatex[a].type= TEX_IMAGE;
+ }
+
+ firsttime= 0;
+ }
+ BLI_unlock_thread(LOCK_IMAGE);
}
- if(shi->ys & 1) tex= &tex1; else tex= &tex2; // threadsafe
+ tex= &imatex[shi->thread];
+ tex->iuser.ok= ima->ok;
texvec[0]= 0.5+0.5*suv->uv[0];
texvec[1]= 0.5+0.5*suv->uv[1];
@@ -2519,12 +2527,6 @@
if(shi->osatex) imagewraposa(tex, ima, NULL, texvec, dx, dy, &texr);
else imagewrap(tex, ima, NULL, texvec, &texr);
- if (tex->ima && tex->ima->flag & IMA_DO_PREMUL) {
- texr.tr *= texr.ta;
- texr.tg *= texr.ta;
- texr.tb *= texr.ta;
- }
-
shi->vcol[0]*= texr.tr;
shi->vcol[1]*= texr.tg;
shi->vcol[2]*= texr.tb;
More information about the Bf-blender-cvs
mailing list