[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