Skip to content

Commit a0735c9

Browse files
committed
Updated README + More SDF.
1 parent 6f1d7a4 commit a0735c9

File tree

2 files changed

+26
-21
lines changed

2 files changed

+26
-21
lines changed

README.md

100644100755
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,16 @@ Install native packages on Ubuntu (more or less):
3636
* libglu-dev
3737
* zlib1g-dev
3838
* libglfw3-dev
39+
* libsdl2-dev
40+
* libglew-dev
3941

4042
Retrieve source packages:
4143

4244
``` bash
43-
git clone git@github.com:Chatanga/Hadron.git
44-
git clone git@github.com:Chatanga/GPipe-Core.git
45-
git clone git@github.com:Chatanga/GPipe-GLFW.git
46-
git clone git@github.com:haskell-game/dear-imgui.hs.git
45+
git clone https://github.com/Chatanga/Hadron.git
46+
git clone https://github.com/Chatanga/GPipe-Core.git
47+
git clone https://github.com/Chatanga/GPipe-GLFW.git
48+
git clone https://github.com/haskell-game/dear-imgui.hs.git (pick version 2.1.3)
4749
cd dear-imgui.hs
4850
git submodule init
4951
git submodule update

src/Graphics/RayMarching.hs

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -65,16 +65,19 @@ sdBoxFrame p b e =
6565
]
6666

6767
-- Torus - exact
68+
-- The torus axis is Y
69+
-- tx: torus radius
70+
-- ty: torus section radius
6871
sdTorus :: V3 FFloat -> V2 FFloat -> FFloat
6972
sdTorus (V3 px py pz) (V2 tx ty) = norm (V2 (norm (V2 px pz) - tx) py) - ty
7073

7174
-- Capped Torus - exact (https://www.shadertoy.com/view/tl23RK)
7275
sdCappedTorus :: V3 FFloat -> V2 FFloat -> FFloat -> FFloat -> FFloat
7376
sdCappedTorus p@(V3 px py pz) sc@(V2 scx scy) ra rb =
7477
let p'@(V3 px' py' pz') = V3 (abs px) py pz
75-
pxy = p'^._xy
76-
k = ifThenElse' (scy * px' >* scx * py') (dot pxy sc) (norm pxy)
77-
in sqrt (dot p' p' + ra * ra - 2.0 * ra * k) - rb
78+
p'xy = p'^._xy
79+
k = ifThenElse' (scy * px' >* scx * py') (dot p'xy sc) (norm p'xy)
80+
in sqrt (dot p' p' + ra * ra - 2 * ra * k) - rb
7881

7982
-- Link - exact (https://www.shadertoy.com/view/wlXSD7)
8083
sdLink :: V3 FFloat -> FFloat -> FFloat -> FFloat -> FFloat
@@ -126,10 +129,10 @@ sdHexPrism :: V3 FFloat -> V2 FFloat -> FFloat
126129
sdHexPrism p' (V2 hx hy) =
127130
let splitXY_Z (V3 x y z) = (V2 x y, z)
128131
(kxy, kz) = splitXY_Z (V3 (-0.8660254) 0.5 0.57735)
129-
(pxy, pz) = splitXY_Z (abs p')
130-
V2 px py = pxy - 2 * minB (dot kxy pxy) 0 *^ kxy
132+
(p'xy, pz) = splitXY_Z (abs p')
133+
pxy@(V2 px py) = p'xy - 2 * minB (dot kxy p'xy) 0 *^ kxy
131134
d@(V2 dx dy) = V2
132-
(norm (V2 px py - V2 (clamp px (- kz * hx) (kz * hx)) hx) * signum (py - hx))
135+
(norm (V2 px py - V2 (clamp px (-kz * hx) (kz * hx)) hx) * signum (py - hx))
133136
(pz - hy)
134137
in minB (maxB dx dy) 0 + norm (maxB 0 <$> d)
135138

@@ -429,17 +432,17 @@ sceneDistance' p = (f p, red) where
429432
-- sdBox p (V3 2 4 6)
430433
-- sdRoundBox p (V3 2 4 6) 1
431434
-- sdBoxFrame p (V3 2 4 6) (V3 0.1 0.2 0.3)
432-
f p = sdTorus p (V2 5 1)
433-
-- sdCappedTorus
434-
-- sdLink
435-
-- sdCylinder
436-
-- sdCone
437-
-- sdBoundCone
438-
-- sdInfiniteCone
439-
-- sdPlane
440-
-- sdHexPrism
441-
-- sdTriPrism
442-
-- sdCapsule
435+
-- sdTorus p (V2 5 1)
436+
-- sdCappedTorus p (V2 (sin 1) (cos 1)) 5 1
437+
-- sdLink p 2 5 1
438+
-- sdCylinder p (V3 2 4 6)
439+
-- sdCone p (V2 (sin 0.5) (cos 0.5)) 5
440+
-- sdBoundCone p (V2 (sin 0.5) (cos 0.5)) 5
441+
-- sdInfiniteCone p (V2 (sin 0.5) (cos 0.5))
442+
-- sdPlane p (signorm $ V3 2 1 5) 3
443+
-- sdHexPrism p (V2 2 4)
444+
-- sdTriPrism p (V2 4 2)
445+
f p = sdCapsule p (V3 2 4 6) (V3 1 2 3) 3
443446
-- sdVerticalCapsule
444447
-- sdCappedCylinder
445448
-- sdArbitraryCappedCylinder

0 commit comments

Comments
 (0)