diff options
Diffstat (limited to 'intern/cycles/kernel/geom/triangle.h')
-rw-r--r-- | intern/cycles/kernel/geom/triangle.h | 136 |
1 files changed, 68 insertions, 68 deletions
diff --git a/intern/cycles/kernel/geom/triangle.h b/intern/cycles/kernel/geom/triangle.h index 8ac7e67ff05..788bfaca7cf 100644 --- a/intern/cycles/kernel/geom/triangle.h +++ b/intern/cycles/kernel/geom/triangle.h @@ -15,10 +15,10 @@ CCL_NAMESPACE_BEGIN ccl_device_inline float3 triangle_normal(KernelGlobals kg, ccl_private ShaderData *sd) { /* load triangle vertices */ - const uint4 tri_vindex = kernel_tex_fetch(__tri_vindex, sd->prim); - const float3 v0 = kernel_tex_fetch(__tri_verts, tri_vindex.w + 0); - const float3 v1 = kernel_tex_fetch(__tri_verts, tri_vindex.w + 1); - const float3 v2 = kernel_tex_fetch(__tri_verts, tri_vindex.w + 2); + const uint4 tri_vindex = kernel_data_fetch(tri_vindex, sd->prim); + const float3 v0 = kernel_data_fetch(tri_verts, tri_vindex.w + 0); + const float3 v1 = kernel_data_fetch(tri_verts, tri_vindex.w + 1); + const float3 v2 = kernel_data_fetch(tri_verts, tri_vindex.w + 2); /* return normal */ if (sd->object_flag & SD_OBJECT_NEGATIVE_SCALE_APPLIED) { @@ -40,15 +40,15 @@ ccl_device_inline void triangle_point_normal(KernelGlobals kg, ccl_private int *shader) { /* load triangle vertices */ - const uint4 tri_vindex = kernel_tex_fetch(__tri_vindex, prim); - float3 v0 = kernel_tex_fetch(__tri_verts, tri_vindex.w + 0); - float3 v1 = kernel_tex_fetch(__tri_verts, tri_vindex.w + 1); - float3 v2 = kernel_tex_fetch(__tri_verts, tri_vindex.w + 2); + const uint4 tri_vindex = kernel_data_fetch(tri_vindex, prim); + float3 v0 = kernel_data_fetch(tri_verts, tri_vindex.w + 0); + float3 v1 = kernel_data_fetch(tri_verts, tri_vindex.w + 1); + float3 v2 = kernel_data_fetch(tri_verts, tri_vindex.w + 2); /* compute point */ float t = 1.0f - u - v; *P = (u * v0 + v * v1 + t * v2); /* get object flags */ - int object_flag = kernel_tex_fetch(__object_flag, object); + int object_flag = kernel_data_fetch(object_flag, object); /* compute normal */ if (object_flag & SD_OBJECT_NEGATIVE_SCALE_APPLIED) { *Ng = normalize(cross(v2 - v0, v1 - v0)); @@ -57,17 +57,17 @@ ccl_device_inline void triangle_point_normal(KernelGlobals kg, *Ng = normalize(cross(v1 - v0, v2 - v0)); } /* shader`*/ - *shader = kernel_tex_fetch(__tri_shader, prim); + *shader = kernel_data_fetch(tri_shader, prim); } /* Triangle vertex locations */ ccl_device_inline void triangle_vertices(KernelGlobals kg, int prim, float3 P[3]) { - const uint4 tri_vindex = kernel_tex_fetch(__tri_vindex, prim); - P[0] = kernel_tex_fetch(__tri_verts, tri_vindex.w + 0); - P[1] = kernel_tex_fetch(__tri_verts, tri_vindex.w + 1); - P[2] = kernel_tex_fetch(__tri_verts, tri_vindex.w + 2); + const uint4 tri_vindex = kernel_data_fetch(tri_vindex, prim); + P[0] = kernel_data_fetch(tri_verts, tri_vindex.w + 0); + P[1] = kernel_data_fetch(tri_verts, tri_vindex.w + 1); + P[2] = kernel_data_fetch(tri_verts, tri_vindex.w + 2); } /* Triangle vertex locations and vertex normals */ @@ -77,13 +77,13 @@ ccl_device_inline void triangle_vertices_and_normals(KernelGlobals kg, float3 P[3], float3 N[3]) { - const uint4 tri_vindex = kernel_tex_fetch(__tri_vindex, prim); - P[0] = kernel_tex_fetch(__tri_verts, tri_vindex.w + 0); - P[1] = kernel_tex_fetch(__tri_verts, tri_vindex.w + 1); - P[2] = kernel_tex_fetch(__tri_verts, tri_vindex.w + 2); - N[0] = kernel_tex_fetch(__tri_vnormal, tri_vindex.x); - N[1] = kernel_tex_fetch(__tri_vnormal, tri_vindex.y); - N[2] = kernel_tex_fetch(__tri_vnormal, tri_vindex.z); + const uint4 tri_vindex = kernel_data_fetch(tri_vindex, prim); + P[0] = kernel_data_fetch(tri_verts, tri_vindex.w + 0); + P[1] = kernel_data_fetch(tri_verts, tri_vindex.w + 1); + P[2] = kernel_data_fetch(tri_verts, tri_vindex.w + 2); + N[0] = kernel_data_fetch(tri_vnormal, tri_vindex.x); + N[1] = kernel_data_fetch(tri_vnormal, tri_vindex.y); + N[2] = kernel_data_fetch(tri_vnormal, tri_vindex.z); } /* Interpolate smooth vertex normal from vertices */ @@ -92,10 +92,10 @@ ccl_device_inline float3 triangle_smooth_normal(KernelGlobals kg, float3 Ng, int prim, float u, float v) { /* load triangle vertices */ - const uint4 tri_vindex = kernel_tex_fetch(__tri_vindex, prim); - float3 n0 = kernel_tex_fetch(__tri_vnormal, tri_vindex.x); - float3 n1 = kernel_tex_fetch(__tri_vnormal, tri_vindex.y); - float3 n2 = kernel_tex_fetch(__tri_vnormal, tri_vindex.z); + const uint4 tri_vindex = kernel_data_fetch(tri_vindex, prim); + float3 n0 = kernel_data_fetch(tri_vnormal, tri_vindex.x); + float3 n1 = kernel_data_fetch(tri_vnormal, tri_vindex.y); + float3 n2 = kernel_data_fetch(tri_vnormal, tri_vindex.z); float3 N = safe_normalize((1.0f - u - v) * n2 + u * n0 + v * n1); @@ -106,10 +106,10 @@ ccl_device_inline float3 triangle_smooth_normal_unnormalized( KernelGlobals kg, ccl_private const ShaderData *sd, float3 Ng, int prim, float u, float v) { /* load triangle vertices */ - const uint4 tri_vindex = kernel_tex_fetch(__tri_vindex, prim); - float3 n0 = kernel_tex_fetch(__tri_vnormal, tri_vindex.x); - float3 n1 = kernel_tex_fetch(__tri_vnormal, tri_vindex.y); - float3 n2 = kernel_tex_fetch(__tri_vnormal, tri_vindex.z); + const uint4 tri_vindex = kernel_data_fetch(tri_vindex, prim); + float3 n0 = kernel_data_fetch(tri_vnormal, tri_vindex.x); + float3 n1 = kernel_data_fetch(tri_vnormal, tri_vindex.y); + float3 n2 = kernel_data_fetch(tri_vnormal, tri_vindex.z); /* ensure that the normals are in object space */ if (sd->object_flag & SD_OBJECT_TRANSFORM_APPLIED) { @@ -131,10 +131,10 @@ ccl_device_inline void triangle_dPdudv(KernelGlobals kg, ccl_private float3 *dPdv) { /* fetch triangle vertex coordinates */ - const uint4 tri_vindex = kernel_tex_fetch(__tri_vindex, prim); - const float3 p0 = kernel_tex_fetch(__tri_verts, tri_vindex.w + 0); - const float3 p1 = kernel_tex_fetch(__tri_verts, tri_vindex.w + 1); - const float3 p2 = kernel_tex_fetch(__tri_verts, tri_vindex.w + 2); + const uint4 tri_vindex = kernel_data_fetch(tri_vindex, prim); + const float3 p0 = kernel_data_fetch(tri_verts, tri_vindex.w + 0); + const float3 p1 = kernel_data_fetch(tri_verts, tri_vindex.w + 1); + const float3 p2 = kernel_data_fetch(tri_verts, tri_vindex.w + 2); /* compute derivatives of P w.r.t. uv */ *dPdu = (p0 - p2); @@ -153,16 +153,16 @@ ccl_device float triangle_attribute_float(KernelGlobals kg, float f0, f1, f2; if (desc.element & (ATTR_ELEMENT_VERTEX | ATTR_ELEMENT_VERTEX_MOTION)) { - const uint4 tri_vindex = kernel_tex_fetch(__tri_vindex, sd->prim); - f0 = kernel_tex_fetch(__attributes_float, desc.offset + tri_vindex.x); - f1 = kernel_tex_fetch(__attributes_float, desc.offset + tri_vindex.y); - f2 = kernel_tex_fetch(__attributes_float, desc.offset + tri_vindex.z); + const uint4 tri_vindex = kernel_data_fetch(tri_vindex, sd->prim); + f0 = kernel_data_fetch(attributes_float, desc.offset + tri_vindex.x); + f1 = kernel_data_fetch(attributes_float, desc.offset + tri_vindex.y); + f2 = kernel_data_fetch(attributes_float, desc.offset + tri_vindex.z); } else { const int tri = desc.offset + sd->prim * 3; - f0 = kernel_tex_fetch(__attributes_float, tri + 0); - f1 = kernel_tex_fetch(__attributes_float, tri + 1); - f2 = kernel_tex_fetch(__attributes_float, tri + 2); + f0 = kernel_data_fetch(attributes_float, tri + 0); + f1 = kernel_data_fetch(attributes_float, tri + 1); + f2 = kernel_data_fetch(attributes_float, tri + 2); } #ifdef __RAY_DIFFERENTIALS__ @@ -185,7 +185,7 @@ ccl_device float triangle_attribute_float(KernelGlobals kg, if (desc.element & (ATTR_ELEMENT_FACE | ATTR_ELEMENT_OBJECT | ATTR_ELEMENT_MESH)) { const int offset = (desc.element == ATTR_ELEMENT_FACE) ? desc.offset + sd->prim : desc.offset; - return kernel_tex_fetch(__attributes_float, offset); + return kernel_data_fetch(attributes_float, offset); } else { return 0.0f; @@ -203,16 +203,16 @@ ccl_device float2 triangle_attribute_float2(KernelGlobals kg, float2 f0, f1, f2; if (desc.element & (ATTR_ELEMENT_VERTEX | ATTR_ELEMENT_VERTEX_MOTION)) { - const uint4 tri_vindex = kernel_tex_fetch(__tri_vindex, sd->prim); - f0 = kernel_tex_fetch(__attributes_float2, desc.offset + tri_vindex.x); - f1 = kernel_tex_fetch(__attributes_float2, desc.offset + tri_vindex.y); - f2 = kernel_tex_fetch(__attributes_float2, desc.offset + tri_vindex.z); + const uint4 tri_vindex = kernel_data_fetch(tri_vindex, sd->prim); + f0 = kernel_data_fetch(attributes_float2, desc.offset + tri_vindex.x); + f1 = kernel_data_fetch(attributes_float2, desc.offset + tri_vindex.y); + f2 = kernel_data_fetch(attributes_float2, desc.offset + tri_vindex.z); } else { const int tri = desc.offset + sd->prim * 3; - f0 = kernel_tex_fetch(__attributes_float2, tri + 0); - f1 = kernel_tex_fetch(__attributes_float2, tri + 1); - f2 = kernel_tex_fetch(__attributes_float2, tri + 2); + f0 = kernel_data_fetch(attributes_float2, tri + 0); + f1 = kernel_data_fetch(attributes_float2, tri + 1); + f2 = kernel_data_fetch(attributes_float2, tri + 2); } #ifdef __RAY_DIFFERENTIALS__ @@ -235,7 +235,7 @@ ccl_device float2 triangle_attribute_float2(KernelGlobals kg, if (desc.element & (ATTR_ELEMENT_FACE | ATTR_ELEMENT_OBJECT | ATTR_ELEMENT_MESH)) { const int offset = (desc.element == ATTR_ELEMENT_FACE) ? desc.offset + sd->prim : desc.offset; - return kernel_tex_fetch(__attributes_float2, offset); + return kernel_data_fetch(attributes_float2, offset); } else { return make_float2(0.0f, 0.0f); @@ -253,16 +253,16 @@ ccl_device float3 triangle_attribute_float3(KernelGlobals kg, float3 f0, f1, f2; if (desc.element & (ATTR_ELEMENT_VERTEX | ATTR_ELEMENT_VERTEX_MOTION)) { - const uint4 tri_vindex = kernel_tex_fetch(__tri_vindex, sd->prim); - f0 = kernel_tex_fetch(__attributes_float3, desc.offset + tri_vindex.x); - f1 = kernel_tex_fetch(__attributes_float3, desc.offset + tri_vindex.y); - f2 = kernel_tex_fetch(__attributes_float3, desc.offset + tri_vindex.z); + const uint4 tri_vindex = kernel_data_fetch(tri_vindex, sd->prim); + f0 = kernel_data_fetch(attributes_float3, desc.offset + tri_vindex.x); + f1 = kernel_data_fetch(attributes_float3, desc.offset + tri_vindex.y); + f2 = kernel_data_fetch(attributes_float3, desc.offset + tri_vindex.z); } else { const int tri = desc.offset + sd->prim * 3; - f0 = kernel_tex_fetch(__attributes_float3, tri + 0); - f1 = kernel_tex_fetch(__attributes_float3, tri + 1); - f2 = kernel_tex_fetch(__attributes_float3, tri + 2); + f0 = kernel_data_fetch(attributes_float3, tri + 0); + f1 = kernel_data_fetch(attributes_float3, tri + 1); + f2 = kernel_data_fetch(attributes_float3, tri + 2); } #ifdef __RAY_DIFFERENTIALS__ @@ -285,7 +285,7 @@ ccl_device float3 triangle_attribute_float3(KernelGlobals kg, if (desc.element & (ATTR_ELEMENT_FACE | ATTR_ELEMENT_OBJECT | ATTR_ELEMENT_MESH)) { const int offset = (desc.element == ATTR_ELEMENT_FACE) ? desc.offset + sd->prim : desc.offset; - return kernel_tex_fetch(__attributes_float3, offset); + return kernel_data_fetch(attributes_float3, offset); } else { return make_float3(0.0f, 0.0f, 0.0f); @@ -304,25 +304,25 @@ ccl_device float4 triangle_attribute_float4(KernelGlobals kg, float4 f0, f1, f2; if (desc.element & (ATTR_ELEMENT_VERTEX | ATTR_ELEMENT_VERTEX_MOTION)) { - const uint4 tri_vindex = kernel_tex_fetch(__tri_vindex, sd->prim); - f0 = kernel_tex_fetch(__attributes_float4, desc.offset + tri_vindex.x); - f1 = kernel_tex_fetch(__attributes_float4, desc.offset + tri_vindex.y); - f2 = kernel_tex_fetch(__attributes_float4, desc.offset + tri_vindex.z); + const uint4 tri_vindex = kernel_data_fetch(tri_vindex, sd->prim); + f0 = kernel_data_fetch(attributes_float4, desc.offset + tri_vindex.x); + f1 = kernel_data_fetch(attributes_float4, desc.offset + tri_vindex.y); + f2 = kernel_data_fetch(attributes_float4, desc.offset + tri_vindex.z); } else { const int tri = desc.offset + sd->prim * 3; if (desc.element == ATTR_ELEMENT_CORNER) { - f0 = kernel_tex_fetch(__attributes_float4, tri + 0); - f1 = kernel_tex_fetch(__attributes_float4, tri + 1); - f2 = kernel_tex_fetch(__attributes_float4, tri + 2); + f0 = kernel_data_fetch(attributes_float4, tri + 0); + f1 = kernel_data_fetch(attributes_float4, tri + 1); + f2 = kernel_data_fetch(attributes_float4, tri + 2); } else { f0 = color_srgb_to_linear_v4( - color_uchar4_to_float4(kernel_tex_fetch(__attributes_uchar4, tri + 0))); + color_uchar4_to_float4(kernel_data_fetch(attributes_uchar4, tri + 0))); f1 = color_srgb_to_linear_v4( - color_uchar4_to_float4(kernel_tex_fetch(__attributes_uchar4, tri + 1))); + color_uchar4_to_float4(kernel_data_fetch(attributes_uchar4, tri + 1))); f2 = color_srgb_to_linear_v4( - color_uchar4_to_float4(kernel_tex_fetch(__attributes_uchar4, tri + 2))); + color_uchar4_to_float4(kernel_data_fetch(attributes_uchar4, tri + 2))); } } @@ -346,7 +346,7 @@ ccl_device float4 triangle_attribute_float4(KernelGlobals kg, if (desc.element & (ATTR_ELEMENT_FACE | ATTR_ELEMENT_OBJECT | ATTR_ELEMENT_MESH)) { const int offset = (desc.element == ATTR_ELEMENT_FACE) ? desc.offset + sd->prim : desc.offset; - return kernel_tex_fetch(__attributes_float4, offset); + return kernel_data_fetch(attributes_float4, offset); } else { return zero_float4(); |