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:
-rw-r--r--release/scripts/startup/bl_ui/properties_texture.py3
-rw-r--r--source/blender/makesdna/DNA_texture_types.h1
-rw-r--r--source/blender/makesrna/intern/rna_texture.c5
-rw-r--r--source/blender/render/intern/include/texture.h18
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, \