diff options
author | Philipp Oeser <info@graphics-engineer.com> | 2019-07-03 19:35:06 +0300 |
---|---|---|
committer | Philipp Oeser <info@graphics-engineer.com> | 2019-07-04 13:32:25 +0300 |
commit | 711960b3c234d02ac11f11a22fd15436bdd489d5 (patch) | |
tree | 01a100b84929aa8ae67e53706cc809657326d4c0 /release/scripts/modules/bpy_extras/node_shader_utils.py | |
parent | 669d50f803cd2e053d8bdab2a6b470eb956bc210 (diff) |
node_shader_utils: add possibility to override image colorspace
'is_data'
since the move from 'cycles_shader_compat' (2.79) to
'PrincipledBSDFWrapper' (2.8) we lost the ability to (automatically) set
this colorspace setting for imported textures. This was useful for e.g.
normalmaps to always assume 'Non-Color' data.
This adds the possibility to overide and uses this for normalmaps...
Fixes T66368
Reviewers: mont29, brecht
Maniphest Tasks: T66368
Differential Revision: https://developer.blender.org/D5176
Diffstat (limited to 'release/scripts/modules/bpy_extras/node_shader_utils.py')
-rw-r--r-- | release/scripts/modules/bpy_extras/node_shader_utils.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/release/scripts/modules/bpy_extras/node_shader_utils.py b/release/scripts/modules/bpy_extras/node_shader_utils.py index 5e24050ebe3..01ccd51aada 100644 --- a/release/scripts/modules/bpy_extras/node_shader_utils.py +++ b/release/scripts/modules/bpy_extras/node_shader_utils.py @@ -496,6 +496,7 @@ class PrincipledBSDFWrapper(ShaderWrapper): self, self.node_normalmap, self.node_normalmap.inputs["Color"], grid_row_diff=-2, + colorspace_is_data=True, ) normalmap_texture = property(normalmap_texture_get) @@ -521,6 +522,7 @@ class ShaderImageTextureWrapper(): "is_readonly", "grid_row_diff", "use_alpha", + "colorspace_is_data", *NODES_LIST, ) @@ -532,13 +534,15 @@ class ShaderImageTextureWrapper(): owner_shader._textures[(node_dst, socket_dst)] = instance return instance - def __init__(self, owner_shader: ShaderWrapper, node_dst, socket_dst, grid_row_diff=0, use_alpha=False): + def __init__(self, owner_shader: ShaderWrapper, node_dst, socket_dst, grid_row_diff=0, + use_alpha=False, colorspace_is_data=...): self.owner_shader = owner_shader self.is_readonly = owner_shader.is_readonly self.node_dst = node_dst self.socket_dst = socket_dst self.grid_row_diff = grid_row_diff self.use_alpha = use_alpha + self.colorspace_is_data = colorspace_is_data self._node_image = ... self._node_mapping = ... @@ -639,6 +643,8 @@ class ShaderImageTextureWrapper(): @_set_check def image_set(self, image): + if self.colorspace_is_data is not ...: + image.colorspace_settings.is_data = self.colorspace_is_data self.node_image.image = image image = property(image_get, image_set) |