Classes in this module implement FUSEE's 3D rendering capability. Many classes contain methods that enable user code to render 3D content, create 3D output windows, create and maniulate scene contents, organize scene contents in scene graphs, etc.
Among the most important classses are
Some of the functionality relies on platform specific implementations found in underlying platform-dependent modules. Common classes used by both, this module and underlying platform-dependent implementation modules can be found int the Fusee.Engine.Common namespace.
Axis-Aligned Bounding Box Calculator. Use instances of this class to calculate axis-aligned bounding boxes on scenes, list of scene nodes or individual scene nodes. Calculations always include any child nodes.
The Audio class provides all audio functionality. It is accessible from everywhere.
A box shaped collision object.
A capsule shaped collision object.
Base class for various collision shape types.
A collision shape made up of other shapes of various types.
Defines a cone-shaped collision object
A cone twist constraint
This is the fastest kind of arbitrary shape. It is defined by a cloud of vertices but the shape formed is the smallest convex shape that encloses the vertices. For making a convex dynamic shape like a TV, this is ideal. Make sure to reduce the number of vertices below say 100.
Creates a simple cube geomentry straight from the code.
Parameters sent with aor event.
A container that stores indices for vertices, normals and texture coordinates. The values are used for conversion to different geometry face formats, e.g. Triangles.
A FontMap creates an Image containing a subset of rendered glyphs of a given Font. In addition a FontMap provides information about each glyph on the image such as its pixel position on the image. Such an image can be used together with the provided information to create geometry consisting of individual quads with each quad displaying a single character of a text string.
Stores threedimensional, polygonal geometry and provides methods for manipulation. To actually render the geometry in the engine, convert Geometry to Mesh objects.
Handles and manages all input devices. Input is a staticton (a singleton with an additional static interface).
Input device instances expose access to underlying physical input devices such as mouse, keyboard, game pads etc. Users can either poll axis values or button state from an Input device or add event listeners reacting on value or state changes, no matter how the underlying physical device provides axis or button data. Additionally users can define their own axes by specifying calculation rules how to generate values from existing axes or buttons.
Creates a fusee-compatible mesh from a triangulated Jometri geometry
Provides the abillity to create or interact directly with the point data.
This class is used to load 3D Models in .obj format into memory.
Core network object. Handles all connections by accessing underlying interface implementations.
A render canvas object references the physical output screen space real estate (e.g. the rendering window). A typical Game application will inherit from this class and overrite methods to implement your user code to to be performed on events like initialization, resize, and display refresh. In the future, it will be likely that this class' functionality will be divided at two different places with one containing the more view oriented aspects and the other containing the more application oriented aspects.
The render context contains all functions necessary to manipulate the underlying rendering hardware. Use this class' elements to render geometry to the RenderCanvas associated with this context. If you have worked with OpenGL or DirectX before you will find many similarities in this class' methods and properties.
Use instances of this class to store a set of render states that need to be applied as a whole. Instances are used in the effects system to set a couple of states before a render pass is performed.
The RigidBody class ...
Use a Scene Renderer to traverse a scene hierarchy (made out of scene nodes and components) in order to have each visited element contribute to the result rendered against a given render context.
This class is used to store all parameters the user can adjust for a ScreenS3D object Can be used to serialize / de-serialize into a cinfig file to store adjustments / load adustments on application start (i.e. using JSON)
ScreenS3D can be used as a (video) screen to diplay steroscopic videos or images in addition with depth maps to simulate depth in the scene using the videos/images content
Compiler for ShaderCode. Takes a MaterialComponent, evaluates input parameters and creates pixel and vertexshader
A ShaderEffect contains a list of render passes with each pass item being a combination of a set of render states, and a pair of Pixel and Vertex Shader Programs (the code running on the GPU). In addition a ShaderEffect contains the actual values for all the shaders' (uniform) variables.
Handles settings of shaderprograms. Currently not implemented.
Instances of this class represent a pair of a Vertex and a Pixel shader code, both compiled an uploaded to the gpu ready to be used.
Contains all pixel and vertex shaders and a method to create a ShaderProgram in Rendercontext.
Rendering of stereo 3D graphics in anaglyph or oculus rift mode.
A S3D camera rig.
The Time class provides all time information. Time is a staticton (a singleton with an additional static interface).
An effect pass declaration contains the vertex and pixel shader source code as well as a RenderStateSet declaration for the rendering pass declared by this instance.
Used in conjunction with a FontMap containting information about a rendered character (glyph) on a font map texture.
This struct saves a light found by a Viserator with all parameters
This stuct contains all four textures used for the next render call.
All supported lightning calculation methods LegacyShaderCodeBuilder.cs supports.
The enum for the eye side selection.
The enum for the 3D Mode selection.
Symbolic value describing the double-touchpoint action with the highest intensity performed by a user with the first two touchpoints.