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>2011-12-09 01:55:35 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2011-12-09 01:55:35 +0400
commit3314184f4d77bed0d9b4cdc186154b2289b5ab75 (patch)
treea062f4da3dbd72fccfdb9e0bda63fcff8f87c264 /intern/cycles/render/sobol.cpp
parent601b0b284e1ec87917c47341165c111ef5b8d96c (diff)
Fix #29528: crash adding subsurf modifier in a particular scene with viewport render.
Diffstat (limited to 'intern/cycles/render/sobol.cpp')
-rw-r--r--intern/cycles/render/sobol.cpp27
1 files changed, 14 insertions, 13 deletions
diff --git a/intern/cycles/render/sobol.cpp b/intern/cycles/render/sobol.cpp
index be8939174b4..e3c2e802067 100644
--- a/intern/cycles/render/sobol.cpp
+++ b/intern/cycles/render/sobol.cpp
@@ -47,6 +47,7 @@
*/
#include "util_debug.h"
+#include "util_types.h"
#include "sobol.h"
@@ -55,8 +56,8 @@ CCL_NAMESPACE_BEGIN
#define SOBOL_MAX_NUMBER 32
typedef struct SobolDirectionNumbers {
- unsigned int d, s, a;
- unsigned int m[SOBOL_MAX_NUMBER];
+ uint d, s, a;
+ uint m[SOBOL_MAX_NUMBER];
} SobolDirectionNumbers;
static SobolDirectionNumbers SOBOL_NUMBERS[SOBOL_MAX_DIMENSIONS-1] = {
@@ -21262,38 +21263,38 @@ static SobolDirectionNumbers SOBOL_NUMBERS[SOBOL_MAX_DIMENSIONS-1] = {
{21201, 18, 131059, {1, 1, 7, 11, 15, 7, 37, 239, 337, 245, 1557, 3681, 7357, 9639, 27367, 26869, 114603, 86317}}
};
-void sobol_generate_direction_vectors(unsigned int vectors[][SOBOL_BITS], int dimensions)
+void sobol_generate_direction_vectors(uint vectors[][SOBOL_BITS], int dimensions)
{
assert(dimensions <= SOBOL_MAX_DIMENSIONS);
- const unsigned int L = SOBOL_BITS;
+ const uint L = SOBOL_BITS;
/* first dimension is exception */
- unsigned int *v = vectors[0];
+ uint *v = vectors[0];
- for(unsigned int i = 0; i < L; i++)
+ for(uint i = 0; i < L; i++)
v[i] = 1 << (31-i); // all m's = 1
for(int dim = 1; dim < dimensions; dim++) {
SobolDirectionNumbers *numbers = &SOBOL_NUMBERS[dim-1];
- unsigned int s = numbers->s;
- unsigned int a = numbers->a;
- unsigned int *m = numbers->m;
+ uint s = numbers->s;
+ uint a = numbers->a;
+ uint *m = numbers->m;
v = vectors[dim];
if(L <= s) {
- for(unsigned int i = 0; i < L; i++)
+ for(uint i = 0; i < L; i++)
v[i] = m[i] << (31-i);
}
else {
- for(unsigned int i = 0; i < s; i++)
+ for(uint i = 0; i < s; i++)
v[i] = m[i] << (31-i);
- for(unsigned int i = s; i < L; i++) {
+ for(uint i = s; i < L; i++) {
v[i] = v[i-s] ^ (v[i-s] >> s);
- for(unsigned int k = 1; k < s; k++)
+ for(uint k = 1; k < s; k++)
v[i] ^= (((a >> (s-1-k)) & 1) * v[i-k]);
}
}