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:
authorTon Roosendaal <ton@blender.org>2011-02-18 15:34:31 +0300
committerTon Roosendaal <ton@blender.org>2011-02-18 15:34:31 +0300
commit538ad31bfbf80dadb2c70dade8d83b9e4aad18a6 (patch)
treead17973d7d9ee83ea1527872d0ba1f0b51318832 /source/blender/nodes/intern/TEX_nodes
parentb74601078d08a923241d3b52e065afd663e2ff3f (diff)
Bugfix #26128
Compositor/texture nodes: math node now allows to use pow() for negative raising too, but only when that value is near-integer. For other negative cases result is zero. Patch provided by Aurel W
Diffstat (limited to 'source/blender/nodes/intern/TEX_nodes')
-rw-r--r--source/blender/nodes/intern/TEX_nodes/TEX_math.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/source/blender/nodes/intern/TEX_nodes/TEX_math.c b/source/blender/nodes/intern/TEX_nodes/TEX_math.c
index 7e1c54b6e47..3043cd756d0 100644
--- a/source/blender/nodes/intern/TEX_nodes/TEX_math.c
+++ b/source/blender/nodes/intern/TEX_nodes/TEX_math.c
@@ -106,11 +106,17 @@ static void valuefn(float *out, TexParams *p, bNode *node, bNodeStack **in, shor
break;
case 10: /* Power */
{
- /* Don't want any imaginary numbers... */
- if( in0 >= 0 )
- *out= pow(in0, in1);
- else
- *out= 0.0;
+ /* Only raise negative numbers by full integers */
+ if( in0 >= 0 ) {
+ out[0]= pow(in0, in1);
+ } else {
+ float y_mod_1 = fmod(in1, 1);
+ if (y_mod_1 > 0.999 || y_mod_1 < 0.001) {
+ *out = pow(in0, round(in1));
+ } else {
+ *out = 0.0;
+ }
+ }
}
break;
case 11: /* Logarithm */