Camera tracking: exr frames used to be displayed in linear space

It was a regression since texture buffer merge from tomato, now ensure
all display happens in sRGB space as it used to be before.
This commit is contained in:
Sergey Sharybin 2012-05-09 16:00:39 +00:00
parent 369f5b79ea
commit c59f8506c0
2 changed files with 9 additions and 14 deletions

View File

@ -1198,6 +1198,8 @@ static ImBuf *get_area_imbuf(ImBuf *ibuf, MovieTrackingTrack *track, MovieTracki
else
tmpibuf = IMB_allocImBuf(w + margin * 2, h + margin * 2, 32, IB_rect);
tmpibuf->profile = ibuf->profile;
IMB_rectcpy(tmpibuf, ibuf, 0, 0, x1 - margin, y1 - margin, w + margin * 2, h + margin * 2);
if (pos != NULL) {

View File

@ -456,16 +456,11 @@ int ED_space_clip_load_movieclip_buffer(SpaceClip *sc, ImBuf *ibuf)
if (need_rebind) {
int width = ibuf->x, height = ibuf->y;
float *frect = NULL, *fscalerect = NULL;
unsigned int *rect = NULL, *scalerect = NULL;
int need_recreate = 0;
if (width > GL_MAX_TEXTURE_SIZE || height > GL_MAX_TEXTURE_SIZE)
return 0;
rect = ibuf->rect;
frect = ibuf->rect_float;
/* if image resolution changed (e.g. switched to proxy display) texture need to be recreated */
need_recreate = context->image_width != ibuf->x || context->image_height != ibuf->y;
@ -498,10 +493,13 @@ int ED_space_clip_load_movieclip_buffer(SpaceClip *sc, ImBuf *ibuf)
glBindTexture(GL_TEXTURE_2D, context->texture);
}
if (frect)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16, width, height, 0, GL_RGBA, GL_FLOAT, frect);
else
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, rect);
if (ibuf->rect_float) {
if (ibuf->rect == NULL)
IMB_rect_from_float(ibuf);
}
if (ibuf->rect)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, ibuf->rect);
/* store settings */
context->texture_allocated = 1;
@ -509,11 +507,6 @@ int ED_space_clip_load_movieclip_buffer(SpaceClip *sc, ImBuf *ibuf)
context->image_width = ibuf->x;
context->image_height = ibuf->y;
context->framenr = sc->user.framenr;
if (fscalerect)
MEM_freeN(fscalerect);
if (scalerect)
MEM_freeN(scalerect);
}
else {
/* displaying exactly the same image which was loaded t oa texture,