27QSSGRenderLayer::QSSGRenderLayer()
28 : QSSGRenderNode(QSSGRenderNode::Type::Layer)
29 , firstEffect(
nullptr)
30 , antialiasingMode(QSSGRenderLayer::AAMode::NoAA)
31 , antialiasingQuality(QSSGRenderLayer::AAQuality::High)
32 , background(QSSGRenderLayer::Background::Transparent)
33 , temporalAAStrength(0.3f)
34 , ssaaMultiplier(1.5f)
35 , specularAAEnabled(
false)
36 , oitMethod(OITMethod::None)
37 , oitMethodDirty(
false)
38 , tonemapMode(TonemapMode::Linear)
40 flags = { FlagT(LocalState::Active) | FlagT(GlobalState::Active) };
55void QSSGRenderLayer::setProbeOrientation(
const QVector3D &angles)
57 if (angles != lightProbeSettings.probeOrientationAngles) {
58 lightProbeSettings.probeOrientationAngles = angles;
59 lightProbeSettings.probeOrientation = QQuaternion::fromEulerAngles(lightProbeSettings.probeOrientationAngles).toRotationMatrix();
79void QSSGRenderLayer::setImportScene(QSSGRenderNode &importedNode)
81 if (importedNode.parent !=
nullptr) {
82 qWarning(
"The root of the imported scene node is already part of another scene graph.\n"
83 "Importing a sub-scene is unsupported and may not work as expected!");
88 if (importSceneNode ==
nullptr) {
89 importSceneNode =
new QSSGRenderNode(QSSGRenderGraphObject::Type::ImportScene);
92 children.push_front(*importSceneNode);
94 importSceneNode->children.clear();
98 auto &importChildren = importSceneNode->children;
99 Q_ASSERT(importChildren.isEmpty());
101 importChildren.m_head = importChildren.m_tail = &importedNode;
104 importedNode.setState(QSSGRenderNode::LocalState::Imported);
108 const bool warnAboutCrossWindowSharing = importedNode.rootNodeRef && QSSGRenderRoot::get(importedNode.rootNodeRef) != rootNode;
109 if (warnAboutCrossWindowSharing) {
110 qWarning(
"Sharing nodes across different windows is not supported and may lead to unexpected behavior!");
114 importSceneNode->markDirty(QSSGRenderNode::DirtyFlag::StickyDirty);