New Graphic features

Deprecated Channels

These are channels which contain outdated functionality an many have been replaced by better alternatives. Note that Quest3D 5 will load old projects so some are still included.
Many of these channels are hidden in OO mode.

Trackers (Quest3D VR)

The individual drivers for motion trackers have been replaced by the VRPN system which support numerous trackers. Because of this the following trackers have been deprecated:
Glove Driver 5DT,Glove Driver Immersion, Glove Driver P5, Glove Source, Glove Value, Glove5DTCommand, Flock of Birds Command, Flock of Birds Matrix, FasTRAK Command, Patriot Command, Minuteman Command, MinutemanCommand,ARTTrack Command

ActiveX/Webviewer

Because of the declining support for web plug-ins Quest3D 5 now only exports to a self executable or cgr files viewable by the Quest3D viewer. The source of the web plug-ins are available in the extended SDK in case you want to build, distribute and maintain these plug-ins for your own web applications.

Important Shader (HLSL) changes

Semantics

UseTangent and UseBiNormal are removed from the HLSL semantics. Instead the Command channel contains the "Add Tangents and BiNormal" command to add tangents and Binormals to a mesh.

Tangents and Binormals can only be used with shaders which are rendered using a global shader.

We advise you to not use the semantics for retrieving light positions and things like fog settings anymore. In modern projects things like lights and fog go beyond the capabilities of the old fixed function pipeline and there for the old semantics are not good enough anymore. Instead you can now specify your own standard using Set HLSL and Set GlobalShader commands. The first allows you to set parameters using a keyword so you can specify your own semantics the latter allows you to pass on parameters to a shader using an index.

Dialog changes

The option to save the HLSL code in a seperate file has been removed. Instead, you can now point the shader to an external file using #include.

The option to store the shader in a text channel connected to the HLSL channel has been removed.

Alternatives for the object section

Since the object section has been removed the texture mapping features of the object section are now available as a Command. This function allows you to apply simple UV mappings on a mesh. Note that you will have to recalculate tangents and binormals after applying new texture coordinates (see the first point above).

In the object section it was possible to set different surface properties like alpha blending and texture wrapping. These functions have been replaced by specifying effect states in the HLSL channel. Effect states are render states you can specify in the technique section of your shader code.

New capabilities

Quest3D supports instancing. This is a quick way to render multiple duplicates of a single object. Each instance reuses the same mesh and shader parameters although you can specify a single matrix for each instance so you can give each one a different position, size or color.

Quest3D supports Volume Textures. This channel works similar to normal textures but it contain a 3D texture instead of a 2D texture.

Quest3D supports hardware PCF filtered shadow maps. For this to work you should turn on the Return depth map and Create custom depth buffer features of the RenderTexture channel. The first function ensures you get the depth buffer and not the color buffer and the second option ensures the texture gets its own depth buffer instead of the buffer shared by all other render buffers. The exact details on using shadow maps goes beyond the scope of this topic so we advise you to check the Qframework or an example for more details.

Quest3D has a new HLSL compiler. This means you can use new features like compiler directives and improved compilation.

More information

For more details on all the ins and outs of HLSL shading please go here:
HLSL

Editor changes (in OO mode)

Quest3D strives to move the technology forward by relying on the new QFramework. This means we have removed several old windows from the editor because many of them do not make sense anymore in the new context. For example the object section is of little use because the latest Quest3D projects load their models in an OO stucture and can have completely different shaders for different objects. The best way to tackle this is by using a GUI build in Quest3D itself. The Qframeworks already includes a simple interface to change shaders, parameters and change textures.

Public callers and group arrays are solutions for problems that are now completely solved with OO. You can now define a class in a cgr file and create instances of this class. There's a nice method to call functions on the interface so public callers, parameters and group arrays are not needed anymore. Arrays are also easily replaceable by OO. It's very simple to define a class with several members and create class list of this class. In essence a list of classes is similar to an array in Quest3D 4. This is why arrays are not depricated in Quest3D 5.