2D Graphics environment with a custom scheme-like scripting language called lambda-oxide. The main aim of the project is to teach fundamentals of programming to kids and introduce beginner programmers to lisp. Skomakare is written in rust and uses glium.
For rendering text, you need to install comic sans ttf font (sudo apt-get install ttf-mscorefonts-installer
).
Draw a square
**> (square red)
**> (square blue)
**> (square "resources/texture.png")
If we want to modify a shape after initially creating it, then you need to save the shape to a variable name.
(define my-square (square blue))
(rotate my-square (/ pi 10))
(move my-square 0.3 0.3)
$ ./setup.sh; cargo run
**>(l "circle.lo")
**>(l "tictactoe.lo")
**>(define my-triangle (triangle red))
**>(move my-triangle 0.3 0.3)
**>(define my-square (square "resources/opengl.png"))
**>(define rotate-square
(lambda (i)
(do (sleep 0.05)
(rotate my-square (/ pi 10))
(if (> i 0)
(rotate-square (- i 1))
"done"))))
**>(rotate-square 1000)
What works, what doesn't:
- options to create hidden objects
- defining new shaders from string in loscirpt
- Making basic shapes with colors
- check-exists function (?? forgot what this note is about)
- triangle
- square
- circle
- can export blender circle to obj after triangulation
- primitive shape constructed in rust
- can construct circle with triangles from loscript (very slow)
- colors/textures
- texture compiled from string and added to shader manager from loscript.
- red, green & blue
- custom color from rgb
- texture from png file (works for triangles and squares)
- texture from jpeg
- add changecolor for existing project
- setting clearcolor from loscript
- text rasterization
- very ugly comic sans without picking colors
- fix opposite orientation
- create better-looking fragment shader with gradients
- account for aspect ratio of text, and be able to pass resolution manually
- changing shapes
- moving shapes
- rotating shapes
- scaling shapes
- setting shape position
- setting rotation
- flip function (x and y)
- setting scale
- add get_pos, get_rot, get_scale to loscript
- add tiny sleep on the render thread loop waiting for events
- scene manager
- connecting rust scenemanager to loscript
- quadtrees
- mouse and keyboard input
- Very basic, needs a re-write
- setup script needs to also be able to update examples-data
- misc
- lisp shaders
- check out stuff from logo
- custom shapes with points, lines or trianges from loscript
- PrimitiveType::Points
- https://en.wikipedia.org/wiki/Octree http://www.gamedev.net/page/resources/_/technical/game-programming/introduction-to-octrees-r3529
old todo:
- TODO
- write README.md
- document Lisp API
- Add pos, rot, scale
- https://doc.rust-lang.org/book/iterators.html
License: GPLv2+