Smoke:
authorDaniel Genrich <daniel.genrich@gmx.net>
Mon, 24 Aug 2009 21:06:55 +0000 (21:06 +0000)
committerDaniel Genrich <daniel.genrich@gmx.net>
Mon, 24 Aug 2009 21:06:55 +0000 (21:06 +0000)
* Bugfix for scaling on non-2^n-textures

source/blender/editors/space_view3d/drawvolume.c
source/blender/gpu/intern/gpu_extensions.c

index 53f193382bdec9c356ae2ae9c260ee613cc0d66d..237ffe71ddb2d8a25805aadb49bf4c02767d8af4 100644 (file)
@@ -197,7 +197,6 @@ void draw_volume(Scene *scene, ARegion *ar, View3D *v3d, Base *base, GPUTexture
        RegionView3D *rv3d= ar->regiondata;
 
        float viewnormal[3];
-       // int res[3];
        int i, j, n;
        float d, d0, dd;
        float *points = NULL;
@@ -237,9 +236,12 @@ void draw_volume(Scene *scene, ARegion *ar, View3D *v3d, Base *base, GPUTexture
 
        GPU_texture_bind(tex, 0);
 
-       cor[0] = (float)res[0]/(float)larger_pow2(res[0]);
-       cor[1] = (float)res[1]/(float)larger_pow2(res[1]);
-       cor[2] = (float)res[2]/(float)larger_pow2(res[2]);
+       // if (!GLEW_ARB_texture_non_power_of_two) 
+       {
+               cor[0] = (float)res[0]/(float)larger_pow2(res[0]);
+               cor[1] = (float)res[1]/(float)larger_pow2(res[1]);
+               cor[2] = (float)res[2]/(float)larger_pow2(res[2]);
+       }
 
        // our slices are defined by the plane equation a*x + b*y +c*z + d = 0
        // (a,b,c), the plane normal, are given by viewdir
index 0b6640b9e2741a2428e697aa89c65d9c40c0bb22..9e53c85a5bae1ade9bfecf0437a3420eef07b747 100644 (file)
@@ -326,6 +326,7 @@ GPUTexture *GPU_texture_create_3D(int w, int h, int depth, float *fpixels)
        tex->number = -1;
        tex->refcount = 1;
        tex->target = GL_TEXTURE_3D;
+       float vfBorderColor[4] = {0.0f, 0.0f, 0.0f, 0.0f};
 
        glGenTextures(1, &tex->bindcode);
 
@@ -336,7 +337,7 @@ GPUTexture *GPU_texture_create_3D(int w, int h, int depth, float *fpixels)
                return NULL;
        }
 
-       // if (!GLEW_ARB_texture_non_power_of_two) 
+       if (!GLEW_ARB_texture_non_power_of_two) 
        {
                tex->w = larger_pow2(tex->w);
                tex->h = larger_pow2(tex->h);
@@ -357,22 +358,14 @@ GPUTexture *GPU_texture_create_3D(int w, int h, int depth, float *fpixels)
 
        if (fpixels) {
                glTexSubImage3D(tex->target, 0, 0, 0, 0, w, h, depth, format, type, pixels);
-
-               /*
-               if (tex->w > w)
-                       GPU_glTexSubImageEmpty(tex->target, format, w, 0, tex->w-w, tex->h);
-               if (tex->h > h)
-                       GPU_glTexSubImageEmpty(tex->target, format, 0, h, w, tex->h-h);
-               */
        }
 
-       // glTexImage3D(tex->target, 0, GL_RGBA, w, h, depth, 0, GL_RGBA, GL_FLOAT, fpixels);
-
+       // glTexParameterfv(GL_TEXTURE_3D, GL_TEXTURE_BORDER_COLOR, vfBorderColor);
        glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-       glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S,GL_CLAMP_TO_BORDER);
-       glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T,GL_CLAMP_TO_BORDER);
-       glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R,GL_CLAMP_TO_BORDER);
+       glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
+       glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
+       glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_BORDER);
 
 
        if (pixels)