[Bf-blender-cvs] [711960b3c23] master: node_shader_utils: add possibility to override image colorspace 'is_data'

Philipp Oeser noreply at git.blender.org
Thu Jul 4 12:34:20 CEST 2019


Commit: 711960b3c234d02ac11f11a22fd15436bdd489d5
Author: Philipp Oeser
Date:   Wed Jul 3 18:35:06 2019 +0200
Branches: master
https://developer.blender.org/rB711960b3c234d02ac11f11a22fd15436bdd489d5

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

===================================================================

M	release/scripts/modules/bpy_extras/node_shader_utils.py

===================================================================

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)



More information about the Bf-blender-cvs mailing list