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:
-rw-r--r--intern/cycles/kernel/kernel_bvh.h3
-rw-r--r--intern/cycles/kernel/kernel_shader.h9
-rw-r--r--intern/cycles/kernel/kernel_types.h7
-rw-r--r--intern/cycles/render/curves.cpp4
-rw-r--r--intern/cycles/render/curves.h1
5 files changed, 7 insertions, 17 deletions
diff --git a/intern/cycles/kernel/kernel_bvh.h b/intern/cycles/kernel/kernel_bvh.h
index 5aae4111fca..dc31e72b896 100644
--- a/intern/cycles/kernel/kernel_bvh.h
+++ b/intern/cycles/kernel/kernel_bvh.h
@@ -1071,9 +1071,10 @@ ccl_device_inline float3 curvepoint(float t, float3 p0, float3 p1, float3 p2, fl
return data[0] * p0 + data[1] * p1 + data[2] * p2 + data[3] * p3;
}
-ccl_device_inline float3 bvh_curve_refine(KernelGlobals *kg, ShaderData *sd, const Intersection *isect, const Ray *ray, float t)
+ccl_device_inline float3 bvh_curve_refine(KernelGlobals *kg, ShaderData *sd, const Intersection *isect, const Ray *ray)
{
int flag = kernel_data.curve.curveflags;
+ float t = isect->t;
float3 P = ray->P;
float3 D = ray->D;
diff --git a/intern/cycles/kernel/kernel_shader.h b/intern/cycles/kernel/kernel_shader.h
index dbc705ea791..457a7f704c8 100644
--- a/intern/cycles/kernel/kernel_shader.h
+++ b/intern/cycles/kernel/kernel_shader.h
@@ -75,14 +75,7 @@ ccl_device void shader_setup_from_ray(KernelGlobals *kg, ShaderData *sd,
sd->shader = __float_as_int(curvedata.z);
sd->segment = isect->segment;
-
- float tcorr = isect->t;
- if(kernel_data.curve.curveflags & CURVE_KN_POSTINTERSECTCORRECTION) {
- tcorr = (isect->u < 0)? tcorr + sqrtf(isect->v) : tcorr - sqrtf(isect->v);
- sd->ray_length = tcorr;
- }
-
- sd->P = bvh_curve_refine(kg, sd, isect, ray, tcorr);
+ sd->P = bvh_curve_refine(kg, sd, isect, ray);
}
else {
#endif
diff --git a/intern/cycles/kernel/kernel_types.h b/intern/cycles/kernel/kernel_types.h
index 51a49348810..555ee138221 100644
--- a/intern/cycles/kernel/kernel_types.h
+++ b/intern/cycles/kernel/kernel_types.h
@@ -793,10 +793,9 @@ typedef enum CurveFlag {
CURVE_KN_INTERPOLATE = 4, /* render as a curve? */
CURVE_KN_ACCURATE = 8, /* use accurate intersections test? */
CURVE_KN_INTERSECTCORRECTION = 16, /* correct for width after determing closest midpoint? */
- CURVE_KN_POSTINTERSECTCORRECTION = 32, /* correct for width after intersect? */
- CURVE_KN_TRUETANGENTGNORMAL = 64, /* use tangent normal for geometry? */
- CURVE_KN_TANGENTGNORMAL = 128, /* use tangent normal for shader? */
- CURVE_KN_RIBBONS = 256, /* use flat curve ribbons */
+ CURVE_KN_TRUETANGENTGNORMAL = 32, /* use tangent normal for geometry? */
+ CURVE_KN_TANGENTGNORMAL = 64, /* use tangent normal for shader? */
+ CURVE_KN_RIBBONS = 128, /* use flat curve ribbons */
} CurveFlag;
typedef struct KernelCurves {
diff --git a/intern/cycles/render/curves.cpp b/intern/cycles/render/curves.cpp
index 5730b5218ca..4e7f598751e 100644
--- a/intern/cycles/render/curves.cpp
+++ b/intern/cycles/render/curves.cpp
@@ -124,10 +124,8 @@ void CurveSystemManager::device_update(Device *device, DeviceScene *dscene, Scen
if(line_method == CURVE_ACCURATE)
kcurve->curveflags |= CURVE_KN_ACCURATE;
- if(line_method == CURVE_CORRECTED)
+ else if(line_method == CURVE_CORRECTED)
kcurve->curveflags |= CURVE_KN_INTERSECTCORRECTION;
- if(line_method == CURVE_POSTCORRECTED)
- kcurve->curveflags |= CURVE_KN_POSTINTERSECTCORRECTION;
if(use_tangent_normal)
kcurve->curveflags |= CURVE_KN_TANGENTGNORMAL;
diff --git a/intern/cycles/render/curves.h b/intern/cycles/render/curves.h
index ab74a356125..3dd492a29c4 100644
--- a/intern/cycles/render/curves.h
+++ b/intern/cycles/render/curves.h
@@ -49,7 +49,6 @@ typedef enum curve_triangles {
typedef enum curve_lines {
CURVE_ACCURATE,
CURVE_CORRECTED,
- CURVE_POSTCORRECTED,
CURVE_UNCORRECTED
} curve_lines;