/****************************************************************************
**
** Copyright (C) 2019-2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
\page qtquick3d-index.html
\title Qt Quick 3D
\brief Provides API that lets you define 3D items using QML.

Qt Quick 3D provides a high-level API for creating 3D content and 3D user interfaces
based on \l{Qt Quick}. Rather than using an external engine which creates syncing issues,
and additional layers of abstraction, we provide extensions to the existing
\l{Qt Quick Scene Graph} for spatial content, and a renderer for that extended
scene graph. When using the spatial scene graph it is also possible to mix
Qt Quick 2D content with 3D content.

\image dragon.jpg

\section1 Prerequisites

The \l{Qt Quick 3D QML Types}{QML Types} can be imported into your
application using the following import statement in your \c {.qml} file:

\code
import QtQuick3D
\endcode

In addition to the base Qt Quick 3D Model, additional functionality is
provided by the following module imports:

\code
import QtQuick3D.Effects
import QtQuick3D.AssetUtils
import QtQuick3D.Helpers
import QtQuick3D.Particles3D
\endcode

\section1 Building From Source

When building from source, ensure that the modules and tools from the
\e qtdeclarative and \e qtshadertools repositories are built first, as
it is not possible to use Qt Quick 3D without these. Having \e
qtquicktimeline available is strongly recommended as well, since
keyframe-based animations will not be available otherwise.

In addition, some of the examples rely on \l {Qt Quick Controls}.

\section1 Module Evolution
\l{Changes to Qt Quick 3D} lists important changes in the module API
and functionality that were done for the Qt 6 series of Qt.

\section1 License and Attributions

Qt Quick 3D is available under the commercial license from \l {The Qt Company}.
In addition, it is available under the
\l{GNU General Public License, version 3}.
See \l {Qt Licensing} for further details.

Furthermore Qt Quick 3D potentially contains third party modules
under the following permissive licenses:

\generatelist{groupsbymodule attributions-qtquick3d}

\section1 Topics

\list
    \li \l{Qt Quick 3D - Introduction}{Qt Quick 3D Introduction Example}
    \li \l{Qt Quick 3D Graphics Requirements}
    \li \l{Qt Quick 3D Architecture}
    \li \l{Balsam Asset Import Tool}
    \li \l{Optimizing 2D Assets}
    \li \l{Optimizing 3D Assets}
    \li \l{quick3d-pbr}{Physically-Based Rendering}
    \li \l{Using Image-Based Lighting}
    \li \l{Anti-Aliasing Best Practices}
    \li \l{Qt Quick 3D Scenes with 2D Content}
    \li \l{Programmable Materials, Effects, Geometry, and Texture data}
    \li \l{Shadergen Tool}{Build-time materials}
    \li \l{Vertex Skinning}{Skeletal Animation}
    \li \l{Morphing Animation}{Morphing Animation}
    \li \l{Instanced Rendering}{Instanced Rendering}
\endlist

\section1 Reference
\list
    \li \l{Qt Quick 3D QML Types}
    \li \l{Qt Quick 3D C++ Classes}
    \li \l{Qt Quick 3D Helpers QML Types}
    \li \l{QtQuick3D.AssetUtils QML Types}
          {Qt Quick 3D Asset Utility QML Types}
    \li \l{Qt Quick 3D Effects QML Types}
    \li \l{Qt Quick 3D Particles3D QML Types}
\endlist

\section1 Examples

\list
    \li \l{Qt Quick 3D - Introduction}{Introduction}
    \li \l{Qt Quick 3D - View3D Example}{View3D with Multiple Viewports}
    \li \l{Qt Quick 3D - Lights Example}{Lights and Shadows}
    \li \l{Qt Quick 3D - Dynamic Model Creation Example}{Dynamic Model Creation}
    \li \l{Qt Quick 3D - Principled Material Example}{Principled Material}
    \li \l{Qt Quick 3D - Quick Items Example}{Qt Quick Items within the 3D Scene}
    \li \l{Qt Quick 3D - Custom Materials Example}{Custom Materials}
    \li \l{Qt Quick 3D - Custom Shaders Example}{Unshaded Custom Materials}
    \li \l{Qt Quick 3D - Custom Effect Example}{Writing Custom Post-Processing Effects}
    \li \l{Qt Quick 3D - Custom Geometry Example}{Adding Custom Geometry from C++}
    \li \l{Qt Quick 3D - Procedural Texture Example}{Adding Custom Texture Data from C++}
    \li \l{Qt Quick 3D Examples and Tutorials}{All examples}
\endlist

\section1 Related Modules

\list
    \li \l{Qt Quick}
\endlist

*/
