Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
QQuick3DLightmapper Class Reference

#include <qquick3dlightmapper_p.h>

Inheritance diagram for QQuick3DLightmapper:
Collaboration diagram for QQuick3DLightmapper:

Public Slots

void setOpacityThreshold (float opacity)
void setBias (float bias)
void setAdaptiveBiasEnabled (bool enabled)
void setIndirectLightEnabled (bool enabled)
void setSamples (int count)
void setIndirectLightWorkgroupSize (int size)
void setBounces (int count)
void setIndirectLightFactor (float factor)
 Q_REVISION (6, 10) void setSource(const QUrl &source)
 Q_REVISION (6, 10) void setDenoiseSigma(float new DenoiseSigma)
 Q_REVISION (6, 10) void setTexelsPerUnit(float new TexelsPerUnit)
Public Slots inherited from QObject
void deleteLater ()
 \threadsafe

Signals

void changed ()
void opacityThresholdChanged ()
void biasChanged ()
void adaptiveBiasEnabledChanged ()
void indirectLightEnabledChanged ()
void samplesChanged ()
void indirectLightWorkgroupSizeChanged ()
void bouncesChanged ()
void indirectLightFactorChanged ()
 Q_REVISION (6, 10) void sourceChanged()
 Q_REVISION (6, 10) void denoiseSigmaChanged()
 Q_REVISION (6, 10) void texelsPerUnitChanged()
Signals inherited from QObject
void destroyed (QObject *=nullptr)
 This signal is emitted immediately before the object obj is destroyed, after any instances of QPointer have been notified, and cannot be blocked.
void objectNameChanged (const QString &objectName, QPrivateSignal)
 This signal is emitted after the object's name has been changed.

Public Member Functions

float opacityThreshold () const
 \qmltype Lightmapper \inherits QtObject \inqmlmodule QtQuick3D
float bias () const
bool isAdaptiveBiasEnabled () const
bool isIndirectLightEnabled () const
int samples () const
int indirectLightWorkgroupSize () const
int bounces () const
float indirectLightFactor () const
 Q_REVISION (6, 10) QUrl source() const
 Q_REVISION (6, 10) float denoiseSigma() const
 Q_REVISION (6, 10) float texelsPerUnit() const
Public Member Functions inherited from QObject
Q_INVOKABLE QObject (QObject *parent=nullptr)
 Constructs an object with parent object parent.
virtual ~QObject ()
 Destroys the object, deleting all its child objects.
virtual bool event (QEvent *event)
 This virtual function receives events to an object and should return true if the event e was recognized and processed.
virtual bool eventFilter (QObject *watched, QEvent *event)
 Filters events if this object has been installed as an event filter for the watched object.
QString objectName () const
Q_WEAK_OVERLOAD void setObjectName (const QString &name)
 Sets the object's name to name.
void setObjectName (QAnyStringView name)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
QBindable< QStringbindableObjectName ()
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false.
bool isWindowType () const
 Returns true if the object is a window; otherwise returns false.
bool isQuickItemType () const
 Returns true if the object is a QQuickItem; otherwise returns false.
bool isQmlObjectType () const
 Returns whether the object has been created by the QML engine or ownership has been explicitly set via QJSEngine::setObjectOwnership().
bool signalsBlocked () const noexcept
 Returns true if signals are blocked; otherwise returns false.
bool blockSignals (bool b) noexcept
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it).
QThreadthread () const
 Returns the thread in which the object lives.
bool moveToThread (QThread *thread QT6_DECL_NEW_OVERLOAD_TAIL)
 Changes the thread affinity for this object and its children and returns true on success.
int startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer)
 This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds.
int startTimer (std::chrono::nanoseconds time, Qt::TimerType timerType=Qt::CoarseTimer)
void killTimer (int id)
 Kills the timer with timer identifier, id.
void killTimer (Qt::TimerId id)
template<typename T>
findChild (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object.
template<typename T>
QList< T > findChildren (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects.
template<typename T>
findChild (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
template<typename T>
QList< T > findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
const QObjectListchildren () const
 Returns a list of child objects.
void setParent (QObject *parent)
 Makes the object a child of parent.
void installEventFilter (QObject *filterObj)
 Installs an event filter filterObj on this object.
void removeEventFilter (QObject *obj)
 Removes an event filter object obj from this object.
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
bool disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const
bool disconnect (const QObject *receiver, const char *member=nullptr) const
void dumpObjectTree () const
 Dumps a tree of children to the debug output.
void dumpObjectInfo () const
 Dumps information about signal connections, etc.
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value.
bool setProperty (const char *name, QVariant &&value)
QVariant property (const char *name) const
 Returns the value of the object's name property.
QList< QByteArraydynamicPropertyNames () const
QBindingStoragebindingStorage ()
const QBindingStoragebindingStorage () const
QObjectparent () const
 Returns a pointer to the parent object.
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false.

Properties

float opacityThreshold
float bias
bool adaptiveBiasEnabled
bool indirectLightEnabled
int samples
int indirectLightWorkgroupSize
int bounces
float indirectLightFactor
QUrl source
float denoiseSigma
float texelsPerUnit
Properties inherited from QObject
QString objectName
 the name of this object

Additional Inherited Members

Static Public Member Functions inherited from QObject
static QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 \threadsafe
static QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
template<typename Func1, typename Func2>
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection)
template<typename Func1, typename Func2>
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot)
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 \threadsafe
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
static bool disconnect (const QMetaObject::Connection &)
 Disconnect a connection.
template<typename Func1, typename Func2>
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot)
template<typename Func1>
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero)
Protected Member Functions inherited from QObject
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr.
int senderSignalIndex () const
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal.
bool isSignalConnected (const QMetaMethod &signal) const
virtual void timerEvent (QTimerEvent *event)
 This event handler can be reimplemented in a subclass to receive timer events for the object.
virtual void childEvent (QChildEvent *event)
 This event handler can be reimplemented in a subclass to receive child events.
virtual void customEvent (QEvent *event)
 This event handler can be reimplemented in a subclass to receive custom events.
virtual void connectNotify (const QMetaMethod &signal)
virtual void disconnectNotify (const QMetaMethod &signal)
 QObject (QObjectPrivate &dd, QObject *parent=nullptr)
Protected Attributes inherited from QObject
QScopedPointer< QObjectDatad_ptr

Detailed Description

Definition at line 22 of file qquick3dlightmapper_p.h.

Member Function Documentation

◆ adaptiveBiasEnabledChanged

void QQuick3DLightmapper::adaptiveBiasEnabledChanged ( )
signal

◆ bias()

float QQuick3DLightmapper::bias ( ) const

Definition at line 201 of file qquick3dlightmapper.cpp.

◆ biasChanged

void QQuick3DLightmapper::biasChanged ( )
signal

◆ bounces()

int QQuick3DLightmapper::bounces ( ) const

Definition at line 226 of file qquick3dlightmapper.cpp.

◆ bouncesChanged

void QQuick3DLightmapper::bouncesChanged ( )
signal

◆ changed

void QQuick3DLightmapper::changed ( )
signal

◆ indirectLightEnabledChanged

void QQuick3DLightmapper::indirectLightEnabledChanged ( )
signal

◆ indirectLightFactor()

float QQuick3DLightmapper::indirectLightFactor ( ) const

Definition at line 231 of file qquick3dlightmapper.cpp.

◆ indirectLightFactorChanged

void QQuick3DLightmapper::indirectLightFactorChanged ( )
signal

◆ indirectLightWorkgroupSize()

int QQuick3DLightmapper::indirectLightWorkgroupSize ( ) const

Definition at line 221 of file qquick3dlightmapper.cpp.

◆ indirectLightWorkgroupSizeChanged

void QQuick3DLightmapper::indirectLightWorkgroupSizeChanged ( )
signal

◆ isAdaptiveBiasEnabled()

bool QQuick3DLightmapper::isAdaptiveBiasEnabled ( ) const

Definition at line 206 of file qquick3dlightmapper.cpp.

◆ isIndirectLightEnabled()

bool QQuick3DLightmapper::isIndirectLightEnabled ( ) const

Definition at line 211 of file qquick3dlightmapper.cpp.

◆ opacityThreshold()

QT_BEGIN_NAMESPACE float QQuick3DLightmapper::opacityThreshold ( ) const

\qmltype Lightmapper \inherits QtObject \inqmlmodule QtQuick3D

Specifies lightmap baking settings for a scene.

Since
6.4

Used when baking direct and indirect lighting. Most of these settings are not relevant at other times, such as when using already generated lightmaps to render a scene. The exception is \l source, though this has a sensible default for development.

On a successfull bake a single file will be generated at the value specified by \l source. This binary file contains the results of the bake, including the per-model lightmaps and the mesh files with lightmap-compatible UVs. The individual model data is accessed via \l BakedLightmap::key.

The data contained in the resulting lightmap file is all tightly coupled to each other and to the current scene state. This means that any modifications to the original mesh files, Lightmapper settings or other scene changes will require a new bake to be executed to see the updated result.

Note
As of Qt 6.4, lightmap baking is in an early technical preview state. Changes to features, quality, and API are likely to happen in future releases.

The Lightmapper object works in combination with:

\list

  • \l Model::bakedLightmap and the associated \l BakedLightmap,
  • \l Model::usedInBakedLighting and \l Model::texelsPerUnit,
  • \l Light::bakeMode,
  • the engine's built-in lightmap baker. \endlist
See also
{Lightmaps and Global Illumination}, {Qt Quick 3D - Baked Lightmap Example}

\qmlproperty real Lightmapper::opacityThreshold

The opacity (alpha) threshold below which an object is ignored in ray - mesh intersections when calculating lighting via raytracing. When the opacity falls below the threshold, the model (submesh) will not occlude lights and thus will not generate shadows either.

The default value is 0.5.

Note
The lightmapper takes the \l{PrincipledMaterial::opacity}{material's opacity} and the \l{PrincipledMaterial::baseColor}{baseColor alpha} combined with the \l{PrincipledMaterial::baseColorMap}{base color map's alpha} into account. Other sources of semi-transparency, such as the opacity map or alpha cut-off settings are ignored during the lightmap baking process.

\qmlproperty real Lightmapper::bias

Raycasting bias used during baking. Adapt the value in case artifacts occur, for example in order to reduce undesired shadowing patterns. In many cases the default value is sufficient.

The default value is 0.005.

\qmlproperty bool Lightmapper::adaptiveBiasEnabled

Enables applying an additional, dynamic bias based on the surface normal.

The default value is true.

\qmlproperty bool Lightmapper::indirectLightEnabled

Normally there is no need to change this value. The default value is true. Setting this property to false disables indirect light computation during lightmap baking. Thus the resulting texture maps will only contain direct light information. At run time, the engine will continue to use the maps normally, assuming they contain both direct and indirect lighting.

\qmlproperty int Lightmapper::samples

The number of samples per lightmap texel.

The default value is 256.

The value heavily affects both the performance and quality of the resulting lightmaps during lightmap baking.

\qmlproperty int Lightmapper::indirectLightWorkgroupSize

The size of the sample workgroups. These workgroups are attempted to be executed in parallel. (the exact behavior depends on the number of CPU cores and the QThreadPool configuration)

The default value is 32. With the default sample count of 256 this means attempting to run 8 groups in parallel per model.

\qmlproperty int Lightmapper::bounces

The maximum number of indirect light bounces per sample. The value should at least be 1, no point in indirect light calculation otherwise.

The default value is 3.

The value heavily affects both the performance and quality of the resulting lightmaps during lightmap baking.

\qmlproperty real Lightmapper::indirectLightFactor

Multiplier for the indirect light amount. While it is the value of 1 (i.e., not affecting the indirect light amount calculation) that provides the strictly correct rendering results, a slightly higher value can often give better looking results when using the lightmap, even with a lower number of bounces.

The default value is 1.

\qmlproperty url Lightmapper::source
\since 6.10
\default file:lightmaps.bin

The url for loading the lightmap file at runtime and the output file path
on a successful bake.

When baking, the output path will be deduced from the url and it needs to
resolve to a regular file location that is writable. By default the value
is \c{file:lightmaps.bin}, which means the file will be put in the current
working directory and the final result will instantly appear on a successful
bake.

In the same directory as the output file, a \c{.raw} file is created that
contains extra lightmap data used before creating the final lightmap file.
This makes it possible to do just denoising without having to bake the whole
scene between runs, assuming the \c{.raw} file is present.

If you want to read the lightmap as a QRC resource you need to embed
it in the usual way and add a \c{:/} or \c{qrc:/} prefix to the url.
The following example always tries to load the lightmap file embedded via
resources. First set the value to a writable location and bake. Then copy the
generated file into the source directoy. Then by listing the file in the
application's CMake project as a resource under the \c{/lightmaps} PREFIX,
lets the build process pick up the file and include it in the executable.

\qml
Lightmapper {
    source: "qrc:/lightmaps/lightmaps.bin"

will attempt to load from :/lightmaps/lightmaps.bin at runtime and write a file to lightmaps/lightmaps.bin when baking. } \endqml

\qmlproperty real Lightmapper::denoiseSigma

Since
6.10 \default 8

This property defines the sigma value of the Non-local means based denoiser. This means that the higher this value is the stronger the blurring will be. Try to keep this value as low as possible to avoid losing visual features while still removing the noise.

\qmlproperty real Lightmapper::texelsPerUnit

Since
6.10 \default 1

This property defines the unit to texel scale, meaning a {1x1} quad with texelsPerUnit of {32} will take up approximately {32x32} texels in the lightmap.

See also
Model::texelsPerUnit

Definition at line 196 of file qquick3dlightmapper.cpp.

◆ opacityThresholdChanged

void QQuick3DLightmapper::opacityThresholdChanged ( )
signal

◆ Q_REVISION() [1/9]

QQuick3DLightmapper::Q_REVISION ( 6 ,
10  ) const

◆ Q_REVISION() [2/9]

QQuick3DLightmapper::Q_REVISION ( 6 ,
10  ) const

◆ Q_REVISION() [3/9]

QQuick3DLightmapper::Q_REVISION ( 6 ,
10  ) const

◆ Q_REVISION [4/9]

QQuick3DLightmapper::Q_REVISION ( 6 ,
10  )
signal

◆ Q_REVISION [5/9]

QQuick3DLightmapper::Q_REVISION ( 6 ,
10  )
newslot

◆ Q_REVISION [6/9]

QQuick3DLightmapper::Q_REVISION ( 6 ,
10  ) const &
slot

◆ Q_REVISION [7/9]

QQuick3DLightmapper::Q_REVISION ( 6 ,
10  )
newslot

◆ Q_REVISION [8/9]

QQuick3DLightmapper::Q_REVISION ( 6 ,
10  )
signal

◆ Q_REVISION [9/9]

QQuick3DLightmapper::Q_REVISION ( 6 ,
10  )
signal

◆ samples()

int QQuick3DLightmapper::samples ( ) const

Definition at line 216 of file qquick3dlightmapper.cpp.

◆ samplesChanged

void QQuick3DLightmapper::samplesChanged ( )
signal

◆ setAdaptiveBiasEnabled

void QQuick3DLightmapper::setAdaptiveBiasEnabled ( bool enabled)
slot

Definition at line 261 of file qquick3dlightmapper.cpp.

◆ setBias

void QQuick3DLightmapper::setBias ( float bias)
slot

Definition at line 251 of file qquick3dlightmapper.cpp.

◆ setBounces

void QQuick3DLightmapper::setBounces ( int count)
slot

Definition at line 301 of file qquick3dlightmapper.cpp.

◆ setIndirectLightEnabled

void QQuick3DLightmapper::setIndirectLightEnabled ( bool enabled)
slot

Definition at line 271 of file qquick3dlightmapper.cpp.

◆ setIndirectLightFactor

void QQuick3DLightmapper::setIndirectLightFactor ( float factor)
slot

Definition at line 311 of file qquick3dlightmapper.cpp.

◆ setIndirectLightWorkgroupSize

void QQuick3DLightmapper::setIndirectLightWorkgroupSize ( int size)
slot

Definition at line 291 of file qquick3dlightmapper.cpp.

◆ setOpacityThreshold

void QQuick3DLightmapper::setOpacityThreshold ( float opacity)
slot

Definition at line 241 of file qquick3dlightmapper.cpp.

◆ setSamples

void QQuick3DLightmapper::setSamples ( int count)
slot

Definition at line 281 of file qquick3dlightmapper.cpp.

Property Documentation

◆ adaptiveBiasEnabled

bool QQuick3DLightmapper::adaptiveBiasEnabled
readwrite

Definition at line 27 of file qquick3dlightmapper_p.h.

◆ bias

float QQuick3DLightmapper::bias
readwrite

Definition at line 26 of file qquick3dlightmapper_p.h.

◆ bounces

int QQuick3DLightmapper::bounces
readwrite

Definition at line 31 of file qquick3dlightmapper_p.h.

◆ denoiseSigma

float QQuick3DLightmapper::denoiseSigma
readwrite

Definition at line 34 of file qquick3dlightmapper_p.h.

◆ indirectLightEnabled

bool QQuick3DLightmapper::indirectLightEnabled
readwrite

Definition at line 28 of file qquick3dlightmapper_p.h.

◆ indirectLightFactor

float QQuick3DLightmapper::indirectLightFactor
readwrite

Definition at line 32 of file qquick3dlightmapper_p.h.

◆ indirectLightWorkgroupSize

int QQuick3DLightmapper::indirectLightWorkgroupSize
readwrite

Definition at line 30 of file qquick3dlightmapper_p.h.

◆ opacityThreshold

float QQuick3DLightmapper::opacityThreshold
readwrite

Definition at line 25 of file qquick3dlightmapper_p.h.

◆ samples

int QQuick3DLightmapper::samples
readwrite

Definition at line 29 of file qquick3dlightmapper_p.h.

◆ source

QUrl QQuick3DLightmapper::source
readwrite

Definition at line 33 of file qquick3dlightmapper_p.h.

◆ texelsPerUnit

float QQuick3DLightmapper::texelsPerUnit
readwrite

Definition at line 35 of file qquick3dlightmapper_p.h.


The documentation for this class was generated from the following files: