forked from bartvdbraak/blender
Fix T50032: Wrong render result when same image is used with and without alpha
This commit is contained in:
parent
e29a6f739d
commit
ced20b74e5
@ -640,7 +640,8 @@ static ShaderNode *add_node(Scene *scene,
|
||||
image->filename.string(),
|
||||
image->builtin_data,
|
||||
get_image_interpolation(b_image_node),
|
||||
get_image_extension(b_image_node));
|
||||
get_image_extension(b_image_node),
|
||||
image->use_alpha);
|
||||
}
|
||||
}
|
||||
image->color_space = (NodeImageColorSpace)b_image_node.color_space();
|
||||
@ -686,7 +687,8 @@ static ShaderNode *add_node(Scene *scene,
|
||||
env->filename.string(),
|
||||
env->builtin_data,
|
||||
get_image_interpolation(b_env_node),
|
||||
EXTENSION_REPEAT);
|
||||
EXTENSION_REPEAT,
|
||||
env->use_alpha);
|
||||
}
|
||||
}
|
||||
env->color_space = (NodeImageColorSpace)b_env_node.color_space();
|
||||
@ -823,7 +825,8 @@ static ShaderNode *add_node(Scene *scene,
|
||||
point_density->filename.string(),
|
||||
point_density->builtin_data,
|
||||
point_density->interpolation,
|
||||
EXTENSION_CLIP);
|
||||
EXTENSION_CLIP,
|
||||
true);
|
||||
}
|
||||
node = point_density;
|
||||
|
||||
|
@ -258,12 +258,14 @@ static bool image_equals(ImageManager::Image *image,
|
||||
const string& filename,
|
||||
void *builtin_data,
|
||||
InterpolationType interpolation,
|
||||
ExtensionType extension)
|
||||
ExtensionType extension,
|
||||
bool use_alpha)
|
||||
{
|
||||
return image->filename == filename &&
|
||||
image->builtin_data == builtin_data &&
|
||||
image->interpolation == interpolation &&
|
||||
image->extension == extension;
|
||||
image->extension == extension &&
|
||||
image->use_alpha == use_alpha;
|
||||
}
|
||||
|
||||
int ImageManager::add_image(const string& filename,
|
||||
@ -305,7 +307,8 @@ int ImageManager::add_image(const string& filename,
|
||||
filename,
|
||||
builtin_data,
|
||||
interpolation,
|
||||
extension))
|
||||
extension,
|
||||
use_alpha))
|
||||
{
|
||||
if(img->frame != frame) {
|
||||
img->frame = frame;
|
||||
@ -377,7 +380,8 @@ void ImageManager::remove_image(int flat_slot)
|
||||
void ImageManager::remove_image(const string& filename,
|
||||
void *builtin_data,
|
||||
InterpolationType interpolation,
|
||||
ExtensionType extension)
|
||||
ExtensionType extension,
|
||||
bool use_alpha)
|
||||
{
|
||||
size_t slot;
|
||||
|
||||
@ -387,7 +391,8 @@ void ImageManager::remove_image(const string& filename,
|
||||
filename,
|
||||
builtin_data,
|
||||
interpolation,
|
||||
extension))
|
||||
extension,
|
||||
use_alpha))
|
||||
{
|
||||
remove_image(type_index_to_flattened_slot(slot, (ImageDataType)type));
|
||||
return;
|
||||
@ -403,7 +408,8 @@ void ImageManager::remove_image(const string& filename,
|
||||
void ImageManager::tag_reload_image(const string& filename,
|
||||
void *builtin_data,
|
||||
InterpolationType interpolation,
|
||||
ExtensionType extension)
|
||||
ExtensionType extension,
|
||||
bool use_alpha)
|
||||
{
|
||||
for(size_t type = 0; type < IMAGE_DATA_NUM_TYPES; type++) {
|
||||
for(size_t slot = 0; slot < images[type].size(); slot++) {
|
||||
@ -411,7 +417,8 @@ void ImageManager::tag_reload_image(const string& filename,
|
||||
filename,
|
||||
builtin_data,
|
||||
interpolation,
|
||||
extension))
|
||||
extension,
|
||||
use_alpha))
|
||||
{
|
||||
images[type][slot]->need_load = true;
|
||||
break;
|
||||
|
@ -61,11 +61,13 @@ public:
|
||||
void remove_image(const string& filename,
|
||||
void *builtin_data,
|
||||
InterpolationType interpolation,
|
||||
ExtensionType extension);
|
||||
ExtensionType extension,
|
||||
bool use_alpha);
|
||||
void tag_reload_image(const string& filename,
|
||||
void *builtin_data,
|
||||
InterpolationType interpolation,
|
||||
ExtensionType extension);
|
||||
ExtensionType extension,
|
||||
bool use_alpha);
|
||||
ImageDataType get_image_metadata(const string& filename, void *builtin_data, bool& is_linear);
|
||||
|
||||
void device_update(Device *device,
|
||||
|
@ -263,7 +263,8 @@ ImageTextureNode::~ImageTextureNode()
|
||||
image_manager->remove_image(filename.string(),
|
||||
builtin_data,
|
||||
interpolation,
|
||||
extension);
|
||||
extension,
|
||||
use_alpha);
|
||||
}
|
||||
}
|
||||
|
||||
@ -462,7 +463,8 @@ EnvironmentTextureNode::~EnvironmentTextureNode()
|
||||
image_manager->remove_image(filename.string(),
|
||||
builtin_data,
|
||||
interpolation,
|
||||
EXTENSION_REPEAT);
|
||||
EXTENSION_REPEAT,
|
||||
use_alpha);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1381,7 +1383,8 @@ PointDensityTextureNode::~PointDensityTextureNode()
|
||||
image_manager->remove_image(filename.string(),
|
||||
builtin_data,
|
||||
interpolation,
|
||||
EXTENSION_CLIP);
|
||||
EXTENSION_CLIP,
|
||||
true);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user