forked from bartvdbraak/blender
Fix #34156: Spec. and Alpha Intensity OpenGL issue
Issue was caused by alpha pipeline cleanup: apparently depending on use_alpha flag different channels for spec/alpha would be used. Made it so talpha is computed from Image->ignore_alpha instead of always considering to be TRUTH. This is not so much trivial to understand what's going on here, but it's not new issue. Anyway, if someone have got ideas how to improve feedback here -- ideas are welcome! For now only regression is fixed.
This commit is contained in:
parent
3a31e1ef27
commit
7cb62127b3
@ -1035,7 +1035,7 @@ static void do_material_tex(GPUShadeInput *shi)
|
|||||||
GPU_link(mat, "mtex_image", texco, GPU_image(tex->ima, &tex->iuser, FALSE), &tin, &trgb);
|
GPU_link(mat, "mtex_image", texco, GPU_image(tex->ima, &tex->iuser, FALSE), &tin, &trgb);
|
||||||
rgbnor= TEX_RGB;
|
rgbnor= TEX_RGB;
|
||||||
|
|
||||||
talpha= 1;
|
talpha = (tex->ima->flag & IMA_IGNORE_ALPHA) == 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
continue;
|
continue;
|
||||||
|
@ -224,8 +224,10 @@ int imagewrap(Tex *tex, Image *ima, ImBuf *ibuf, const float texvec[3], TexResul
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* keep this before interpolation [#29761] */
|
/* keep this before interpolation [#29761] */
|
||||||
if ((tex->imaflag & TEX_CALCALPHA) == 0) {
|
if (tex->ima && (tex->ima->flag & IMA_IGNORE_ALPHA) == 0) {
|
||||||
texres->talpha = TRUE;
|
if ((tex->imaflag & TEX_CALCALPHA) == 0) {
|
||||||
|
texres->talpha = TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* interpolate */
|
/* interpolate */
|
||||||
@ -1092,8 +1094,10 @@ static int imagewraposa_aniso(Tex *tex, Image *ima, ImBuf *ibuf, const float tex
|
|||||||
/* mipmap test */
|
/* mipmap test */
|
||||||
image_mipmap_test(tex, ibuf);
|
image_mipmap_test(tex, ibuf);
|
||||||
|
|
||||||
if ((tex->imaflag & TEX_CALCALPHA) == 0)
|
if (tex->ima && (tex->ima->flag & IMA_IGNORE_ALPHA) == 0) {
|
||||||
texres->talpha = 1;
|
if ((tex->imaflag & TEX_CALCALPHA) == 0)
|
||||||
|
texres->talpha = 1;
|
||||||
|
}
|
||||||
texr.talpha = texres->talpha;
|
texr.talpha = texres->talpha;
|
||||||
|
|
||||||
if (tex->imaflag & TEX_IMAROT) {
|
if (tex->imaflag & TEX_IMAROT) {
|
||||||
@ -1506,8 +1510,10 @@ int imagewraposa(Tex *tex, Image *ima, ImBuf *ibuf, const float texvec[3], const
|
|||||||
/* mipmap test */
|
/* mipmap test */
|
||||||
image_mipmap_test(tex, ibuf);
|
image_mipmap_test(tex, ibuf);
|
||||||
|
|
||||||
if ((tex->imaflag & TEX_CALCALPHA) == 0) {
|
if (tex->ima && (tex->ima->flag & IMA_IGNORE_ALPHA) == 0) {
|
||||||
texres->talpha = TRUE;
|
if ((tex->imaflag & TEX_CALCALPHA) == 0) {
|
||||||
|
texres->talpha = TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
texr.talpha= texres->talpha;
|
texr.talpha= texres->talpha;
|
||||||
|
Loading…
Reference in New Issue
Block a user