SkillAgentSearch skills...

Tdme2

TDME2 - ThreeDeeMiniEngine2 is a lightweight, multi-platform 3D engine including tools suited for 3D game/application development using C++, Mini(t)Script, GLSL, ...

Install / Use

/learn @andreasdr/Tdme2

README

License: MIT NIX Build Status MacOSX Build Status Windows/MSC Build Status Coverity Scan Build Status

LOGO

1. What is TDME2?

2. Features

  • Application
    • initialization
      • loads and initializes renderer backend plugin
      • creates main window and OpenGL/Vulkan context using GLFW3
    • handles HID
    • supports
      • setting window position and dimension
      • setting full screen or windowed, borderless windowed mode
      • setting application icon
      • setting mouse position and mouse cursor
      • executing other applications or background applications
      • swapping double buffered buffers (to screen) manually if required
      • checking if application is active (port-mingw, port-msc only for now)
      • setting and getting data from clipboard
      • receives and forwards file/folder drop events
      • gamepads/joysticks (WIP)
    • provides
      • a crash handler for port-msc and port-mingw which also saves backtrace to crash.log
      • application life cycle
  • Math
    • Math class with common math functions
    • Vector2, Vector3, Vector4, Matrix3x3, Matrix4x4 and Quaternion class
      • those have a ordinary API + operators, the latter is still a bit WIP
  • 3D engine
    • model reader
      • DAE
        • node names/ids must not have whitespace characters
        • requires baked matrices
        • requires triangulated meshes for now
      • FBX via FBX SDK
      • GLTF via tinygltf
      • TDME Model file format
        • this is a much more efficient model file format for TDME
        • can also be written
        • can use external or embedded PNG and embedded BC7 textures
    • objects/entity types
      • 3d model based objects with
        • animations
          • supports model object base animation and animation overlays
          • supports animation blending
        • skinning via
          • CPU on GL2, GL3+/CORE, GLES2
          • GPU via compute shaders with GL4.3+/CORE, Vulkan, GL3+/CORE via OpenCL for MacOSX
          • which also supports several instances of the same object to reduce compute and render calls
        • both animations and skinning have some sort of configurable LOD functionality
        • texture transforms/animations
          • via texture matrices
        • supports BC7 texture compression
      • objects with support for LOD
      • imposter objects with support for LOD
      • render group objects for foliage and such including LOD support
      • particle systems which
        • are object based
        • or point based, including sprite sheet animation support
        • or for fog purposes, including sprite sheet animation support
        • and support
          • basic/point emitter
          • sphere emitter
          • bounding box emitter
          • circle on plane emitter
          • ...
        • there is also support for particle system groups
      • lines based objects
      • entity hierarchy objects
      • environment mapping objects
        • which can be used as reflection sources of other objects
      • decal objects, including sprite sheet animation support
    • object/entity transforms
      • scaling
      • rotations
      • translation
    • color effects on objects/entities
      • color addition
      • color multiplication
    • lighting
      • supports specular lighting
        • supports phong lighting
        • supports phong shading on GL2, GL3+/CORE, Vulkan
        • supports gouraud shading on GLES2
        • supports diffuse mapping on GLES2, GL2, GL3+/CORE, Vulkan
        • supports specular shininess mapping on GL3+/CORE, Vulkan
        • supports normal mapping on GL3+/CORE, Vulkan
        • supports reflection mapping from cube maps on GLES2, GL2, GL3+/CORE, Vulkan
      • supports PBR lighting with IBL
      • supports deferred shading and forward shading on GL3+/CORE, Vulkan
    • custum shaders that currently include
      • specular lighting
      • specular lighting + foliage
      • specular lighting + tree
      • specular lighting + terrain
      • specular lighting + water
      • sky
      • PBR lighting
      • PBR lighting + foliage
      • PBR lighting + tree
    • shadow mapping
    • post processing
      • depth blur
      • desaturation
      • light scattering
      • SSAO
      • vignette
    • object picking
    • camera control
      • set up look from, look at, up vector can be computed
      • frustum culling via oct tree
    • supports offscreen instances
      • rendering can be captured as screenshot
      • rendering can be used (in other engine instances) as diffuse texture
    • supports down/up scaled rendering of main engine
    • screenshot ability
    • multiple renderer backends, which are loaded at runtime
      • GLES2, GL2, GL3+/CORE and Vulkan
  • Physics via ReactPhysics3D 0.9.0
    • have sphere, capsule, obb, convex mesh, concave terrain mesh, height map bounding volumes
    • have multiple bounding volumes per body
    • have static, dynamic rigid bodies and collision bodies
    • have joints(WIP)
    • uses discrete collision detection
    • rigid body simulator
    • ray tracing
    • for RP3D internals and additional features see ReactPhysics3D website
  • Path finding/flow maps
    • uses A*
    • is paired with physics world to determine if a "cell" is walkable
    • optional custom walkable test
    • additional optional navigation map test
    • path finding utility supports generating flow maps
  • 3D audio
    • decoder
      • ogg vorbis decoder
    • audio entities
      • streams
      • sounds
  • Video
    • decoder
      • mpeg1 decoder
  • GUI system, provided by our A-GUI - C++ based graphical user interface for games
    • borrows some ideas from Nifty-GUI regarding XML and layouting
    • borrows some ideas from AngularJS like
      • all nodes are in the GUI node tree and can be made visible or unvisible depending on conditions
    • adds some improvements like
      • support auto keyword with nodes width and height attributes
      • layouting on demand in combination with conditions
    • supported primitive nodes from which compounds are built of
      • element
      • gradient
      • image(plus framebuffer and texture image nodes)
      • input
      • layer
      • layout
      • panel
      • scrollbars
      • space
      • table
      • text + multiline/styled text
      • video
    • supports custom templates and compound elements defined by templates and its controllers
      • compound elements
        • button
        • checkbox
        • dropdown
        • grid (needs some love still)
        • image button
        • input
        • knob
        • menu
        • progress bar
        • radio button
        • scrollarea
        • selectbox including tree view
        • selector horizontal
        • slider horizontal
        • slider vertical
        • tabs
        • moveable
      • supports custom templates in general
      • supports overriding used template of a compound element while using its controller
      • so TDME2 GUI is fully customizable in terms of appearance by modifying or adding XML template definitions
    • includes a simple script language
      • to react on events with like on-mouse-click, ... and on-change for elements
      • to manipulate conditions of elements, values of element controller and node properties
    • a MiniScript script can be attached to screen nodes
      • to react on events
      • to modify the gui nodes tree or gui nodes state
      • to implement GUI application flow(WIP)
    • supports position and color based effects in combination with conditions that can also be

Related Skills

View on GitHub
GitHub Stars184
CategoryDevelopment
Updated1mo ago
Forks28

Languages

C++

Security Score

85/100

Audited on Feb 9, 2026

No findings