summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJanne Kangas <janne.kangas@qt.io>2020-01-13 13:19:08 +0200
committerJanne Kangas <janne.kangas@qt.io>2020-01-15 07:44:01 +0200
commitc9439aa3b34085563e0e50657d71a01c13b50d7b (patch)
tree87b735b0e0890140335c728e01c07e49106c549e
parent49fba62dfff3166e44a4b85f99180c27f2bba69e (diff)
Add toggle for disabling ambient occlusion
Task-id: QT3DS-4032 Change-Id: I27c6c7ad2a66fac0b654002933fc3216ecf8879c Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
-rw-r--r--res/DataModelMetadata/en-us/MetaData.xml5
-rw-r--r--src/dm/systems/Qt3DSDMComposerTypeDefinitions.cpp1
-rw-r--r--src/dm/systems/Qt3DSDMComposerTypeDefinitions.h1
-rw-r--r--src/engine/Qt3DSRenderRuntimeBindingImplTranslation.cpp1
-rw-r--r--src/runtime/Qt3DSAttributeHashes.cpp1
-rw-r--r--src/runtime/Qt3DSAttributeHashes.h1
-rw-r--r--src/runtime/Qt3DSAttributeHashes.txt1
-rw-r--r--src/runtimerender/Qt3DSRenderUIPLoader.cpp1
-rw-r--r--src/runtimerender/Qt3DSRenderUIPSharedTranslation.h1
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderLayer.cpp1
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderLayer.h1
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp3
12 files changed, 16 insertions, 2 deletions
diff --git a/res/DataModelMetadata/en-us/MetaData.xml b/res/DataModelMetadata/en-us/MetaData.xml
index a4d6d45..6cb3893 100644
--- a/res/DataModelMetadata/en-us/MetaData.xml
+++ b/res/DataModelMetadata/en-us/MetaData.xml
@@ -308,7 +308,10 @@
</Property>
<!-- Ambient Occlusion -->
- <Property name="aostrength" formalName="Ambient Occlusion" description="Amount of ambient occlusion shading\nto apply" min="0" max="100" default="0" category="Ambient Occlusion" >
+ <Property name="aoenabled" formalName="Ambient Occlusion" description="Use ambient occlusion" type="Boolean" default="False" category="Ambient Occlusion">
+ <ShowIfEqual property="sourcepath" value=""/>
+ </Property>
+ <Property name="aostrength" formalName="AO Strength" description="Amount of ambient occlusion shading\nto apply" min="0" max="100" default="0" category="Ambient Occlusion" >
<ShowIfEqual property="sourcepath" value=""/>
</Property>
<Property name="aodistance" formalName="AO Distance" description="Size of the ambient occlusion shading" default="5" category="Ambient Occlusion">
diff --git a/src/dm/systems/Qt3DSDMComposerTypeDefinitions.cpp b/src/dm/systems/Qt3DSDMComposerTypeDefinitions.cpp
index c529515..a4f6959 100644
--- a/src/dm/systems/Qt3DSDMComposerTypeDefinitions.cpp
+++ b/src/dm/systems/Qt3DSDMComposerTypeDefinitions.cpp
@@ -258,6 +258,7 @@ struct DataConstructor<SObjectRefType>
#define QT3DS_WCHAR_T_heightunits L"heightunits"
#define QT3DS_WCHAR_T_bottom L"bottom"
#define QT3DS_WCHAR_T_bottomunits L"bottomunits"
+#define QT3DS_WCHAR_T_aoenabled L"aoenabled"
#define QT3DS_WCHAR_T_aostrength L"aostrength"
#define QT3DS_WCHAR_T_aodistance L"aodistance"
#define QT3DS_WCHAR_T_aosoftness L"aosoftness"
diff --git a/src/dm/systems/Qt3DSDMComposerTypeDefinitions.h b/src/dm/systems/Qt3DSDMComposerTypeDefinitions.h
index 0e0ada5..d347e6d 100644
--- a/src/dm/systems/Qt3DSDMComposerTypeDefinitions.h
+++ b/src/dm/systems/Qt3DSDMComposerTypeDefinitions.h
@@ -220,6 +220,7 @@ class IPropertySystem;
HANDLE_COMPOSER_PROPERTY(heightunits, m_HeightUnits, TDataStrPtr, L"percent") \
HANDLE_COMPOSER_PROPERTY(bottom, m_Bottom, float, 0) \
HANDLE_COMPOSER_PROPERTY(bottomunits, m_BottomUnits, TDataStrPtr, L"percent") \
+ HANDLE_COMPOSER_PROPERTY(aoenabled, m_AoEnabled, bool, false) \
HANDLE_COMPOSER_PROPERTY(aostrength, m_AoStrength, float, 0) \
HANDLE_COMPOSER_PROPERTY(aodistance, m_AoDistance, float, 0) \
HANDLE_COMPOSER_PROPERTY(aosoftness, m_AoSoftness, float, 0) \
diff --git a/src/engine/Qt3DSRenderRuntimeBindingImplTranslation.cpp b/src/engine/Qt3DSRenderRuntimeBindingImplTranslation.cpp
index 998fedb..f4b0f31 100644
--- a/src/engine/Qt3DSRenderRuntimeBindingImplTranslation.cpp
+++ b/src/engine/Qt3DSRenderRuntimeBindingImplTranslation.cpp
@@ -519,6 +519,7 @@ struct SRuntimePropertyParser
#define Layer_HeightUnits ATTRIBUTE_HEIGHTUNITS
#define Layer_Bottom ATTRIBUTE_BOTTOM
#define Layer_BottomUnits ATTRIBUTE_BOTTOMUNITS
+#define Layer_AoEnabled ATTRIBUTE_AOENABLED
#define Layer_AoStrength ATTRIBUTE_AOSTRENGTH
#define Layer_AoDistance ATTRIBUTE_AODISTANCE
#define Layer_AoSoftness ATTRIBUTE_AOSOFTNESS
diff --git a/src/runtime/Qt3DSAttributeHashes.cpp b/src/runtime/Qt3DSAttributeHashes.cpp
index da74931..db92917 100644
--- a/src/runtime/Qt3DSAttributeHashes.cpp
+++ b/src/runtime/Qt3DSAttributeHashes.cpp
@@ -198,6 +198,7 @@ const char *GetAttributeString(const EAttribute inAttribute)
case ATTRIBUTE_HEIGHTUNITS: return "heightunits";
case ATTRIBUTE_BOTTOM: return "bottom";
case ATTRIBUTE_BOTTOMUNITS: return "bottomunits";
+ case ATTRIBUTE_AOENABLED: return "aoenabled";
case ATTRIBUTE_AOSTRENGTH: return "aostrength";
case ATTRIBUTE_AODISTANCE: return "aodistance";
case ATTRIBUTE_AOSOFTNESS: return "aosoftness";
diff --git a/src/runtime/Qt3DSAttributeHashes.h b/src/runtime/Qt3DSAttributeHashes.h
index f8f7bec..d491ef0 100644
--- a/src/runtime/Qt3DSAttributeHashes.h
+++ b/src/runtime/Qt3DSAttributeHashes.h
@@ -189,6 +189,7 @@ enum EAttribute {
ATTRIBUTE_HEIGHTUNITS = 0x00C91D18, // heightunits
ATTRIBUTE_BOTTOM = 0x00F4EE75, // bottom
ATTRIBUTE_BOTTOMUNITS = 0x0174091C, // bottomunits
+ ATTRIBUTE_AOENABLED = 0x00C4166D, // aoenabled
ATTRIBUTE_AOSTRENGTH = 0x010F7ED1, // aostrength
ATTRIBUTE_AODISTANCE = 0x01DC349D, // aodistance
ATTRIBUTE_AOSOFTNESS = 0x02CCDC71, // aosoftness
diff --git a/src/runtime/Qt3DSAttributeHashes.txt b/src/runtime/Qt3DSAttributeHashes.txt
index 21b9646..b62d54c 100644
--- a/src/runtime/Qt3DSAttributeHashes.txt
+++ b/src/runtime/Qt3DSAttributeHashes.txt
@@ -155,6 +155,7 @@ height
heightunits
bottom
bottomunits
+aoenabled
aostrength
aodistance
aosoftness
diff --git a/src/runtimerender/Qt3DSRenderUIPLoader.cpp b/src/runtimerender/Qt3DSRenderUIPLoader.cpp
index 9433b50..0187546 100644
--- a/src/runtimerender/Qt3DSRenderUIPLoader.cpp
+++ b/src/runtimerender/Qt3DSRenderUIPLoader.cpp
@@ -741,6 +741,7 @@ struct SRenderUIPLoader : public IDOMReferenceResolver
#define Layer_HeightUnits "heightunits"
#define Layer_Bottom "bottom"
#define Layer_BottomUnits "bottomunits"
+#define Layer_AoEnabled "aoenabled"
#define Layer_AoStrength "aostrength"
#define Layer_AoDistance "aodistance"
#define Layer_AoSoftness "aosoftness"
diff --git a/src/runtimerender/Qt3DSRenderUIPSharedTranslation.h b/src/runtimerender/Qt3DSRenderUIPSharedTranslation.h
index 01740e6..3c51ff0 100644
--- a/src/runtimerender/Qt3DSRenderUIPSharedTranslation.h
+++ b/src/runtimerender/Qt3DSRenderUIPSharedTranslation.h
@@ -334,6 +334,7 @@ namespace render {
HANDLE_QT3DS_RENDER_ENUM_PROPERTY(Layer, HeightUnits, Dirty) \
HANDLE_QT3DS_RENDER_PROPERTY(Layer, Bottom, Dirty) \
HANDLE_QT3DS_RENDER_ENUM_PROPERTY(Layer, BottomUnits, Dirty) \
+ HANDLE_QT3DS_RENDER_PROPERTY(Layer, AoEnabled, Dirty) \
HANDLE_QT3DS_RENDER_PROPERTY(Layer, AoStrength, Dirty) \
HANDLE_QT3DS_RENDER_PROPERTY(Layer, AoDistance, Dirty) \
HANDLE_QT3DS_RENDER_PROPERTY(Layer, AoSoftness, Dirty) \
diff --git a/src/runtimerender/graphobjects/Qt3DSRenderLayer.cpp b/src/runtimerender/graphobjects/Qt3DSRenderLayer.cpp
index 36a826c..be79fba 100644
--- a/src/runtimerender/graphobjects/Qt3DSRenderLayer.cpp
+++ b/src/runtimerender/graphobjects/Qt3DSRenderLayer.cpp
@@ -57,6 +57,7 @@ SLayer::SLayer()
, m_HeightUnits(LayerUnitTypes::Percent)
, m_Bottom(0)
, m_BottomUnits(LayerUnitTypes::Percent)
+ , m_AoEnabled(false)
, m_AoStrength(0)
, m_AoDistance(5.0f)
, m_AoSoftness(50.0f)
diff --git a/src/runtimerender/graphobjects/Qt3DSRenderLayer.h b/src/runtimerender/graphobjects/Qt3DSRenderLayer.h
index 5c08e91..ac9f559 100644
--- a/src/runtimerender/graphobjects/Qt3DSRenderLayer.h
+++ b/src/runtimerender/graphobjects/Qt3DSRenderLayer.h
@@ -146,6 +146,7 @@ namespace render {
LayerUnitTypes::Enum m_BottomUnits;
// Ambient occlusion
+ bool m_AoEnabled;
QT3DSF32 m_AoStrength;
QT3DSF32 m_AoDistance;
QT3DSF32 m_AoSoftness;
diff --git a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp
index b6cd2a0..1f191b0 100644
--- a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp
+++ b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp
@@ -1250,7 +1250,8 @@ namespace render {
SLayerRenderPreparationResult thePrepResult;
bool hasOffscreenRenderer = GetOffscreenRenderer();
- bool SSAOEnabled = (m_Layer.m_AoStrength > 0.0f && m_Layer.m_AoDistance > 0.0f);
+ bool SSAOEnabled = (m_Layer.m_AoStrength > 0.0f && m_Layer.m_AoDistance > 0.0f
+ && m_Layer.m_AoEnabled);
bool SSDOEnabled = (m_Layer.m_ShadowStrength > 0.0f && m_Layer.m_ShadowDist > 0.0f);
SetShaderFeature("QT3DS_ENABLE_SSAO", SSAOEnabled);
SetShaderFeature("QT3DS_ENABLE_SSDO", SSDOEnabled);