renderScene1 :: S.Scene -> Render -> EXR.Image
renderScene1 s render@(Render (resX, resY)) = EXR.ImageRGBF resX resY rs
        where rs = V.concat . (<$>) (force . trace s . V.fromList) . chunksOf (64*64) . rays s $ render


-- parallel scanline order chunked rendering
{-
renderScene2 :: S.Scene -> Render -> Image
renderScene2 s r@(Render (resX, resY)) = ImageRGBF resX resY (V.fromList (rs `using` parListChunk 1000 rdeepseq))
        where rs = trace s . V.fromList . rays s $ r
-}
renderScene1 :: S.Scene -> Render -> EXR.Image
renderScene1 s render@(Render (resX, resY)) = EXR.ImageRGBF resX resY rs
        where rs = V.concat . (<$>) (force . trace s . V.fromList) . chunksOf (64*64) . rays s $ render


-- parallel scanline order chunked rendering
{-
renderScene2 :: S.Scene -> Render -> Image
renderScene2 s r@(Render (resX, resY)) = ImageRGBF resX resY (V.fromList (rs `using` parListChunk 1000 rdeepseq))
        where rs = trace s . V.fromList . rays s $ r
-}
renderScene1 s render@(Render (resX, resY)) = EXR.ImageRGBF resX resY rs
        where rs = V.concat . (<$>) (force . trace s . V.fromList) . chunksOf (64*64) . rays s $ render


-- parallel scanline order chunked rendering
{-
renderScene2 :: S.Scene -> Render -> Image
renderScene2 s r@(Render (resX, resY)) = ImageRGBF resX resY (V.fromList (rs `using` parListChunk 1000 rdeepseq))
        where rs = trace s . V.fromList . rays s $ r
-}