Set C standard to C11 and add new assets
Changed CMakeLists.txt to set the C standard to C11. Added multiple binary image files for new visual assets. Added several new image files to enhance rendering capabilities. Changed stb_image.h to improve support for various image formats. Changed ray tracing engine to enhance ray creation and intersection. Changed triangle structure to use a vertex array for better attribute handling. Changed scene initialization to accommodate new texture management.
This commit is contained in:
@@ -19,57 +19,62 @@ inline void quad_create(vec3s center, vec3s forward, vec3s up, float size, uint8
|
||||
vec3s bottom_right = glms_vec3_sub(temp_add, scaled_up);
|
||||
vec3s bottom_left = glms_vec3_sub(temp_sub, scaled_up);
|
||||
|
||||
triangle_create(top_left, top_right, bottom_left, material_id, collection);
|
||||
triangle_create(top_right, bottom_right, bottom_left, material_id, collection);
|
||||
vertex_t vertex_1 = {.position = top_left, .normal = forward, .uv = {0.0f, 0.0f}};
|
||||
vertex_t vertex_2 = {.position = top_right, .normal = forward, .uv = {1.0f, 0.0f}};
|
||||
vertex_t vertex_3 = {.position = bottom_right, .normal = forward, .uv = {1.0f, 1.0f}};
|
||||
vertex_t vertex_4 = {.position = bottom_left, .normal = forward, .uv = {0.0f, 1.0f}};
|
||||
|
||||
triangle_create(vertex_1, vertex_2, vertex_4, material_id, collection);
|
||||
triangle_create(vertex_2, vertex_3, vertex_4, material_id, collection);
|
||||
}
|
||||
|
||||
inline void sphere_create(vec3s center, float radius, uint8_t material_id, triangle_collection_t* collection)
|
||||
{
|
||||
int segments = 16;
|
||||
int rings = 16;
|
||||
|
||||
for (int i = 0; i < rings; i++)
|
||||
{
|
||||
float theta1 = (float)i / (float)rings * (float)M_PI;
|
||||
float theta2 = (float)(i + 1) / (float)rings * (float)M_PI;
|
||||
|
||||
for (int j = 0; j < segments; j++)
|
||||
{
|
||||
float phi1 = (float)j / (float)segments * 2.0f * (float)M_PI;
|
||||
float phi2 = (float)(j + 1) / (float)segments * 2.0f * (float)M_PI;
|
||||
|
||||
vec3s p1 = {
|
||||
center.x + radius * sinf(theta1) * cosf(phi1),
|
||||
center.y + radius * cosf(theta1),
|
||||
center.z + radius * sinf(theta1) * sinf(phi1)
|
||||
};
|
||||
vec3s p2 = {
|
||||
center.x + radius * sinf(theta2) * cosf(phi1),
|
||||
center.y + radius * cosf(theta2),
|
||||
center.z + radius * sinf(theta2) * sinf(phi1)
|
||||
};
|
||||
vec3s p3 = {
|
||||
center.x + radius * sinf(theta2) * cosf(phi2),
|
||||
center.y + radius * cosf(theta2),
|
||||
center.z + radius * sinf(theta2) * sinf(phi2)
|
||||
};
|
||||
vec3s p4 = {
|
||||
center.x + radius * sinf(theta1) * cosf(phi2),
|
||||
center.y + radius * cosf(theta1),
|
||||
center.z + radius * sinf(theta1) * sinf(phi2)
|
||||
};
|
||||
|
||||
// vec3s n1 = glms_vec3_normalize(glms_vec3_sub(p1, center));
|
||||
// vec3s n2 = glms_vec3_normalize(glms_vec3_sub(p2, center));
|
||||
// vec3s n3 = glms_vec3_normalize(glms_vec3_sub(p3, center));
|
||||
// vec3s n4 = glms_vec3_normalize(glms_vec3_sub(p4, center));
|
||||
|
||||
// triangle_create_with_normals(p3, p2, p1, n3, n2, n1, material_id, collection);
|
||||
// triangle_create_with_normals(p3, p1, p4, n3, n1, n4, material_id, collection);
|
||||
triangle_create(p3, p2, p1, material_id, collection);
|
||||
triangle_create(p3, p1, p4, material_id, collection);
|
||||
}
|
||||
}
|
||||
}
|
||||
// inline void sphere_create(vec3s center, float radius, uint8_t material_id, triangle_collection_t* collection)
|
||||
// {
|
||||
// int segments = 16;
|
||||
// int rings = 16;
|
||||
//
|
||||
// for (int i = 0; i < rings; i++)
|
||||
// {
|
||||
// float theta1 = (float)i / (float)rings * (float)M_PI;
|
||||
// float theta2 = (float)(i + 1) / (float)rings * (float)M_PI;
|
||||
//
|
||||
// for (int j = 0; j < segments; j++)
|
||||
// {
|
||||
// float phi1 = (float)j / (float)segments * 2.0f * (float)M_PI;
|
||||
// float phi2 = (float)(j + 1) / (float)segments * 2.0f * (float)M_PI;
|
||||
//
|
||||
// vec3s p1 = {
|
||||
// center.x + radius * sinf(theta1) * cosf(phi1),
|
||||
// center.y + radius * cosf(theta1),
|
||||
// center.z + radius * sinf(theta1) * sinf(phi1)
|
||||
// };
|
||||
// vec3s p2 = {
|
||||
// center.x + radius * sinf(theta2) * cosf(phi1),
|
||||
// center.y + radius * cosf(theta2),
|
||||
// center.z + radius * sinf(theta2) * sinf(phi1)
|
||||
// };
|
||||
// vec3s p3 = {
|
||||
// center.x + radius * sinf(theta2) * cosf(phi2),
|
||||
// center.y + radius * cosf(theta2),
|
||||
// center.z + radius * sinf(theta2) * sinf(phi2)
|
||||
// };
|
||||
// vec3s p4 = {
|
||||
// center.x + radius * sinf(theta1) * cosf(phi2),
|
||||
// center.y + radius * cosf(theta1),
|
||||
// center.z + radius * sinf(theta1) * sinf(phi2)
|
||||
// };
|
||||
//
|
||||
// // vec3s n1 = glms_vec3_normalize(glms_vec3_sub(p1, center));
|
||||
// // vec3s n2 = glms_vec3_normalize(glms_vec3_sub(p2, center));
|
||||
// // vec3s n3 = glms_vec3_normalize(glms_vec3_sub(p3, center));
|
||||
// // vec3s n4 = glms_vec3_normalize(glms_vec3_sub(p4, center));
|
||||
//
|
||||
// // triangle_create_with_normals(p3, p2, p1, n3, n2, n1, material_id, collection);
|
||||
// // triangle_create_with_normals(p3, p1, p4, n3, n1, n4, material_id, collection);
|
||||
// triangle_create(p3, p2, p1, material_id, collection);
|
||||
// triangle_create(p3, p1, p4, material_id, collection);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
#endif // GEOMETRY_UTILITIES_H
|
||||
|
||||
Reference in New Issue
Block a user