VenomEngine
Cross-Platform Modern Graphics Engine
|
High-Level Frontend of the VenomEngine project. It also contains all the code shared between every APIs/Dynamic Libraries. But most importantly, that is where the abstraction is setup for the different APIs contained in this project. Use the alias 'vc' to access the namespace. More...
Classes | |
class | BindlessTexturesIdManager |
class | Camera |
Camera class Classic layout with position, rotation and projection matrices. More... | |
class | CameraImpl |
class | Config |
class | Context |
class | DLL |
Contains a shared library handle and provides a way to get symbols from it, can only be created through DLL::Create() More... | |
class | DLL_Cache |
Holds all DLLs loaded in memory unless explicitly unloaded/deleted. Only instantiable by VenomEngine as it must not be deleted before all DLLs are unloaded. And also to centralize every wannabe singletons into one. More... | |
class | ECS |
Entity Component System Will mainly encapsulate the fabulous flecs library (https://github.com/SanderMertens/flecs.git) This class will be contained in the VenomEngine class. More... | |
class | EXR_TextureLoader |
class | FpsCounter |
class | GraphicsApplication |
class | GraphicsCachedResource |
Base class for cached resources. More... | |
class | GraphicsCachedResourceHolder |
Base class for cached resource holders. More... | |
class | GraphicsPlugin |
class | GraphicsPluginObject |
Base class for graphics plugin objects. More... | |
class | GraphicsSettings |
class | GUI |
class | IPluginObject |
class | Light |
class | LightManager |
struct | LightShaderStruct |
class | Log |
class | Material |
class | MaterialComponent |
MaterialComponent Contains all the data of a material component. More... | |
class | MaterialImpl |
class | MemoryPool |
MemoryPool class to manage memory allocation and deallocation. For now, it's just a wrapper around memory C functions. More... | |
class | Mesh |
Contains all the mesh's data and is the main high-level interface for the user. More... | |
class | MeshImpl |
class | Model |
Contains all the mesh's data and is the main high-level interface for the user. More... | |
class | ModelImpl |
class | ModelResource |
class | Plugin |
class | PluginManager |
class | PluginObject |
Base class for all the plugin objects Objects that will be loaded from the plugins as their implementations lie there As a user of VenomEngine, you should not care about that, unless you plan to create your own plugin. More... | |
class | PluginObjectContainer |
Container for the PluginObjectImplWrapper Important to avoid it from loading the PluginObjectImpl if not needed e.g. if the object is optional. More... | |
class | PluginObjectImpl |
Interface for the PluginObject different implementations. More... | |
class | PluginObjectImplWrapper |
Wrapper for the PluginObjectImpl, inherited by classes like Model or Mesh to make them usable as components (for ECS) and hold the Graphics API specific implementation. More... | |
class | RenderingPipeline |
Interface with shader pipelines and shader settings. More... | |
class | RenderingPipelineImpl |
class | Resources |
class | ShaderPipeline |
class | ShaderPipelineImpl |
class | ShaderResource |
class | ShaderResourceTable |
class | Skybox |
class | SkyboxImpl |
class | Stbi_TextureLoader |
class | Texture |
class | TextureImpl |
class | TextureLoader |
class | TextureResource |
class | Timer |
class | Transform3D |
class | VenomEngine |
Main class of the engine This class will be the main entry point of the engine. It will contain all the main components of the engine, as singleton are harder to manage, especially for unit tests and memory management. More... | |
class | VenomSettings |
Concepts | |
concept | ValidGraphicsCachedResource |
concept | ValidGraphicsCachedResourceHolder |
Typedefs | |
template<typename T > | |
using | Vector = std::vector<T> |
template<typename T > | |
using | Stack = std::stack<T> |
template<typename T , size_t N> | |
using | Array = std::array<T, N> |
template<typename T , typename U > | |
using | Map = std::map<T, U> |
template<typename T , typename U > | |
using | UMap = std::unordered_map<T, U> |
typedef flecs::entity | Entity |
template<typename T > | |
using | Component = flecs::component<T> |
typedef flecs::system | System |
typedef void(* | GUIDrawCallback) () |
typedef int | GUIWindowFlags |
typedef int | GUIColorEditFlags |
typedef int | GUIComboFlags |
typedef int | GUISelectableFlags |
typedef vc::Vector< ShaderPipeline > | ShaderPipelineList |
template<typename T > | |
using | WPtr = std::weak_ptr<T> |
template<typename T > | |
using | SPtr = std::shared_ptr<T> |
template<typename T > | |
using | UPtr = std::unique_ptr<T> |
using | String = std::string |
typedef void(* | SceneCallback) () |
typedef void(* | LoopCallback) () |
typedef void(* | InputCallback) (Context *) |
Enumerations | |
enum | InputState : int8_t { Released = 0x1 , Pressed = 0x2 , Repeat = 0x4 , Unknown = 0x8 } |
enum | KeyboardInput { KeyboardUnknown = 0 , KeyboardA = 1 , KeyboardB = 2 , KeyboardC = 3 , KeyboardD = 4 , KeyboardE = 5 , KeyboardF = 6 , KeyboardG = 7 , KeyboardH = 8 , KeyboardI = 9 , KeyboardJ = 10 , KeyboardK = 11 , KeyboardL = 12 , KeyboardM = 13 , KeyboardN = 14 , KeyboardO = 15 , KeyboardP = 16 , KeyboardQ = 17 , KeyboardR = 18 , KeyboardS = 19 , KeyboardT = 20 , KeyboardU = 21 , KeyboardV = 22 , KeyboardW = 23 , KeyboardX = 24 , KeyboardY = 25 , KeyboardZ = 26 , Keyboard0 = 27 , Keyboard1 = 28 , Keyboard2 = 29 , Keyboard3 = 30 , Keyboard4 = 31 , Keyboard5 = 32 , Keyboard6 = 33 , Keyboard7 = 34 , Keyboard8 = 35 , Keyboard9 = 36 , KeyboardEscape = 37 , KeyboardEnter = 38 , KeyboardTab = 39 , KeyboardBackspace = 40 , KeyboardInsert = 41 , KeyboardDelete = 42 , KeyboardRight = 43 , KeyboardLeft = 44 , KeyboardDown = 45 , KeyboardUp = 46 , KeyboardPageUp = 47 , KeyboardPageDown = 48 , KeyboardHome = 49 , KeyboardEnd = 50 , KeyboardCapsLock = 51 , KeyboardScrollLock = 52 , KeyboardNumLock = 53 , KeyboardPrintScreen = 54 , KeyboardPause = 55 , KeyboardF1 = 56 , KeyboardF2 = 57 , KeyboardF3 = 58 , KeyboardF4 = 59 , KeyboardF5 = 60 , KeyboardF6 = 61 , KeyboardF7 = 62 , KeyboardF8 = 63 , KeyboardF9 = 64 , KeyboardF10 = 65 , KeyboardF11 = 66 , KeyboardF12 = 67 , KeyboardF13 = 68 , KeyboardF14 = 69 , KeyboardF15 = 70 , KeyboardF16 = 71 , KeyboardF17 = 72 , KeyboardF18 = 73 , KeyboardF19 = 74 , KeyboardF20 = 75 , KeyboardF21 = 76 , KeyboardF22 = 77 , KeyboardF23 = 78 , KeyboardF24 = 79 , KeyboardF25 = 80 , KeyboardKP0 = 81 , KeyboardKP1 = 82 , KeyboardKP2 = 83 , KeyboardKP3 = 84 , KeyboardKP4 = 85 , KeyboardKP5 = 86 , KeyboardKP6 = 87 , KeyboardKP7 = 88 , KeyboardKP8 = 89 , KeyboardKP9 = 90 , KeyboardKPDecimal = 91 , KeyboardKPDivide = 92 , KeyboardKPMultiply = 93 , KeyboardKPSubtract = 94 , KeyboardKPAdd = 95 , KeyboardKPEnter = 96 , KeyboardKPEqual = 97 , KeyboardLeftShift = 98 , KeyboardLeftControl = 99 , KeyboardLeftAlt = 100 , KeyboardLeftSuper = 101 , KeyboardRightShift = 102 , KeyboardRightControl = 103 , KeyboardRightAlt = 104 , KeyboardRightSuper = 105 , KeyboardMenu = 106 , KeyboardSpace = 107 , KeyboardApostrophe = 108 , KeyboardComma = 109 , KeyboardMinus = 110 , KeyboardPeriod = 111 , KeyboardSlash = 112 , KeyboardSemicolon = 113 , KeyboardEqual = 114 , KeyboardLeftBracket = 115 , KeyboardBackslash = 116 , KeyboardRightBracket = 117 , KeyboardGraveAccent = 118 , KeyboardWorld1 = 119 , KeyboardWorld2 = 120 , KeyboardTotal } |
enum | KeyboardModifier { KeyboardModShift = 0x0001 , KeyboardModControl = 0x0002 , KeyboardModAlt = 0x0004 , KeyboardModSuper = 0x0008 } |
enum | MouseButton { MouseButton1 = 0 , MouseButton2 = 1 , MouseButton3 = 2 , MouseButton4 = 3 , MouseButton5 = 4 , MouseButton6 = 5 , MouseButton7 = 6 , MouseButton8 = 7 , MouseButtonLast = MouseButton8 , MouseButtonLeft = MouseButton1 , MouseButtonRight = MouseButton2 , MouseButtonMiddle = MouseButton3 , MouseTotal } |
enum class | LightType { Directional = 0 , Point = 1 , Spot = 2 } |
enum | GUIWindowFlagsBits { WindowFlags_None = 0 , WindowFlags_NoTitleBar = 1 << 0 , WindowFlags_NoResize = 1 << 1 , WindowFlags_NoMove = 1 << 2 , WindowFlags_NoScrollbar = 1 << 3 , WindowFlags_NoScrollWithMouse = 1 << 4 , WindowFlags_NoCollapse = 1 << 5 , WindowFlags_AlwaysAutoResize = 1 << 6 , WindowFlags_NoBackground = 1 << 7 , WindowFlags_NoSavedSettings = 1 << 8 , WindowFlags_NoMouseInputs = 1 << 9 , WindowFlags_MenuBar = 1 << 10 , WindowFlags_HorizontalScrollbar = 1 << 11 , WindowFlags_NoFocusOnAppearing = 1 << 12 , WindowFlags_NoBringToFrontOnFocus = 1 << 13 , WindowFlags_AlwaysVerticalScrollbar = 1 << 14 , WindowFlags_AlwaysHorizontalScrollbar =1<< 15 , WindowFlags_NoNavInputs = 1 << 16 , WindowFlags_NoNavFocus = 1 << 17 , WindowFlags_UnsavedDocument = 1 << 18 , WindowFlags_NoNav = WindowFlags_NoNavInputs | WindowFlags_NoNavFocus , WindowFlags_NoDecoration = WindowFlags_NoTitleBar | WindowFlags_NoResize | WindowFlags_NoScrollbar | WindowFlags_NoCollapse , WindowFlags_NoInputs = WindowFlags_NoMouseInputs | WindowFlags_NoNavInputs | WindowFlags_NoNavFocus , WindowFlags_ChildWindow = 1 << 24 , WindowFlags_Tooltip = 1 << 25 , WindowFlags_Popup = 1 << 26 , WindowFlags_Modal = 1 << 27 , WindowFlags_ChildMenu = 1 << 28 } |
enum | GUIColorEditFlagsBits { GUIColorEditFlags_None = 0 , GUIColorEditFlags_NoAlpha = 1 << 1 , GUIColorEditFlags_NoPicker = 1 << 2 , GUIColorEditFlags_NoOptions = 1 << 3 , GUIColorEditFlags_NoSmallPreview = 1 << 4 , GUIColorEditFlags_NoInputs = 1 << 5 , GUIColorEditFlags_NoTooltip = 1 << 6 , GUIColorEditFlags_NoLabel = 1 << 7 , GUIColorEditFlags_NoSidePreview = 1 << 8 , GUIColorEditFlags_NoDragDrop = 1 << 9 , GUIColorEditFlags_NoBorder = 1 << 10 , GUIColorEditFlags_AlphaBar = 1 << 16 , GUIColorEditFlags_AlphaPreview = 1 << 17 , GUIColorEditFlags_AlphaPreviewHalf = 1 << 18 , GUIColorEditFlags_HDR = 1 << 19 , GUIColorEditFlags_DisplayRGB = 1 << 20 , GUIColorEditFlags_DisplayHSV = 1 << 21 , GUIColorEditFlags_DisplayHex = 1 << 22 , GUIColorEditFlags_Uint8 = 1 << 23 , GUIColorEditFlags_Float = 1 << 24 , GUIColorEditFlags_PickerHueBar = 1 << 25 , GUIColorEditFlags_PickerHueWheel = 1 << 26 , GUIColorEditFlags_InputRGB = 1 << 27 , GUIColorEditFlags_InputHSV = 1 << 28 , GUIColorEditFlags_DefaultOptions_ = GUIColorEditFlags_Uint8 | GUIColorEditFlags_DisplayRGB | GUIColorEditFlags_InputRGB | GUIColorEditFlags_PickerHueBar , GUIColorEditFlags_DisplayMask_ = GUIColorEditFlags_DisplayRGB | GUIColorEditFlags_DisplayHSV | GUIColorEditFlags_DisplayHex , GUIColorEditFlags_DataTypeMask_ = GUIColorEditFlags_Uint8 | GUIColorEditFlags_Float , GUIColorEditFlags_PickerMask_ = GUIColorEditFlags_PickerHueWheel | GUIColorEditFlags_PickerHueBar , GUIColorEditFlags_InputMask_ = GUIColorEditFlags_InputRGB | GUIColorEditFlags_InputHSV } |
enum | GuiComboFlagsBits { GUIComboFlags_None = 0 , GUIComboFlags_PopupAlignLeft = 1 << 0 , GUIComboFlags_HeightSmall = 1 << 1 , GUIComboFlags_HeightRegular = 1 << 2 , GUIComboFlags_HeightLarge = 1 << 3 , GUIComboFlags_HeightLargest = 1 << 4 , GUIComboFlags_NoArrowButton = 1 << 5 , GUIComboFlags_NoPreview = 1 << 6 , GUIComboFlags_WidthFitPreview = 1 << 7 , GUIComboFlags_HeightMask_ = GUIComboFlags_HeightSmall | GUIComboFlags_HeightRegular | GUIComboFlags_HeightLarge | GUIComboFlags_HeightLargest } |
enum | GUISelectableFlagsBits { GUISelectableFlags_None = 0 , GUISelectableFlags_NoAutoClosePopups = 1 << 0 , GUISelectableFlags_SpanAllColumns = 1 << 1 , GUISelectableFlags_AllowDoubleClick = 1 << 2 , GUISelectableFlags_Disabled = 1 << 3 , GUISelectableFlags_AllowOverlap = 1 << 4 , GUISelectableFlags_Highlight = 1 << 5 } |
enum | MaterialComponentType { AMBIENT , DIFFUSE , SPECULAR , EMISSIVE , SHININESS , OPACITY , NORMAL , HEIGHT , REFLECTION , REFLECTIVITY , REFRACTION , TRANSPARENT , ANISOTROPY , BASE_COLOR , METALLIC , ROUGHNESS , AMBIENT_OCCLUSION , EMISSION_COLOR , TRANSMISSION , SHEEN , CLEARCOAT , MAX_COMPONENT } |
MaterialComponentType Contains all the possible components of a material that VenomEngine can handle. | |
enum | MaterialComponentValueType { NONE , COLOR3D , COLOR4D , VALUE , TEXTURE } |
MaterialComponentValueType Contains all the possible value types of a material component. | |
enum class | RenderingPipelineType { None = -1 , GUI = 0 , Text3D , ShadowModel , Skybox , Count } |
enum class | ShaderVertexFormat { Float , Vec2 , Vec3 , Vec4 , Int , IVec2 , IVec3 , IVec4 , Uint , UVec2 , UVec3 , UVec4 , Mat2 , Mat3 , Mat4 } |
enum | ColorAttachmentType { Present = 0 , NormalSpecular = 1 , MetallicRougnessAO = 2 , Position = 3 , Depth = 4 , Count } |
enum class | PluginType { Graphics = 0 , TotalCount } |
Functions | |
Entity | CreatePrefab (const char *name) |
Entity | CreateEntity (const char *name) |
Entity | CreateEntity () |
template<typename T > | |
Component< T > | GetComponent () |
VENOM_COMMON_API void | setErrorString (const char *str) |
template<typename... Args> | |
void | setErrorString (const char *fmt, Args &&... args) |
VENOM_COMMON_API const char * | getErrorString () |
template<typename ... Args> | |
String | format (const char *fmt, Args &&... args) |
template<typename T > | |
T * | LoadPluginFromNameAndType (const std::string &libName, const char *functionName) |
TextureLoader * | CreateTextureLoader (const char *path) |
High-Level Frontend of the VenomEngine project. It also contains all the code shared between every APIs/Dynamic Libraries. But most importantly, that is where the abstraction is setup for the different APIs contained in this project. Use the alias 'vc' to access the namespace.
Color edit flags based on GUIColorEditFlagsBits_ (based on GUI 1.91.5)
Window flags based on GUIWindowFlagsBits_ (based on GUI 1.91.5)