summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoromniscient <17525998+omnisci3nce@users.noreply.github.com>2024-07-26 14:02:25 +1000
committeromniscient <17525998+omnisci3nce@users.noreply.github.com>2024-07-26 14:02:25 +1000
commit9d11440c145cef897853576b509316bf952cb121 (patch)
treef3803030df2141c77f59f408e074a2afc39e9694
parente0a047ac1e2cf18c3b0f23f31f869eeda767503e (diff)
trying to render ent from rust
-rw-r--r--bindgen/rust/examples/main_loop.rs58
-rw-r--r--src/maths/maths.h3
2 files changed, 58 insertions, 3 deletions
diff --git a/bindgen/rust/examples/main_loop.rs b/bindgen/rust/examples/main_loop.rs
index 4c54f8c..6fce5cf 100644
--- a/bindgen/rust/examples/main_loop.rs
+++ b/bindgen/rust/examples/main_loop.rs
@@ -1,8 +1,11 @@
+use std::{ffi::{ CString}, ptr::{self, addr_of_mut}};
+
use celeritas::*;
unsafe fn run_game() {
// init
- Core_Bringup();
+ let p: *mut GLFWwindow = ptr::null_mut();
+ Core_Bringup(p);
let core = get_global_core();
let glfw_window_ptr = Core_GetGlfwWindowPtr(core);
@@ -33,13 +36,62 @@ unsafe fn run_game() {
};
SetMainLight(sun);
- // let skybox = Skybox_Create(face_paths, 6);
+// Geometry cube_geo = Geo_CreateCuboid(f32x3(2.0, 2.0, 2.0));
+// Mesh crate_mesh = Mesh_Create(&cube_geo, false); // dont free as we may use later
+// TextureHandle albedo_map = TextureLoadFromFile("assets/demo/crate/Wood_Crate_001_basecolor.jpg");
+// TextureHandle roughness_map =
+// TextureLoadFromFile("assets/demo/crate/Wood_Crate_001_roughness.jpg");
+// TextureHandle normal_map = TextureLoadFromFile("assets/demo/crate/Wood_Crate_001_normal.jpg");
+// TextureHandle ao_map =
+// TextureLoadFromFile("assets/demo/crate/Wood_Crate_001_ambientOcclusion.jpg");
+// Material crate_mat = { .name = "Wood_Crate",
+// .kind = MAT_PBR,
+// .metal_roughness_combined = true,
+// .pbr_albedo_map = albedo_map,
+// .pbr_metallic_map = roughness_map,
+// .pbr_normal_map = normal_map,
+// .pbr_ao_map = ao_map };
+ let mut cube_geo = Geo_CreateCuboid(f32x3 { x: 2.0, y: 2.0, z: 2.0 });
+ let mut crate_mesh = Mesh_Create(addr_of_mut!(cube_geo), false);
+ let albedo_map = TextureLoadFromFile(CString::new("assets/demo/crate/Wood_Crate_001_basecolor.jpg").unwrap().as_ptr() as *const i8);
+ let roughness_map = TextureLoadFromFile(CString::new("assets/demo/crate/Wood_Crate_001_roughness.jpg").unwrap().as_ptr() as *const i8);
+ let normal_map = TextureLoadFromFile(CString::new("assets/demo/crate/Wood_Crate_001_normal.jpg").unwrap().as_ptr() as *const i8);
+ let ao_map = TextureLoadFromFile(CString::new("assets/demo/crate/Wood_Crate_001_ambientOcclusion.jpg").unwrap().as_ptr() as *const i8);
+ let name: [i8; 64] = [0; 64];
+ let mut crate_mat = Material {
+ name: name,
+ kind: 0,
+ param_albedo: VEC3_ZERO,
+ param_metallic: 0.0,
+ param_roughness: 0.0,
+ param_ao: 0.0,
+ pbr_albedo_map: albedo_map,
+ pbr_normal_map: normal_map,
+ metal_roughness_combined: true,
+ pbr_metallic_map: TextureHandle { raw: 99999 },
+ pbr_roughness_map: roughness_map,
+ pbr_ao_map: ao_map
+ };
+ let crate_renderent = RenderEnt {
+ mesh: addr_of_mut!(crate_mesh),
+ material: addr_of_mut!(crate_mat),
+ affine: mat4_ident(),
+ casts_shadows: true,
+ };
+ let mut render_entities: [RenderEnt; 1] = [crate_renderent];
+
+ // RenderEnt crate_renderable = {
+ // .mesh = &crate_mesh, .material = &crate_mat, .affine = mat4_scale(3.0), .casts_shadows = true
+ // };
+
+ // RenderEnt entities[] = { cube_r, crate_renderable };
+ // size_t entity_count = 1;
// main loop
while !ShouldExit() {
Frame_Begin();
- // Skybox_Draw(&mut skybox, camera);
+ Render_RenderEntities(render_entities.as_mut_ptr(), render_entities.len());
Frame_End();
}
diff --git a/src/maths/maths.h b/src/maths/maths.h
index 59e304c..9b3813c 100644
--- a/src/maths/maths.h
+++ b/src/maths/maths.h
@@ -13,6 +13,9 @@
#include "defines.h"
#include "maths_types.h"
+// #undef c_static_inline
+// #define c_static_inline static
+
// --- Helpers
#define deg_to_rad(x) (x * 3.14 / 180.0)
#define MIN(a, b) (a < b ? a : b)