Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2013-06-21 17:05:10 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2013-06-21 17:05:10 +0400
commit86c7bf733124b2959c4586e2e315e6a4ad53f725 (patch)
tree5eebb046c5ac600e32898f6a2a10273e548b5879 /intern/cycles/kernel
parent2e3035dd80ff3c69c38195f10c0ab9efdd6ed3ec (diff)
Fix #35812: cycles image texture node not doing proper alpha handling of PNG
images with open shading language enabled.
Diffstat (limited to 'intern/cycles/kernel')
-rw-r--r--intern/cycles/kernel/shaders/node_environment_texture.osl3
-rw-r--r--intern/cycles/kernel/shaders/node_image_texture.osl6
2 files changed, 5 insertions, 4 deletions
diff --git a/intern/cycles/kernel/shaders/node_environment_texture.osl b/intern/cycles/kernel/shaders/node_environment_texture.osl
index bddef418c3d..230116d3d77 100644
--- a/intern/cycles/kernel/shaders/node_environment_texture.osl
+++ b/intern/cycles/kernel/shaders/node_environment_texture.osl
@@ -49,6 +49,7 @@ shader node_environment_texture(
string projection = "Equirectangular",
string color_space = "sRGB",
int is_float = 1,
+ int use_alpha = 1,
output color Color = 0.0,
output float Alpha = 1.0)
{
@@ -67,7 +68,7 @@ shader node_environment_texture(
/* todo: use environment for better texture filtering of equirectangular */
Color = (color)texture(filename, p[0], 1.0 - p[1], "wrap", "periodic", "alpha", Alpha);
- if (isconnected(Alpha)) {
+ if (use_alpha) {
Color = color_unpremultiply(Color, Alpha);
if (!is_float)
diff --git a/intern/cycles/kernel/shaders/node_image_texture.osl b/intern/cycles/kernel/shaders/node_image_texture.osl
index 6ccc7ebc651..92c625e99c4 100644
--- a/intern/cycles/kernel/shaders/node_image_texture.osl
+++ b/intern/cycles/kernel/shaders/node_image_texture.osl
@@ -30,8 +30,9 @@ color image_texture_lookup(string filename, string color_space, float u, float v
rgb = min(rgb, 1.0);
}
- if (color_space == "sRGB")
+ if (color_space == "sRGB") {
rgb = color_srgb_to_scene_linear(rgb);
+ }
return rgb;
}
@@ -45,6 +46,7 @@ shader node_image_texture(
string projection = "Flat",
float projection_blend = 0.0,
int is_float = 1,
+ int use_alpha = 1,
output color Color = 0.0,
output float Alpha = 1.0)
{
@@ -53,8 +55,6 @@ shader node_image_texture(
if (use_mapping)
p = transform(mapping, p);
- int use_alpha = isconnected(Alpha);
-
if (projection == "Flat") {
Color = image_texture_lookup(filename, color_space, p[0], p[1], Alpha, use_alpha, is_float);
}