diff --git a/Cargo.toml b/Cargo.toml index 0206968..aaf81cc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,12 +14,12 @@ authors = ["src_resources"] [workspace.dependencies] gl = "0.14.0" -glfw = "0.55.0" -image = "0.25.1" -nalgebra-glm = "0.18.0" -lazy_static = "1.4.0" -russimp = { version = "3.2.0", features = ["prebuilt"] } -rand = "0.9.0-alpha.1" -rand_pcg = "0.9.0-alpha.1" +glfw = "0.59.0" +image = "0.25.6" +nalgebra-glm = "0.19.0" +lazy_static = "1.5.0" +russimp = { version = "3.2.1", features = ["prebuilt"] } +rand = "0.9.1" +rand_pcg = "0.9.0" freetype = "0.7.2" rodio = "0.18.1" \ No newline at end of file diff --git a/README.md b/README.md index e08fb5a..ddf5e03 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,12 @@ resources at once: ## Build the source code +Check the source code first: + +```shell +cargo check +``` + To build and run test, switch to the repository root directory and run: ```shell @@ -47,4 +53,4 @@ For the images, audios and models used under this repository (under the `resourc [LearnOpenGL About](https://learnopengl.com/About) page. For the other parts, licensed under [the Apache License v2.0](https://spdx.org/licenses/Apache-2.0.html). -See [LICENSE.txt](LICENSE.txt) for details. \ No newline at end of file +See [LICENSE.txt](LICENSE.txt) for details. diff --git a/crates/1.getting_started/2.1.hello_triangle/src/main.rs b/crates/1.getting_started/2.1.hello_triangle/src/main.rs index 3e49b8f..1d0bc44 100644 --- a/crates/1.getting_started/2.1.hello_triangle/src/main.rs +++ b/crates/1.getting_started/2.1.hello_triangle/src/main.rs @@ -97,7 +97,7 @@ fn main() { // check for linking errors gl::GetProgramiv(shader_program, gl::LINK_STATUS, &mut success); if success == 0 { - gl::GetShaderInfoLog(shader_program, 512, ptr::null_mut(), &mut info_log as *mut _); + gl::GetProgramInfoLog(shader_program, 512, ptr::null_mut(), &mut info_log as *mut _); let info_log_vec: Vec<_> = Vec::from(info_log).iter().map(|it| *it as u8).collect(); println!("ERROR::SHADER::PROGRAM::LINKING_FAILED\n{}", String::from_utf8(info_log_vec).unwrap()); } diff --git a/crates/1.getting_started/2.2.hello_triangle_indexed/src/main.rs b/crates/1.getting_started/2.2.hello_triangle_indexed/src/main.rs index 481330d..31e918b 100644 --- a/crates/1.getting_started/2.2.hello_triangle_indexed/src/main.rs +++ b/crates/1.getting_started/2.2.hello_triangle_indexed/src/main.rs @@ -96,7 +96,7 @@ fn main() { // check for linking errors gl::GetProgramiv(shader_program, gl::LINK_STATUS, &mut success); if success == 0 { - gl::GetShaderInfoLog(shader_program, 512, ptr::null_mut(), &mut info_log as *mut _); + gl::GetProgramInfoLog(shader_program, 512, ptr::null_mut(), &mut info_log as *mut _); let info_log_vec: Vec<_> = Vec::from(info_log).iter().map(|it| *it as u8).collect(); println!("ERROR::SHADER::PROGRAM::LINKING_FAILED\n{}", String::from_utf8(info_log_vec).unwrap()); } diff --git a/crates/1.getting_started/2.3.hello_triangle_exercise1/src/main.rs b/crates/1.getting_started/2.3.hello_triangle_exercise1/src/main.rs index b1aaff8..b0474ae 100644 --- a/crates/1.getting_started/2.3.hello_triangle_exercise1/src/main.rs +++ b/crates/1.getting_started/2.3.hello_triangle_exercise1/src/main.rs @@ -97,7 +97,7 @@ fn main() { // check for linking errors gl::GetProgramiv(shader_program, gl::LINK_STATUS, &mut success); if success == 0 { - gl::GetShaderInfoLog(shader_program, 512, ptr::null_mut(), &mut info_log as *mut _); + gl::GetProgramInfoLog(shader_program, 512, ptr::null_mut(), &mut info_log as *mut _); let info_log_vec: Vec<_> = Vec::from(info_log).iter().map(|it| *it as u8).collect(); println!("ERROR::SHADER::PROGRAM::LINKING_FAILED\n{}", String::from_utf8(info_log_vec).unwrap()); } diff --git a/crates/1.getting_started/2.4.hello_triangle_exercise2/src/main.rs b/crates/1.getting_started/2.4.hello_triangle_exercise2/src/main.rs index 07df383..bcc36d1 100644 --- a/crates/1.getting_started/2.4.hello_triangle_exercise2/src/main.rs +++ b/crates/1.getting_started/2.4.hello_triangle_exercise2/src/main.rs @@ -96,7 +96,7 @@ fn main() { // check for linking errors gl::GetProgramiv(shader_program, gl::LINK_STATUS, &mut success); if success == 0 { - gl::GetShaderInfoLog(shader_program, 512, ptr::null_mut(), &mut info_log as *mut _); + gl::GetProgramInfoLog(shader_program, 512, ptr::null_mut(), &mut info_log as *mut _); let info_log_vec: Vec<_> = Vec::from(info_log).iter().map(|it| *it as u8).collect(); println!("ERROR::SHADER::PROGRAM::LINKING_FAILED\n{}", String::from_utf8(info_log_vec).unwrap()); } diff --git a/crates/1.getting_started/3.1.shaders_uniform/src/main.rs b/crates/1.getting_started/3.1.shaders_uniform/src/main.rs index 2b2bc62..f95df94 100644 --- a/crates/1.getting_started/3.1.shaders_uniform/src/main.rs +++ b/crates/1.getting_started/3.1.shaders_uniform/src/main.rs @@ -97,7 +97,7 @@ fn main() { // check for linking errors gl::GetProgramiv(shader_program, gl::LINK_STATUS, &mut success); if success == 0 { - gl::GetShaderInfoLog(shader_program, 512, ptr::null_mut(), &mut info_log as *mut _); + gl::GetProgramInfoLog(shader_program, 512, ptr::null_mut(), &mut info_log as *mut _); let info_log_vec: Vec<_> = Vec::from(info_log).iter().map(|it| *it as u8).collect(); println!("ERROR::SHADER::PROGRAM::LINKING_FAILED\n{}", String::from_utf8(info_log_vec).unwrap()); } diff --git a/crates/1.getting_started/3.2.shaders_interpolation/src/main.rs b/crates/1.getting_started/3.2.shaders_interpolation/src/main.rs index 2318c2d..f196cbc 100644 --- a/crates/1.getting_started/3.2.shaders_interpolation/src/main.rs +++ b/crates/1.getting_started/3.2.shaders_interpolation/src/main.rs @@ -100,7 +100,7 @@ fn main() { // check for linking errors gl::GetProgramiv(shader_program, gl::LINK_STATUS, &mut success); if success == 0 { - gl::GetShaderInfoLog(shader_program, 512, ptr::null_mut(), &mut info_log as *mut _); + gl::GetProgramInfoLog(shader_program, 512, ptr::null_mut(), &mut info_log as *mut _); let info_log_vec: Vec<_> = Vec::from(info_log).iter().map(|it| *it as u8).collect(); println!("ERROR::SHADER::PROGRAM::LINKING_FAILED\n{}", String::from_utf8(info_log_vec).unwrap()); } diff --git a/crates/1.getting_started/5.1.transformations/src/main.rs b/crates/1.getting_started/5.1.transformations/src/main.rs index 933fcc7..e3b90bd 100644 --- a/crates/1.getting_started/5.1.transformations/src/main.rs +++ b/crates/1.getting_started/5.1.transformations/src/main.rs @@ -23,8 +23,7 @@ use gl::types::*; use glfw::{Action, Context, Key, OpenGlProfileHint, Window, WindowEvent, WindowHint}; use learnopengl_shared::filesystem; use learnopengl_shared::shader_s::Shader; -use image::io::Reader as ImageReader; -use image::{RgbaImage, RgbImage}; +use image::{ImageReader, RgbaImage, RgbImage}; const SCR_WIDTH: u32 = 800; const SCR_HEIGHT: u32 = 600; diff --git a/crates/1.getting_started/5.2.transformations_exercise1/src/main.rs b/crates/1.getting_started/5.2.transformations_exercise1/src/main.rs index ba20a70..592026c 100644 --- a/crates/1.getting_started/5.2.transformations_exercise1/src/main.rs +++ b/crates/1.getting_started/5.2.transformations_exercise1/src/main.rs @@ -23,8 +23,7 @@ use gl::types::*; use glfw::{Action, Context, Key, OpenGlProfileHint, Window, WindowEvent, WindowHint}; use learnopengl_shared::filesystem; use learnopengl_shared::shader_s::Shader; -use image::io::Reader as ImageReader; -use image::{RgbaImage, RgbImage}; +use image::{ImageReader, RgbaImage, RgbImage}; const SCR_WIDTH: u32 = 800; const SCR_HEIGHT: u32 = 600; diff --git a/crates/1.getting_started/6.1.coordinate_systems/src/main.rs b/crates/1.getting_started/6.1.coordinate_systems/src/main.rs index 8e92087..d6f3900 100644 --- a/crates/1.getting_started/6.1.coordinate_systems/src/main.rs +++ b/crates/1.getting_started/6.1.coordinate_systems/src/main.rs @@ -23,8 +23,7 @@ use gl::types::*; use glfw::{Action, Context, Key, OpenGlProfileHint, Window, WindowEvent, WindowHint}; use learnopengl_shared::{filesystem, util}; use learnopengl_shared::shader_m::Shader; -use image::io::Reader as ImageReader; -use image::{RgbaImage, RgbImage}; +use image::{ImageReader, RgbaImage, RgbImage}; const SCR_WIDTH: u32 = 800; const SCR_HEIGHT: u32 = 600; diff --git a/crates/1.getting_started/6.2.coordinate_systems_depth/src/main.rs b/crates/1.getting_started/6.2.coordinate_systems_depth/src/main.rs index c163f76..8e02973 100644 --- a/crates/1.getting_started/6.2.coordinate_systems_depth/src/main.rs +++ b/crates/1.getting_started/6.2.coordinate_systems_depth/src/main.rs @@ -23,8 +23,7 @@ use gl::types::*; use glfw::{Action, Context, Key, OpenGlProfileHint, Window, WindowEvent, WindowHint}; use learnopengl_shared::{filesystem, util}; use learnopengl_shared::shader_m::Shader; -use image::io::Reader as ImageReader; -use image::{RgbaImage, RgbImage}; +use image::{ImageReader, RgbaImage, RgbImage}; const SCR_WIDTH: u32 = 800; const SCR_HEIGHT: u32 = 600; diff --git a/crates/1.getting_started/6.3.coordinate_systems_multiple/src/main.rs b/crates/1.getting_started/6.3.coordinate_systems_multiple/src/main.rs index f0a2e10..eb1f338 100644 --- a/crates/1.getting_started/6.3.coordinate_systems_multiple/src/main.rs +++ b/crates/1.getting_started/6.3.coordinate_systems_multiple/src/main.rs @@ -22,8 +22,7 @@ use gl::types::*; use glfw::{Action, Context, Key, OpenGlProfileHint, Window, WindowEvent, WindowHint}; use learnopengl_shared::{filesystem, util}; use learnopengl_shared::shader_m::Shader; -use image::io::Reader as ImageReader; -use image::{RgbaImage, RgbImage}; +use image::{ImageReader, RgbaImage, RgbImage}; const SCR_WIDTH: u32 = 800; const SCR_HEIGHT: u32 = 600; diff --git a/crates/1.getting_started/6.4.coordinate_systems_exercise3/src/main.rs b/crates/1.getting_started/6.4.coordinate_systems_exercise3/src/main.rs index 52acd71..2f4ceef 100644 --- a/crates/1.getting_started/6.4.coordinate_systems_exercise3/src/main.rs +++ b/crates/1.getting_started/6.4.coordinate_systems_exercise3/src/main.rs @@ -22,8 +22,7 @@ use gl::types::*; use glfw::{Action, Context, Key, OpenGlProfileHint, Window, WindowEvent, WindowHint}; use learnopengl_shared::{filesystem, util}; use learnopengl_shared::shader_m::Shader; -use image::io::Reader as ImageReader; -use image::{RgbaImage, RgbImage}; +use image::{ImageReader, RgbaImage, RgbImage}; const SCR_WIDTH: u32 = 800; const SCR_HEIGHT: u32 = 600; diff --git a/crates/1.getting_started/7.1.camera_circle/src/main.rs b/crates/1.getting_started/7.1.camera_circle/src/main.rs index 6503c2a..93f6ad8 100644 --- a/crates/1.getting_started/7.1.camera_circle/src/main.rs +++ b/crates/1.getting_started/7.1.camera_circle/src/main.rs @@ -22,8 +22,7 @@ use gl::types::*; use glfw::{Action, Context, Key, OpenGlProfileHint, Window, WindowEvent, WindowHint}; use learnopengl_shared::{filesystem, util}; use learnopengl_shared::shader_m::Shader; -use image::io::Reader as ImageReader; -use image::{RgbaImage, RgbImage}; +use image::{ImageReader, RgbaImage, RgbImage}; const SCR_WIDTH: u32 = 800; const SCR_HEIGHT: u32 = 600; diff --git a/crates/1.getting_started/7.2.camera_keyboard_dt/src/main.rs b/crates/1.getting_started/7.2.camera_keyboard_dt/src/main.rs index 75f246b..59c8cf7 100644 --- a/crates/1.getting_started/7.2.camera_keyboard_dt/src/main.rs +++ b/crates/1.getting_started/7.2.camera_keyboard_dt/src/main.rs @@ -22,8 +22,7 @@ use gl::types::*; use glfw::{Action, Context, Key, OpenGlProfileHint, Window, WindowHint}; use learnopengl_shared::{filesystem, util}; use learnopengl_shared::shader_m::Shader; -use image::io::Reader as ImageReader; -use image::{RgbaImage, RgbImage}; +use image::{ImageReader, RgbaImage, RgbImage}; const SCR_WIDTH: u32 = 800; const SCR_HEIGHT: u32 = 600; diff --git a/crates/1.getting_started/7.3.camera_mouse_zoom/src/main.rs b/crates/1.getting_started/7.3.camera_mouse_zoom/src/main.rs index 5c7bd43..875cb3c 100644 --- a/crates/1.getting_started/7.3.camera_mouse_zoom/src/main.rs +++ b/crates/1.getting_started/7.3.camera_mouse_zoom/src/main.rs @@ -22,8 +22,7 @@ use gl::types::*; use glfw::{Action, Context, CursorMode, Key, OpenGlProfileHint, Window, WindowHint}; use learnopengl_shared::{filesystem, util}; use learnopengl_shared::shader_m::Shader; -use image::io::Reader as ImageReader; -use image::{RgbaImage, RgbImage}; +use image::{ImageReader, RgbaImage, RgbImage}; const SCR_WIDTH: u32 = 800; const SCR_HEIGHT: u32 = 600; diff --git a/crates/4.advanced_opengl/10.2.asteroids/Cargo.toml b/crates/4.advanced_opengl/10.2.asteroids/Cargo.toml index 22e030f..c7458df 100644 --- a/crates/4.advanced_opengl/10.2.asteroids/Cargo.toml +++ b/crates/4.advanced_opengl/10.2.asteroids/Cargo.toml @@ -12,3 +12,4 @@ nalgebra-glm.workspace = true lazy_static.workspace = true rand.workspace = true learnopengl-shared = { path = "../../../shared" } +learnopengl-shared-ex = { path = "../../../shared-ex" } diff --git a/crates/4.advanced_opengl/10.2.asteroids/src/main.rs b/crates/4.advanced_opengl/10.2.asteroids/src/main.rs index 2f97289..a1ca04a 100644 --- a/crates/4.advanced_opengl/10.2.asteroids/src/main.rs +++ b/crates/4.advanced_opengl/10.2.asteroids/src/main.rs @@ -23,7 +23,7 @@ use learnopengl_shared::shader::Shader; use lazy_static::lazy_static; use rand::Rng; use learnopengl_shared::camera::{Camera, Movement}; -use learnopengl_shared::model::Model; +use learnopengl_shared_ex::model::Model; const SCR_WIDTH: u32 = 800; const SCR_HEIGHT: u32 = 600; @@ -89,27 +89,27 @@ fn main() { // ------------------------------------------------------------------ let amount = 1000usize; let mut model_matrices = vec![util::glm::diag_mat4(1.0); amount]; - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let radius = 50f32; let offset = 2.5f32; for i in 0..amount { let mut model = util::glm::diag_mat4(1.0); // 1. translation: displace along circle with 'radius' in range [-offset, offset] let angle = i as f32 / amount as f32 * 360.0; - let displacement = (rng.gen::() % (2.0 * offset * 100.0) as i32) as f32 / 100.0 - offset; + let displacement = (rng.random::() % (2.0 * offset * 100.0) as i32) as f32 / 100.0 - offset; let x = angle.sin() * radius + displacement; - let displacement = (rng.gen::() % (2.0 * offset * 100.0) as i32) as f32 / 100.0 - offset; + let displacement = (rng.random::() % (2.0 * offset * 100.0) as i32) as f32 / 100.0 - offset; let y = displacement * 0.4; // keep height of asteroid field smaller compared to width of x and z - let displacement = (rng.gen::() % (2.0 * offset * 100.0) as i32) as f32 / 100.0 - offset; + let displacement = (rng.random::() % (2.0 * offset * 100.0) as i32) as f32 / 100.0 - offset; let z = angle.cos() * radius + displacement; model = glm::translate(&model, &glm::vec3(x, y, z)); // 2. scale: Scale between 0.05 and 0.25f - let scale = (rng.gen::() % 20) as f32 / 100.0 + 0.05; + let scale = (rng.random::() % 20) as f32 / 100.0 + 0.05; model = glm::scale(&model, &util::glm::scale_vec3(scale)); // 3. rotation: add random rotation around a (semi)randomly picked rotation axis vector - let rot_angle = (rng.gen::() % 360) as f32; + let rot_angle = (rng.random::() % 360) as f32; model = glm::rotate(&model, rot_angle, &glm::vec3(0.4, 0.6, 0.8)); // 4. now add to list of matrices diff --git a/crates/4.advanced_opengl/10.3.asteroids_instanced/Cargo.toml b/crates/4.advanced_opengl/10.3.asteroids_instanced/Cargo.toml index ed27659..8bb8e07 100644 --- a/crates/4.advanced_opengl/10.3.asteroids_instanced/Cargo.toml +++ b/crates/4.advanced_opengl/10.3.asteroids_instanced/Cargo.toml @@ -12,3 +12,4 @@ nalgebra-glm.workspace = true lazy_static.workspace = true rand.workspace = true learnopengl-shared = { path = "../../../shared" } +learnopengl-shared-ex = { path = "../../../shared-ex" } diff --git a/crates/4.advanced_opengl/10.3.asteroids_instanced/src/main.rs b/crates/4.advanced_opengl/10.3.asteroids_instanced/src/main.rs index 0d21b16..7dabf85 100644 --- a/crates/4.advanced_opengl/10.3.asteroids_instanced/src/main.rs +++ b/crates/4.advanced_opengl/10.3.asteroids_instanced/src/main.rs @@ -24,7 +24,7 @@ use learnopengl_shared::shader::Shader; use lazy_static::lazy_static; use rand::Rng; use learnopengl_shared::camera::{Camera, Movement}; -use learnopengl_shared::model::Model; +use learnopengl_shared_ex::model::Model; const SCR_WIDTH: u32 = 800; const SCR_HEIGHT: u32 = 600; @@ -91,27 +91,27 @@ fn main() { // ------------------------------------------------------------------ let amount = 100000usize; let mut model_matrices = vec![util::glm::diag_mat4(1.0); amount]; - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let radius = 50f32; let offset = 2.5f32; for i in 0..amount { let mut model = util::glm::diag_mat4(1.0); // 1. translation: displace along circle with 'radius' in range [-offset, offset] let angle = i as f32 / amount as f32 * 360.0; - let displacement = (rng.gen::() % (2.0 * offset * 100.0) as i32) as f32 / 100.0 - offset; + let displacement = (rng.random::() % (2.0 * offset * 100.0) as i32) as f32 / 100.0 - offset; let x = angle.sin() * radius + displacement; - let displacement = (rng.gen::() % (2.0 * offset * 100.0) as i32) as f32 / 100.0 - offset; + let displacement = (rng.random::() % (2.0 * offset * 100.0) as i32) as f32 / 100.0 - offset; let y = displacement * 0.4; // keep height of asteroid field smaller compared to width of x and z - let displacement = (rng.gen::() % (2.0 * offset * 100.0) as i32) as f32 / 100.0 - offset; + let displacement = (rng.random::() % (2.0 * offset * 100.0) as i32) as f32 / 100.0 - offset; let z = angle.cos() * radius + displacement; model = glm::translate(&model, &glm::vec3(x, y, z)); // 2. scale: Scale between 0.05 and 0.25f - let scale = (rng.gen::() % 20) as f32 / 100.0 + 0.05; + let scale = (rng.random::() % 20) as f32 / 100.0 + 0.05; model = glm::scale(&model, &util::glm::scale_vec3(scale)); // 3. rotation: add random rotation around a (semi)randomly picked rotation axis vector - let rot_angle = (rng.gen::() % 360) as f32; + let rot_angle = (rng.random::() % 360) as f32; model = glm::rotate(&model, rot_angle, &glm::vec3(0.4, 0.6, 0.8)); // 4. now add to list of matrices diff --git a/crates/4.advanced_opengl/9.2.geometry_shader_exploding/Cargo.toml b/crates/4.advanced_opengl/9.2.geometry_shader_exploding/Cargo.toml index c990920..529533b 100644 --- a/crates/4.advanced_opengl/9.2.geometry_shader_exploding/Cargo.toml +++ b/crates/4.advanced_opengl/9.2.geometry_shader_exploding/Cargo.toml @@ -12,3 +12,4 @@ nalgebra-glm.workspace = true lazy_static.workspace = true image.workspace = true learnopengl-shared = { path = "../../../shared" } +learnopengl-shared-ex = { path = "../../../shared-ex" } diff --git a/crates/4.advanced_opengl/9.2.geometry_shader_exploding/src/main.rs b/crates/4.advanced_opengl/9.2.geometry_shader_exploding/src/main.rs index dd69ef8..e5207c2 100644 --- a/crates/4.advanced_opengl/9.2.geometry_shader_exploding/src/main.rs +++ b/crates/4.advanced_opengl/9.2.geometry_shader_exploding/src/main.rs @@ -22,7 +22,7 @@ use learnopengl_shared::{filesystem, util}; use learnopengl_shared::shader::Shader; use lazy_static::lazy_static; use learnopengl_shared::camera::{Camera, Movement}; -use learnopengl_shared::model::Model; +use learnopengl_shared_ex::model::Model; const SCR_WIDTH: u32 = 800; const SCR_HEIGHT: u32 = 600; diff --git a/crates/4.advanced_opengl/9.3.geometry_shader_normals/Cargo.toml b/crates/4.advanced_opengl/9.3.geometry_shader_normals/Cargo.toml index ff1975f..a5cee16 100644 --- a/crates/4.advanced_opengl/9.3.geometry_shader_normals/Cargo.toml +++ b/crates/4.advanced_opengl/9.3.geometry_shader_normals/Cargo.toml @@ -12,3 +12,4 @@ nalgebra-glm.workspace = true lazy_static.workspace = true image.workspace = true learnopengl-shared = { path = "../../../shared" } +learnopengl-shared-ex = { path = "../../../shared-ex" } diff --git a/crates/4.advanced_opengl/9.3.geometry_shader_normals/src/main.rs b/crates/4.advanced_opengl/9.3.geometry_shader_normals/src/main.rs index 0fde21b..bb4ff31 100644 --- a/crates/4.advanced_opengl/9.3.geometry_shader_normals/src/main.rs +++ b/crates/4.advanced_opengl/9.3.geometry_shader_normals/src/main.rs @@ -22,7 +22,7 @@ use learnopengl_shared::{filesystem, util}; use learnopengl_shared::shader::Shader; use lazy_static::lazy_static; use learnopengl_shared::camera::{Camera, Movement}; -use learnopengl_shared::model::Model; +use learnopengl_shared_ex::model::Model; const SCR_WIDTH: u32 = 800; const SCR_HEIGHT: u32 = 600; diff --git a/crates/5.advanced_lighting/8.1.deferred_shading/Cargo.toml b/crates/5.advanced_lighting/8.1.deferred_shading/Cargo.toml index 2d1a96b..243bee0 100644 --- a/crates/5.advanced_lighting/8.1.deferred_shading/Cargo.toml +++ b/crates/5.advanced_lighting/8.1.deferred_shading/Cargo.toml @@ -14,3 +14,4 @@ lazy_static.workspace = true rand.workspace = true rand_pcg.workspace = true learnopengl-shared = { path = "../../../shared" } +learnopengl-shared-ex = { path = "../../../shared-ex" } diff --git a/crates/5.advanced_lighting/8.1.deferred_shading/src/main.rs b/crates/5.advanced_lighting/8.1.deferred_shading/src/main.rs index 393d00d..31f15bc 100644 --- a/crates/5.advanced_lighting/8.1.deferred_shading/src/main.rs +++ b/crates/5.advanced_lighting/8.1.deferred_shading/src/main.rs @@ -25,7 +25,7 @@ use lazy_static::lazy_static; use rand::{RngCore, SeedableRng}; use rand_pcg::Pcg64; use learnopengl_shared::camera::{Camera, Movement}; -use learnopengl_shared::model::Model; +use learnopengl_shared_ex::model::Model; const SCR_WIDTH: u32 = 800; const SCR_HEIGHT: u32 = 600; diff --git a/crates/5.advanced_lighting/8.2.deferred_shading_volumes/Cargo.toml b/crates/5.advanced_lighting/8.2.deferred_shading_volumes/Cargo.toml index 702d22e..679776a 100644 --- a/crates/5.advanced_lighting/8.2.deferred_shading_volumes/Cargo.toml +++ b/crates/5.advanced_lighting/8.2.deferred_shading_volumes/Cargo.toml @@ -14,3 +14,4 @@ lazy_static.workspace = true rand.workspace = true rand_pcg.workspace = true learnopengl-shared = { path = "../../../shared" } +learnopengl-shared-ex = { path = "../../../shared-ex" } diff --git a/crates/5.advanced_lighting/8.2.deferred_shading_volumes/src/main.rs b/crates/5.advanced_lighting/8.2.deferred_shading_volumes/src/main.rs index 4394113..b95850b 100644 --- a/crates/5.advanced_lighting/8.2.deferred_shading_volumes/src/main.rs +++ b/crates/5.advanced_lighting/8.2.deferred_shading_volumes/src/main.rs @@ -25,7 +25,7 @@ use lazy_static::lazy_static; use rand::{RngCore, SeedableRng}; use rand_pcg::Pcg64; use learnopengl_shared::camera::{Camera, Movement}; -use learnopengl_shared::model::Model; +use learnopengl_shared_ex::model::Model; const SCR_WIDTH: u32 = 800; const SCR_HEIGHT: u32 = 600; diff --git a/crates/5.advanced_lighting/9.ssao/Cargo.toml b/crates/5.advanced_lighting/9.ssao/Cargo.toml index b7cbee1..839fad1 100644 --- a/crates/5.advanced_lighting/9.ssao/Cargo.toml +++ b/crates/5.advanced_lighting/9.ssao/Cargo.toml @@ -12,3 +12,4 @@ nalgebra-glm.workspace = true lazy_static.workspace = true rand.workspace = true learnopengl-shared = { path = "../../../shared" } +learnopengl-shared-ex = { path = "../../../shared-ex" } diff --git a/crates/5.advanced_lighting/9.ssao/src/main.rs b/crates/5.advanced_lighting/9.ssao/src/main.rs index b70eb6a..83fbf0c 100644 --- a/crates/5.advanced_lighting/9.ssao/src/main.rs +++ b/crates/5.advanced_lighting/9.ssao/src/main.rs @@ -24,7 +24,7 @@ use learnopengl_shared::shader::Shader; use lazy_static::lazy_static; use rand::Rng; use learnopengl_shared::camera::{Camera, Movement}; -use learnopengl_shared::model::Model; +use learnopengl_shared_ex::model::Model; const SCR_WIDTH: u32 = 800; const SCR_HEIGHT: u32 = 600; @@ -165,12 +165,12 @@ fn main() { // generate sample kernel // ---------------------- - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let mut ssao_kernel: Vec> = Vec::new(); for i in 0..64 { - let mut sample = glm::vec3(rng.gen::() * 2.0 - 1.0, rng.gen::() * 2.0 - 1.0, rng.gen::()); + let mut sample = glm::vec3(rng.random::() * 2.0 - 1.0, rng.random::() * 2.0 - 1.0, rng.random::()); sample = glm::normalize(&sample); - sample *= rng.gen::(); + sample *= rng.random::(); let mut scale = i as f32 / 64.0; // scale samples s.t. they're more aligned to center of kernel @@ -183,7 +183,7 @@ fn main() { // ---------------------- let mut ssao_noise: Vec> = Vec::new(); for _ in 0..16 { - let noise = glm::vec3(rng.gen::() * 2.0 - 1.0, rng.gen::() * 2.0 - 1.0, 0.0); // rotate around z-axis (in tangent space) + let noise = glm::vec3(rng.random::() * 2.0 - 1.0, rng.random::() * 2.0 - 1.0, 0.0); // rotate around z-axis (in tangent space) ssao_noise.push(noise); } let mut noise_texture = 0u32; gl::GenTextures(1, &mut noise_texture); diff --git a/crates/7.in_practice/3.2d_game/src/game.rs b/crates/7.in_practice/3.2d_game/src/game.rs index 0ccaafe..9e58e04 100644 --- a/crates/7.in_practice/3.2d_game/src/game.rs +++ b/crates/7.in_practice/3.2d_game/src/game.rs @@ -109,8 +109,8 @@ fn is_other_power_up_active( } fn should_spawn(chance: u32) -> bool { - let mut rng = rand::thread_rng(); - let random = rng.gen::() % chance; + let mut rng = rand::rng(); + let random = rng.random::() % chance; random == 0 } diff --git a/crates/7.in_practice/3.2d_game/src/particle_generator.rs b/crates/7.in_practice/3.2d_game/src/particle_generator.rs index 4f2565f..46f660b 100644 --- a/crates/7.in_practice/3.2d_game/src/particle_generator.rs +++ b/crates/7.in_practice/3.2d_game/src/particle_generator.rs @@ -205,9 +205,9 @@ impl ParticleGenerator { offset: glm::TVec2 ) { let particle = &mut self.particles[particle_index]; - let mut rng = rand::thread_rng(); - let random = ((rng.gen::() % 100) as f32 - 50.0) / 10.0; - let r_color = 0.5 + ((rng.gen::() % 100) as f32 / 100.0); + let mut rng = rand::rng(); + let random = ((rng.random::() % 100) as f32 - 50.0) / 10.0; + let r_color = 0.5 + ((rng.random::() % 100) as f32 / 100.0); particle.position = glm::vec2(object.position.x + random + offset.x, object.position.y + random + offset.y); particle.color = glm::vec4(r_color, r_color, r_color, 1.0); particle.life = 1.0; diff --git a/crates/7.in_practice/3.2d_game/src/shader.rs b/crates/7.in_practice/3.2d_game/src/shader.rs index 7aee8f3..7aa192b 100644 --- a/crates/7.in_practice/3.2d_game/src/shader.rs +++ b/crates/7.in_practice/3.2d_game/src/shader.rs @@ -108,7 +108,7 @@ impl Shader { } else { gl::GetProgramiv(object, gl::LINK_STATUS, &mut success); if success == 0 { - gl::GetShaderInfoLog(object, 1024, ptr::null_mut() as _, ptr::addr_of_mut!(info_log) as _); + gl::GetProgramInfoLog(object, 1024, ptr::null_mut() as _, ptr::addr_of_mut!(info_log) as _); let info_log_vec: Vec<_> = Vec::from(info_log).iter().map(|it| *it as u8).collect(); println!("| ERROR::Shader: Link-time error: Type: {}", type_str); println!("{}", String::from_utf8(info_log_vec).unwrap()); diff --git a/shared/src/util/image.rs b/shared/src/util/image.rs index fc94f1d..a2e6404 100644 --- a/shared/src/util/image.rs +++ b/shared/src/util/image.rs @@ -15,8 +15,7 @@ // limitations under the License. use std::error::Error; -use image::{RgbaImage, RgbImage}; -use image::io::Reader as ImageReader; +use image::{ImageReader, RgbaImage, RgbImage}; pub fn load_image_data_rgb(path: String) -> Result> { let img = ImageReader::open(path)?.with_guessed_format()?.decode()?.flipv();