diff options
-rw-r--r-- | release/scripts/startup/bl_ui/properties_texture.py | 3 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_texture_types.h | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_texture.c | 5 | ||||
-rw-r--r-- | source/blender/render/intern/include/texture.h | 18 |
4 files changed, 20 insertions, 7 deletions
diff --git a/release/scripts/startup/bl_ui/properties_texture.py b/release/scripts/startup/bl_ui/properties_texture.py index c03ea1c5422..009309479ec 100644 --- a/release/scripts/startup/bl_ui/properties_texture.py +++ b/release/scripts/startup/bl_ui/properties_texture.py @@ -269,6 +269,9 @@ class TEXTURE_PT_colors(TextureButtonsPanel, Panel): col.prop(tex, "contrast") col.prop(tex, "saturation") + col = layout.column() + col.prop(tex, "use_clamp", text="Clamp") + # Texture Slot Panels # diff --git a/source/blender/makesdna/DNA_texture_types.h b/source/blender/makesdna/DNA_texture_types.h index fcd0575f1c5..a3025a7fb31 100644 --- a/source/blender/makesdna/DNA_texture_types.h +++ b/source/blender/makesdna/DNA_texture_types.h @@ -382,6 +382,7 @@ typedef struct ColorMapping { #define TEX_REPEAT_YMIR 256 #define TEX_FLAG_MASK ( TEX_COLORBAND | TEX_FLIPBLEND | TEX_NEGALPHA | TEX_CHECKER_ODD | TEX_CHECKER_EVEN | TEX_PRV_ALPHA | TEX_PRV_NOR | TEX_REPEAT_XMIR | TEX_REPEAT_YMIR ) #define TEX_DS_EXPAND 512 +#define TEX_NO_CLAMP 1024 /* extend (starts with 1 because of backward comp.) */ #define TEX_EXTEND 1 diff --git a/source/blender/makesrna/intern/rna_texture.c b/source/blender/makesrna/intern/rna_texture.c index b453965d21f..37a0ee0da8e 100644 --- a/source/blender/makesrna/intern/rna_texture.c +++ b/source/blender/makesrna/intern/rna_texture.c @@ -2010,6 +2010,11 @@ static void rna_def_texture(BlenderRNA *brna) RNA_def_property_enum_funcs(prop, NULL, "rna_Texture_type_set", NULL); RNA_def_property_ui_text(prop, "Type", ""); RNA_def_property_update(prop, 0, "rna_Texture_update"); + + prop = RNA_def_property(srna, "use_clamp", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", TEX_NO_CLAMP); + RNA_def_property_ui_text(prop, "Clamp", "Set negative texture RGB and intensity values to zero, for some uses like displacement this option can be disabled to get the full range"); + RNA_def_property_update(prop, 0, "rna_Texture_update"); prop = RNA_def_property(srna, "use_color_ramp", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", TEX_COLORBAND); diff --git a/source/blender/render/intern/include/texture.h b/source/blender/render/intern/include/texture.h index b23d6b09524..0e0337d6e0e 100644 --- a/source/blender/render/intern/include/texture.h +++ b/source/blender/render/intern/include/texture.h @@ -33,18 +33,22 @@ #ifndef __TEXTURE_H__ #define __TEXTURE_H__ -#define BRICONT \ - texres->tin= (texres->tin-0.5f) * tex->contrast+tex->bright-0.5f; \ - if (texres->tin < 0.0f) texres->tin= 0.0f; \ - else if (texres->tin > 1.0f) texres->tin= 1.0f; \ +#define BRICONT \ + texres->tin= (texres->tin-0.5f) * tex->contrast+tex->bright-0.5f; \ + if(!(tex->flag & TEX_NO_CLAMP)) { \ + if (texres->tin < 0.0f) texres->tin= 0.0f; \ + else if (texres->tin > 1.0f) texres->tin= 1.0f; \ + } \ #define BRICONTRGB \ texres->tr= tex->rfac*((texres->tr-0.5f)*tex->contrast+tex->bright-0.5f); \ - if (texres->tr<0.0f) texres->tr= 0.0f; \ texres->tg= tex->gfac*((texres->tg-0.5f)*tex->contrast+tex->bright-0.5f); \ - if (texres->tg<0.0f) texres->tg= 0.0f; \ texres->tb= tex->bfac*((texres->tb-0.5f)*tex->contrast+tex->bright-0.5f); \ - if (texres->tb<0.0f) texres->tb= 0.0f; \ + if(!(tex->flag & TEX_NO_CLAMP)) { \ + if (texres->tr < 0.0f) texres->tr= 0.0f; \ + if (texres->tg < 0.0f) texres->tg= 0.0f; \ + if (texres->tb < 0.0f) texres->tb= 0.0f; \ + } \ if (tex->saturation != 1.0f) { \ float _hsv[3]; \ rgb_to_hsv(texres->tr, texres->tg, texres->tb, \ |