Skip to content

wedesoft/sfsim

Repository files navigation

This is a work in progress. Aim is to simulate take off, space station docking, and moon landing with a futuristic space plane. Requires OpenGL 4.5.

Object shadows on ground

Object self-shadowing

Spaceship rendering with planet, atmosphere, and clouds

Planet rendering with volumetric clouds and night time textures

Rendering of volumetric clouds

Atmospheric scattering and planet level-of-detail rendering

Planetary cloud cover with volumetric clouds with shadows using deep opacity maps

Installation

  • Tested on Debian 12 and Windows 11
  • Install JDK 23 (needed because of the shiny new foreign function and memory API)
  • Install Clojure 1.12
  • Download Packr Jar file for creating Windows executable
  • Install NSIS for building Windows installer

Install JoltPhysics

cd Build
./cmake_linux_clang_gcc.sh Release g++ -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DDOUBLE_PRECISION=ON -DDEBUG_RENDERER_IN_DEBUG_AND_RELEASE=OFF -DPROFILER_IN_DEBUG_AND_RELEASE=OFF
cd Linux_Release
make -j `nproc`
sudo make install
cd ../..

Build

  • Build Worley noise: clj -T:build worley
  • Build Perlin noise: clj -T:build perlin
  • Build blue noise: clj -T:build bluenoise
  • Build cloud cover: clj -T:build cloud-cover
  • Download NASA Bluemarble data: clj -T:build download-bluemarble
  • Download NASA Blackmarble data: clj -T:build download-Blackmarble
  • Download NOAA elevation data: clj -T:build download-elevation
  • Download NASA JPL ephemeris data: clj -T:build download-ephemeris
  • Extract elevation data: clj -T:build extract-elevation
  • Convert day map sectors into pyramid of tiles: clj -T:build map-sectors-day
  • Convert night map sectors into pyramid of tiles: clj -T:build map-sectors-night
  • Convert elevation sectors into pyramid of tiles: clj -T:build elevation-sectors
  • Convert tile pyramids into pyramid of cube maps: clj -T:build cube-maps
  • Build atmosphere lookup tables: clj -T:build atmosphere-lut
  • Perform all build steps above: clj -T:build all
  • Enable integration tests (requiring results of above build steps): touch .integration
  • Build JAR file: clj -T:build uber
  • Create Windows executable: java -jar packr-all-4.0.0.jar packr-config.json (delete out-windows folder first)
  • Create Windows installer: makensis nsis-config.nsi

Lint

Run

  • Run tests: clj -M:test
  • Run test for specific module (rendering for example): clj -M:test sfsim.t-render
  • Run the global cloud cover prototype: clj -M etc/cover.clj
  • Run main program displaying black window: clj -M -m sfsim.core

External Links