Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/kernel/svm/svm_invert.h
| Show All 15 Lines | |||||
| CCL_NAMESPACE_BEGIN | CCL_NAMESPACE_BEGIN | ||||
| ccl_device float invert(float color, float factor) | ccl_device float invert(float color, float factor) | ||||
| { | { | ||||
| return factor * (1.0f - color) + (1.0f - factor) * color; | return factor * (1.0f - color) + (1.0f - factor) * color; | ||||
| } | } | ||||
| ccl_device void svm_node_invert( | ccl_device_noinline void svm_node_invert( | ||||
| ShaderData *sd, float *stack, uint in_fac, uint in_color, uint out_color) | ShaderData *sd, float *stack, uint in_fac, uint in_color, uint out_color) | ||||
| { | { | ||||
| float factor = stack_load_float(stack, in_fac); | float factor = stack_load_float(stack, in_fac); | ||||
| float3 color = stack_load_float3(stack, in_color); | float3 color = stack_load_float3(stack, in_color); | ||||
| color.x = invert(color.x, factor); | color.x = invert(color.x, factor); | ||||
| color.y = invert(color.y, factor); | color.y = invert(color.y, factor); | ||||
| color.z = invert(color.z, factor); | color.z = invert(color.z, factor); | ||||
| if (stack_valid(out_color)) | if (stack_valid(out_color)) | ||||
| stack_store_float3(stack, out_color, color); | stack_store_float3(stack, out_color, color); | ||||
| } | } | ||||
| CCL_NAMESPACE_END | CCL_NAMESPACE_END | ||||