Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/kernel/svm/svm_sepcomb_vector.h
| Show All 12 Lines | |||||
| * See the License for the specific language governing permissions and | * See the License for the specific language governing permissions and | ||||
| * limitations under the License. | * limitations under the License. | ||||
| */ | */ | ||||
| CCL_NAMESPACE_BEGIN | CCL_NAMESPACE_BEGIN | ||||
| /* Vector combine / separate, used for the RGB and XYZ nodes */ | /* Vector combine / separate, used for the RGB and XYZ nodes */ | ||||
| ccl_device void svm_node_combine_vector( | ccl_device void svm_node_combine_vector(ccl_private ShaderData *sd, | ||||
| ShaderData *sd, float *stack, uint in_offset, uint vector_index, uint out_offset) | ccl_private float *stack, | ||||
| uint in_offset, | |||||
| uint vector_index, | |||||
| uint out_offset) | |||||
| { | { | ||||
| float vector = stack_load_float(stack, in_offset); | float vector = stack_load_float(stack, in_offset); | ||||
| if (stack_valid(out_offset)) | if (stack_valid(out_offset)) | ||||
| stack_store_float(stack, out_offset + vector_index, vector); | stack_store_float(stack, out_offset + vector_index, vector); | ||||
| } | } | ||||
| ccl_device void svm_node_separate_vector( | ccl_device void svm_node_separate_vector(ccl_private ShaderData *sd, | ||||
| ShaderData *sd, float *stack, uint ivector_offset, uint vector_index, uint out_offset) | ccl_private float *stack, | ||||
| uint ivector_offset, | |||||
| uint vector_index, | |||||
| uint out_offset) | |||||
| { | { | ||||
| float3 vector = stack_load_float3(stack, ivector_offset); | float3 vector = stack_load_float3(stack, ivector_offset); | ||||
| if (stack_valid(out_offset)) { | if (stack_valid(out_offset)) { | ||||
| if (vector_index == 0) | if (vector_index == 0) | ||||
| stack_store_float(stack, out_offset, vector.x); | stack_store_float(stack, out_offset, vector.x); | ||||
| else if (vector_index == 1) | else if (vector_index == 1) | ||||
| stack_store_float(stack, out_offset, vector.y); | stack_store_float(stack, out_offset, vector.y); | ||||
| else | else | ||||
| stack_store_float(stack, out_offset, vector.z); | stack_store_float(stack, out_offset, vector.z); | ||||
| } | } | ||||
| } | } | ||||
| CCL_NAMESPACE_END | CCL_NAMESPACE_END | ||||