diff options
Diffstat (limited to 'src/runtimerender/graphobjects/Qt3DSRenderLayer.cpp')
-rw-r--r-- | src/runtimerender/graphobjects/Qt3DSRenderLayer.cpp | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/src/runtimerender/graphobjects/Qt3DSRenderLayer.cpp b/src/runtimerender/graphobjects/Qt3DSRenderLayer.cpp new file mode 100644 index 0000000..36a826c --- /dev/null +++ b/src/runtimerender/graphobjects/Qt3DSRenderLayer.cpp @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2008-2012 NVIDIA Corporation. +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt 3D Studio. +** +** $QT_BEGIN_LICENSE:GPL$ +** 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 General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "Qt3DSRenderLayer.h" +#include "Qt3DSRenderEffect.h" + +using namespace qt3ds::render; + +SLayer::SLayer() + : SNode(GraphObjectTypes::Layer) + , m_Scene(NULL) + , m_FirstEffect(NULL) + , m_RenderPlugin(NULL) + , m_ProgressiveAAMode(AAModeValues::NoAA) + , m_MultisampleAAMode(AAModeValues::NoAA) + , m_Background(LayerBackground::Transparent) + , m_ClearColor(0.0f) + , m_BlendType(LayerBlendTypes::Normal) + , m_HorizontalFieldValues(HorizontalFieldValues::LeftWidth) + , m_Left(0) + , m_LeftUnits(LayerUnitTypes::Percent) + , m_Width(100.0f) + , m_WidthUnits(LayerUnitTypes::Percent) + , m_Right(0) + , m_RightUnits(LayerUnitTypes::Percent) + , m_VerticalFieldValues(VerticalFieldValues::TopHeight) + , m_Top(0) + , m_TopUnits(LayerUnitTypes::Percent) + , m_Height(100.0f) + , m_HeightUnits(LayerUnitTypes::Percent) + , m_Bottom(0) + , m_BottomUnits(LayerUnitTypes::Percent) + , m_AoStrength(0) + , m_AoDistance(5.0f) + , m_AoSoftness(50.0f) + , m_AoBias(0) + , m_AoSamplerate(2) + , m_AoDither(false) + , m_ShadowStrength(0) + , m_ShadowDist(10) + , m_ShadowSoftness(100.0f) + , m_ShadowBias(0) + , m_LightProbe(NULL) + , m_ProbeBright(100.0f) + , m_FastIbl(false) + , m_ProbeHorizon(-1.0f) + , m_ProbeFov(180.0f) + , m_LightProbe2(NULL) + , m_Probe2Fade(1.0f) + , m_Probe2Window(1.0f) + , m_Probe2Pos(0.5f) + , m_TemporalAAEnabled(false) +{ + m_Flags.SetLayerRenderToTarget(true); + m_Flags.SetLayerEnableDepthTest(true); + m_Flags.SetLayerEnableDepthPrepass(true); +} + +void SLayer::AddEffect(SEffect &inEffect) +{ + // Effects need to be rendered in reverse order as described in the file. + inEffect.m_NextEffect = m_FirstEffect; + m_FirstEffect = &inEffect; + inEffect.m_Layer = this; +} + +SEffect *SLayer::GetLastEffect() +{ + if (m_FirstEffect) { + SEffect *theEffect = m_FirstEffect; + // Empty loop intentional + for (; theEffect->m_NextEffect; theEffect = theEffect->m_NextEffect) { + } + QT3DS_ASSERT(theEffect->m_NextEffect == NULL); + return theEffect; + } + return NULL; +} |