diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-02-15 16:08:06 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-02-15 16:08:06 +0400 |
commit | 428f031237b8ad10a7d85110857167c1d3f57415 (patch) | |
tree | c3ebda9dd4ab5d01fe60301efd630c613819efb2 /source/blender/gpu | |
parent | 77223492fd63f061b145b29bde5790fa1dd58c46 (diff) | |
parent | 3ac1ad5378cbf64f823e53cff393351764e042a8 (diff) |
svn merge ^/trunk/blender -r44076:44118
Diffstat (limited to 'source/blender/gpu')
-rw-r--r-- | source/blender/gpu/intern/gpu_draw.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c index 926faeb417e..7a61ee2eebc 100644 --- a/source/blender/gpu/intern/gpu_draw.c +++ b/source/blender/gpu/intern/gpu_draw.c @@ -518,6 +518,8 @@ int GPU_verify_image(Image *ima, ImageUser *iuser, int tftile, int compare, int IMB_buffer_float_from_float(srgb_frect, ibuf->rect_float, ibuf->channels, IB_PROFILE_SRGB, ibuf->profile, 0, ibuf->x, ibuf->y, ibuf->x, ibuf->x); + /* clamp buffer colours to 1.0 to avoid artifacts due to glu for hdr images */ + IMB_buffer_float_clamp(srgb_frect, ibuf->x, ibuf->y); frect= srgb_frect + texwinsy*ibuf->x + texwinsx; } else @@ -541,6 +543,8 @@ int GPU_verify_image(Image *ima, ImageUser *iuser, int tftile, int compare, int IMB_buffer_float_from_float(srgb_frect, ibuf->rect_float, ibuf->channels, IB_PROFILE_SRGB, ibuf->profile, 0, ibuf->x, ibuf->y, ibuf->x, ibuf->x); + /* clamp buffer colours to 1.0 to avoid artifacts due to glu for hdr images */ + IMB_buffer_float_clamp(srgb_frect, ibuf->x, ibuf->y); } else frect= ibuf->rect_float; @@ -615,7 +619,7 @@ int GPU_verify_image(Image *ima, ImageUser *iuser, int tftile, int compare, int if (!(gpu_get_mipmap() && mipmap)) { if(use_high_bit_depth) - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16, rectw, recth, 0, GL_RGBA, GL_FLOAT, frect); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16, rectw, recth, 0, GL_RGBA, GL_FLOAT, frect); else glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, rectw, recth, 0, GL_RGBA, GL_UNSIGNED_BYTE, rect); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); @@ -732,6 +736,8 @@ void GPU_paint_set_mipmap(int mipmap) else GPU_free_image(ima); } + else + ima->tpageflag &= ~IMA_MIPMAP_COMPLETE; } } @@ -742,6 +748,8 @@ void GPU_paint_set_mipmap(int mipmap) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gpu_get_mipmap_filter(1)); } + else + ima->tpageflag &= ~IMA_MIPMAP_COMPLETE; } } } @@ -939,7 +947,6 @@ void GPU_free_image(Image *ima) if(ima->bindcode) { glDeleteTextures(1, (GLuint *)&ima->bindcode); ima->bindcode= 0; - ima->tpageflag &= ~IMA_MIPMAP_COMPLETE; } /* free glsl image binding */ @@ -954,8 +961,9 @@ void GPU_free_image(Image *ima) MEM_freeN(ima->repbind); ima->repbind= NULL; - ima->tpageflag &= ~IMA_MIPMAP_COMPLETE; } + + ima->tpageflag &= ~IMA_MIPMAP_COMPLETE; } void GPU_free_images(void) |