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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2012-05-21 16:52:28 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-05-21 16:52:28 +0400
commitc3e1fce77552b5626d2939710cb6d0020891d218 (patch)
tree5d59df38ec009f21000a959531129aa511868773 /intern/cycles/util
parentea11bc980ad428950efb430618a6de439ffd5951 (diff)
Cycles: add Object Info node, with outputs object location, object/material
pass index, and a random number unique to the instance of the object. This can be useful to give some variation to a single material assigned to multiple instances, either manually controlled through the object index, based on the object location, or randomized for each instance. http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes/More#Object_Info
Diffstat (limited to 'intern/cycles/util')
-rw-r--r--intern/cycles/util/util_hash.h18
1 files changed, 15 insertions, 3 deletions
diff --git a/intern/cycles/util/util_hash.h b/intern/cycles/util/util_hash.h
index 16901dab38e..c31b46e1580 100644
--- a/intern/cycles/util/util_hash.h
+++ b/intern/cycles/util/util_hash.h
@@ -19,13 +19,15 @@
#ifndef __UTIL_HASH_H__
#define __UTIL_HASH_H__
+#include "util_types.h"
+
CCL_NAMESPACE_BEGIN
-static inline unsigned int hash_int_2d(unsigned int kx, unsigned int ky)
+static inline uint hash_int_2d(uint kx, uint ky)
{
#define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k))))
- unsigned int a, b, c;
+ uint a, b, c;
a = b = c = 0xdeadbeef + (2 << 2) + 13;
a += kx;
@@ -44,11 +46,21 @@ static inline unsigned int hash_int_2d(unsigned int kx, unsigned int ky)
#undef rot
}
-static inline unsigned int hash_int(unsigned int k)
+static inline uint hash_int(uint k)
{
return hash_int_2d(k, 0);
}
+static inline uint hash_string(const char *str)
+{
+ uint i = 0, c;
+
+ while ((c = *str++))
+ i = i * 37 + c;
+
+ return i;
+}
+
CCL_NAMESPACE_END
#endif /* __UTIL_HASH_H__ */