diff --git a/src/Maths.hs b/src/Maths.hs index c295df5..941a032 100644 --- a/src/Maths.hs +++ b/src/Maths.hs @@ -4,6 +4,7 @@ module Maths unitVector, randV3, rand, + randRange, reflect, refract, reflectance, @@ -19,6 +20,9 @@ import System.Random rand :: (RandomGen g) => Rand g Double rand = getRandomR (-1.0, 1.0 :: Double) +randRange :: (RandomGen g) => Double -> Double -> Rand g Double +randRange a b = getRandomR (a, b :: Double) + randV3 :: (RandomGen g) => Rand g (V3 Double) randV3 = do x <- rand diff --git a/src/Ray.hs b/src/Ray.hs index 28ed401..b38bfc0 100644 --- a/src/Ray.hs +++ b/src/Ray.hs @@ -25,8 +25,8 @@ calculateRayNormal r t = unitVector (rayAt r t ^-^ V3 0.0 0.0 1.0) buildRayAA :: (RandomGen g) => Double -> Double -> Double -> Double -> Camera -> Rand g Ray buildRayAA u v w h camera = do - ur <- rand - vr <- rand + ur <- randRange 0 1 + vr <- randRange 0 1 return $ buildRay ((u + ur) / w) ((v + vr) / h) camera buildRay :: Double -> Double -> Camera -> Ray