Browse Source

cleaned up some code

IverMartinson 8 months ago
parent
commit
c70e598be4

BIN
builds/final binaries/librasteriver.so


BIN
builds/final binaries/main.bin


+ 16 - 14
src/RasterIver/headers/rasteriver.h

@@ -63,7 +63,7 @@ RI_result   RI_Init();
 RI_result   RI_Stop();
 RI_result   RI_IsRunning();
 RI_polygons RI_RequestPolygons(int RI_PolygonsToRequest);
-RI_result   RI_RequestObjects(RI_newObject *RI_ObjectBuffer, int RI_ObjectsToRequest);
+RI_objects  RI_RequestObjects(RI_newObject *RI_ObjectBuffer, int RI_ObjectsToRequest);
 RI_result   RI_Tick();
 RI_result   RI_SetBackground(RI_uint RI_BackgroundColor);
 RI_result   RI_ShowZBuffer(int RI_ShowZBufferFlag);
@@ -260,7 +260,7 @@ __kernel void raster_kernel(__global int* objects, __global float* verticies, __
     float biggest_z = 0;\
     \
     for (int object = 0; object < object_count; object++){ \
-        int base = object * 12;\
+        int base = object * 13;\
         \
         int object_x =   objects[base + 0];    \
         int object_y =   objects[base + 1];    \
@@ -271,17 +271,17 @@ __kernel void raster_kernel(__global int* objects, __global float* verticies, __
         int object_s_x = objects[base + 6];    \
         int object_s_y = objects[base + 7];    \
         int object_s_z = objects[base + 8];    \
-\
-        int polygon_count = objects[9];\
-        int polygon_offset = objects[10];\
-        int vertex_offset = objects[11];\
-        int texture_index = objects[12];\
+        \
+        int polygon_count = objects[base + 9];\
+        int polygon_offset = objects[base + 10];\
+        int vertex_offset = objects[base + 11];\
+        int texture_index = objects[base + 12];\
         \
         for (int polygon = polygon_offset; polygon < polygon_count + polygon_offset; polygon++){\
-            base = polygon * 9; \
-            int i0 = triangles[base + 0] * 3;\
-            int i1 = triangles[base + 1] * 3;\
-            int i2 = triangles[base + 2] * 3;\
+        base = polygon * 9; \
+            int i0 = triangles[base + 0] * 3 + vertex_offset;\
+            int i1 = triangles[base + 1] * 3 + vertex_offset;\
+            int i2 = triangles[base + 2] * 3 + vertex_offset;\\
             \
             float x0 = verticies[i0 + 0] * object_s_x + object_x;\
             float y0 = verticies[i0 + 1] * object_s_y + object_y;\
@@ -372,12 +372,14 @@ __kernel void raster_kernel(__global int* objects, __global float* verticies, __
         }\
     }\
     \
-    if (id_y * width + id_x > width * height){\
-    return;\
+    if (id_y * width + id_x >= width * height){\
+        return;\
     }\
     frame_buffer[id_y * width + id_x] = frame_pixel; \
     \
-    if (!show_z_buffer){return;}\
+    if (!show_z_buffer){\
+        return;\
+    }\
     \
     float z = clamp(z_pixel, 0.0f, highest_z);\
     \

+ 44 - 28
src/RasterIver/source code/rasteriver.c

@@ -345,11 +345,6 @@ void malloc_objects(int objects, char **file_names){
         triangles = malloc(sizeof(RI_triangles) * num_faces * ts);
     }
 
-    debug(0, "vert %d", num_verticies);
-    debug(0, "norm %d", num_normals);
-    debug(0, "uvs %d", num_uvs);
-    debug(0, "tri %d", num_faces);
-
     return;
 }
 
@@ -374,6 +369,8 @@ load_object_return load_object(char *object_path, int object_offset){
     int cv = 0;
     int cu = 0;
 
+    int obj_face_type = 0;
+
     while (fgets(line, sizeof(line), file)) {
         if (line[0] == 'f' && line[1] == ' ') {
 
@@ -381,8 +378,6 @@ load_object_return load_object(char *object_path, int object_offset){
                 &triangles[(ct + cur_faces) * ts + 0], &triangles[(ct + cur_faces) * ts + 3], &triangles[(ct + cur_faces) * ts + 6], 
                 &triangles[(ct + cur_faces) * ts + 1], &triangles[(ct + cur_faces) * ts + 4], &triangles[(ct + cur_faces) * ts + 7], 
                 &triangles[(ct + cur_faces) * ts + 2], &triangles[(ct + cur_faces) * ts + 5], &triangles[(ct + cur_faces) * ts + 8]);
-            
-                debug(1, "Matches: %d", matches);
 
             if (matches != 9){
                 triangles[(ct + cur_faces) * ts + 0] = -1;
@@ -398,14 +393,15 @@ load_object_return load_object(char *object_path, int object_offset){
                 triangles[(ct + cur_faces) * ts + 8] = -1;
 
                 if (strchr(line, '/')){
-                    debug(1, "Obj file uses X//X X//X X//X");
+                    obj_face_type = 1;
+
                     sscanf(line, "f %d//%d %d//%d %d//%d", 
                         &triangles[(ct + cur_faces) * ts + 0], &triangles[(ct + cur_faces) * ts + 6], 
                         &triangles[(ct + cur_faces) * ts + 1], &triangles[(ct + cur_faces) * ts + 7], 
                         &triangles[(ct + cur_faces) * ts + 2], &triangles[(ct + cur_faces) * ts + 8]);
                 }
                 else {
-                    debug(1, "Obj file uses X X X");
+                    obj_face_type = 2;
 
                     sscanf(line, "f %d %d %d", 
                         &triangles[(ct + cur_faces) * ts + 0], 
@@ -429,6 +425,28 @@ load_object_return load_object(char *object_path, int object_offset){
         } 
     }
 
+    switch(obj_face_type){
+        case 0:
+            debug(1, "OBJ file uses X/X/X X/X/X X/X/X");
+            break;
+            
+        case 1:
+            debug(1, "OBJ file uses X//X X//X X//X");
+            break;
+
+        case 2:
+            debug(1, "OBJ file uses X X X");
+            break;
+        
+        default:
+            break;
+    }
+
+    debug(1, "%d Triangles", ct);
+    debug(1, "%d Verticies", cv);
+    debug(1, "%d Normals", cn);
+    debug(1, "%d UVS", cu);
+
     cur_faces += ct;
     cur_verticies += cv;
     cur_normals += cn;
@@ -440,12 +458,10 @@ load_object_return load_object(char *object_path, int object_offset){
         0, 0, 0, 0, 0
     };
 
-    debug(1, "Done");
-
     return return_values;
 }
 
-RI_result RI_RequestObjects(RI_newObject *RI_ObjectBuffer, int RI_ObjectsToRequest){
+RI_objects RI_RequestObjects(RI_newObject *RI_ObjectBuffer, int RI_ObjectsToRequest){
     object_count = RI_ObjectsToRequest;
     
     debug(1, "Requesting %d Objects...", object_count);
@@ -482,24 +498,25 @@ RI_result RI_RequestObjects(RI_newObject *RI_ObjectBuffer, int RI_ObjectsToReque
         RI_newObject cur_object = RI_ObjectBuffer[object];
 
         int base = object * object_size;
-        objects[base + 10] = cur_verticies;
+        objects[base + 10] = cur_faces; // triangle offset
+        objects[base + 11] = cur_verticies; // vertex offset
         
-        load_object_return return_values = load_object((char *)cur_object.file_path, object);
+        load_object((char *)cur_object.file_path, object);
 
-        objects[base + 9] = cur_faces;
+        objects[base + 9] = cur_faces; // triangle count
         
-        objects[base + 0] = cur_object.x;
-        objects[base + 1] = cur_object.y;
-        objects[base + 2] = cur_object.z;
-        objects[base + 3] = cur_object.r_x;
-        objects[base + 4] = cur_object.r_y;
-        objects[base + 5] = cur_object.r_z;
-        objects[base + 6] = cur_object.s_x;
-        objects[base + 7] = cur_object.s_y;
-        objects[base + 8] = cur_object.s_z;
+        objects[base + 0] = cur_object.x; // x
+        objects[base + 1] = cur_object.y; // y
+        objects[base + 2] = cur_object.z; // z
+        objects[base + 3] = cur_object.r_x; // rotation x
+        objects[base + 4] = cur_object.r_y; // rotation y
+        objects[base + 5] = cur_object.r_z; // rotation z
+        objects[base + 6] = cur_object.s_x; // scale x
+        objects[base + 7] = cur_object.s_y; // scale y
+        objects[base + 8] = cur_object.s_z; // scale z
     }
     
-    debug(0, "%d", sizeof(RI_verticies) * num_uvs * vs + sizeof(RI_triangles) * num_faces * vs + sizeof(RI_verticies) * num_verticies * vs + sizeof(RI_verticies) * num_normals * vs + size);
+    debug(1, "Allocated %d Bytes for Objects", sizeof(RI_verticies) * num_uvs * vs + sizeof(RI_triangles) * num_faces * vs + sizeof(RI_verticies) * num_verticies * vs + sizeof(RI_verticies) * num_normals * vs + size);
 
     object_memory_buffer = clCreateBuffer(context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, size, objects, &error);
     erchk(error);
@@ -772,7 +789,7 @@ RI_result RI_Tick(){
         }
 
         if (show_info){
-            char frame_string[50];
+            char frame_string[256];
             
             sprintf(frame_string, "%d objects, %d triangles, %d verticies, %d normals, %d UVS, %d pixels (%dx%d), FPS cap: %d", object_count, num_faces, num_verticies, num_normals, num_uvs, width * height, width, height, fps_cap);
 
@@ -822,8 +839,7 @@ RI_result RI_Tick(){
     }
 }
 
-RI_result RI_Stop(int quit)
-{
+RI_result RI_Stop(int quit){
     debug(0, "Stopping...");
 
     running = 0;

+ 3 - 3
src/launch program/main.c

@@ -26,14 +26,14 @@ int main(){
     }
 
     RI_newObject object_buffer[5] = {
-        {400, 400, 400, 0, 0, 0, 100, 100, 100, "gourd.obj", "texture.png"},
-        {400, 400, 400, 0, 0, 0, 200, 200, 200, "obj_file.obj", "texture.png"},
+        {200, 400, 400, 0, 0, 0, 100, 100, 100, "gourd.obj", "texture.png"},
+        {600, 400, 400, 0, 0, 0, 100, 100, 100, "gourd.obj", "texture.png"},
         {400, 400, 400, 0, 0, 0, 100, 100, 100, "obj_file.obj", "texture.png"},
         {400, 400, 400, 0, 0, 0, 100, 100, 100, "obj_file.obj", "texture.png"},
         {400, 400, 400, 0, 0, 0, 100, 100, 100, "obj_file.obj", "texture.png"},
     };
 
-    RI_RequestObjects(object_buffer, 1);
+    RI_objects objects = RI_RequestObjects(object_buffer, 2);
 
     while (RI_IsRunning() == RI_RUNNING){
         RI_Tick();

+ 1 - 0
stat

@@ -0,0 +1 @@
+git status