-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathengine.todo
155 lines (130 loc) · 6.47 KB
/
engine.todo
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
Engine Tasks:
Level / World:
✔ Quadtree / Octree @done (17-01-29 23:57)
✔ Treenode updates entities by themselves. @done (17-01-29 23:57)
✔ Remove / Add Nodes dynamically @started @done (17-02-07 14:26)
☐ Move entities from node to node with minimum overhead. @paused
✔ BUG: Update time of the octree increases overtime the more you call the "InsertDweller" function @critical @done (17-02-07 14:26)
Entities:
☐ Create and edit entities in engine. @low
☐ Standardize rotations in engine @high
☐ Flag lights that should be able to cast shadows. @low --This should be in the gameobject / entity not the light
✔ OBB click collision on entities @done (17-01-22 00:59)
✔ Add box around entity @done (17-01-18 21:05)
✘ Use physics for OBB click collision on entities @cancelled (17-01-18 18:43)
✔ Receive callback on clicked entity @done (17-01-18 21:05)
✔ Have the box be oriented around the model / entity @done (17-01-18 22:28)
✔ Collision Checks are a bit broken on some rotations @done (17-01-22 00:59)
✔ Fix it @done (17-01-22 00:59)
☐ Entity rotation & physics rotation should be loaded in euler angles
☐ When entities save, their rotation is stored as euler angles
☐ When entities are edited in the engine, they will change with quaternions
☐ Clickable entities in octree
☐ Resolve problem with clicking thin OBBs
Debug UI:
✔ Hook up some kind of debug/edit-mode UI (imgui) @done (17-01-19 22:32)
✔ Configure imgui @done (17-01-22 00:59)
✔ Hook up some relevant variables @done (17-01-22 00:59)
☐ Entity Editing @low
☐ Editor viewport should be a ImGUI widget. Resolve alpha issues. Different runtime & editor shaders?
Particles:
☐ Custom particle shapes
☐ Emitter System
☐ Particles using a mesh
Network:
☐ Add the network API to the engine and make the engine able to run without Graphics.
☐ NetworkComponent for Entities should be setting positions of the other entities.
☐ The level / world needs/Should be verified by the server with some kind of hash
(network_version + map_name) or something like that
☐ FlatBuffers
☐ Handshake message
☐ Check MTU size of Client
☐ Reliability filter
Shaders:
Compute Shaders:
☐ Experiment with compute shaders
☐ Send a buffer of work to the shader
☐ read the data on the CPU
Hull Shaders:
✔ Implement @done (11/9/2018, 8:38:48 AM)
☐ Improve and understand
Domain Shaders:
✔ Implement @done (11/9/2018, 8:38:47 AM)
☐ Improve and understand
Rendering:
Resources
☐ Abstract
✔ All the calls should go through the interface and not through the API. @done (11/9/2018, 8:38:44 AM)
☐ Remove GetAPI()
☐ Resize Message
☐ Finish the current render frame before initiating / removing a main/sub state.
☐ Add Vulkan to regular build instead of having its separate build
☐ Check if the compile platform is windows for DirectX
☐ Soft Shadows @started
✘ Separate light pass to its own texture @cancelled (17-02-20 13:15) Rendering light to its own texture is a bad idea
✘ Move directional light to its own shader pass & not when the ambient runs. @cancelled (11/9/2018, 8:38:12 AM)
Postprocessing:
☐ HDR @started
✔ Tonemapping @done (11/9/2018, 8:37:51 AM)
☐ Good fade between dark and bright areas.
☐ Artist / Designer controlled exposure boxes
☐ Bloom
☐ Motion Blur
✔ Color Correction @done (11/9/2018, 8:37:41 AM)
✔ Contrast @done (11/9/2018, 8:37:45 AM)
✔ Saturate @done (11/9/2018, 8:37:45 AM)
☐ Depth of Field
StateStack:
✔ Move to engine @done (17-01-29 23:57)
☐ Debug State, this can be added as a layer ontop of what we already have. Substate.
☐ Keep Rendering through the state, copy current render buffer and just add new commands to it?
Memory:
Physics:
☐ Physics Bodies
☐ Mesh
☐ Cube
☐ Sphere
☐ Convex / Concave
☐ Deferr physics to the GPU and when I need something I will query the result and request it for the next frame.
Terrain:
☐ Merge the render & physics body into one object -> this is for saving it to disk and not generating the physics world everytime
☐ Solve the mystery of fetching height position from the height map.
☐ Continue investigation into tesellation
☐ Tesellate more on slopes, less on flat lands.
☐ Splatmapping
☐ Volumetric Terrain @low
☐
Multi-Threading:
☐ Investigate fiber
☐ Investigate possible performance gains from internally threading physics
☐ Investigate grouping up vertex buffers & index buffers
☐ CommandBuffers / RenderCommands
☐ A big drawcall instead of several small ones. Context swaps are expensive and can be solved by having a lot of vertices & indices in a single call.
✔ TreeNodes to be threaded? @done (2017-06-26 14:31:55)
I/O:
✔ Thread loading of models. @done (2017-06-26 14:31:58)
CommonLib:
Math:
☐ Quaternion -> Matrix
☐ Convert quaternion rotation into matrix
☐ Convert matrix rotation into quaternion
Containers:
☐ Rewrite the CommonLib containers
☐ GrowingArray
☐ StaticArray
☐ HashMap
☐ Look at the FlatHashMap from
<https://www.shadertoy.com/view/4sXcRS>
<https://www.gamedev.net/topic/686513-oneil-atmospheric-scattering/?hl=%2Batmosphere#entry5334595>
<https://www.gamedev.net/topic/602369-strange-issue-with-sean-oneils-atmospheric-scattering-ground/?hl=%2Batomspheric+%2Bscattering>
<https://github.com/wwwtyro/glsl-atmosphere/blob/master/example/index.js>
<https://www.shadertoy.com/view/lslXDr>
<http://developer.amd.com/wordpress/media/2012/10/GDC_02_HoffmanPreetham.pdf>
<http://mathworld.wolfram.com/TrigonometricPowerFormulas.html>
<http://http.download.nvidia.com/developer/GPU_Gems_2/CD/Index.html> //Demos
<http://stackoverflow.com/questions/366257/everything-a-c-developer-should-know-about-network-programming/>
<https://developers.google.com/protocol-buffers/docs/cpptutorial>
<https://google.github.io/flatbuffers/>
<https://github.com/Basez/Agnostik-Engine/>
<https://msdn.microsoft.com/en-us/library/windows/desktop/ms682516(v=vs.85).aspx>
<https://probablydance.com/2017/02/26/i-wrote-the-fastest-hashtable/>