diff --git a/real/smallpt/Makefile b/real/smallpt/Makefile index 2441df324837375e7b10807caab0cb3e0ad30b36..887636fe099af94e850a97ac4f8686b137d106da 100644 --- a/real/smallpt/Makefile +++ b/real/smallpt/Makefile @@ -3,5 +3,9 @@ include $(TOP)/mk/boilerplate.mk SRC_DEPS = unboxed-ref +FAST_OPTS = 1 +NORM_OPTS = 1 +SLOW_OPTS = 6 + include $(TOP)/mk/target.mk diff --git a/real/smallpt/smallpt.hs b/real/smallpt/smallpt.hs index 7b5fa02d753fd9eea5855fe1669431df96d65f0f..216ed291cbc2848674f9490e14bb23d27b842424 100644 --- a/real/smallpt/smallpt.hs +++ b/real/smallpt/smallpt.hs @@ -10,6 +10,7 @@ import Data.Word import GHC.Float (castWord64ToDouble) import Text.Printf import System.IO (Handle, stdout) +import System.Environment (getArgs) -- position, also color (r,g,b) data Vec = Vec {-# UNPACK #-} !Double {-# UNPACK #-} !Double {-# UNPACK #-} !Double @@ -206,6 +207,9 @@ erand48 !t = do writeSTRefU t r' pure d +-- Must be called as ./Main <n> main :: IO () -main = smallpt n (round $ realToFrac n/1.3333) 32 - where n = 512 +main = do + samples <- read . head <$> getArgs + let n = 512 + smallpt n (round $ realToFrac n/1.3333) samples