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:
Diffstat (limited to 'intern/cycles/kernel/svm/svm_attribute.h')
-rw-r--r--intern/cycles/kernel/svm/svm_attribute.h248
1 files changed, 123 insertions, 125 deletions
diff --git a/intern/cycles/kernel/svm/svm_attribute.h b/intern/cycles/kernel/svm/svm_attribute.h
index c2366df71d0..a67cfe91a30 100644
--- a/intern/cycles/kernel/svm/svm_attribute.h
+++ b/intern/cycles/kernel/svm/svm_attribute.h
@@ -18,67 +18,66 @@ CCL_NAMESPACE_BEGIN
/* Attribute Node */
-ccl_device AttributeDescriptor svm_node_attr_init(KernelGlobals *kg, ShaderData *sd,
- uint4 node, NodeAttributeType *type,
- uint *out_offset)
+ccl_device AttributeDescriptor svm_node_attr_init(
+ KernelGlobals *kg, ShaderData *sd, uint4 node, NodeAttributeType *type, uint *out_offset)
{
- *out_offset = node.z;
- *type = (NodeAttributeType)node.w;
+ *out_offset = node.z;
+ *type = (NodeAttributeType)node.w;
- AttributeDescriptor desc;
+ AttributeDescriptor desc;
- if(sd->object != OBJECT_NONE) {
- desc = find_attribute(kg, sd, node.y);
- if(desc.offset == ATTR_STD_NOT_FOUND) {
- desc = attribute_not_found();
- desc.offset = 0;
- desc.type = (NodeAttributeType)node.w;
- }
- }
- else {
- /* background */
- desc = attribute_not_found();
- desc.offset = 0;
- desc.type = (NodeAttributeType)node.w;
- }
+ if (sd->object != OBJECT_NONE) {
+ desc = find_attribute(kg, sd, node.y);
+ if (desc.offset == ATTR_STD_NOT_FOUND) {
+ desc = attribute_not_found();
+ desc.offset = 0;
+ desc.type = (NodeAttributeType)node.w;
+ }
+ }
+ else {
+ /* background */
+ desc = attribute_not_found();
+ desc.offset = 0;
+ desc.type = (NodeAttributeType)node.w;
+ }
- return desc;
+ return desc;
}
ccl_device void svm_node_attr(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node)
{
- NodeAttributeType type;
- uint out_offset;
- AttributeDescriptor desc = svm_node_attr_init(kg, sd, node, &type, &out_offset);
+ NodeAttributeType type;
+ uint out_offset;
+ AttributeDescriptor desc = svm_node_attr_init(kg, sd, node, &type, &out_offset);
- /* fetch and store attribute */
- if(desc.type == NODE_ATTR_FLOAT) {
- float f = primitive_attribute_float(kg, sd, desc, NULL, NULL);
- if(type == NODE_ATTR_FLOAT) {
- stack_store_float(stack, out_offset, f);
- }
- else {
- stack_store_float3(stack, out_offset, make_float3(f, f, f));
- }
- }
- else if(desc.type == NODE_ATTR_FLOAT2) {
- float2 f = primitive_attribute_float2(kg, sd, desc, NULL, NULL);
- if(type == NODE_ATTR_FLOAT) {
- stack_store_float(stack, out_offset, f.x);
- }
- else {
- stack_store_float3(stack, out_offset, make_float3(f.x, f.y, 0.0f));
- }
- }
- else {
- float3 f = primitive_attribute_float3(kg, sd, desc, NULL, NULL);
- if(type == NODE_ATTR_FLOAT) {
- stack_store_float(stack, out_offset, average(f));
- }
- else {
- stack_store_float3(stack, out_offset, f);
- }
- }
+ /* fetch and store attribute */
+ if (desc.type == NODE_ATTR_FLOAT) {
+ float f = primitive_attribute_float(kg, sd, desc, NULL, NULL);
+ if (type == NODE_ATTR_FLOAT) {
+ stack_store_float(stack, out_offset, f);
+ }
+ else {
+ stack_store_float3(stack, out_offset, make_float3(f, f, f));
+ }
+ }
+ else if (desc.type == NODE_ATTR_FLOAT2) {
+ float2 f = primitive_attribute_float2(kg, sd, desc, NULL, NULL);
+ if (type == NODE_ATTR_FLOAT) {
+ stack_store_float(stack, out_offset, f.x);
+ }
+ else {
+ stack_store_float3(stack, out_offset, make_float3(f.x, f.y, 0.0f));
+ }
+ }
+ else {
+ float3 f = primitive_attribute_float3(kg, sd, desc, NULL, NULL);
+ if (type == NODE_ATTR_FLOAT) {
+ stack_store_float(stack, out_offset, average(f));
+ }
+ else {
+ stack_store_float3(stack, out_offset, f);
+ }
+ }
}
#ifndef __KERNEL_CUDA__
@@ -86,43 +85,44 @@ ccl_device
#else
ccl_device_noinline
#endif
-void svm_node_attr_bump_dx(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node)
+ void
+ svm_node_attr_bump_dx(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node)
{
- NodeAttributeType type;
- uint out_offset;
- AttributeDescriptor desc = svm_node_attr_init(kg, sd, node, &type, &out_offset);
+ NodeAttributeType type;
+ uint out_offset;
+ AttributeDescriptor desc = svm_node_attr_init(kg, sd, node, &type, &out_offset);
- /* fetch and store attribute */
- if(desc.type == NODE_ATTR_FLOAT) {
- float dx;
- float f = primitive_surface_attribute_float(kg, sd, desc, &dx, NULL);
- if(type == NODE_ATTR_FLOAT) {
- stack_store_float(stack, out_offset, f+dx);
- }
- else {
- stack_store_float3(stack, out_offset, make_float3(f+dx, f+dx, f+dx));
- }
- }
- else if(desc.type == NODE_ATTR_FLOAT2) {
- float2 dx;
- float2 f = primitive_attribute_float2(kg, sd, desc, &dx, NULL);
- if (type == NODE_ATTR_FLOAT) {
- stack_store_float(stack, out_offset, f.x + dx.x);
- }
- else {
- stack_store_float3(stack, out_offset, make_float3(f.x+dx.x, f.y+dx.y, 0.0f));
- }
- }
- else {
- float3 dx;
- float3 f = primitive_surface_attribute_float3(kg, sd, desc, &dx, NULL);
- if(type == NODE_ATTR_FLOAT) {
- stack_store_float(stack, out_offset, average(f+dx));
- }
- else {
- stack_store_float3(stack, out_offset, f+dx);
- }
- }
+ /* fetch and store attribute */
+ if (desc.type == NODE_ATTR_FLOAT) {
+ float dx;
+ float f = primitive_surface_attribute_float(kg, sd, desc, &dx, NULL);
+ if (type == NODE_ATTR_FLOAT) {
+ stack_store_float(stack, out_offset, f + dx);
+ }
+ else {
+ stack_store_float3(stack, out_offset, make_float3(f + dx, f + dx, f + dx));
+ }
+ }
+ else if (desc.type == NODE_ATTR_FLOAT2) {
+ float2 dx;
+ float2 f = primitive_attribute_float2(kg, sd, desc, &dx, NULL);
+ if (type == NODE_ATTR_FLOAT) {
+ stack_store_float(stack, out_offset, f.x + dx.x);
+ }
+ else {
+ stack_store_float3(stack, out_offset, make_float3(f.x + dx.x, f.y + dx.y, 0.0f));
+ }
+ }
+ else {
+ float3 dx;
+ float3 f = primitive_surface_attribute_float3(kg, sd, desc, &dx, NULL);
+ if (type == NODE_ATTR_FLOAT) {
+ stack_store_float(stack, out_offset, average(f + dx));
+ }
+ else {
+ stack_store_float3(stack, out_offset, f + dx);
+ }
+ }
}
#ifndef __KERNEL_CUDA__
@@ -130,46 +130,44 @@ ccl_device
#else
ccl_device_noinline
#endif
-void svm_node_attr_bump_dy(KernelGlobals *kg,
- ShaderData *sd,
- float *stack,
- uint4 node)
+ void
+ svm_node_attr_bump_dy(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node)
{
- NodeAttributeType type;
- uint out_offset;
- AttributeDescriptor desc = svm_node_attr_init(kg, sd, node, &type, &out_offset);
+ NodeAttributeType type;
+ uint out_offset;
+ AttributeDescriptor desc = svm_node_attr_init(kg, sd, node, &type, &out_offset);
- /* fetch and store attribute */
- if(desc.type == NODE_ATTR_FLOAT) {
- float dy;
- float f = primitive_surface_attribute_float(kg, sd, desc, NULL, &dy);
- if(type == NODE_ATTR_FLOAT) {
- stack_store_float(stack, out_offset, f+dy);
- }
- else {
- stack_store_float3(stack, out_offset, make_float3(f+dy, f+dy, f+dy));
- }
- }
- else if(desc.type == NODE_ATTR_FLOAT2) {
- float2 dy;
- float2 f = primitive_attribute_float2(kg, sd, desc, NULL, &dy);
- if(type == NODE_ATTR_FLOAT) {
- stack_store_float(stack, out_offset, f.x + dy.x);
- }
- else {
- stack_store_float3(stack, out_offset, make_float3(f.x+dy.x, f.y+dy.y, 0.0f));
- }
- }
- else {
- float3 dy;
- float3 f = primitive_surface_attribute_float3(kg, sd, desc, NULL, &dy);
- if(type == NODE_ATTR_FLOAT) {
- stack_store_float(stack, out_offset, average(f+dy));
- }
- else {
- stack_store_float3(stack, out_offset, f+dy);
- }
- }
+ /* fetch and store attribute */
+ if (desc.type == NODE_ATTR_FLOAT) {
+ float dy;
+ float f = primitive_surface_attribute_float(kg, sd, desc, NULL, &dy);
+ if (type == NODE_ATTR_FLOAT) {
+ stack_store_float(stack, out_offset, f + dy);
+ }
+ else {
+ stack_store_float3(stack, out_offset, make_float3(f + dy, f + dy, f + dy));
+ }
+ }
+ else if (desc.type == NODE_ATTR_FLOAT2) {
+ float2 dy;
+ float2 f = primitive_attribute_float2(kg, sd, desc, NULL, &dy);
+ if (type == NODE_ATTR_FLOAT) {
+ stack_store_float(stack, out_offset, f.x + dy.x);
+ }
+ else {
+ stack_store_float3(stack, out_offset, make_float3(f.x + dy.x, f.y + dy.y, 0.0f));
+ }
+ }
+ else {
+ float3 dy;
+ float3 f = primitive_surface_attribute_float3(kg, sd, desc, NULL, &dy);
+ if (type == NODE_ATTR_FLOAT) {
+ stack_store_float(stack, out_offset, average(f + dy));
+ }
+ else {
+ stack_store_float3(stack, out_offset, f + dy);
+ }
+ }
}
CCL_NAMESPACE_END