VenomEngine
Cross-Platform Modern Graphics Engine
Loading...
Searching...
No Matches
venom::common Namespace Reference

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< ShaderPipelineShaderPipelineList
 
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)
 
TextureLoaderCreateTextureLoader (const char *path)
 

Variables

enum VENOM_COMMON_API Error
 
enum VENOM_COMMON_API Failure = 1 << 0
 
enum VENOM_COMMON_API InvalidArgument = 1 << 1
 
enum VENOM_COMMON_API OutOfMemory = 1 << 2
 
enum VENOM_COMMON_API DeviceLost = 1 << 3
 
enum VENOM_COMMON_API InitializationFailed = 1 << 4
 
enum VENOM_COMMON_API InvalidUse = 1 << 5
 
enum VENOM_COMMON_API FeatureNotSupported = 1 << 6
 

Detailed Description

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.

Enumeration Type Documentation

◆ GUIColorEditFlagsBits

Color edit flags based on GUIColorEditFlagsBits_ (based on GUI 1.91.5)

◆ GUIWindowFlagsBits

Window flags based on GUIWindowFlagsBits_ (based on GUI 1.91.5)