[Bf-blender-cvs] [406480c937e] soc-2019-cycles-procedural: Refactor and clean ip hashing code.

OmarSquircleArt noreply at git.blender.org
Wed Aug 7 14:39:32 CEST 2019


Commit: 406480c937ecd452dcb5519623e102aed38aa148
Author: OmarSquircleArt
Date:   Wed Aug 7 14:40:27 2019 +0200
Branches: soc-2019-cycles-procedural
https://developer.blender.org/rB406480c937ecd452dcb5519623e102aed38aa148

Refactor and clean ip hashing code.

===================================================================

M	intern/cycles/blender/blender_curves.cpp
M	intern/cycles/kernel/osl/osl_services.cpp
M	intern/cycles/kernel/svm/svm_geometry.h
M	intern/cycles/kernel/svm/svm_voronoi.h
M	intern/cycles/kernel/svm/svm_white_noise.h
M	intern/cycles/util/util_hash.h
M	source/blender/gpu/shaders/gpu_shader_material.glsl

===================================================================

diff --git a/intern/cycles/blender/blender_curves.cpp b/intern/cycles/blender/blender_curves.cpp
index 577d8929f33..0075ce533dd 100644
--- a/intern/cycles/blender/blender_curves.cpp
+++ b/intern/cycles/blender/blender_curves.cpp
@@ -656,7 +656,7 @@ static void ExportCurveSegments(Scene *scene, Mesh *mesh, ParticleCurveData *CDa
       }
 
       if (attr_random != NULL) {
-        attr_random->add(hash_uint_01(num_curves));
+        attr_random->add(hash_uint_to_float(num_curves));
       }
 
       mesh->add_curve(num_keys, CData->psys_shader[sys]);
diff --git a/intern/cycles/kernel/osl/osl_services.cpp b/intern/cycles/kernel/osl/osl_services.cpp
index 0cdaf379045..13078639586 100644
--- a/intern/cycles/kernel/osl/osl_services.cpp
+++ b/intern/cycles/kernel/osl/osl_services.cpp
@@ -767,7 +767,7 @@ bool OSLRenderServices::get_object_standard_attribute(
   }
   else if (name == u_particle_random) {
     int particle_id = object_particle_id(kg, sd->object);
-    float f = hash_uint_01(particle_index(kg, particle_id));
+    float f = hash_uint_to_float(particle_index(kg, particle_id));
     return set_attribute_float(f, type, derivatives, val);
   }
 
diff --git a/intern/cycles/kernel/svm/svm_geometry.h b/intern/cycles/kernel/svm/svm_geometry.h
index f425fc4ad95..5db4f24fbed 100644
--- a/intern/cycles/kernel/svm/svm_geometry.h
+++ b/intern/cycles/kernel/svm/svm_geometry.h
@@ -153,7 +153,7 @@ ccl_device void svm_node_particle_info(
     }
     case NODE_INFO_PAR_RANDOM: {
       int particle_id = object_particle_id(kg, sd->object);
-      float random = hash_uint_01(particle_index(kg, particle_id));
+      float random = hash_uint_to_float(particle_index(kg, particle_id));
       stack_store_float(stack, out_offset, random);
       break;
     }
diff --git a/intern/cycles/kernel/svm/svm_voronoi.h b/intern/cycles/kernel/svm/svm_voronoi.h
index 7b2641d3cac..46bedc80b1f 100644
--- a/intern/cycles/kernel/svm/svm_voronoi.h
+++ b/intern/cycles/kernel/svm/svm_voronoi.h
@@ -51,7 +51,7 @@ ccl_device void voronoi_f1_1d(float w,
   float targetOffset, targetPosition;
   for (int i = -1; i <= 1; i++) {
     float cellOffset = i;
-    float pointPosition = cellOffset + hash_float_01_float(cellPosition + cellOffset) * jitter;
+    float pointPosition = cellOffset + hash_float_to_float(cellPosition + cellOffset) * jitter;
     float distanceToPoint = voronoi_distance_1d(pointPosition, localPosition, metric, exponent);
     if (distanceToPoint < minDistance) {
       targetOffset = cellOffset;
@@ -60,7 +60,7 @@ ccl_device void voronoi_f1_1d(float w,
     }
   }
   *outDistance = minDistance;
-  *outColor = hash_float_01_float3(cellPosition + targetOffset);
+  *outColor = hash_float_to_float3(cellPosition + targetOffset);
   *outW = targetPosition + cellPosition;
 }
 
@@ -81,11 +81,11 @@ ccl_device void voronoi_smooth_f1_1d(float w,
   float smoothPosition = 0.0f;
   for (int i = -2; i <= 2; i++) {
     float cellOffset = i;
-    float pointPosition = cellOffset + hash_float_01_float(cellPosition + cellOffset) * jitter;
+    float pointPosition = cellOffset + hash_float_to_float(cellPosition + cellOffset) * jitter;
     float distanceToPoint = voronoi_distance_1d(pointPosition, localPosition, metric, exponent);
     float weight = expf(-smoothness * distanceToPoint);
     smoothDistance += weight;
-    smoothColor += hash_float_01_float3(cellPosition + cellOffset) * weight;
+    smoothColor += hash_float_to_float3(cellPosition + cellOffset) * weight;
     smoothPosition += pointPosition * weight;
   }
   *outDistance = -logf(smoothDistance) / smoothness;
@@ -111,7 +111,7 @@ ccl_device void voronoi_f2_1d(float w,
   float offsetF2, positionF2;
   for (int i = -1; i <= 1; i++) {
     float cellOffset = i;
-    float pointPosition = cellOffset + hash_float_01_float(cellPosition + cellOffset) * jitter;
+    float pointPosition = cellOffset + hash_float_to_float(cellPosition + cellOffset) * jitter;
     float distanceToPoint = voronoi_distance_1d(pointPosition, localPosition, metric, exponent);
     if (distanceToPoint < distanceF1) {
       distanceF2 = distanceF1;
@@ -128,7 +128,7 @@ ccl_device void voronoi_f2_1d(float w,
     }
   }
   *outDistance = distanceF2;
-  *outColor = hash_float_01_float3(cellPosition + offsetF2);
+  *outColor = hash_float_to_float3(cellPosition + offsetF2);
   *outW = positionF2 + cellPosition;
 }
 
@@ -140,7 +140,7 @@ ccl_device void voronoi_distance_to_edge_1d(float w, float jitter, float *outDis
   float minDistance = 8.0f;
   for (int i = -1; i <= 1; i++) {
     float cellOffset = i;
-    float pointPosition = cellOffset + hash_float_01_float(cellPosition + cellOffset) * jitter;
+    float pointPosition = cellOffset + hash_float_to_float(cellPosition + cellOffset) * jitter;
     float distanceToPoint = fabsf(pointPosition - localPosition);
     minDistance = min(distanceToPoint, minDistance);
   }
@@ -157,7 +157,7 @@ ccl_device void voronoi_n_sphere_radius_1d(float w, float jitter, float *outRadi
   float minDistance = 8.0f;
   for (int i = -1; i <= 1; i++) {
     float cellOffset = i;
-    float pointPosition = cellOffset + hash_float_01_float(cellPosition + cellOffset) * jitter;
+    float pointPosition = cellOffset + hash_float_to_float(cellPosition + cellOffset) * jitter;
     float distanceToPoint = fabsf(pointPosition - localPosition);
     if (distanceToPoint < minDistance) {
       minDistance = distanceToPoint;
@@ -172,7 +172,7 @@ ccl_device void voronoi_n_sphere_radius_1d(float w, float jitter, float *outRadi
     if (i == 0)
       continue;
     float cellOffset = i + closestPointOffset;
-    float pointPosition = cellOffset + hash_float_01_float(cellPosition + cellOffset) * jitter;
+    float pointPosition = cellOffset + hash_float_to_float(cellPosition + cellOffset) * jitter;
     float distanceToPoint = fabsf(closestPoint - pointPosition);
     if (distanceToPoint < minDistance) {
       minDistance = distanceToPoint;
@@ -219,7 +219,7 @@ ccl_device void voronoi_f1_2d(float2 coord,
     for (int i = -1; i <= 1; i++) {
       float2 cellOffset = make_float2(i, j);
       float2 pointPosition = cellOffset +
-                             hash_float2_01_float2(cellPosition + cellOffset) * jitter;
+                             hash_float2_to_float2(cellPosition + cellOffset) * jitter;
       float distanceToPoint = voronoi_distance_2d(pointPosition, localPosition, metric, exponent);
       if (distanceToPoint < minDistance) {
         targetOffset = cellOffset;
@@ -229,7 +229,7 @@ ccl_device void voronoi_f1_2d(float2 coord,
     }
   }
   *outDistance = minDistance;
-  *outColor = hash_float2_01_float3(cellPosition + targetOffset);
+  *outColor = hash_float2_to_float3(cellPosition + targetOffset);
   *outPosition = targetPosition + cellPosition;
 }
 
@@ -252,11 +252,11 @@ ccl_device void voronoi_smooth_f1_2d(float2 coord,
     for (int i = -2; i <= 2; i++) {
       float2 cellOffset = make_float2(i, j);
       float2 pointPosition = cellOffset +
-                             hash_float2_01_float2(cellPosition + cellOffset) * jitter;
+                             hash_float2_to_float2(cellPosition + cellOffset) * jitter;
       float distanceToPoint = voronoi_distance_2d(pointPosition, localPosition, metric, exponent);
       float weight = expf(-smoothness * distanceToPoint);
       smoothDistance += weight;
-      smoothColor += hash_float2_01_float3(cellPosition + cellOffset) * weight;
+      smoothColor += hash_float2_to_float3(cellPosition + cellOffset) * weight;
       smoothPosition += pointPosition * weight;
     }
   }
@@ -285,7 +285,7 @@ ccl_device void voronoi_f2_2d(float2 coord,
     for (int i = -1; i <= 1; i++) {
       float2 cellOffset = make_float2(i, j);
       float2 pointPosition = cellOffset +
-                             hash_float2_01_float2(cellPosition + cellOffset) * jitter;
+                             hash_float2_to_float2(cellPosition + cellOffset) * jitter;
       float distanceToPoint = voronoi_distance_2d(pointPosition, localPosition, metric, exponent);
       if (distanceToPoint < distanceF1) {
         distanceF2 = distanceF1;
@@ -303,7 +303,7 @@ ccl_device void voronoi_f2_2d(float2 coord,
     }
   }
   *outDistance = distanceF2;
-  *outColor = hash_float2_01_float3(cellPosition + offsetF2);
+  *outColor = hash_float2_to_float3(cellPosition + offsetF2);
   *outPosition = positionF2 + cellPosition;
 }
 
@@ -318,7 +318,7 @@ ccl_device void voronoi_distance_to_edge_2d(float2 coord, float jitter, float *o
     for (int i = -1; i <= 1; i++) {
       float2 cellOffset = make_float2(i, j);
       float2 vectorToPoint = cellOffset +
-                             hash_float2_01_float2(cellPosition + cellOffset) * jitter -
+                             hash_float2_to_float2(cellPosition + cellOffset) * jitter -
                              localPosition;
       float distanceToPoint = dot(vectorToPoint, vectorToPoint);
       if (distanceToPoint < minDistance) {
@@ -333,7 +333,7 @@ ccl_device void voronoi_distance_to_edge_2d(float2 coord, float jitter, float *o
     for (int i = -1; i <= 1; i++) {
       float2 cellOffset = make_float2(i, j);
       float2 vectorToPoint = cellOffset +
-                             hash_float2_01_float2(cellPosition + cellOffset) * jitter -
+                             hash_float2_to_float2(cellPosition + cellOffset) * jitter -
                              localPosition;
       float2 perpendicularToEdge = vectorToPoint - vectorToClosest;
       if (dot(perpendicularToEdge, perpendicularToEdge) > 0.0001f) {
@@ -358,7 +358,7 @@ ccl_device void voronoi_n_sphere_radius_2d(float2 coord, float jitter, float *ou
     for (int i = -1; i <= 1; i++) {
       float2 cellOffset = make_float2(i, j);
       float2 pointPosition = cellOffset +
-                             hash_float2_01_float2(cellPosition + cellOffset) * jitter;
+                             hash_float2_to_float2(cellPosition + cellOffset) * jitter;
       float distanceToPoint = distance(pointPosition, localPosition);
       if (distanceToPoint < minDistance) {
         minDistance = distanceToPoint;
@@ -376,7 +376,7 @@ ccl_device void voronoi_n_sphere_radius_2d(float2 coord, float jitter, float *ou
         co

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list