Add some more objects for shadow testing

This commit is contained in:
karl 2021-05-21 23:47:03 +02:00
parent 3dcfc89b52
commit 2a661daf3e

View File

@ -37,9 +37,9 @@ void renderQuad() {
glBindVertexArray(0); glBindVertexArray(0);
} }
class mesh3 : public Gedeng::Application { class ShadowDemo : public Gedeng::Application {
public: public:
mesh3(unsigned long ms_per_update, unsigned int window_size_x, unsigned int window_size_y, ShadowDemo(unsigned long ms_per_update, unsigned int window_size_x, unsigned int window_size_y,
Gedeng::String window_name) Gedeng::String window_name)
: Application(ms_per_update, window_size_x, window_size_y, window_name), particle_interval(0.2), : Application(ms_per_update, window_size_x, window_size_y, window_name), particle_interval(0.2),
number_of_steps(10.0), number_of_refinement_steps(10.0), bump_depth(0.1), number_of_steps(10.0), number_of_refinement_steps(10.0), bump_depth(0.1),
@ -54,8 +54,8 @@ class mesh3 : public Gedeng::Application {
particle_tex3("Resources/Textures/Particles/smoke.png", Gedeng::Texture::Settings()), particle_tex3("Resources/Textures/Particles/smoke.png", Gedeng::Texture::Settings()),
quad_mesh(Gedeng::QuadMesh(10.0)), light(glm::vec3(0.57735, -0.57735, 0.57735)), quad_mesh(Gedeng::QuadMesh(10.0)), light(glm::vec3(0.57735, -0.57735, 0.57735)),
mesh1("Resources/Meshes/Monkey.obj", Gedeng::ObjMesh::Settings()), mesh1("Resources/Meshes/Monkey.obj", Gedeng::ObjMesh::Settings()),
mesh2("Resources/Meshes/Monkey.obj", Gedeng::ObjMesh::Settings()), mesh2("Resources/Meshes/bench.obj", Gedeng::ObjMesh::Settings()),
mesh3("Resources/Meshes/Monkey.obj", Gedeng::ObjMesh::Settings()) { mesh3("Resources/Meshes/ring.obj", Gedeng::ObjMesh::Settings()) {
particles.set_position(glm::vec3(0.0f, 0.0f, -10.0f)); particles.set_position(glm::vec3(0.0f, 0.0f, -10.0f));
particles.set_velocity(glm::vec3(-2, 4, -2), glm::vec3(2, 6, 2)); particles.set_velocity(glm::vec3(-2, 4, -2), glm::vec3(2, 6, 2));
particles.set_gravity(glm::vec3(0, -4, 0)); particles.set_gravity(glm::vec3(0, -4, 0));
@ -70,9 +70,12 @@ class mesh3 : public Gedeng::Application {
// camera.rotate(30, glm::vec3(1.0, 0.0, 0.0)); // camera.rotate(30, glm::vec3(1.0, 0.0, 0.0));
mesh1.translate(glm::vec3(2.0, 3.0, -2.0)); mesh1.translate(glm::vec3(2.0, 3.0, -2.0));
mesh2.translate(glm::vec3(-3.0, 0.0, -3.0));
mesh3.translate(glm::vec3(5.0, 0.0, 5.0));
mesh3.rotate(45.0, glm::vec3(0.0, 1.0, 0.0));
} }
~mesh3() = default; ~ShadowDemo() = default;
void fixed_update(double delta) override { void fixed_update(double delta) override {
camera.update(delta); camera.update(delta);
@ -90,6 +93,8 @@ class mesh3 : public Gedeng::Application {
// Shadows // Shadows
light.clear_shadows(); light.clear_shadows();
light.render_shadow(mesh1); light.render_shadow(mesh1);
light.render_shadow(mesh2);
light.render_shadow(mesh3);
light.render_shadow(quad_mesh); light.render_shadow(quad_mesh);
glViewport(0, 0, 1920, 1080); glViewport(0, 0, 1920, 1080);
@ -127,6 +132,8 @@ class mesh3 : public Gedeng::Application {
// Props // Props
render_shader.use(); render_shader.use();
mesh1.render(render_shader); mesh1.render(render_shader);
mesh2.render(render_shader);
mesh3.render(render_shader);
/* // Render the light's depth map to a quad for debugging /* // Render the light's depth map to a quad for debugging
debug_shader.use(); debug_shader.use();
@ -161,6 +168,7 @@ class mesh3 : public Gedeng::Application {
Gedeng::ParticleSystem particles; Gedeng::ParticleSystem particles;
Gedeng::DirectionalLight light; Gedeng::DirectionalLight light;
Gedeng::ObjMesh mesh1; Gedeng::ObjMesh mesh1;
Gedeng::ObjMesh mesh2; Gedeng::ObjMesh mesh2;
Gedeng::ObjMesh mesh3; Gedeng::ObjMesh mesh3;
@ -168,5 +176,5 @@ class mesh3 : public Gedeng::Application {
Gedeng::Application *Gedeng::create_application() { Gedeng::Application *Gedeng::create_application() {
GG_CLIENT_INFO("Creating Application"); GG_CLIENT_INFO("Creating Application");
return new mesh3(20, 1920, 1080, String("Parallax Demo")); return new ShadowDemo(20, 1920, 1080, String("Parallax Demo"));
} }