GithubHelp home page GithubHelp logo

aeva / tangerine Goto Github PK

View Code? Open in Web Editor NEW
95.0 3.0 8.0 86.69 MB

๐ŸŠ

Home Page: https://aeva.itch.io/tangerine

License: Apache License 2.0

C++ 70.20% C 11.43% Racket 10.35% GLSL 2.21% Shell 0.12% Batchfile 0.14% Python 0.16% Lua 3.90% CMake 1.13% Scheme 0.32% Nix 0.04%
tangerine tangerine-csg 3d-models constructive-solid-geometry sdf signed-distance-field realtime-rendering

tangerine's Introduction

What is this?

Tangerine is a system for creating 3D models procedurally from a set of Signed Distance Function (SDF) primitive shapes and combining operators. Models are written in Lua, and may be either rendered directly or exported to a variety of common 3D model file formats.

Tangerine currently supports Windows and Linux:

  • Windows release builds can be downloaded from itch.io.

  • The Linux version must be built from source. Build instructions are at the end of this readme. Optionally, you can use Guix to automate the build process.

Getting Started

When you first run Tangerine, you will be greeted with a screen of static. Open one of the models in the models directory to see a working example. These are provided as a programming reference, and for regression testing. There is also API reference documentation available.

Development Environment Setup

Windows

  1. Install Racket CS 8.5, and ensure that raco is in your system path variable. This requirement will be removed in the future.

  2. Install Visual Studio 2022 or newer with at least the C++ stuff.

  3. Clone this project somewhere.

  4. Open windows/tangerine.sln, and then rebuild the project tangerine in either the Debug or Release config. You should now be able to run Tangerine from visual studio for debugging or create your own release builds.

  5. (Optional) Run package.bat to package Tangerine up into a distributable form in the folder distrib.

Linux

You can build the project directly, or you can use Guix to manage the build environment.

Building Manually

  1. Install CMake, a C++17 toolchain (Clang and GCC both seem to work), and SDL2 by whatever means are appropriate for your distro. (If you encounter errors about linking to tinfo, the problem may be related to Curses.) The other dependencies are provided by this repository. As several of the included dependencies contain modifications for this project, it is not advisable to replace them with packaged dependencies. I apologize for the convenience.

  2. Clone this project somewhere.

  3. Run ./linux/build_majuscule.sh.

  4. If all goes well, the binary will show up in ./linux/build/Release/bin/tangerine: you can run it directly from the build directory. (If you want to move it somewhere else, beware that it must find some runtime data from a path relative to the executable: cmake --install handles keeping them together.)

Of course, ./linux/build_majuscule.sh just runs cmake with some sensible options. If you prefer, you can always run cmake directly.

Building with Guix

If you install Guix (which may be as easy as sudo apt install guix), you don't have to worry about any of the other dependencies.

To run Tangerine, automatically building it if needed, try:

guix time-machine -C channels.scm -- \
  shell --rebuild-cache -f guix.scm -- \
    tangerine

You can create an isolated container and enter a shell for interactive building by running:

guix time-machine -C channels.scm -- \
  shell --rebuild-cache -D -f guix.scm --container --emulate-fhs

Adding -- ./linux/build_majuscule.sh to the end of that command will perform a build in the same way as the manual process described above.

Miscellaneous

FreeType License Disclosure

Tangerine optionally integrates RmlUi, which in turn typically requires linking with FreeType. Per the FreeType project license, the use of FreeType must be acknowldeged somewhere in a project's documentation. The use of FreeType in Tangerine via an optional dependency is hereby acknowledged in Tangerine's documentation.

tangerine's People

Contributors

1bardesign avatar aeva avatar eutro avatar liberalartist avatar samth avatar viviicat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

tangerine's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.