Added randomRange, improve AA
This commit is contained in:
@@ -4,6 +4,7 @@ module Maths
|
|||||||
unitVector,
|
unitVector,
|
||||||
randV3,
|
randV3,
|
||||||
rand,
|
rand,
|
||||||
|
randRange,
|
||||||
reflect,
|
reflect,
|
||||||
refract,
|
refract,
|
||||||
reflectance,
|
reflectance,
|
||||||
@@ -19,6 +20,9 @@ import System.Random
|
|||||||
rand :: (RandomGen g) => Rand g Double
|
rand :: (RandomGen g) => Rand g Double
|
||||||
rand = getRandomR (-1.0, 1.0 :: 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 :: (RandomGen g) => Rand g (V3 Double)
|
||||||
randV3 = do
|
randV3 = do
|
||||||
x <- rand
|
x <- rand
|
||||||
|
|||||||
+2
-2
@@ -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 :: (RandomGen g) => Double -> Double -> Double -> Double -> Camera -> Rand g Ray
|
||||||
buildRayAA u v w h camera = do
|
buildRayAA u v w h camera = do
|
||||||
ur <- rand
|
ur <- randRange 0 1
|
||||||
vr <- rand
|
vr <- randRange 0 1
|
||||||
return $ buildRay ((u + ur) / w) ((v + vr) / h) camera
|
return $ buildRay ((u + ur) / w) ((v + vr) / h) camera
|
||||||
|
|
||||||
buildRay :: Double -> Double -> Camera -> Ray
|
buildRay :: Double -> Double -> Camera -> Ray
|
||||||
|
|||||||
Reference in New Issue
Block a user