- Fix integration tests
- Fix light on terrain tiles still dependent on camera position
test with latest sokol changes
-
V 0.4.0 sokol: errors during image creation no longer result in a panic, but can be handled by the programmer. sokol: macOS apps can now be quit using Cmd+Q.
-
V 0.4.1 sokol: use GLCORE33 on linux
-
V 0.4.2 Verify no changes
Scenery
- âstgâ loader for scenery data
- Load and render scenery objects (Golden Gate and buildings at Alcatraz!)
- Render terrain with textures
Community outreach
- Email forwarding
- Evaluate Discourse
- if Discourse is ok, self-host on Hetzner
https://github.com/discourse/discourse/blob/main/docs/INSTALL-cloud.md
https://meta.discourse.org/t/install-plugins-in-discourse/19157
- Publish first blog post
- Keep it simple, hugo + github pages
Aircraft
-
Refactor texture loaders, load through asset store
-
AC3D: render with multiple textures
-
Load XML file or convert to JSON first https://github.com/walkingdevel/vxml
-
Parts are positioned correctly
-
Add README
-
Unit tests for normals
-
Document coordinate systems in coords/README.md Airframe body / âNEDâ mnemonics : https://wiki.flightgear.org/JSBSim_Aerodynamics AC3D: https://wiki.flightgear.org/Howto:3D_Aircraft_Models
Model with skybox
- Switch to opengl-example shaders
- Reflection shader with skybox
Scenery
-
Render terrain of major airport (KSFO) with MANY textures
-
Read object .xml https://github.com/ooxi/xml.c
-
Render all objects of major airport (KSFO)
Additional test locations
- Nausori International airport (near 180 meridian)
- Tensing-Hillary (LUA), high altitude georeference
QA
Automated tests tha compare expected image
- Find way to save screenshot OR
- Render offscreen
Need render to texture?
- gfx Attachments are not defined in sokol.gfx ?
- Simple pipeline that renders cube to texture
- Render texture to screen
- Save rendered image to file
âVisual regressionâ tests
Rendering regression tests
- Offscreen renderer
- Save view state + asset ID to file
- Save image to file
- Compare image with a reference image saved previously
Dev UI
- UI to control lighting?
- or just [live] function
Improvements
Aircraft
-
Calculate accurate normals on WGS84 geoid needed for world up vector
-
Collision / crash detection
-
Ground reactions
Docs
- Architecture.md: improve introduction
Renderer
- Refresh on data-oriented design and ECS
https://blog.molecular-matters.com/2011/11/03/adventures-in-data-oriented-design-part-1-mesh-data-3/
https://blog.molecular-matters.com/2013/05/02/adventures-in-data-oriented-design-part-3a-ownership/
https://en.wikipedia.org/wiki/Entity_component_system
- For correct rendering, sort draw calls
https://realtimecollisiondetection.net/blog/?p=86
Camera
- Following ECS pattern, camera is added to entity
Models
-
ac3d, obj: refactor into file parser and Sokol buffer conversion
-
ac3d, obj: fix winding order vs face culling
-
V script to retrieve FG models from fg_addons
-
Data struct to collect model errors on parse
-
Test AC3D loader on large number of FG models
- File loads without errors
- No surf has been skipped
- All normals are valid
Terrain
- BTG: small read of file header to get bounding sphere (useful for scheduling loading of terrain)
Scenery
- Schedule load sequence based on camera positions â note plural
WGS84 coordinates
-
Fast, less precise version of WGS84 conversions (for use in terrain mesh)
-
Partial derivative of geodesic conversions https://www.symbolab.com/solver/partial-derivative-calculator
Aircraft systems
Pre-processing
- Convert XML to JSON
- Package as single .zip archive
At runtime
- Load seamlessly all files from archive
- Translate Nasal to V (!!!!)
- Compile V into loadable module (!!!)
Save optimization products
- Save texture atlas
- Save optimized model
- Consider glTF2.0 as unified format for stored models
Performance optimizations
https://github.com/KDAB/hotspot#screenshots
https://github.com/wolfpld/tracy
Long term
Scenery
- Look at Cesium global 3D content https://cesium.com/platform/cesium-ion/content/