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/Tdme2README

1. What is TDME2?
- ThreeDeeMiniEngine2 is a lightweight, multiplatform 3D engine including tools
- Read about the philosophy if interested
- See screenshots, if you want to quickly know where we are and where we will go :)
- TDME2 is open source
- please check the license
- you find the source code at https://github.com/andreasdr/tdme2
- you find binary alpha builds at https://www.mindty.com/products/tdme2/builds/
- here you find developer documentation including collaboration graphs and private API as well as public API for current alpha build
- RapidJSON is included, but not yet integrated into documentation, please see http://rapidjson.org/
- For TDME2 GUI XML documentation see README-GUI-XML.md
- For TDME2 MiniScript documentation
- see README-MiniScript.md
- here you find base MiniScript documentation including collaboration graphs and API
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
- initialization
- 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
- DAE
- 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
- animations
- 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
- 3d model based objects with
- 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
- supports specular lighting
- 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
- model reader
- 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
- decoder
- Video
- decoder
- mpeg1 decoder
- 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
- compound elements
- 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
node-connect
337.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
337.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.2kCommit, push, and open a PR
