More reformatting
This commit is contained in:
parent
09e9f611f8
commit
ab8343e749
@ -5,8 +5,7 @@
|
|||||||
#include "vec.h"
|
#include "vec.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
Model load_obj_file(Arena *arena, const char *filename, const char *diffuse,
|
Model load_obj_file(Arena *arena, const char *filename, const char *diffuse, const char *tangent) {
|
||||||
const char *tangent) {
|
|
||||||
if (!arena) {
|
if (!arena) {
|
||||||
return INVALID_MODEL;
|
return INVALID_MODEL;
|
||||||
}
|
}
|
||||||
@ -22,8 +21,7 @@ Model load_obj_file(Arena *arena, const char *filename, const char *diffuse,
|
|||||||
.texture_coordinates = list_create(V2f, arena),
|
.texture_coordinates = list_create(V2f, arena),
|
||||||
.triangles = list_create(Triangle, arena),
|
.triangles = list_create(Triangle, arena),
|
||||||
};
|
};
|
||||||
if (!(model.vertices) || !(model.normals) || !(model.texture_coordinates) ||
|
if (!(model.vertices) || !(model.normals) || !(model.texture_coordinates) || !(model.triangles)) {
|
||||||
!(model.triangles)) {
|
|
||||||
return INVALID_MODEL;
|
return INVALID_MODEL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,15 +50,14 @@ struct point_light {
|
|||||||
|
|
||||||
typedef struct model Model;
|
typedef struct model Model;
|
||||||
struct model {
|
struct model {
|
||||||
LIST_TYPE(V3f) * vertices;
|
LIST_TYPE(V3f) *vertices;
|
||||||
LIST_TYPE(V3f) * normals;
|
LIST_TYPE(V3f) *normals;
|
||||||
LIST_TYPE(V2f) * texture_coordinates;
|
LIST_TYPE(V2f) *texture_coordinates;
|
||||||
LIST_TYPE(Triangle) * triangles;
|
LIST_TYPE(Triangle) *triangles;
|
||||||
Image *texture;
|
Image *texture;
|
||||||
Image *normal;
|
Image *normal;
|
||||||
};
|
};
|
||||||
|
|
||||||
Model load_obj_file(Arena *arena, const char *filename, const char *diffuse,
|
Model load_obj_file(Arena *arena, const char *filename, const char *diffuse, const char *tangent);
|
||||||
const char *tangent);
|
|
||||||
|
|
||||||
#endif // OBJ_H
|
#endif // OBJ_H
|
||||||
|
@ -16,14 +16,11 @@ struct triangle_bbox {
|
|||||||
u64 y1;
|
u64 y1;
|
||||||
};
|
};
|
||||||
|
|
||||||
internal void render_triangle(const Triangle *triangle, const Model *model,
|
internal void render_triangle(const Triangle *triangle, const Model *model, ShaderID shader,
|
||||||
ShaderID shader, Render *render,
|
Render *render, RenderType render_type, Colour colour);
|
||||||
RenderType render_type, Colour colour);
|
internal void fill_triangle(Render *render, ShaderID shader, VertexData vertices[TRIANGLE_VERTICES],
|
||||||
internal void fill_triangle(Render *render, ShaderID shader,
|
|
||||||
VertexData vertices[TRIANGLE_VERTICES],
|
|
||||||
Colour colour, const Model *model, RenderType type);
|
Colour colour, const Model *model, RenderType type);
|
||||||
internal TriangleBBox get_triangle_bbox(const Image *img,
|
internal TriangleBBox get_triangle_bbox(const Image *img, V2f vertices[TRIANGLE_VERTICES]);
|
||||||
V2f vertices[TRIANGLE_VERTICES]);
|
|
||||||
internal V3f get_barycentric_coords(V2f a, V2f b, V2f c, V2f p);
|
internal V3f get_barycentric_coords(V2f a, V2f b, V2f c, V2f p);
|
||||||
internal V2f get_viewport_vertex(const V3f *vertex, const Image *img);
|
internal V2f get_viewport_vertex(const V3f *vertex, const Image *img);
|
||||||
|
|
||||||
@ -53,9 +50,8 @@ void render_model(const Model *model, Render *render, ShaderID shader,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void render_triangle(const Triangle *triangle, const Model *model,
|
internal void render_triangle(const Triangle *triangle, const Model *model, ShaderID shader,
|
||||||
ShaderID shader, Render *render,
|
Render *render, RenderType render_type, Colour colour) {
|
||||||
RenderType render_type, Colour colour) {
|
|
||||||
Image *img = &(render->img);
|
Image *img = &(render->img);
|
||||||
VertexData vertices[TRIANGLE_VERTICES];
|
VertexData vertices[TRIANGLE_VERTICES];
|
||||||
for (u64 i = 0; i < TRIANGLE_VERTICES; ++i) {
|
for (u64 i = 0; i < TRIANGLE_VERTICES; ++i) {
|
||||||
@ -80,10 +76,8 @@ internal void render_triangle(const Triangle *triangle, const Model *model,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void fill_triangle(Render *render, ShaderID shader,
|
internal void fill_triangle(Render *render, ShaderID shader, VertexData vertices[TRIANGLE_VERTICES],
|
||||||
VertexData vertices[TRIANGLE_VERTICES],
|
Colour colour, const Model *model, RenderType type) {
|
||||||
Colour colour, const Model *model,
|
|
||||||
RenderType type) {
|
|
||||||
Image *img = &(render->img);
|
Image *img = &(render->img);
|
||||||
Depth *depth = &(render->depth);
|
Depth *depth = &(render->depth);
|
||||||
|
|
||||||
@ -131,8 +125,7 @@ internal void fill_triangle(Render *render, ShaderID shader,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal TriangleBBox get_triangle_bbox(const Image *img,
|
internal TriangleBBox get_triangle_bbox(const Image *img, V2f vertices[TRIANGLE_VERTICES]) {
|
||||||
V2f vertices[TRIANGLE_VERTICES]) {
|
|
||||||
f32 x0 = min(vertices[0].x, min(vertices[1].x, vertices[2].x));
|
f32 x0 = min(vertices[0].x, min(vertices[1].x, vertices[2].x));
|
||||||
f32 x1 = max(vertices[0].x, max(vertices[1].x, vertices[2].x));
|
f32 x1 = max(vertices[0].x, max(vertices[1].x, vertices[2].x));
|
||||||
f32 y0 = min(vertices[0].y, min(vertices[1].y, vertices[2].y));
|
f32 y0 = min(vertices[0].y, min(vertices[1].y, vertices[2].y));
|
||||||
|
@ -4,8 +4,7 @@
|
|||||||
#include "shader.h"
|
#include "shader.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
|
||||||
VertexData depth_shader_vertex(void *shader, const VertexData *vert, u8 index,
|
VertexData depth_shader_vertex(void *shader, const VertexData *vert, u8 index, const Model *model) {
|
||||||
const Model *model) {
|
|
||||||
DepthShader *shdr = (DepthShader *)shader;
|
DepthShader *shdr = (DepthShader *)shader;
|
||||||
|
|
||||||
V4f vh = V3_to_V4(vert->position);
|
V4f vh = V3_to_V4(vert->position);
|
||||||
@ -16,8 +15,8 @@ VertexData depth_shader_vertex(void *shader, const VertexData *vert, u8 index,
|
|||||||
return shdr->vertices[index];
|
return shdr->vertices[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
FragmentResult depth_shader_fragment(void *shader, const V3f *barycentric,
|
FragmentResult depth_shader_fragment(void *shader, const V3f *barycentric, const Colour *colour,
|
||||||
const Colour *colour, const Model *model) {
|
const Model *model) {
|
||||||
DepthShader *shdr = (DepthShader *)shader;
|
DepthShader *shdr = (DepthShader *)shader;
|
||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
|
@ -10,9 +10,8 @@ struct depth_shader {
|
|||||||
#include "shader_base.inc"
|
#include "shader_base.inc"
|
||||||
};
|
};
|
||||||
|
|
||||||
VertexData depth_shader_vertex(void *shader, const VertexData *vert, u8 index,
|
VertexData depth_shader_vertex(void *shader, const VertexData *vert, u8 index, const Model *model);
|
||||||
|
FragmentResult depth_shader_fragment(void *shader, const V3f *barycentric, const Colour *colour,
|
||||||
const Model *model);
|
const Model *model);
|
||||||
FragmentResult depth_shader_fragment(void *shader, const V3f *barycentric,
|
|
||||||
const Colour *colour, const Model *model);
|
|
||||||
|
|
||||||
#endif // !DEPTH_SHADER_H
|
#endif // !DEPTH_SHADER_H
|
||||||
|
@ -4,8 +4,7 @@
|
|||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "vec.h"
|
#include "vec.h"
|
||||||
|
|
||||||
VertexData general_shader_vertex(void *shader, const VertexData *vert, u8 index,
|
VertexData general_shader_vertex(void *shader, const VertexData *vert, u8 index, const Model *model) {
|
||||||
const Model *model) {
|
|
||||||
Shader *shdr = (Shader *)shader;
|
Shader *shdr = (Shader *)shader;
|
||||||
|
|
||||||
V4f vh = V3_to_V4(vert->position);
|
V4f vh = V3_to_V4(vert->position);
|
||||||
@ -24,8 +23,7 @@ VertexData general_shader_vertex(void *shader, const VertexData *vert, u8 index,
|
|||||||
return shdr->vertices[index];
|
return shdr->vertices[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
FragmentResult diffuse_shader_fragment(void *shader, const V3f *barycentric,
|
FragmentResult diffuse_shader_fragment(void *shader, const V3f *barycentric, const Colour *colour,
|
||||||
const Colour *colour,
|
|
||||||
const Model *model) {
|
const Model *model) {
|
||||||
Shader *shdr = (Shader *)shader;
|
Shader *shdr = (Shader *)shader;
|
||||||
|
|
||||||
@ -104,8 +102,7 @@ FragmentResult diffuse_shader_fragment(void *shader, const V3f *barycentric,
|
|||||||
return (FragmentResult){.colour = output};
|
return (FragmentResult){.colour = output};
|
||||||
}
|
}
|
||||||
|
|
||||||
FragmentResult albedo_shader_fragment(void *shader, const V3f *barycentric,
|
FragmentResult albedo_shader_fragment(void *shader, const V3f *barycentric, const Colour *colour,
|
||||||
const Colour *colour,
|
|
||||||
const Model *model) {
|
const Model *model) {
|
||||||
Shader *shdr = (Shader *)shader;
|
Shader *shdr = (Shader *)shader;
|
||||||
|
|
||||||
|
@ -9,11 +9,9 @@ struct shader {
|
|||||||
#include "shader_base.inc"
|
#include "shader_base.inc"
|
||||||
};
|
};
|
||||||
|
|
||||||
VertexData general_shader_vertex(void *shader, const VertexData *vert, u8 index,
|
VertexData general_shader_vertex(void *shader, const VertexData *vert, u8 index, const Model *model);
|
||||||
|
FragmentResult diffuse_shader_fragment(void *shader, const V3f *barycentric, const Colour *colour,
|
||||||
const Model *model);
|
const Model *model);
|
||||||
FragmentResult diffuse_shader_fragment(void *shader, const V3f *barycentric,
|
FragmentResult albedo_shader_fragment(void *shader, const V3f *barycentric, const Colour *colour,
|
||||||
const Colour *colour,
|
|
||||||
const Model *model);
|
const Model *model);
|
||||||
FragmentResult albedo_shader_fragment(void *shader, const V3f *barycentric,
|
|
||||||
const Colour *colour, const Model *model);
|
|
||||||
#endif // !MAIN_SHADER_H
|
#endif // !MAIN_SHADER_H
|
||||||
|
@ -6,9 +6,6 @@
|
|||||||
|
|
||||||
#define CAPACITY_SCALAR 4
|
#define CAPACITY_SCALAR 4
|
||||||
|
|
||||||
internal Arena *get_temp_arena(void);
|
|
||||||
internal void destroy_temp_arena(Arena *arena);
|
|
||||||
|
|
||||||
Str8 str8(Arena *arena, char *str) {
|
Str8 str8(Arena *arena, char *str) {
|
||||||
if (!str) {
|
if (!str) {
|
||||||
return (Str8){0};
|
return (Str8){0};
|
||||||
|
Loading…
Reference in New Issue
Block a user