[svn] r5975: nemerle/trunk/snippets/raytracer: Makefile ray-cs.cs
ray-hand-opt.n ray.cs ray.n
malekith
svnadmin at nemerle.org
Mon Nov 28 12:53:01 CET 2005
Log:
Make run: target run three testcases. hand-opt seems to give NOTHING!
Author: malekith
Date: Mon Nov 28 12:53:00 2005
New Revision: 5975
Added:
nemerle/trunk/snippets/raytracer/ray-cs.cs
- copied unchanged from rev 5972, nemerle/trunk/snippets/raytracer/ray.cs
Removed:
nemerle/trunk/snippets/raytracer/ray.cs
Modified:
nemerle/trunk/snippets/raytracer/Makefile
nemerle/trunk/snippets/raytracer/ray-hand-opt.n
nemerle/trunk/snippets/raytracer/ray.n
Modified: nemerle/trunk/snippets/raytracer/Makefile
==============================================================================
--- nemerle/trunk/snippets/raytracer/Makefile (original)
+++ nemerle/trunk/snippets/raytracer/Makefile Mon Nov 28 12:53:00 2005
@@ -40,13 +40,18 @@
# TARGETS
############################################################
-all: run
+all: links run
-ray.exe: links ray.n
- $(EXECUTE) ../../ncc/out.stage3/ncc.exe -g ray.n -o ray.exe
+%.exe: %.n
+ $(EXECUTE) ../../ncc/out.stage3/ncc.exe -g $< -o $@
-run: ray.exe
+%.exe: %.cs
+ gmcs $<
+
+run: ray.exe ray-hand-opt.exe ray-cs.exe
time $(EXECUTE) ./ray.exe 9 128 > out.ppm
+ time $(EXECUTE) ./ray-hand-opt.exe 9 128 > out.ppm
+ time $(EXECUTE) ./ray-cs.exe 9 128 > out.ppm
links:
ln -fs ../../ncc/out.stage3/*.dll .
Modified: nemerle/trunk/snippets/raytracer/ray-hand-opt.n
==============================================================================
--- nemerle/trunk/snippets/raytracer/ray-hand-opt.n (original)
+++ nemerle/trunk/snippets/raytracer/ray-hand-opt.n Mon Nov 28 12:53:00 2005
@@ -23,7 +23,7 @@
variant Scene
| Sphere { m : Vec; r : double; }
- | Group { m : Vec; s : double; l : list [Scene]; }
+ | Group { m : Vec; r : double; l : list [Scene]; }
module M
delta = 1.49011611938476562e-08
@@ -46,11 +46,16 @@
intersect (orig : Vec, dir : Vec, scene : Scene, first : double * Vec) : double * Vec
def l = first [0]
match (scene)
- | Scene.Sphere (center, radius) =>
+ | Scene.Sphere as s =>
+ def center = s.m
+ def radius = s.r
def l' = ray_sphere (orig, dir, center, radius)
if (l' >= l) first
else (l', (orig + l' * dir - center).Unitise ())
- | Scene.Group (center, radius, scenes) =>
+ | Scene.Group as g =>
+ def center = g.m
+ def radius = g.r
+ def scenes = g.l
def l' = ray_sphere (orig, dir, center, radius)
if (l' >= l) first
else
Modified: nemerle/trunk/snippets/raytracer/ray.n
==============================================================================
--- nemerle/trunk/snippets/raytracer/ray.n (original)
+++ nemerle/trunk/snippets/raytracer/ray.n Mon Nov 28 12:53:00 2005
@@ -2,6 +2,8 @@
#pragma indent
using System.Math
+#define BETTER_MATCHING
+
/*
let delta = Sqrt epsilon_float
type vec = { x: float; y: float; z: float }
More information about the svn
mailing list