-
Notifications
You must be signed in to change notification settings - Fork 2
Home

TODO
TODO
An asset is a resource loaded from a (single) file and parsed by the engine to some internal representation. All assets must be stored in the directory specified by the configuration (the editor scans this directory in real-time and provides them to the user), the engine doesn’t use global paths.
Some of assets use custom starlight formats, most of them are referred to as Properties File and is a simple list of key and values:
KEY1=VALUE1
KEY2=VALUE2
Starlight loads a texture from a classic image file.
Cubemap is a special type of texture that consists of 6 faces which are classic textures. They are usually used as skyboxes. Starlight uses .slcub properties file to store them, for instance:
UP=textures/skybox/skybox_u.jpg
DOWN=textures/skybox/skybox_d.jpg
LEFT=textures/skybox/skybox_l.jpg
RIGHT=textures/skybox/skybox_r.jpg
FRONT=textures/skybox/skybox_f.jpg
BACK=textures/skybox/skybox_b.jpg
Starlight uses a .slshd properties file for storing a shader description. The file consists of paths to the shader's stages compiled to SPIR-V binary format. For example:
FRAG=shaders/Builtin.Shader.Grid.frag.spv
VERT=shaders/Builtin.Shader.Grid.vert.spv
TODO
Materials describe the physical properties of materials. Starlight uses custom properties file with the .slmtl extensions to store them:
DIFFUSE_COLOR=[0.8, 0.8, 0.8, 1.0]
DIFFUSE_MAP=textures/cobblestone.png
SPECULAR_MAP=textures/cobblestone_SPEC.png
NORMAL_MAP=textures/cobblestone_NRM.png
SHININESS=32
The engine provides a module that reads and writes scenes to the .slscn binary format. A scene file is not readable for humans - this is a dump of bytes in the correct order.
The below chapter contains a brief explanation of each module that the engine consists of.
TODO
The app module provides high-level building blocks for starlight frontend applications. It provides the Engine class that is meant to be inherited from by the user.
Implement factories for assets and resources used across the engine. For the detailed implementation of a Factory see core.Factory. Factories that are implemented: MaterialFactory MeshFactory ShaderFactory CubemapFactory TextureFactory
Factories manage memoization and lifetime of loaded/created resources and are responsible for serialization and deserialization.
TODO