Skip to content

Commit 6b5de21

Browse files
Update Readme.md, the SSH checkout requirement, contributors, etc.
@AnastaZIuk please check the Android build instructions are still up to date. Also check if we need a `gl.h` anymore, it should already be in `src/3rdparty/` ? Address the TODOs @Przemog1 swap out for better screenshots from #showcase channel. P.S. Bump staff titles.
1 parent a16fec1 commit 6b5de21

File tree

1 file changed

+57
-48
lines changed

1 file changed

+57
-48
lines changed

README.md

Lines changed: 57 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,28 @@
44

55
**Nabla** (previously called **[IrrlichtBaW](https://github.com/buildaworldnet/IrrlichtBAW)** ) is a new renovated version of older **[Irrlicht](http://irrlicht.sourceforge.net/)** engine.
66
The name change to Nabla allows for using Nabla side by side with the legacy Irrlicht and IrrlichtBaW engines.
7-
The project currently aims for a thread-able and *Vulkan*-centered API, but currently works on *OpenGL* only.
7+
The project currently aims for a thread-able and *Vulkan*-centered API, the Vulkan backend is almost complete, and OpenGL and ES backends are currently in maintenance mode.
88

9-
This framework has been kindly begun by the founder ***[@devshgraphicsprogramming](https://github.com/devshgraphicsprogramming)*** of **[Devsh Graphics Programming Sp. z O.O.](http://devsh.eu/)** and almost entirely sponsored by **Build A World Aps**. in it's early days, and now picked up by the **[Ditt](https://www.ditt.nl/)** company. The `stable-ish` branch is used in production releases of **[Build A World EDU](https://edu.buildaworld.net/)**, since 2015. The framework has been used both for game development and ArchViz.
9+
This framework has been kindly begun by the founder ***[@devshgraphicsprogramming](https://github.com/devshgraphicsprogramming)*** of **[Devsh Graphics Programming Sp. z O.O.](http://devsh.eu/)** and was almost entirely sponsored by **Build A World Aps**. in it's early days, and now has been picked up by the **[Ditt](https://www.ditt.nl/)** company.
1010

1111
## (Get Hired) Jobs and Internships
1212

1313
If you are a programmer with a passion for High Performance Computing, Mathematics and Computer Graphics
1414

15-
If you can work 100% remotely and be in charge of your own time managment
15+
If you can be in charge of your own time managment and work 4-day work weeks 100% remotely
1616

1717
Then make something impressive using Nabla, open a PR and contact us (jobs devsh.eu) with your CV.
1818

19-
We would also be happy to sponsor your master thesis as long as:
19+
We would also be happy to sponsor your master or bachelor thesis as long as:
2020
- You are an above average student with an interest in Graphics
2121
- It will be written in English
2222
- It will produce contributions to Nabla which we can license under Apache 2.0
2323

24+
For internships contact us with:
25+
- CV in english
26+
- A neat description of any paperwork you'll need (schools/universities)
27+
_Most importantly contact us at least 3 weeks in advance of your internship organisation deadline!_
28+
2429
## (Hire Us) Contracting
2530

2631
The members of **Devsh Graphics Programming Sp. z O.O.** (Company Registration (KRS) #: 0000764661) are available (individually or collectively) for contracts on projects of various scopes and timescales, especially on foreign frameworks, codebases and third-party 3D frameworks.
@@ -30,6 +35,7 @@ The members of **Devsh Graphics Programming Sp. z O.O.** (Company Registration (
3035
- OpenGL
3136
- OpenGL ES
3237
- WebGL
38+
- WebGPU
3339
- Vulkan
3440
- OpenCL
3541
- CUDA
@@ -40,9 +46,9 @@ The members of **Devsh Graphics Programming Sp. z O.O.** (Company Registration (
4046
- video encoding and decoding
4147
- High Performance Computing
4248

43-
Our language of choice is C++17 with C++11 and C11 coming in close second, however we're also amenable to Java, Python and related languages.
49+
Our language of choice is C++17 with C++11 and C11 coming in close second, however we're also amenable to C#, Java, Python and related languages.
4450

45-
Contact ***[@devshgraphicsprogramming](https://github.com/devshgraphicsprogramming)*** (e-mail available in the GitHub profile) with inquires into contracting.
51+
Contact `newclients@devsh.eu` with inquires into contracting.
4652

4753
## Showcase
4854

@@ -134,6 +140,7 @@ Contact ***[@devshgraphicsprogramming](https://github.com/devshgraphicsprogrammi
134140

135141
## Main Features
136142

143+
- **Frontend API with Vulkan as First Class Citizen**
137144
- **Thread safe and context pollution safe OpenGL**
138145
- **Asset management pipeline**
139146
- **Automatic pipeline layout creation**
@@ -143,27 +150,28 @@ Contact ***[@devshgraphicsprogramming](https://github.com/devshgraphicsprogrammi
143150
- **Compute shaders**
144151
- **Virtual Texturing**
145152
- **Virtual Geometry (programmable and non programmble fetching) with triangle batching**
146-
- **CUDA and OpenGL interop**
147-
- **OpenCL and OpenGL interop**
153+
- **CUDA and Vulkan interop**
148154
- **CPU asset manipulation (image filtering, image format transcoding, mesh optimization and manipulation)**
155+
- **GPU driven Scene Graph**
156+
- **Material Compiler for Path Tracing UberShaders**
149157

150158
## Main Delivered Extensions
151159

152160
- **Auto Exposure**
153161
- **Tonemapper**
154162
- **Mitsuba scene loader (auto-generated shaders)**
155-
- **Fastest blur on the planet**
156-
- **Radeon rays interop**
163+
- **Fastest blur on the planet**
157164
- **OptiX interop**
158165
- **Bullet physics beginner integration**
166+
- **GPU Radix Sort**
159167

160168
## Platforms
161169

162170
- [x] **Windows**
163171

164172
- [x] **Linux**
165173

166-
- [ ] **Android 7.0 +** (WIP)
174+
- [x] **Android 7.0 +**
167175

168176
- [ ] **Mac OS**
169177

@@ -175,15 +183,15 @@ Contact ***[@devshgraphicsprogramming](https://github.com/devshgraphicsprogrammi
175183
### Vanilla Build - most extensions disabled
176184

177185
- **[CMake](https://cmake.org/download/)**
178-
- **[MSVC](https://visualstudio.microsoft.com/pl/downloads/)** or **[GCC](https://sourceforge.net/projects/mingw-w64/)**
179-
- **[Vulkan SDK](https://vulkan.lunarg.com/sdk/home)**, at least **1.2.198.1** version ***without* any components** installed
186+
- **[MSVC](https://visualstudio.microsoft.com/pl/downloads/)** or **[GCC](https://sourceforge.net/projects/mingw-w64/)** or **[NDK's Clang](https://TODO.todo/)**
187+
- **[Vulkan SDK](https://vulkan.lunarg.com/sdk/home)**, at least **1.2.198.1** version ***without* any components** (they break out SPIR-V Tools integration) installed
180188
- **[Perl 5.28 executable version](https://www.perl.org/get.html)**
181189
- **[NASM](https://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D)**
182-
- **[Python 3.8](https://www.python.org/downloads/release/python-380/)** or later
190+
- **[Python 3.8](https://www.python.org/downloads/release/python-380/)** or later (3.10.2 required for Renderdoc based GPU Automated Tests)
183191

184-
### Vanilla + CUDA Build
192+
#### Vanilla + CUDA Build
185193

186-
**Nabla** only supports *CUDA* interop using the Driver API not the Runtime API. We use the runtime compiled CUDA.
194+
**Nabla** only supports *CUDA* interop using the Driver API not the Runtime API. We use NVRTC to produce runtime compiled PTX.
187195

188196
Because *CUDA* needs its own version the GeForce (Quadro or Tesla) Driver, its often a few minor versions behind your automatically updated Windows driver, the install will fail even if it prompts you to agree to installing an older driver.
189197

@@ -197,7 +205,7 @@ On Windows *CMake* has trouble finding new packages installed after *CMake*, so
197205

198206
You can also thank NVidia for making the CUDA SDK a whole whopping 2.5 GB on Windows.
199207

200-
### Vanilla + CUDA + Optix Build
208+
#### Vanilla + CUDA + Optix Build
201209

202210
After dealing with *CUDA* installing just install *Optix SKD*.
203211

@@ -226,22 +234,21 @@ Having Nabla generated you need to enter build directory, launch the terminal an
226234

227235
**Note:** each example provided by the engine builds as an executable with non-cross builds and with target of a name called `a_target`, in following example above it would be `android_sample`. When building cross-compile for android **to produce the APK file you need to add `_apk` postfix to the `a_target`, because `a_target` gets built then as a library.
228236

229-
#### Chrome Book SDK version
237+
#### DEPRECATED: Chrome Book SDK version
230238

231239
In order for the chromebook to work with the apk you build you need to install the right SDK version. Go to **Tools** -> **SDK Manager** -> **System Settings** -> **Android SDK** then select the *SDK Platforms* tab and tick the "Show Packake Details" checkbox in the bottom-right corner. After that select *Android 9.0 (Pie) -> Android SDK Platform 28* and hit "OK".
232240

233-
#### Chrome Book upload
241+
#### DEPRECATED: Chrome Book upload
234242

235243
To upload generated *.apk* into your ChromeBook you need first to make sure your device is in *developer mode* state. If it is, you can open Android Studio and choose Debug or Profile choosing *.apk* file. Then you will need to connect to your device using **adb** connector. To make use of adb, you need to find path to the executable that is placed in `C:/Users/<your_user>/AppData/Local/AndroidSdk/platform-tools` directory. When found, you can type in Android Studio command line `C:/Users/<your_user>/AppData/Local/AndroidSdk/platform-tools/adb connect <IP of ChromeBook network>`. You can find ChromeBook's IP by entering network settings and choosing current network ChromeBook is connected to. This way the ChromeBook should be listed in available devices and you should be able to upload *.apk* to the machine through debugging app shortcut. Take into account that you won't probably be able to debug in that scenario, but you will be able to upload *.apk* to the device.
236244

237-
#### Chrome Book debug
245+
#### DEPRECATED: Chrome Book debug
238246

239247
To debug the *.apk* on your chromebook you need to open the source file you want to debug in Android Studio (Either via *File->Open* or Drag&Drop, but be aware that d&d can deadlock your Android Studio 25% of the time so youll need to restart it), then place your breakpoints and hit "Debug" (The bug icon) in the top right corner.
240248

241249
## External Dependencies
242250

243251
- **gl.h** header for *OpenGL* (possible to obtain even on headless servers from *mesa-libgl-devel*)
244-
- **OpenCL SDK** (can get rid of it by compiling without the two *OpenCL* files)
245252

246253
## Future Boost Library Dependencies
247254

@@ -255,14 +262,16 @@ To debug the *.apk* on your chromebook you need to open the source file you want
255262

256263
The maybe's depend on how *xplatform* and easy to operate the *boost::context* is, esp w.r.t. Linux, Windows and Android. We will not use *boost::fibers* as we need our own complex scheduler.
257264

258-
## Building Nabla library
265+
## Building the Nabla library
259266

260267
### Cloning the project
261268

269+
**NOTICE: Due to GitHub SSH policy, our CI needed all submodules to be added with SSH URLs. THIS MEANS YOU NEED TO CHECKOUT THE SUPERPROJECT VIA SSH!**
270+
262271
Begin with cloning **Nabla** with:
263272

264273
```shell
265-
git clone --recurse-submodules -j8 https://github.com/Devsh-Graphics-Programming/Nabla.git
274+
git clone --recurse-submodules -j8 git@github.com:Devsh-Graphics-Programming/Nabla.git
266275
```
267276

268277
If you haven't cloned `recursive`ly, you have to also perform:
@@ -272,7 +281,7 @@ git submodule init
272281
git submodule update
273282
```
274283

275-
*CMake* config script will try to initialize submodules for you however as well, but it doesn't mean the initialization attempt will be successful.
284+
*CMake* config script will try to initialize submodules for you however as well, but it doesn't mean the initialization attempt will be successful (it often is not when performed on a shaky internet connection, and you end up with dirty, locked or unversioned submodules).
276285

277286
### Submodules
278287

@@ -284,6 +293,12 @@ git submodule foreach --recursive git reset --hard
284293
git submodule update --init --recursive
285294
```
286295

296+
#### TODO: DOCUMENT THE NBL_UPDATE_SUBMODULE flag
297+
298+
By default Nabla's cmake...
299+
300+
But if you're working on making changes to one of our customized dependencies, you want to disable that, to not have the submodule reset on every CMake reconfigure (which may happen during a build).
301+
287302
#### Weird CMake behaviour, notes
288303

289304
Sometimes it may appear that there **won't be any files in submodules directories**. If so, you have to bring them back by using:
@@ -292,13 +307,7 @@ Sometimes it may appear that there **won't be any files in submodules directorie
292307
git reset --hard
293308
```
294309

295-
on each submodule's directory required! Furthermore you have to:
296-
297-
```shell
298-
git checkout tags/glew-cmake-2.1.0
299-
```
300-
301-
in *glew* directory that you can find in ***3rdparty/CEGUI/glew*** directory because of *glew* commiting politics. Having done it you can switch to your ***master/root*** directory and commit those changes if you want, but it isn't necessary to compile entire library.
310+
on each submodule's directory required!
302311

303312
### CMake notes
304313

@@ -391,41 +400,41 @@ add_executable(executableTest main.cpp) # assuming main.cpp exsists
391400
addNablaModule(executableTest "${NBL_INSTALL_DIR}")
392401
```
393402

394-
If you want to use git (without a submodule) then you can use `ExternalProject_Add` with the `GIT_` properties instead.
403+
If you want to use git (without a submodule) then you can use `ExternalProject_Add` with the `GIT_` properties instead.
395404

396-
I recommend you use `ExternalProject_Add` instead of `add_subdirectory` for **Nabla** as we haven't tested its use by *3rdparty* applications that use *CMake* to build themselves yet (**BaW EDU** uses it directly from *MSVC*/*make* like it's still the stone-age of build systems).
405+
I recommend you use `ExternalProject_Add` instead of `add_subdirectory` for **Nabla** as we haven't tested its use by *3rdparty* applications that use *CMake* to build themselves yet.
406+
407+
## Automated Builds (TODO)
397408

398409
## License
399410

400411
**Nabla** is released under the **[Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0)** license. See [**LICENSE.md**](https://github.com/Devsh-Graphics-Programming/Nabla/blob/master/LICENSE.md) for more details.
401412

402-
## API documentation, help and extra improvements
403-
404-
If you would like to take care of documenting some files, please **[click it](https://github.com/Devsh-Graphics-Programming/Nabla/wiki/Documentation)**. If you feel like you'd be interesting in improving and maintaining this repository's wiki, contact ***[@devshgraphicsprogramming](https://github.com/devshgraphicsprogramming)*** on **[Discord](https://discord.gg/4MTCVaN)**.
413+
## Documentation (WIP/TODO)
405414

406415
## Official Support (Discord)
407416

408-
Permament members of *Devsh Graphics Programming Sp. z O.O.* use this to organise publicly visible work. **[Join to the server](https://discord.gg/4MTCVaN)** to get into more details. There's also a skype support group, reach ***[@devshgraphicsprogramming](https://github.com/devshgraphicsprogramming)*** for a private invite.
417+
Permament members of *Devsh Graphics Programming Sp. z O.O.* use this to organise publicly visible work. **[Join to the server](https://discord.gg/4MTCVaN)** to get into more details.
409418

410419
## Credits and Attribution
411420

412421
#### The authors of **Nabla** are:
413422

414-
- **Mateusz Kielan** ***[@devshgraphicsprogramming](https://github.com/devshgraphicsprogramming)*** (Lead)
415-
- **Krzysztof Szenk** ***[@crisspl](https://github.com/Crisspl)*** (Core Engineer)
416-
- **Arkadiusz Lachowicz** ***[@AnastaZIuk](https://github.com/AnastaZIuk)*** (Junior Programmer)
417-
- **Przemysław Pachytel** ***[@Przemog1](https://github.com/Przemog1)*** (Junior Programmer)
418-
- **Achal Pandey [@achalpandeyy](https://github.com/achalpandeyy)** (Junior Programmer)
419-
- **Danylo Sadivnychyi [@sadiuk](https://github.com/sadiuk)** (Junior Programmer)
420-
- **Erfan Ahmadi [@Erfan](https://github.com/Erfan-Ahmadi)** (Junior Programmer)
423+
- **Mateusz Kielan** ***[@devshgraphicsprogramming](https://github.com/devshgraphicsprogramming)*** (Lead Programmer)
424+
- **Arkadiusz Lachowicz** ***[@AnastaZIuk](https://github.com/AnastaZIuk)*** (Associate Graphics Programmer/Senior Build System Engineer)
425+
- **Erfan Ahmadi [@Erfan](https://github.com/Erfan-Ahmadi)** (Mid Programmer)
426+
- **Achal Pandey [@achalpandeyy](https://github.com/achalpandeyy)** (Associate Programmer)
427+
- **Przemysław Pachytel** ***[@Przemog1](https://github.com/Przemog1)*** (Junior Programmer/Technical Writer)
421428

422429
#### Past Authors and Contributors:
423430

431+
- **Krzysztof Szenk** ***[@crisspl](https://github.com/Crisspl)*** (Senior Programmer: Everything in Nabla has been touched by his golden hands!)
432+
- **Danylo Sadivnychyi [@sadiuk](https://github.com/sadiuk)** (Junior Programmer: Android system interfaces and buildsystem, FFT Ocean)
433+
- **Cyprian Skrzypczak** ***[@Hazardu](https://github.com/Hazardu)*** (embeded resources and optimalizations)
424434
- ***[@khom-khun](https://github.com/khom-khun)*** (Bullet Physics Extension + Example and **[the irrBaW-test repository of easy to understand demos](https://github.com/khom-khun/irrBAW-test)**)
425-
- ***[@manhnt9](https://github.com/manhnt9)*** **Nguyễn Tiến Mạnh** (CEGUI, Build System and Radeon Rays Proof-of-Concept Integration in Prime Engine X with IrrlichtBaW back-end)
426-
- ***[@florastamine](https://github.com/florastamine)*** **Nguyễn Ngọc Huy** (sRGB-Correct Image Loaders, CEGUI and BRDF Explorer GUI)
427435
- **Søren Gronbech**
428-
- **Cyprian Skrzypczak** ***[@Hazardu](https://github.com/Hazardu)*** (embeded resources and optimalizations)
436+
- ***[@florastamine](https://github.com/florastamine)*** **Nguyễn Ngọc Huy** (sRGB-Correct Image Loaders, CEGUI and BRDF Explorer GUI)
437+
- ***[@manhnt9](https://github.com/manhnt9)*** **Nguyễn Tiến Mạnh** (CEGUI, Build System and Radeon Rays Proof-of-Concept Integration in Prime Engine X with IrrlichtBaW back-end)
429438

430439
#### Words of appreciation for developers whose software has been used in **Nabla**, currently and in the past:
431440

@@ -435,4 +444,4 @@ Permament members of *Devsh Graphics Programming Sp. z O.O.* use this to organis
435444
- **[shaderc](https://github.com/google/shaderc)**
436445
- **[zlib](https://github.com/madler/zlib)**, **[bzip](https://github.com/enthought/bzip2-1.0.6)**, **[libzip2](https://packages.debian.org/search?keywords=libzip2)**, **[lzma](https://github.com/jljusten/LZMA-SDK)** and **[lz4](https://github.com/lz4/lz4)**
437446
- **[libjpeg-turbo](https://github.com/libjpeg-turbo/libjpeg-turbo)**, **[jpeglib](http://libjpeg.sourceforge.net/)** (past), **[libpng](https://github.com/glennrp/libpng)**
438-
- Unicode convert_utf and utf8cpp
447+
- Unicode convert_utf and utf8cpp (will be removed soon!)

0 commit comments

Comments
 (0)