before shadows

This commit is contained in:
Franchioping 2025-11-23 23:43:48 +00:00
parent 7cf16de4f0
commit 51cd254ddb
3 changed files with 28 additions and 28 deletions

View File

@ -1,16 +1,18 @@
use glam::Quat;
use macroquad::prelude as mq;
use rapier3d::prelude::*;
mod engine;
use engine::*;
mod camera;
mod graphics_util;
use graphics_util::*;
#[macroquad::main("3D")]
async fn main() {
// Graphics Initialization
let vertex = include_str!("shaders/shader.vert");
let fragment = include_str!("shaders/shader.frag");
@ -35,41 +37,38 @@ async fn main() {
// Physics Initialization
let mut world = World::default();
world.register_free_collider(
ColliderBuilder::cuboid(5.0, 0.1, 5.0)
ColliderBuilder::cuboid(50.0, 0.1, 50.0)
.restitution(0.5)
.build(),
None,
);
let body = world.register_body(
RigidBodyBuilder::dynamic()
.translation(vector![0.0, 10.0, 0.0])
.rotation(vector![std::f32::consts::PI / 4.2, 0.0, 0.0])
.build(),
);
for i in 0..10 {
let body = world.register_body(
RigidBodyBuilder::dynamic()
.translation(vector![0.0, 10.0 + i as f32, 0.0])
.rotation(vector![std::f32::consts::PI / 4.2, i as f32, i as f32])
.build(),
);
world.register_collider(
ColliderBuilder::cuboid(0.5, 0.5, 0.5)
.restitution(0.5)
.build(),
body,
None,
);
}
let coll = world.register_collider(
ColliderBuilder::cuboid(0.5, 0.5, 0.5)
.restitution(0.5)
.build(),
body,
None,
);
// Main Loop
let mut cam: camera::FirstPersonCamera =
camera::FirstPersonCamera::new(mq::vec3(0.0, 10.0, -5.0));
loop {
// Physics Simulation
world.step();
// Graphics Rendering
mq::clear_background(mq::LIGHTGRAY);
mq::set_camera(&mq::Camera3D {
position: mq::vec3(-20., 15., 0.),
up: mq::vec3(0., 1., 0.),
target: mq::vec3(0., 0., 0.),
..Default::default()
});
cam.update(mq::get_frame_time());
cam.apply();
mq::draw_grid(20, 1., mq::BLACK, mq::GRAY);
@ -111,8 +110,6 @@ async fn main() {
}
}
// draw_sphere(world.position_of_rb(body).unwrap().into(), 0.5, None, BLUE);
mq::next_frame().await
}
}

View File

@ -3,6 +3,7 @@
in vec4 v_normal;
in vec4 color;
in vec3 light_direction;
uniform int render_normals_bool;
out vec4 FragColor;
@ -11,8 +12,7 @@ const float ambient_strenght = 0.3;
const float diffuse_strenght = 0.7;
void main() {
vec3 lightDir = vec3(1.0, 0.3, 0.2);
float diff = max(dot(normalize(vec3(v_normal.x, v_normal.y, v_normal.z)), normalize(lightDir)), 0) * diffuse_strenght;
float diff = max(dot(normalize(vec3(v_normal.x, v_normal.y, v_normal.z)), normalize(light_direction)), 0) * diffuse_strenght;
if (render_normals_bool == 1) {
FragColor = vec4(v_normal);
}

View File

@ -10,7 +10,10 @@ uniform mat4 Projection;
out vec4 v_normal;
out vec4 color;
out vec3 light_direction;
void main() {
vec4 light_dir = vec4(1.0, 1.0, 0.0, 0.0) * Model;
light_direction = vec3(light_dir.x, light_dir.y, light_dir.z);
color = color0;
v_normal = normal;
gl_Position = Projection * Model * vec4(position, 1.0);