comparison README.md @ 95:8011e4d6372d

add: consistent way to define platform-specific code
author Sam <sam@basx.dev>
date Wed, 01 Mar 2023 00:01:06 +0700
parents 17c12b79faaa
children f0ceb8c17d2c
comparison
equal deleted inserted replaced
94:f036546f5ea2 95:8011e4d6372d
2 =========== 2 ===========
3 3
4 Hi there 4 Hi there
5 5
6 This is a very simplistic little game engine, mainly trying to wrap around vulkan and the operating system's windowing, input and audio system. 6 This is a very simplistic little game engine, mainly trying to wrap around vulkan and the operating system's windowing, input and audio system.
7 This is using the last programming language you will ever need, [Nim](https://nim-lang.org/) 7 I am using the last programming language you will ever need, [Nim](https://nim-lang.org/)
8 8
9 Building 9 Building
10 -------- 10 --------
11 11
12 Requires Nim to be installed and ```glslangValidator``` to be downloaded to the
13 directory of the main compilation file (e.g. into ```examples/``` in order to
14 compile the examples). It can be downloaded at
15 https://github.com/KhronosGroup/glslang/releases/.
16
12 Run ```nim help``` to see a list of available build commands. 17 Run ```nim help``` to see a list of available build commands.
13
14 It is required to download the glslangValidator binary into the ```examples/``` directory in order to be able to build.
15 There is a nim command for this that works on linux.
16
17 Compilation on Windows
18 ----------------------
19
20 Requires a Windows SDK to be installed (e.g. via Visual Studio Build Tools).
21 Also, using Nim on Windows with mingw seems to be way faster than with vcc/lc.
22 For compilation with vcc/ls, install additionaly (with Visual Studio Build Tools):
23 - Windows Universal C Runtime (some important files)
24 - Windows CRT SDK (some important header files)
25 - Some version of MSVC (the compiler)
26
27 glslangValidator cannot yet be downloaded automatically on windows, check config.nim for instructions.
28 18
29 Roadmap 19 Roadmap
30 ------- 20 -------
31 21
32 Still tons to do, but it feels like the worst things (except audio maybe?) are over the hill. 22 Still tons to do. Making render pipeline and scenegraph somewhat compatible
23 seems like it will require quite a bit more of work. Also, audio might require
24 quite a bit of work, no experience there.
33 25
34 Rendering: 26 Rendering:
35 27
36 - [x] Vertex attributes, vertex data 28 - [x] Vertex attributes, vertex data
37 - [x] Shaders (allow for predefined and custom shaders) 29 - [x] Shaders (allow for predefined and custom shaders)
39 - [x] Per-instance vertex attributes (required to be able to draw scene graph) 31 - [x] Per-instance vertex attributes (required to be able to draw scene graph)
40 - [ ] Textures 32 - [ ] Textures
41 - [ ] Depth buffering 33 - [ ] Depth buffering
42 - [ ] Mipmaps 34 - [ ] Mipmaps
43 - [ ] Multisampling 35 - [ ] Multisampling
44 - [~] Instanced drawing (currently can use instance attributes, but we only support a single instance per mesh) 36 - [~] Instanced drawing (currently can use instance attributes, but we only support a single instance per draw call)
45 - [ ] Fullscreen mode + switch between modes 37 - [ ] Fullscreen mode + switch between modes
46 - [x] Fixed framerate 38 - [x] Fixed framerate
47 - [ ] Allow multipel Uniform blocks 39 - [ ] Allow multipel Uniform blocks
48 40
49 Build-system: 41 Build-system:
50 - [x] move all of Makefile to config.nims 42 - [x] move all of Makefile to config.nims
51 43
52 Asset handling: 44 Asset handling:
53 - [ ] Mesh files (Wavefront OBJ, MTL) (use something from sketchfab for testing, https://sketchfab.com/) 45 - [ ] Mesh files (Wavefront OBJ, MTL) (use something from sketchfab for testing, https://sketchfab.com/)
54 - [ ] Image files (BMP RGB + BMP Graysscale for transparency) 46 - [ ] Image files (BMP RGB + BMP Graysscale for transparency)
55 - [ ] Audio files (WAV) 47 - [ ] Audio files (AU)
56 48
57 Quality improvments: 49 Quality improvments:
58 50
59 - [x] Better scenegraph API 51 - [x] Better scenegraph API
60 - [ ] Better rendering pipeline API 52 - [ ] Better rendering pipeline API
63 - [x] Mouse/Keyboard input handling 55 - [x] Mouse/Keyboard input handling
64 - [x] X11 56 - [x] X11
65 - [x] Win32 57 - [x] Win32
66 - [ ] Config files ala \*.ini files (use std/parsecfg) 58 - [ ] Config files ala \*.ini files (use std/parsecfg)
67 - [ ] Input-mapping configuration 59 - [ ] Input-mapping configuration
68 - [ ] Audio (Alsa, Windows Waveform API?) 60 - [ ] Audio playing (Alsa, Windows Waveform API?)
69 - [ ] Game controller input handling
70 61
71 Advanced features: 62 Advanced features:
72 - [ ] Text rendering 63 - [ ] Text rendering
73 - [ ] Animation system 64 - [ ] Animation system
74 - [ ] Sprite system 65 - [ ] Sprite system
75 - [ ] Particle system 66 - [ ] Particle system
76 - [ ] Query and display rendering information from Vulkan 67 - [ ] Query and display rendering information from Vulkan
68 - [ ] Game controller input handling