Split scene definition to use it in both raytracer and rasteriser
This commit is contained in:
@@ -2,41 +2,10 @@
|
||||
#define RAYTRACER_H
|
||||
|
||||
#include "c_cpp_aliases/aliases.h"
|
||||
#include "scene/scene.h"
|
||||
#include "vector/vec.h"
|
||||
#include "window/window.h"
|
||||
|
||||
typedef struct {
|
||||
f32 radius;
|
||||
vec3f_t centre;
|
||||
colour_t colour;
|
||||
f32 specular;
|
||||
f32 reflective;
|
||||
} sphere_t;
|
||||
|
||||
typedef enum {
|
||||
LIGHT_TYPE_POINT,
|
||||
LIGHT_TYPE_DIRECTIONAL,
|
||||
LIGHT_TYPE_AMBIENT,
|
||||
|
||||
COUNT_LIGHT_TYPE,
|
||||
} light_type_t;
|
||||
|
||||
typedef struct {
|
||||
light_type_t type;
|
||||
f32 intensity;
|
||||
union {
|
||||
vec3f_t position;
|
||||
vec3f_t direction;
|
||||
};
|
||||
} light_t;
|
||||
|
||||
typedef struct {
|
||||
sphere_t *spheres;
|
||||
light_t *lights;
|
||||
u32 spheres_count;
|
||||
u32 lights_count;
|
||||
} scene_t;
|
||||
|
||||
typedef struct {
|
||||
f32 t1;
|
||||
f32 t2;
|
||||
@@ -44,7 +13,7 @@ typedef struct {
|
||||
|
||||
typedef struct {
|
||||
f32 closest_t;
|
||||
sphere_t *closest_sphere;
|
||||
const sphere_t *closest_sphere;
|
||||
} intersection_t;
|
||||
|
||||
colour_t trace_ray(vec3f_t origin, vec3f_t direction, f32 t_min, f32 t_max,
|
||||
|
||||
41
include/scene/scene.h
Normal file
41
include/scene/scene.h
Normal file
@@ -0,0 +1,41 @@
|
||||
#ifndef SCENE_H
|
||||
#define SCENE_H
|
||||
|
||||
#include "c_cpp_aliases/aliases.h"
|
||||
#include "window/window.h"
|
||||
|
||||
typedef struct {
|
||||
f32 radius;
|
||||
vec3f_t centre;
|
||||
colour_t colour;
|
||||
f32 specular;
|
||||
f32 reflective;
|
||||
} sphere_t;
|
||||
|
||||
typedef enum {
|
||||
LIGHT_TYPE_POINT,
|
||||
LIGHT_TYPE_DIRECTIONAL,
|
||||
LIGHT_TYPE_AMBIENT,
|
||||
|
||||
COUNT_LIGHT_TYPE,
|
||||
} light_type_t;
|
||||
|
||||
typedef struct {
|
||||
light_type_t type;
|
||||
f32 intensity;
|
||||
union {
|
||||
vec3f_t position;
|
||||
vec3f_t direction;
|
||||
};
|
||||
} light_t;
|
||||
|
||||
typedef struct {
|
||||
const sphere_t *spheres;
|
||||
const light_t *lights;
|
||||
u32 spheres_count;
|
||||
u32 lights_count;
|
||||
} scene_t;
|
||||
|
||||
const scene_t *build_test_scene(void);
|
||||
|
||||
#endif // !SCENE_H
|
||||
Reference in New Issue
Block a user