Skip to content

Commit 70db02a

Browse files
committed
[docs] update readme
1 parent f715532 commit 70db02a

File tree

2 files changed

+74
-28
lines changed

2 files changed

+74
-28
lines changed

README.md

Lines changed: 74 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
![title-image](resources/readme/title.png)
1+
<img width="100%" src="resources/readme/title.png" />
22

33
# Project Island 🌋🐎
44

@@ -20,6 +20,7 @@ build a single, statically linked and optimised binary.
2020

2121
[![C/C++ CI](https://github.com/tgfrerer/island/actions/workflows/c-cpp.yml/badge.svg)](https://github.com/tgfrerer/island/actions/workflows/c-cpp.yml)
2222

23+
2324
## Main Features:
2425

2526
* **Hot-reloading**: An Island project is made from isolated c/cpp
@@ -57,10 +58,12 @@ build a single, statically linked and optimised binary.
5758
renderpasses. Renderpasses are executed on-demand and synchronised
5859
automatically by evaluating a rendergraph. If a renderpass is
5960
detected to have no effect on the final image, it is automatically
60-
pruned. For Debug targets, the rendergraph generates `.dot` files,
61-
which can be drawn using graphviz.
62-
63-
![graphviz-screenshot](resources/readme/graph_screenshot.png)
61+
pruned. When requested, the rendergraph generates `.dot` files,
62+
which can be drawn using graphviz. More about how Island builds its rendergraph in [this blog post][rendergraph-blog].
63+
64+
<img width="350" src="resources/readme/graph_screenshot.png" align="right" />
65+
66+
* **Automatic GPU multiqueue**: renderpasses are automatically distributed onto any avaliable render queues - if resources need to be transferred between queue families, this happens automatically. More about how Island distributes workloads across renderqueues and synchronises them in [this blog post][rendergraph-syn-blog].
6467

6568
* **Static release binaries**: While Island is highly modular and
6669
dynamic when compiled for Debug, it can compile into a single,
@@ -78,14 +81,14 @@ build a single, statically linked and optimised binary.
7881
specialisation.
7982

8083
* **Helpers**: minimal effort to enable multisampling, import images,
81-
fonts
84+
import and display fonts
8285

83-
* **2d drawing context**: Draw thick lines and curves using
84-
`le_paths`, which specialises in 2d meshes. This module implements
86+
* **2D drawing context**: Draw thick lines and curves using
87+
`le_paths`, which specialises in 2D meshes. This module implements
8588
a useful subset of the SVG command palette, and includes some extras
8689
like for example a command to smoothen open or closed Bézier curves
8790
by applying the [Hobby algorithm][hobby]. Thick Bézier curves are
88-
drawn using [an algorithm outlined by T. F. Hain][hain].
91+
drawn using [an algorithm after T. F. Hain][hain].
8992

9093
* **glTF** Island wraps [cgltf][cgltf-link] for gltf file import, and
9194
the `le_stage` module can display and render most features found in
@@ -110,25 +113,75 @@ build a single, statically linked and optimised binary.
110113
[hobby]: http://weitz.de/hobby/
111114
[cgltf-link]: https://github.com/jkuhlmann/cgltf
112115
[example-multiwindow]: apps/examples/multi_window_example/
116+
[rendergraph-blog]: https://poniesandlight.co.uk/reflect/island_rendergraph_1/
117+
[rendergraph-sync-blog]: https://poniesandlight.co.uk/reflect/island_rendergraph_2/
118+
119+
120+
## Examples ([more examples](apps/examples/))
121+
122+
Island comes with a number of examples. No collection of examples
123+
would be complete without a
124+
125+
| [Hello Triangle](apps/examples/hello_triangle/) | and a [Hello World](apps/examples/hello_world/) example |
126+
| --- | --- |
127+
|<img width="350" src="apps/examples/hello_triangle/screenshot.png" />|<img width="350" align="right" src="apps/examples/hello_world/screenshot.jpg" />|
128+
129+
A full list of examples can be found [here](apps/examples/). Examples can be used as starting point for new projects by using the project generator.
113130

114131
## Tools
115132

116-
+ [Project generator][app-generator]: Generates scaffolding for new
117-
apps, based on project templates
133+
+ [Project generator][project-generator]: Generates scaffolding for new
134+
projects, based on project templates
118135
+ [Module generator][module-generator]: Generates scaffolding for new
119136
modules.
120137

121-
## Examples ([more examples](apps/examples/))
138+
## Project Generator
122139

123-
Island comes with a number of examples. No collection of examples
124-
would be complete without a [hello
125-
triangle](apps/examples/hello_triangle/) example, and a [hello
126-
world](apps/examples/hello_world/) example.
140+
Island projects can be scaffolded from templates (or from other, existing projects) by invoking the project generator python script. This script lives in the `scripts` folder, but can be invoked from anywhere.
141+
142+
```bash
143+
# say myapps is where I want to place a new island project
144+
cd island/apps/myapps
127145

128-
![Hello triangle example](apps/examples/hello_triangle/screenshot.png)
129-
![Hello world example](apps/examples/hello_world/screenshot.jpg)
146+
# this will create a new project based on the "hello triangle" template
147+
../../scripts/create_project.py mynewproject
130148

131-
A full list of examples can be found [here](apps/examples/). More examples to come.
149+
# this will create a new project based on the "full screen quad" template
150+
../../scripts/create_project.py mynewquadproject -t quad_template
151+
152+
# this will create a new project based on the project "myoldproject", if it can be found in the current directory
153+
../../scripts/create_project.py anotherproject -T . -t myoldproject
154+
```
155+
```bash
156+
# print options and help for project generator via
157+
../../scripts/create_project.py -h
158+
```
159+
```txt
160+
usage: create_project.py [-h] [-T TEMPLATE_DIR] [-t TEMPLATE_NAME]
161+
project_name
162+
163+
Create a new Island project based on a template / or an existing
164+
project.
165+
166+
positional arguments:
167+
project_name Specify the name for new project to create
168+
from template.
169+
170+
options:
171+
-h, --help show this help message and exit
172+
-T TEMPLATE_DIR, --template-dir TEMPLATE_DIR
173+
Specify a path *relative to the current
174+
directory* in which to look for project
175+
template directories. Use dot (".") to search
176+
for project directories within the current
177+
directory - for example if you wish to
178+
duplicate an existing project as a starting
179+
point for a new project.
180+
-t TEMPLATE_NAME, --template-name TEMPLATE_NAME
181+
Specify the name for template. This can be
182+
the name of any project directory within
183+
TEMPLATE_DIR.
184+
```
132185

133186
## Modules
134187

@@ -175,11 +228,11 @@ provides you with a scaffold to start from.
175228
[link-stb_truetype]: https://github.com/nothings/stb/blob/master/stb_truetype.h
176229
[link-cgltf]: https://github.com/nothings/stb/blob/master/stb_truetype.h
177230
[module-generator]: scripts/create_module.py
178-
[app-generator]: scripts/create_app.py
231+
[project-generator]: scripts/create_project.py
179232
[link-shaderc]: https://github.com/google/shaderc/
180233
[glfw]: https://github.com/glfw/glfw
181234

182-
# Installation instructions
235+
# Setup instructions
183236

184237
Island should run out of the box on a modern Linux system with the
185238
current Vulkan SDK and build tools installed. For Windows, build
@@ -284,13 +337,6 @@ a modern rendering API (Vulkan), to learn by trying out ideas around
284337
modern realtime-rendering, and to have a framework to create [visual
285338
experiments](http://instagram.com/tgfrerer) with.
286339

287-
288-
## Acknowledgements
289-
290-
I would like to thank the folks at [our machinery][our_machinery] for
291-
their wonderful [blog posts][our_mach_blog] on engine architecture and hot
292-
reloading, these were a big initial inspiration for this project.
293-
294340
[our_machinery]: https://ourmachinery.com/
295341
[our_mach_blog]: https://ourmachinery.com/post/little-machines-working-together-part-1/
296342
[readme-win]: README_WINDOWS.md
13.3 KB
Loading

0 commit comments

Comments
 (0)