• 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

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/02/22/adventures-in-data-oriented-design-part-2-hierarchical-data/

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

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