diff options
| author | Sakarias Johansson <sakarias.johansson@goodbyekansas.com> | 2023-01-08 17:51:44 +0100 |
|---|---|---|
| committer | Sakarias Johansson <sakarias.johansson@goodbyekansas.com> | 2023-01-08 17:51:44 +0100 |
| commit | 899f81eed6c221dce22333ad03704b12d7634a54 (patch) | |
| tree | e9ea6b377bada412629341e666ae5d2eb929420a /racer-tracer/src/util.rs | |
| parent | 928b4191bf5a0d27da6d680ccaade7f94860359e (diff) | |
| download | racer-tracer-899f81eed6c221dce22333ad03704b12d7634a54.tar.gz racer-tracer-899f81eed6c221dce22333ad03704b12d7634a54.tar.xz racer-tracer-899f81eed6c221dce22333ad03704b12d7634a54.zip | |
🌍 Add Geometry
- Created a trait for all geometry that has to implement a hit
function. Depending on if the ray hits or not it returns an option
with the color.
- Add support for multiple samples per pixel
Current issues:
- Using cooperative multitasking which isn't that
helpful in this situation since it's like running without async but
without overhead. Should switch to rayon.
- All data gets copied once per job. Will decide later what to
do (copy or put locks and share data between jobs).
Diffstat (limited to 'racer-tracer/src/util.rs')
| -rw-r--r-- | racer-tracer/src/util.rs | 57 |
1 files changed, 16 insertions, 41 deletions
diff --git a/racer-tracer/src/util.rs b/racer-tracer/src/util.rs index e223c67..196b82d 100644 --- a/racer-tracer/src/util.rs +++ b/racer-tracer/src/util.rs @@ -1,43 +1,18 @@ -pub fn hsv_to_rgb(h: f64, s: f64, v: f64) -> u32 { - let s: f64 = s / 100.0; - let v: f64 = v / 100.0; - let c: f64 = s * v; - let mut a: f64 = h / 60.0; - a %= 2.0f64; - let x: f64 = c * (1f64 - (a - 1f64).abs()); - let m: f64 = v - c; +use rand::Rng; +/* +// For later use +fn degrees_to_radians(degrees: f64) -> f64 { + degrees * std::f64::consts::PI / 180.0 +}*/ - let r: f64; - let g: f64; - let b: f64; - if (0.0..60.0).contains(&h) { - r = c; - g = x; - b = 0.0; - } else if (60.0..120.0).contains(&h) { - r = x; - g = c; - b = 0.0; - } else if (120.0..180.0).contains(&h) { - r = 0.0; - g = c; - b = x; - } else if (180.0..240.0).contains(&h) { - r = 0.0; - g = x; - b = c; - } else if (240.0..300.0).contains(&h) { - r = x; - g = 0.0; - b = c; - } else { - r = c; - g = 0.0; - b = x; - } - - let red: u32 = ((r + m) * 255.0) as u32; - let green: u32 = ((g + m) * 255.0) as u32; - let blue: u32 = ((b + m) * 255.0) as u32; - ((red as u32) << 16) | ((green as u32) << 8) | blue as u32 +pub fn random_double() -> f64 { + let mut rng = rand::thread_rng(); + rng.gen::<f64>() } + +/* +// For later use +pub fn random_double_range(min: f64, max: f64) -> f64 { + let mut rng = rand::thread_rng(); + rng.gen_range(min..max) +}*/ |
