Vertex Shader is now GPU-Accelerated
This commit is contained in:
@@ -1,46 +1,16 @@
|
||||
#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";
|
||||
"__kernel \n"
|
||||
"void vertex_shader( __global float* m, \n"
|
||||
" __global float* VertexBuffer, \n"
|
||||
" __global float* NewVertexBuffer) \n"
|
||||
"{ \n"
|
||||
" int local_index = get_local_id(0); \n"
|
||||
" int global_index = get_group_id(0); \n"
|
||||
" NewVertexBuffer[4*global_index+local_index] = \n"
|
||||
" m[local_index*4]*VertexBuffer[3*global_index] \n"
|
||||
" + m[local_index*4 + 1]*VertexBuffer[3*global_index+1] \n"
|
||||
" + m[local_index*4 + 2]*VertexBuffer[3*global_index+2] \n"
|
||||
" + m[local_index*4 + 3]; \n"
|
||||
"} \n";
|
||||
|
||||
Reference in New Issue
Block a user