summaryrefslogtreecommitdiff
path: root/README.md
blob: b295824f4369434b6a1ef51a662fc71115af8194 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
*BOWSHOCK 0.C.0-11*

![](https://mandelbrot.dk/logo/bowshock.svg)

# CHANGELOG

Read: `CHANGELOG.md`

# COMPILATION

Bowshock uses CMake as its build system. The standard option `CMAKE_BUILD_TYPE` may be set to either `Release` or `Debug`, depending on the build type.

The main program is written in C++20, and a conforming compiler is therefore required. OpenGL 3.2 is used for rendering, and the shaders are therefore written in GLSL 1.5.

Before compilation, an appropriate *GLAD* loader must be downloaded. For more information, read: *COMPILATION > DEPENDENCIES > GLAD*

<https://glad.dav1d.de/#language=c&specification=gl&api=gl%3D3.2&api=gles1%3Dnone&api=gles2%3Dnone&api=glsc2%3Dnone&profile=core&loader=on>

The script `extractGlad.sh` will extract `glad.zip` (or any other archive – if specified) to `glad`. It also copies a CMake lists file to the directory.

```
./extractGlad.sh <archive>
```

Before running – however – the data directory must be installed. This can be done via the installation script `install.sh`:

```
./install.sh data [data directory]
```

## DEPENDENCIES

Bowshock makes use of the following libraries:

* {fmt}
* GLAD (see below)
* GLFW3

For {fmt}, the appropriate package is `fmt` (Arch). For GLFW, both `glfw-wayland` and `glfw-x11` (both Arch) may be used.

### GLAD

The GLAD loader must be downloaded from a web instance. I use the one on `dav1d.de`, with the following settings:

<https://glad.dav1d.de/#language=c&specification=gl&api=gl%3D3.2&api=gles1%3Dnone&api=gles2%3Dnone&api=glsc2%3Dnone&profile=core&loader=on>

The script `extractGlad.sh` will extract `glad.zip` (or any other archive – if specified) to `glad`. It also copies a CMake lists file to the directory.

```
./extractGlad.sh <archive>
```

# DEVELOPMENT

To initialise the environment, I use the following commands:

```
rm -fr build && \
rm -fr bindir && \
rm -fr datdir && \
./extractGlad.sh && \
cmake -Bbuild -DBOW_DATA_DIRECTORY="${PWD}/datdir" -DCMAKE_BUILD_TYPE=Debug . && \
./install.sh data "${PWD}/datdir"
```

… and from there just use the following to build the project:

```
clear && \
./validateShaders.py && \
cmake --build build && \
build/bowshock/bowshock --skip
```

## SHADER VALIDATION

The shaders at `bowshock/shader` may be validated using the Python script `validateShaders.py`. If the shaders contain errors, and these are not fixed before installation, the program will fail to compile them during run‐time.

# INSTALLATION

The script `install.sh` will install the executable, the assets, the shaders, etc. to the specified directories:

```
./install.sh all [build directory] [binary directory] [data directory]
```

# MIRRORS

mandelbrot.dk (main): <https://mandelbrot.dk/bowshock>

GitLab: <https://gitlab.com/bjoernager/bowshock.git>

GitHub: <https://github.com/bjoernager/bowshock.git>

# CREDITS

Read: `CREDITS.txt`