#include "kernels.h" const char* matrix_mul_kernel_source = "__kernel void mmul ( \n" " __global float* A, \n" " __global float* B, \n" " __global float* C) \n" "{ \n" " int k; \n" " int i = get_global_id(0); \n" " int j = get_global_id(1); \n" " float tmp; \n" " if( (i < 4) && (j < 4) ) \n" " { \n" " tmp = 0.0; \n" " for(k = 0; k < 4; k++) \n" " tmp += A[i*4+k] * B[k*4+j]; \n" " C[i*4+j] = tmp; \n" " } \n" "} \n" ; const char* vertex_shader_kernel_source = "__kernel \n" "void vertex_shader( __global float* z_matrix, \n" " __global float* VertexBuffer, \n" " __global float* NewVertexBuffer) \n" "{ \n" " int index = 3 * get_global_id(0); \n" " float new_x = 0; \n" " float new_y = 0; \n" " float new_z = 0; \n" " float new_w = 0; \n" " for(int i = 0; i < 3; i++) { \n" " new_x = new_x + VertexBuffer[index+i]*z_matrix[0*4 + i]; \n" " new_y = new_y + VertexBuffer[index+i]*z_matrix[1*4 + i]; \n" " new_z = new_z + VertexBuffer[index+i]*z_matrix[2*4 + i]; \n" " new_w = new_w + VertexBuffer[index+i]*z_matrix[3*4 + i]; \n" " } \n" " new_x = new_x + z_matrix[0*4 +3]; \n" " new_y = new_y + z_matrix[1*4 +3]; \n" " new_z = new_z + z_matrix[2*4 +3]; \n" " new_w = new_w + z_matrix[3*4 +3]; \n" " NewVertexBuffer[index+0] = new_x / new_w; \n" " NewVertexBuffer[index+1] = new_y / new_w; \n" " NewVertexBuffer[index+2] = new_z / new_w; \n" "} \n";