VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
visutwin::canvas Namespace Reference

Namespaces

namespace  AssetType
namespace  gpu
namespace  log
namespace  metal
namespace  TextureType

Classes

class  Animation
class  AnimationComponent
struct  AnimationComponentData
class  AnimationComponentSystem
class  AnimationKey
class  AnimationNode
class  AnimBinder
class  AnimClip
struct  AnimCurve
struct  AnimData
class  AnimEvaluator
class  AnimTrack
struct  AnimTransform
class  Annotation
class  AnnotationManager
struct  AnnotationScreenInfo
class  ApplicationStats
struct  AppOptions
class  Asset
 Loadable resource wrapper supporting textures, containers (GLB), and fonts. More...
struct  AssetData
class  AssetRegistry
class  AssimpParser
struct  AssimpParserConfig
 Configuration options for Assimp-based model loading. More...
class  Batch
struct  BatchGroup
class  BatchManager
class  BindBaseFormat
class  BindGroupFormat
class  BlendState
class  BoundingBox
 Axis-Aligned Bounding Box defined by center and half-extents. More...
class  BoundingSphere
 Bounding sphere defined by center and radius for intersection and containment tests. More...
class  BundleRegistry
class  ButtonComponent
struct  ButtonComponentData
class  ButtonComponentSystem
struct  CacheEntry
class  Camera
 Perspective or orthographic camera with projection matrix, jitter (TAA), and render target binding. More...
class  CameraComponent
struct  CameraComponentData
class  CameraComponentSystem
struct  CameraFrameOptions
struct  ClusterConfig
struct  ClusterLightData
struct  CoCPassParams
class  CollisionComponent
struct  CollisionComponentData
class  CollisionComponentSystem
struct  Color
 RGBA color with floating-point components in [0, 1]. More...
class  ColorAttachment
class  ColorAttachmentOps
class  Component
 Base class for ECS components that attach functionality to entities. More...
class  ComponentSystem
class  ComponentSystemRegistry
struct  ComposePassParams
class  Compute
class  ComputePipelineBase
class  ContainerResource
class  ContainerResourceHandler
class  Controller
class  Curve
class  CurveEvaluator
class  CurveSet
class  DefaultAnimBinder
class  DepthAttachment
struct  DepthAwareBlurPassParams
class  DepthState
class  DepthStencilAttachmentOps
class  DeviceCache
struct  DeviceVRAM
struct  DofBlurPassParams
struct  DofSettings
struct  DrawCallStats
struct  DynamicBatchVertex
class  DynamicBuffers
class  ElementComponent
struct  ElementComponentData
class  ElementComponentSystem
class  ElementInput
class  Engine
 Central application orchestrator managing scenes, rendering, input, and resource loading. More...
class  Entity
 ECS entity — a GraphNode that hosts components defining its behavior. More...
class  EnvLighting
class  EventHandle
class  EventHandler
struct  FogParams
struct  FontGlyph
struct  FontResource
class  FontResourceHandler
class  ForwardRenderer
 Forward PBR renderer that builds a FrameGraph from the scene's layer composition. More...
class  FrameGraph
struct  FrameStats
struct  Frustum
class  GamePads
struct  GeometryData
class  GlbContainerResource
struct  GlbMeshPayload
struct  GlbNodePayload
class  GlbParser
struct  GpuClusteredLight
struct  GpuLightData
 Per-light GPU data uploaded to the lighting uniform buffer. More...
class  GpuProfiler
class  GraphicsDevice
 Abstract GPU interface for resource creation, state management, and draw submission. More...
struct  GraphicsDeviceOptions
class  GraphNode
 Hierarchical scene graph node with local/world transforms and parent-child relationships. More...
class  GSplatDirector
class  GUID
class  I18n
class  IComponentSystem
class  ImGuiOverlay
class  Immediate
class  IndexBuffer
class  Input
class  InputConsumer
class  InputController
struct  InstanceCullParams
class  InterpolatedKey
class  Keyboard
struct  Label3D
class  Layer
class  LayerComposition
class  Light
 Directional, point, spot, or area light with shadow mapping and cookie projection. More...
class  LightCamera
class  LightComponent
struct  LightComponentData
class  LightComponentSystem
struct  LightingParams
class  Lightmapper
class  LightRenderData
 Per-face shadow rendering data: shadow camera, viewport, and scissor. More...
class  LightTextureAtlas
struct  LoadedData
class  Material
 Base class for GPU materials — owns uniform data, texture bindings, blend/depth state, and shader compilation. More...
struct  MaterialUniforms
struct  Matrix4
 4x4 column-major transformation matrix with SIMD acceleration. More...
struct  MCBatchResult
 Result of a multi-isovalue batch extraction. More...
struct  MCComputeParams
struct  MCExtractResult
class  Mesh
 GPU-resident geometry defined by vertex/index buffers and one or more Primitives. More...
class  MeshInstance
 Renderable instance of a Mesh with its own material, transform node, and optional GPU instancing. More...
class  MetalBackBufferRenderTarget
 Backbuffer sentinel target — preserves JS renderTarget/backBuffer identity semantics. More...
class  MetalBindGroupFormat
struct  MetalBlendState
class  MetalCoCPass
class  MetalComposePass
class  MetalComputePipeline
class  MetalDepthAwareBlurPass
class  MetalDofBlurPass
class  MetalGraphicsDevice
class  MetalIndexBuffer
class  MetalInstanceCullPass
class  MetalLICPass
class  MetalMarchingCubesPass
class  MetalPaletteRingBuffer
class  MetalParticleComputePass
class  MetalPipeline
class  MetalRenderPipeline
class  MetalRenderTarget
class  MetalShader
class  MetalSsaoPass
class  MetalTaaPass
class  MetalTextureBinder
class  MetalTextureStream
class  MetalUniformBinder
class  MetalUniformRingBuffer
class  MetalVertexBuffer
class  MetalVertexBufferLayout
struct  MiscStats
class  Mouse
class  ObjectPool
class  ObjParser
struct  ObjParserConfig
 Configuration options for OBJ loading. More...
class  OrientedBox
struct  PackedVertex
struct  ParticleComputeUniforms
 Uniform data uploaded to the compute kernel each frame. More...
struct  ParticleStats
class  Path
class  Picker
struct  PixelFormatInfo
class  Plane
class  Pose
struct  PreparedGlbData
class  Preprocessor
struct  PreprocessorOptions
struct  Primitive
 Describes how vertex and index data should be interpreted for a draw call. More...
class  ProgramLibrary
class  QuadRender
struct  Quaternion
 Unit quaternion for rotation representation with SIMD-accelerated slerp and multiply. More...
class  Random
class  Ray
 Infinite ray defined by origin and direction for raycasting and picking. More...
struct  RaycastResult
class  ReadStream
class  RefCountedObject
struct  ReflectionBlurParams
struct  RenderAction
class  RenderComponent
struct  RenderComponentData
class  RenderComponentSystem
class  Renderer
struct  RenderingSettings
class  RenderPass
class  RenderPassBloom
class  RenderPassCameraFrame
class  RenderPassCoC
class  RenderPassColorGrab
class  RenderPassCompose
class  RenderPassCookieRenderer
class  RenderPassDepthAwareBlur
class  RenderPassDepthGrab
class  RenderPassDof
class  RenderPassDofBlur
class  RenderPassDownsample
class  RenderPassForward
struct  RenderPassOptions
class  RenderPassPostprocessing
class  RenderPassPrepass
class  RenderPassShaderQuad
class  RenderPassShadowDirectional
class  RenderPassShadowLocalClustered
class  RenderPassShadowLocalNonClustered
class  RenderPassSsao
class  RenderPassTAA
class  RenderPassUpdateClustered
class  RenderPassUpsample
class  RenderPipelineBase
class  RenderTarget
struct  RenderTargetOptions
class  ResourceHandler
class  ResourceLoader
 Async resource loader with background I/O thread, pixel decoding, and main-thread callbacks. More...
class  RigidBodyComponent
struct  RigidBodyComponentData
class  RigidBodyComponentSystem
class  Scene
 Container for the scene graph, lighting environment, fog, skybox, and layer composition. More...
class  SceneRegistry
class  ScreenComponent
struct  ScreenComponentData
class  ScreenComponentSystem
class  Script
class  ScriptComponent
struct  ScriptComponentData
class  ScriptComponentSystem
struct  ScriptCreateOptions
class  ScriptFactories
class  ScriptRegistry
class  Shader
struct  ShaderDefinition
class  ShaderMaterial
 Custom material with user-defined Metal vertex and fragment shader entry points. More...
class  ShadowCatcher
class  ShadowMap
struct  ShadowParams
class  ShadowRenderer
class  ShadowRendererDirectional
class  ShadowRendererLocal
struct  ShadowTypeInfo
class  Skeleton
class  SkinBatchInstance
class  SkinInstance
class  Sky
class  SkyMesh
class  SortedLoopArray
struct  SortedLoopArrayOptions
struct  Sphere
struct  SsaoPassParams
struct  SsaoSettings
class  StandardMaterial
 Full PBR material with metalness/roughness workflow and advanced surface features. More...
class  StencilParameters
class  StlParser
struct  StlParserConfig
 Configuration options for STL loading. More...
class  StringIds
struct  TaaSettings
class  Tags
class  Texture
 GPU texture resource supporting 2D, cubemap, volume, and array formats with mipmap management. More...
struct  TextureOptions
class  TextureResourceHandler
struct  TextureSlot
struct  TextureTransform
class  TextureUtils
class  TouchDevice
class  TransformGizmo
class  Tri
class  UniformBinder
class  URI
struct  URIOptions
struct  Vector2
 2D vector for UV coordinates, screen positions, and 2D math. More...
struct  Vector2T
struct  Vector3
 3D vector for positions, directions, and normals with multi-backend SIMD acceleration. More...
struct  Vector3T
struct  Vector4
 4D vector for homogeneous coordinates, color values, and SIMD operations. More...
class  VertexBuffer
struct  VertexBufferOptions
class  VertexFormat
class  WorldClusters
class  XrManager

Typedefs

using BitPacking = std::bitset<32>
using ComponentTypeID = std::size_t
using EventArgs = std::vector<std::any>
using HandleEventCallback = std::function<void(const EventArgs&)>
using LoadErrorCallback = std::function<void(const std::string& error)>
using LoadSuccessCallback = std::function<void(std::unique_ptr<LoadedData>)>
using MakeTickCallback = std::function<void(double, void*)>
typedef std::array< float, 3 > PackedVector3f
using Resource = std::variant<Texture*, ContainerResource*, FontResource*>
using ScriptFactory = std::function<std::unique_ptr<Script>()>
typedef Vector2T< int32_t > Vector2i
typedef Vector2T< uint32_t > Vector2u
typedef Vector3T< int > Vector3i
using XrErrorCallback = std::function<void(const std::string* err)>

Enumerations

enum  AddressMode { ADDRESS_REPEAT = 0 , ADDRESS_CLAMP_TO_EDGE = 1 , ADDRESS_MIRRORED_REPEAT = 2 }
enum class  AlphaMode { OPAQUE = 0 , MASK = 1 , BLEND = 2 }
enum class  AnimInterpolation : uint8_t { STEP = 0 , LINEAR = 1 , CUBIC = 2 }
enum class  AspectRatioMode { ASPECT_AUTO , ASPECT_MANUAL }
enum class  Backend { Metal , Vulkan , WebGPU }
enum  BufferUsage { BUFFER_STATIC = 0 , BUFFER_DYNAMIC = 1 , BUFFER_STREAM = 2 }
enum class  CullMode { CULLFACE_NONE = 0 , CULLFACE_BACK = 1 , CULLFACE_FRONT = 2 , CULLFACE_FRONTANDBACK = 3 }
enum  CurveType : uint8_t { CURVE_LINEAR = 0 , CURVE_SMOOTHSTEP = 1 , CURVE_SPLINE = 2 , CURVE_STEP = 3 }
enum class  ElementHorizontalAlign { Left , Center , Right }
enum class  ElementType { Image , Text }
enum class  FillMode { FILLMODE_NONE , FILLMODE_FILL_WINDOW , FILLMODE_KEEP_ASPECT }
enum class  FilterMode : uint32_t {
  FILTER_NEAREST = 0 , FILTER_LINEAR = 1 , FILTER_NEAREST_MIPMAP_NEAREST = 2 , FILTER_NEAREST_MIPMAP_LINEAR = 3 ,
  FILTER_LINEAR_MIPMAP_NEAREST = 4 , FILTER_LINEAR_MIPMAP_LINEAR = 5
}
enum class  GpuLightType : uint32_t { Directional = 0u , Point = 1u , Spot = 2u , AreaRect = 3u }
enum  IndexFormat { INDEXFORMAT_UINT8 = 0 , INDEXFORMAT_UINT16 = 1 , INDEXFORMAT_UINT32 = 2 }
enum class  Key {
  W , A , S , D ,
  Q , E
}
enum class  LightFalloff { LIGHTFALLOFF_LINEAR = 0 , LIGHTFALLOFF_INVERSESQUARED = 1 }
enum class  LightType {
  LIGHTTYPE_DIRECTIONAL , LIGHTTYPE_OMNI , LIGHTTYPE_POINT , LIGHTTYPE_SPOT ,
  LIGHTTYPE_AREA_RECT
}
enum class  MaskType { MASK_NONE = static_cast<int>(::visutwin::canvas::MASK_NONE) , MASK_AFFECT_DYNAMIC = static_cast<int>(::visutwin::canvas::MASK_AFFECT_DYNAMIC) , MASK_AFFECT_LIGHTMAPPED = static_cast<int>(::visutwin::canvas::MASK_AFFECT_LIGHTMAPPED) , MASK_BAKE = static_cast<int>(::visutwin::canvas::MASK_BAKE) }
enum class  MouseButton { Left , Right , Middle }
enum class  PixelFormat : uint32_t {
  PIXELFORMAT_RGB8 = 6 , PIXELFORMAT_RGBA8 = 7 , PIXELFORMAT_RGBA16F = 12 , PIXELFORMAT_RGBA32F = 14 ,
  PIXELFORMAT_R32F = 15 , PIXELFORMAT_DEPTHSTENCIL = 19 , PIXELFORMAT_DEPTH = 16 , PIXELFORMAT_R8 = 52 ,
  PIXELFORMAT_RG8 = 53 , PIXELFORMAT_DEPTH16 = 69
}
enum  PrimitiveType {
  PRIMITIVE_POINTS = 0 , PRIMITIVE_LINES = 1 , PRIMITIVE_LINELOOP = 2 , PRIMITIVE_LINESTRIP = 3 ,
  PRIMITIVE_TRIANGLES = 4 , PRIMITIVE_TRISTRIP = 5 , PRIMITIVE_TRIFAN = 6
}
enum class  ProjectionType { Orthographic , Perspective }
enum class  ResolutionMode { RESOLUTION_AUTO , RESOLUTION_FIXED }
enum class  RigidBodyType { Static , Dynamic , Kinematic }
enum  ShadowType { SHADOW_PCF3_32F = 0 , SHADOW_VSM_16F = 2 , SHADOW_PCF1_32F = 5 }
enum class  ShadowUpdateType { SHADOWUPDATE_NONE , SHADOWUPDATE_THISFRAME , SHADOWUPDATE_REALTIME }
enum  SkyType { SKYTYPE_INFINITE , SKYTYPE_BOX , SKYTYPE_DOME , SKYTYPE_ATMOSPHERE }
enum class  TexHint { TEXHINT_NONE = 0 , TEXHINT_SHADOWMAP = 1 , TEXHINT_ASSET = 2 , TEXHINT_LIGHTMAP = 3 }
enum class  TextureEncoding { Default = 0 , RGBP = 1 , RGBM = 2 }
enum class  TextureProjection : uint32_t { TEXTUREPROJECTION_NONE = 0 , TEXTUREPROJECTION_CUBE = 1 }
enum  TextureProperty {
  TEXPROPERTY_MIN_FILTER = 1 , TEXPROPERTY_MAG_FILTER = 2 , TEXPROPERTY_ADDRESS_U = 4 , TEXPROPERTY_ADDRESS_V = 8 ,
  TEXPROPERTY_ADDRESS_W = 16 , TEXPROPERTY_COMPARE_ON_READ = 32 , TEXPROPERTY_COMPARE_FUNC = 64 , TEXPROPERTY_ANISOTROPY = 128 ,
  TEXPROPERTY_ALL = 255
}
enum  Tonemap {
  TONEMAP_LINEAR = 0 , TONEMAP_FILMIC = 1 , TONEMAP_HEJL = 2 , TONEMAP_ACES = 3 ,
  TONEMAP_ACES2 = 4 , TONEMAP_NEUTRAL = 5 , TONEMAP_NONE = 6
}
enum class  VertexDataType {
  TYPE_INT8 = 0 , TYPE_UINT8 = 1 , TYPE_INT16 = 2 , TYPE_UINT16 = 3 ,
  TYPE_INT32 = 4 , TYPE_UINT32 = 5 , TYPE_FLOAT32 = 6 , TYPE_FLOAT16 = 7
}
enum class  VertexSemantic {
  SEMANTIC_POSITION , SEMANTIC_NORMAL , SEMANTIC_TANGENT , SEMANTIC_BLENDWEIGHT ,
  SEMANTIC_BLENDINDICES , SEMANTIC_COLOR , SEMANTIC_TEXCOORD , SEMANTIC_TEXCOORD0 ,
  SEMANTIC_TEXCOORD1 , SEMANTIC_TEXCOORD2 , SEMANTIC_TEXCOORD3 , SEMANTIC_TEXCOORD4 ,
  SEMANTIC_TEXCOORD5 , SEMANTIC_TEXCOORD6 , SEMANTIC_TEXCOORD7 , SEMANTIC_ATTR0 ,
  SEMANTIC_ATTR1 , SEMANTIC_ATTR2 , SEMANTIC_ATTR3 , SEMANTIC_ATTR4 ,
  SEMANTIC_ATTR5 , SEMANTIC_ATTR6 , SEMANTIC_ATTR7 , SEMANTIC_ATTR8 ,
  SEMANTIC_ATTR9 , SEMANTIC_ATTR10 , SEMANTIC_ATTR11 , SEMANTIC_ATTR12 ,
  SEMANTIC_ATTR13 , SEMANTIC_ATTR14 , SEMANTIC_ATTR15
}

Functions

template<typename T>
ComponentTypeID componentTypeID ()
MTL::Texture * createDepthTexture (MTL::Device *device, const int width, const int height)
 Create a Depth32Float texture for the back buffer depth attachment.
std::unique_ptr< GraphicsDevicecreateGraphicsDevice (const GraphicsDeviceOptions &options)
std::shared_ptr< ShadercreateShader (GraphicsDevice *graphicsDevice, const ShaderDefinition &definition, const std::string &sourceCode)
std::string createURI (const URIOptions &options)
std::string decodeURIComponent (const std::string &input)
constexpr float degToRad (const float degrees)
std::string encodeURIComponent (const std::string &input)
std::shared_ptr< MaterialgetDefaultMaterial (const std::shared_ptr< GraphicsDevice > &device)
std::shared_ptr< ProgramLibrarygetProgramLibrary (const std::shared_ptr< GraphicsDevice > &device)
uint32_t hash32Fnv1a (const uint32_t *array, size_t length)
bool isCompressedPixelFormat (const PixelFormat format)
bool isIntegerPixelFormat (const PixelFormat format)
bool isVisibleInCameraFrustum (Camera *camera, GraphNode *cameraNode, const BoundingBox &bounds)
std::optional< FontResource * > loadBitmapFontResource (const std::string &jsonPath, const std::shared_ptr< GraphicsDevice > &graphicsDevice)
MakeTickCallback makeTick (const std::shared_ptr< Engine > &app)
ComponentTypeID nextComponentTypeID ()
bool runLightingValidationSelfTest ()
void setDefaultMaterial (const std::shared_ptr< GraphicsDevice > &device, const std::shared_ptr< Material > &material)
void setProgramLibrary (const std::shared_ptr< GraphicsDevice > &device, const std::shared_ptr< ProgramLibrary > &library)
bool shouldRenderShadowMeshInstance (MeshInstance *meshInstance, Camera *shadowCamera)
bool shouldRenderShadowRenderComponent (const RenderComponent *renderComponent, const Camera *camera)
MTL::CullMode toMetalCullMode (const CullMode cullMode)
 Map engine CullMode to Metal CullMode.
MTL::PrimitiveType toMetalPrimitiveType (const PrimitiveType primitiveType)
 Map engine PrimitiveType to Metal PrimitiveType.
simd::float4x4 toSimdMatrix (const Matrix4 &matrix)
 Convert a column-major Matrix4 to a SIMD float4x4.

Variables

constexpr uint32_t alphaDstFactorShift = 18
constexpr uint32_t alphaOpShift = 11
constexpr uint32_t alphaSrcFactorShift = 14
constexpr uint32_t alphaWriteShift = 25
constexpr int BLENDEQUATION_ADD = 0
constexpr int BLENDEQUATION_MAX = 4
constexpr int BLENDEQUATION_MIN = 3
constexpr int BLENDEQUATION_REVERSE_SUBTRACT = 2
constexpr int BLENDEQUATION_SUBTRACT = 1
constexpr int BLENDMODE_CONSTANT = 11
constexpr int BLENDMODE_DST_ALPHA = 9
constexpr int BLENDMODE_DST_COLOR = 4
constexpr int BLENDMODE_ONE = 1
constexpr int BLENDMODE_ONE_MINUS_CONSTANT = 12
constexpr int BLENDMODE_ONE_MINUS_DST_ALPHA = 10
constexpr int BLENDMODE_ONE_MINUS_DST_COLOR = 5
constexpr int BLENDMODE_ONE_MINUS_SRC_ALPHA = 8
constexpr int BLENDMODE_ONE_MINUS_SRC_COLOR = 3
constexpr int BLENDMODE_SRC_ALPHA = 6
constexpr int BLENDMODE_SRC_ALPHA_SATURATE = 7
constexpr int BLENDMODE_SRC_COLOR = 2
constexpr int BLENDMODE_ZERO = 0
constexpr uint32_t blendShift = 26
constexpr uint32_t blueWriteShift = 24
constexpr uint32_t colorDstFactorShift = 7
constexpr uint32_t colorOpShift = 0
constexpr uint32_t colorSrcFactorShift = 3
DeviceCache defaultMaterialDeviceCache
std::unordered_map< GraphicsDevice *, std::shared_ptr< Material > > defaultMaterials
constexpr float DEG_TO_RAD = PI / 180.0f
const uint32_t factorMask = 0b1111
constexpr uint32_t greenWriteShift = 23
constexpr int INDIRECT_ENTRY_BYTE_SIZE = 5 * 4
constexpr int LAYERID_DEPTH = 2
constexpr int LAYERID_IMMEDIATE = 5
constexpr int LAYERID_SKYBOX = 3
constexpr int LAYERID_UI = 4
constexpr int LAYERID_WORLD = 1
constexpr uint32_t MASK_AFFECT_DYNAMIC = 1u
constexpr uint32_t MASK_AFFECT_LIGHTMAPPED = 2u
constexpr uint32_t MASK_BAKE = 4u
constexpr uint32_t MASK_NONE = 0u
const uint32_t opMask = 0b111
constexpr float PI = std::numbers::pi
constexpr float RAD_TO_DEG = 180.0f / PI
constexpr uint32_t redWriteShift = 22
const std::unordered_map< ShadowType, ShadowTypeInfoshadowTypeInfo
constexpr uint32_t SPECOCC_AO = 1u
constexpr uint32_t SPECOCC_GLOSSDEPENDENT = 2u
constexpr uint32_t SPECOCC_NONE = 0u
constexpr std::string_view SSAOTYPE_COMBINE = "combine"
constexpr std::string_view SSAOTYPE_LIGHTING = "lighting"
constexpr std::string_view SSAOTYPE_NONE = "none"
constexpr float TAU = std::numbers::pi * 2

Typedef Documentation

◆ BitPacking

using visutwin::canvas::BitPacking = std::bitset<32>

Definition at line 12 of file utils.h.

◆ ComponentTypeID

using visutwin::canvas::ComponentTypeID = std::size_t

Definition at line 17 of file component.h.

◆ EventArgs

using visutwin::canvas::EventArgs = std::vector<std::any>

Definition at line 20 of file eventHandler.h.

◆ HandleEventCallback

using visutwin::canvas::HandleEventCallback = std::function<void(const EventArgs&)>

Definition at line 21 of file eventHandler.h.

◆ LoadErrorCallback

using visutwin::canvas::LoadErrorCallback = std::function<void(const std::string& error)>

Definition at line 73 of file resourceLoader.h.

◆ LoadSuccessCallback

using visutwin::canvas::LoadSuccessCallback = std::function<void(std::unique_ptr<LoadedData>)>

Definition at line 72 of file resourceLoader.h.

◆ MakeTickCallback

using visutwin::canvas::MakeTickCallback = std::function<void(double, void*)>

Definition at line 14 of file xrManager.h.

◆ PackedVector3f

typedef std::array<float, 3> visutwin::canvas::PackedVector3f

Definition at line 18 of file vector3.h.

◆ Resource

Definition at line 60 of file asset.h.

◆ ScriptFactory

using visutwin::canvas::ScriptFactory = std::function<std::unique_ptr<Script>()>

Definition at line 37 of file scriptRegistry.h.

◆ Vector2i

Definition at line 128 of file vector2.h.

◆ Vector2u

Definition at line 127 of file vector2.h.

◆ Vector3i

Definition at line 315 of file vector3.h.

◆ XrErrorCallback

using visutwin::canvas::XrErrorCallback = std::function<void(const std::string* err)>

Definition at line 12 of file xrManager.h.

Enumeration Type Documentation

◆ AddressMode

Enumerator
ADDRESS_REPEAT 
ADDRESS_CLAMP_TO_EDGE 
ADDRESS_MIRRORED_REPEAT 

Definition at line 62 of file constants.h.

◆ AlphaMode

enum class visutwin::canvas::AlphaMode
strong
Enumerator
OPAQUE 
MASK 
BLEND 

Definition at line 50 of file material.h.

◆ AnimInterpolation

enum class visutwin::canvas::AnimInterpolation : uint8_t
strong
Enumerator
STEP 
LINEAR 
CUBIC 

Definition at line 36 of file animTrack.h.

◆ AspectRatioMode

Enumerator
ASPECT_AUTO 
ASPECT_MANUAL 

Definition at line 90 of file constants.h.

◆ Backend

enum class visutwin::canvas::Backend
strong
Enumerator
Metal 
Vulkan 
WebGPU 

Definition at line 15 of file graphicsDeviceCreate.h.

◆ BufferUsage

Enumerator
BUFFER_STATIC 
BUFFER_DYNAMIC 
BUFFER_STREAM 

Definition at line 12 of file constants.h.

◆ CullMode

enum class visutwin::canvas::CullMode
strong
Enumerator
CULLFACE_NONE 
CULLFACE_BACK 
CULLFACE_FRONT 
CULLFACE_FRONTANDBACK 

Definition at line 53 of file constants.h.

◆ CurveType

Enumerator
CURVE_LINEAR 
CURVE_SMOOTHSTEP 
CURVE_SPLINE 
CURVE_STEP 

Definition at line 16 of file curve.h.

◆ ElementHorizontalAlign

Enumerator
Left 
Center 
Right 

Definition at line 23 of file elementComponent.h.

◆ ElementType

enum class visutwin::canvas::ElementType
strong
Enumerator
Image 
Text 

Definition at line 17 of file elementComponent.h.

◆ FillMode

enum class visutwin::canvas::FillMode
strong
Enumerator
FILLMODE_NONE 
FILLMODE_FILL_WINDOW 
FILLMODE_KEEP_ASPECT 

Definition at line 10 of file constants.h.

◆ FilterMode

enum class visutwin::canvas::FilterMode : uint32_t
strong
Enumerator
FILTER_NEAREST 
FILTER_LINEAR 
FILTER_NEAREST_MIPMAP_NEAREST 
FILTER_NEAREST_MIPMAP_LINEAR 
FILTER_LINEAR_MIPMAP_NEAREST 
FILTER_LINEAR_MIPMAP_LINEAR 

Definition at line 18 of file constants.h.

◆ GpuLightType

enum class visutwin::canvas::GpuLightType : uint32_t
strong
Enumerator
Directional 
Point 
Spot 
AreaRect 

Definition at line 39 of file graphicsDevice.h.

◆ IndexFormat

Enumerator
INDEXFORMAT_UINT8 
INDEXFORMAT_UINT16 
INDEXFORMAT_UINT32 

Definition at line 13 of file indexBuffer.h.

◆ Key

enum class visutwin::canvas::Key
strong
Enumerator

Definition at line 15 of file input.h.

◆ LightFalloff

enum class visutwin::canvas::LightFalloff
strong
Enumerator
LIGHTFALLOFF_LINEAR 
LIGHTFALLOFF_INVERSESQUARED 

Definition at line 57 of file constants.h.

◆ LightType

enum class visutwin::canvas::LightType
strong
Enumerator
LIGHTTYPE_DIRECTIONAL 
LIGHTTYPE_OMNI 
LIGHTTYPE_POINT 
LIGHTTYPE_SPOT 
LIGHTTYPE_AREA_RECT 

Definition at line 48 of file constants.h.

◆ MaskType

enum class visutwin::canvas::MaskType
strong
Enumerator
MASK_NONE 
MASK_AFFECT_DYNAMIC 
MASK_AFFECT_LIGHTMAPPED 
MASK_BAKE 

Definition at line 63 of file constants.h.

◆ MouseButton

enum class visutwin::canvas::MouseButton
strong
Enumerator
Left 
Right 
Middle 

Definition at line 19 of file input.h.

◆ PixelFormat

enum class visutwin::canvas::PixelFormat : uint32_t
strong
Enumerator
PIXELFORMAT_RGB8 
PIXELFORMAT_RGBA8 
PIXELFORMAT_RGBA16F 
PIXELFORMAT_RGBA32F 
PIXELFORMAT_R32F 
PIXELFORMAT_DEPTHSTENCIL 
PIXELFORMAT_DEPTH 
PIXELFORMAT_R8 
PIXELFORMAT_RG8 
PIXELFORMAT_DEPTH16 

Definition at line 32 of file constants.h.

◆ PrimitiveType

Enumerator
PRIMITIVE_POINTS 
PRIMITIVE_LINES 
PRIMITIVE_LINELOOP 
PRIMITIVE_LINESTRIP 
PRIMITIVE_TRIANGLES 
PRIMITIVE_TRISTRIP 
PRIMITIVE_TRIFAN 

Definition at line 17 of file mesh.h.

◆ ProjectionType

Enumerator
Orthographic 
Perspective 

Definition at line 22 of file camera.h.

◆ ResolutionMode

Enumerator
RESOLUTION_AUTO 
RESOLUTION_FIXED 

Definition at line 17 of file constants.h.

◆ RigidBodyType

Enumerator
Static 
Dynamic 
Kinematic 

Definition at line 15 of file rigidBodyComponent.h.

◆ ShadowType

Enumerator
SHADOW_PCF3_32F 

A shadow sampling technique using 32bit shadow map that averages depth comparisons from a 3x3 grid of texels for softened shadow edges.

SHADOW_VSM_16F 

A shadow sampling technique using a 16-bit exponential variance shadow map that leverages variance to approximate shadow boundaries, enabling soft shadows. Only supported when GraphicsDevice#textureHalfFloatRenderable is true. Falls back to SHADOW_PCF3_32F, if not supported.

SHADOW_PCF1_32F 

A shadow sampling technique using a 32-bit shadow map that performs a single depth comparison for sharp shadow edges.

Definition at line 96 of file constants.h.

◆ ShadowUpdateType

Enumerator
SHADOWUPDATE_NONE 
SHADOWUPDATE_THISFRAME 
SHADOWUPDATE_REALTIME 

Definition at line 71 of file constants.h.

◆ SkyType

Enumerator
SKYTYPE_INFINITE 
SKYTYPE_BOX 
SKYTYPE_DOME 
SKYTYPE_ATMOSPHERE 

Definition at line 40 of file constants.h.

◆ TexHint

enum class visutwin::canvas::TexHint
strong
Enumerator
TEXHINT_NONE 
TEXHINT_SHADOWMAP 
TEXHINT_ASSET 
TEXHINT_LIGHTMAP 

Definition at line 45 of file constants.h.

◆ TextureEncoding

Enumerator
Default 
RGBP 
RGBM 

Definition at line 17 of file texture.h.

◆ TextureProjection

enum class visutwin::canvas::TextureProjection : uint32_t
strong
Enumerator
TEXTUREPROJECTION_NONE 
TEXTUREPROJECTION_CUBE 

Definition at line 27 of file constants.h.

◆ TextureProperty

Enumerator
TEXPROPERTY_MIN_FILTER 
TEXPROPERTY_MAG_FILTER 
TEXPROPERTY_ADDRESS_U 
TEXPROPERTY_ADDRESS_V 
TEXPROPERTY_ADDRESS_W 
TEXPROPERTY_COMPARE_ON_READ 
TEXPROPERTY_COMPARE_FUNC 
TEXPROPERTY_ANISOTROPY 
TEXPROPERTY_ALL 

Definition at line 71 of file constants.h.

◆ Tonemap

Enumerator
TONEMAP_LINEAR 
TONEMAP_FILMIC 
TONEMAP_HEJL 
TONEMAP_ACES 
TONEMAP_ACES2 
TONEMAP_NEUTRAL 
TONEMAP_NONE 

Definition at line 79 of file constants.h.

◆ VertexDataType

Enumerator
TYPE_INT8 
TYPE_UINT8 
TYPE_INT16 
TYPE_UINT16 
TYPE_INT32 
TYPE_UINT32 
TYPE_FLOAT32 
TYPE_FLOAT16 

Definition at line 49 of file vertexFormat.h.

◆ VertexSemantic

Enumerator
SEMANTIC_POSITION 
SEMANTIC_NORMAL 
SEMANTIC_TANGENT 
SEMANTIC_BLENDWEIGHT 
SEMANTIC_BLENDINDICES 
SEMANTIC_COLOR 
SEMANTIC_TEXCOORD 
SEMANTIC_TEXCOORD0 
SEMANTIC_TEXCOORD1 
SEMANTIC_TEXCOORD2 
SEMANTIC_TEXCOORD3 
SEMANTIC_TEXCOORD4 
SEMANTIC_TEXCOORD5 
SEMANTIC_TEXCOORD6 
SEMANTIC_TEXCOORD7 
SEMANTIC_ATTR0 
SEMANTIC_ATTR1 
SEMANTIC_ATTR2 
SEMANTIC_ATTR3 
SEMANTIC_ATTR4 
SEMANTIC_ATTR5 
SEMANTIC_ATTR6 
SEMANTIC_ATTR7 
SEMANTIC_ATTR8 
SEMANTIC_ATTR9 
SEMANTIC_ATTR10 
SEMANTIC_ATTR11 
SEMANTIC_ATTR12 
SEMANTIC_ATTR13 
SEMANTIC_ATTR14 
SEMANTIC_ATTR15 

Definition at line 14 of file vertexFormat.h.

Function Documentation

◆ componentTypeID()

◆ createDepthTexture()

MTL::Texture * visutwin::canvas::metal::createDepthTexture ( MTL::Device * device,
const int width,
const int height )
inline

Create a Depth32Float texture for the back buffer depth attachment.

Definition at line 67 of file metalUtils.h.

Referenced by visutwin::canvas::MetalGraphicsDevice::startRenderPass().

◆ createGraphicsDevice()

std::unique_ptr< GraphicsDevice > visutwin::canvas::createGraphicsDevice ( const GraphicsDeviceOptions & options)

◆ createShader()

◆ createURI()

◆ decodeURIComponent()

std::string visutwin::canvas::decodeURIComponent ( const std::string & input)
inline

Definition at line 33 of file uri.h.

Referenced by visutwin::canvas::URI::getQuery().

◆ degToRad()

float visutwin::canvas::degToRad ( const float degrees)
constexpr

Definition at line 51 of file defines.h.

References DEG_TO_RAD.

◆ encodeURIComponent()

std::string visutwin::canvas::encodeURIComponent ( const std::string & input)
inline

Definition at line 16 of file uri.h.

Referenced by visutwin::canvas::URI::setQuery().

◆ getDefaultMaterial()

std::shared_ptr< Material > visutwin::canvas::getDefaultMaterial ( const std::shared_ptr< GraphicsDevice > & device)

Definition at line 382 of file material.cpp.

References defaultMaterials.

Referenced by visutwin::canvas::Renderer::renderForwardLayer().

◆ getProgramLibrary()

std::shared_ptr< ProgramLibrary > visutwin::canvas::getProgramLibrary ( const std::shared_ptr< GraphicsDevice > & device)

◆ hash32Fnv1a()

uint32_t visutwin::canvas::hash32Fnv1a ( const uint32_t * array,
size_t length )

Calculates a simple 32bit hash value of an array of 32bit integer numbers. Designed for performance but provides good distribution with a small number of collisions. Based on FNV-1a non-cryptographic hash function.

Definition at line 10 of file utils.cpp.

Referenced by visutwin::canvas::MetalRenderPipeline::get(), and visutwin::canvas::MetalUniformBinder::submitPerDrawUniforms().

◆ isCompressedPixelFormat()

bool visutwin::canvas::isCompressedPixelFormat ( const PixelFormat format)

Definition at line 33 of file constants.cpp.

Referenced by visutwin::canvas::Texture::Texture().

◆ isIntegerPixelFormat()

bool visutwin::canvas::isIntegerPixelFormat ( const PixelFormat format)

◆ isVisibleInCameraFrustum()

◆ loadBitmapFontResource()

◆ makeTick()

MakeTickCallback visutwin::canvas::makeTick ( const std::shared_ptr< Engine > & app)

Definition at line 24 of file engine.cpp.

◆ nextComponentTypeID()

ComponentTypeID visutwin::canvas::nextComponentTypeID ( )
inline

Definition at line 19 of file component.h.

Referenced by componentTypeID().

◆ runLightingValidationSelfTest()

bool visutwin::canvas::runLightingValidationSelfTest ( )

Definition at line 100 of file lightingValidation.cpp.

Referenced by visutwin::canvas::Renderer::Renderer().

◆ setDefaultMaterial()

void visutwin::canvas::setDefaultMaterial ( const std::shared_ptr< GraphicsDevice > & device,
const std::shared_ptr< Material > & material )

Definition at line 372 of file material.cpp.

References defaultMaterialDeviceCache, and defaultMaterials.

◆ setProgramLibrary()

void visutwin::canvas::setProgramLibrary ( const std::shared_ptr< GraphicsDevice > & device,
const std::shared_ptr< ProgramLibrary > & library )

Definition at line 229 of file programLibrary.cpp.

◆ shouldRenderShadowMeshInstance()

◆ shouldRenderShadowRenderComponent()

◆ toMetalCullMode()

MTL::CullMode visutwin::canvas::metal::toMetalCullMode ( const CullMode cullMode)
inline

Map engine CullMode to Metal CullMode.

Definition at line 52 of file metalUtils.h.

Referenced by visutwin::canvas::MetalGraphicsDevice::draw().

◆ toMetalPrimitiveType()

MTL::PrimitiveType visutwin::canvas::metal::toMetalPrimitiveType ( const PrimitiveType primitiveType)
inline

Map engine PrimitiveType to Metal PrimitiveType.

Definition at line 32 of file metalUtils.h.

Referenced by visutwin::canvas::MetalGraphicsDevice::draw().

◆ toSimdMatrix()

simd::float4x4 visutwin::canvas::metal::toSimdMatrix ( const Matrix4 & matrix)
inline

Convert a column-major Matrix4 to a SIMD float4x4.

Definition at line 20 of file metalUtils.h.

Referenced by visutwin::canvas::MetalUniformBinder::setTransformUniforms().

Variable Documentation

◆ alphaDstFactorShift

uint32_t visutwin::canvas::alphaDstFactorShift = 18
constexpr

◆ alphaOpShift

uint32_t visutwin::canvas::alphaOpShift = 11
constexpr

◆ alphaSrcFactorShift

uint32_t visutwin::canvas::alphaSrcFactorShift = 14
constexpr

◆ alphaWriteShift

uint32_t visutwin::canvas::alphaWriteShift = 25
constexpr

◆ BLENDEQUATION_ADD

int visutwin::canvas::BLENDEQUATION_ADD = 0
constexpr

◆ BLENDEQUATION_MAX

int visutwin::canvas::BLENDEQUATION_MAX = 4
constexpr

Definition at line 32 of file blendState.h.

◆ BLENDEQUATION_MIN

int visutwin::canvas::BLENDEQUATION_MIN = 3
constexpr

Definition at line 31 of file blendState.h.

◆ BLENDEQUATION_REVERSE_SUBTRACT

int visutwin::canvas::BLENDEQUATION_REVERSE_SUBTRACT = 2
constexpr

Definition at line 30 of file blendState.h.

◆ BLENDEQUATION_SUBTRACT

int visutwin::canvas::BLENDEQUATION_SUBTRACT = 1
constexpr

Definition at line 29 of file blendState.h.

◆ BLENDMODE_CONSTANT

int visutwin::canvas::BLENDMODE_CONSTANT = 11
constexpr

Definition at line 24 of file blendState.h.

◆ BLENDMODE_DST_ALPHA

int visutwin::canvas::BLENDMODE_DST_ALPHA = 9
constexpr

Definition at line 22 of file blendState.h.

◆ BLENDMODE_DST_COLOR

int visutwin::canvas::BLENDMODE_DST_COLOR = 4
constexpr

Definition at line 17 of file blendState.h.

Referenced by visutwin::canvas::BlendState::multiplicativeBlend().

◆ BLENDMODE_ONE

int visutwin::canvas::BLENDMODE_ONE = 1
constexpr

◆ BLENDMODE_ONE_MINUS_CONSTANT

int visutwin::canvas::BLENDMODE_ONE_MINUS_CONSTANT = 12
constexpr

Definition at line 25 of file blendState.h.

◆ BLENDMODE_ONE_MINUS_DST_ALPHA

int visutwin::canvas::BLENDMODE_ONE_MINUS_DST_ALPHA = 10
constexpr

Definition at line 23 of file blendState.h.

◆ BLENDMODE_ONE_MINUS_DST_COLOR

int visutwin::canvas::BLENDMODE_ONE_MINUS_DST_COLOR = 5
constexpr

Definition at line 18 of file blendState.h.

◆ BLENDMODE_ONE_MINUS_SRC_ALPHA

int visutwin::canvas::BLENDMODE_ONE_MINUS_SRC_ALPHA = 8
constexpr

Definition at line 21 of file blendState.h.

Referenced by visutwin::canvas::BlendState::alphaBlend().

◆ BLENDMODE_ONE_MINUS_SRC_COLOR

int visutwin::canvas::BLENDMODE_ONE_MINUS_SRC_COLOR = 3
constexpr

Definition at line 16 of file blendState.h.

◆ BLENDMODE_SRC_ALPHA

int visutwin::canvas::BLENDMODE_SRC_ALPHA = 6
constexpr

◆ BLENDMODE_SRC_ALPHA_SATURATE

int visutwin::canvas::BLENDMODE_SRC_ALPHA_SATURATE = 7
constexpr

Definition at line 20 of file blendState.h.

◆ BLENDMODE_SRC_COLOR

int visutwin::canvas::BLENDMODE_SRC_COLOR = 2
constexpr

Definition at line 15 of file blendState.h.

◆ BLENDMODE_ZERO

int visutwin::canvas::BLENDMODE_ZERO = 0
constexpr

Definition at line 13 of file blendState.h.

Referenced by visutwin::canvas::BlendState::multiplicativeBlend().

◆ blendShift

uint32_t visutwin::canvas::blendShift = 26
constexpr

◆ blueWriteShift

uint32_t visutwin::canvas::blueWriteShift = 24
constexpr

◆ colorDstFactorShift

uint32_t visutwin::canvas::colorDstFactorShift = 7
constexpr

◆ colorOpShift

uint32_t visutwin::canvas::colorOpShift = 0
constexpr

◆ colorSrcFactorShift

uint32_t visutwin::canvas::colorSrcFactorShift = 3
constexpr

◆ defaultMaterialDeviceCache

DeviceCache visutwin::canvas::defaultMaterialDeviceCache

Definition at line 20 of file material.cpp.

Referenced by setDefaultMaterial().

◆ defaultMaterials

std::unordered_map<GraphicsDevice*, std::shared_ptr<Material> > visutwin::canvas::defaultMaterials

Definition at line 21 of file material.cpp.

Referenced by getDefaultMaterial(), and setDefaultMaterial().

◆ DEG_TO_RAD

float visutwin::canvas::DEG_TO_RAD = PI / 180.0f
constexpr

Definition at line 49 of file defines.h.

Referenced by degToRad(), and visutwin::canvas::RenderPassSsao::execute().

◆ factorMask

◆ greenWriteShift

uint32_t visutwin::canvas::greenWriteShift = 23
constexpr

◆ INDIRECT_ENTRY_BYTE_SIZE

int visutwin::canvas::INDIRECT_ENTRY_BYTE_SIZE = 5 * 4
constexpr

Definition at line 56 of file metalGraphicsDevice.cpp.

Referenced by visutwin::canvas::MetalGraphicsDevice::draw().

◆ LAYERID_DEPTH

int visutwin::canvas::LAYERID_DEPTH = 2
constexpr

Definition at line 18 of file constants.h.

Referenced by visutwin::canvas::ForwardRenderer::buildFrameGraph().

◆ LAYERID_IMMEDIATE

int visutwin::canvas::LAYERID_IMMEDIATE = 5
constexpr

Definition at line 27 of file constants.h.

◆ LAYERID_SKYBOX

int visutwin::canvas::LAYERID_SKYBOX = 3
constexpr

◆ LAYERID_UI

int visutwin::canvas::LAYERID_UI = 4
constexpr

Definition at line 24 of file constants.h.

Referenced by visutwin::canvas::ElementInput::syncTextElements().

◆ LAYERID_WORLD

int visutwin::canvas::LAYERID_WORLD = 1
constexpr

Definition at line 15 of file constants.h.

◆ MASK_AFFECT_DYNAMIC

uint32_t visutwin::canvas::MASK_AFFECT_DYNAMIC = 1u
constexpr

Definition at line 31 of file constants.h.

◆ MASK_AFFECT_LIGHTMAPPED

uint32_t visutwin::canvas::MASK_AFFECT_LIGHTMAPPED = 2u
constexpr

Definition at line 32 of file constants.h.

◆ MASK_BAKE

uint32_t visutwin::canvas::MASK_BAKE = 4u
constexpr

Definition at line 33 of file constants.h.

◆ MASK_NONE

uint32_t visutwin::canvas::MASK_NONE = 0u
constexpr

Definition at line 30 of file constants.h.

◆ opMask

◆ PI

float visutwin::canvas::PI = std::numbers::pi
constexpr

Definition at line 43 of file defines.h.

Referenced by visutwin::canvas::RenderPassSsao::execute().

◆ RAD_TO_DEG

float visutwin::canvas::RAD_TO_DEG = 180.0f / PI
constexpr

Definition at line 48 of file defines.h.

Referenced by visutwin::canvas::Pose::look().

◆ redWriteShift

uint32_t visutwin::canvas::redWriteShift = 22
constexpr

◆ shadowTypeInfo

const std::unordered_map< ShadowType, ShadowTypeInfo > visutwin::canvas::shadowTypeInfo
Initial value:
= {
{ SHADOW_PCF1_32F, { "PCF1_32F", "PCF1", PixelFormat::PIXELFORMAT_DEPTH, .pcf = true }},
{ SHADOW_PCF3_32F, { "PCF3_32F", "PCF3", PixelFormat::PIXELFORMAT_DEPTH, .pcf = true }},
{ SHADOW_VSM_16F, { "VSM_16F", "VSM", PixelFormat::PIXELFORMAT_RGBA16F, .vsm = true }},
}

Definition at line 10 of file constants.cpp.

Referenced by visutwin::canvas::ShadowMap::create(), and visutwin::canvas::ShadowRenderer::createShadowCamera().

◆ SPECOCC_AO

uint32_t visutwin::canvas::SPECOCC_AO = 1u
constexpr

Definition at line 37 of file constants.h.

Referenced by visutwin::canvas::StandardMaterial::reset().

◆ SPECOCC_GLOSSDEPENDENT

uint32_t visutwin::canvas::SPECOCC_GLOSSDEPENDENT = 2u
constexpr

Definition at line 38 of file constants.h.

Referenced by visutwin::canvas::Material::updateUniforms().

◆ SPECOCC_NONE

uint32_t visutwin::canvas::SPECOCC_NONE = 0u
constexpr

Definition at line 36 of file constants.h.

Referenced by visutwin::canvas::Material::updateUniforms().

◆ SSAOTYPE_COMBINE

std::string_view visutwin::canvas::SSAOTYPE_COMBINE = "combine"
inlineconstexpr

◆ SSAOTYPE_LIGHTING

std::string_view visutwin::canvas::SSAOTYPE_LIGHTING = "lighting"
inlineconstexpr

◆ SSAOTYPE_NONE

◆ TAU

float visutwin::canvas::TAU = std::numbers::pi * 2
constexpr

Definition at line 46 of file defines.h.