Skip to content

Commit c1d16fb

Browse files
committed
Add skydome renderer
1 parent cae8350 commit c1d16fb

File tree

11 files changed

+757
-32
lines changed

11 files changed

+757
-32
lines changed

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ path = "utils/terrain/main.rs"
2424
required-features = ["terrain"]
2525

2626
[features]
27-
default = ["terrain"]
27+
default = ["terrain", "skydome"]
28+
skydome = []
2829
terrain = [
2930
"dep:noise",
3031
"dep:rand",

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ glslc -fshader-stage=vertex src/models/shaders/skin_mesh.vert -o src/models/shad
3939
glslc -fshader-stage=fragment src/models/shaders/skin_mesh.frag -o src/models/shaders/skin_mesh.frag.spv
4040
glslc -fshader-stage=vertex src/features/terrain/shaders/terrain.vert -o src/features/terrain/shaders/terrain.vert.spv
4141
glslc -fshader-stage=fragment src/features/terrain/shaders/terrain.frag -o src/features/terrain/shaders/terrain.frag.spv
42+
glslc -fshader-stage=vertex src/features/skydome/shaders/skydome.vert -o src/features/skydome/shaders/skydome.vert.spv
43+
glslc -fshader-stage=fragment src/features/skydome/shaders/skydome.frag -o src/features/skydome/shaders/skydome.frag.spv
44+
```
45+
4246
```
4347
4448
## Sponsors

src/features.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
1+
#[cfg(feature = "skydome")]
2+
pub mod skydome;
3+
14
#[cfg(feature = "terrain")]
25
pub mod terrain;

src/features/skydome.rs

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
mod renderer;
2+
3+
use crate::math::{Quat, Vec3};
4+
use crate::models::Transform3D;
5+
use crate::{Color, Mesh};
6+
7+
pub use renderer::RenderSkyDome;
8+
9+
pub struct SkyDome {
10+
/// horizon color
11+
pub horizon_color: Color<f32>,
12+
/// zenit color
13+
pub zenith_color: Color<f32>,
14+
/// Mesh
15+
pub mesh: Mesh,
16+
/// Mesh transformation
17+
pub transform: Transform3D,
18+
/// Size
19+
pub size: f32,
20+
}
21+
22+
pub struct SkyLevel {
23+
/// Sky color
24+
pub color: Color<f32>,
25+
/// Level where the color starts
26+
pub level: f32,
27+
}
28+
29+
impl SkyDome {
30+
pub fn new(size: f32, horizon_color: Color<f32>, zenith_color: Color<f32>) -> Self {
31+
let mesh = Mesh::hemisphere("Hemisphere", 64, 32);
32+
let transform = Transform3D {
33+
scale: Vec3::new(size, size, size),
34+
translate: Vec3::new(0.0, -100.0, 0.0),
35+
rotate: Quat::from_axis_angle(Vec3::new(1.0, 0.0, 0.0), -(std::f32::consts::PI / 2.0)),
36+
};
37+
Self {
38+
mesh,
39+
transform,
40+
size,
41+
horizon_color,
42+
zenith_color,
43+
}
44+
}
45+
}
46+
47+
impl Default for SkyDome {
48+
fn default() -> Self {
49+
let horizon_color = Color::rgba(0.67, 0.855, 0.905, 1.0);
50+
let zenith_color = Color::rgba(0.0, 0.44, 0.75, 1.0);
51+
Self::new(800.0, horizon_color, zenith_color)
52+
}
53+
}

0 commit comments

Comments
 (0)