summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2019-06-28 11:12:55 +0300
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2019-06-28 12:59:58 +0300
commitf1f2afc17083eae1979b67d6d22f40bca13075e9 (patch)
treeef2ca8bfd9283f7943672fde75e963f113f3e66c
parent44b46a24048db25081d49c84448b89896cf4118a (diff)
parente77471bb4eb8de9c550e39ca4e2c80100372fa10 (diff)
Merge "Merge branch '2.4'"
-rw-r--r--doc/style/qt5-sidebar.html27
-rw-r--r--qt3dstudio.pro15
m---------src/3rdparty/ColladaDOM0
-rw-r--r--src/Authoring/Client/Code/Core/Doc/ClientDataModelBridge/ClientDataModelBridge.cpp2
-rw-r--r--src/Authoring/Client/Code/Core/Utility/cpuid.cpp2
-rw-r--r--src/Authoring/Common/Common.pro11
-rw-r--r--src/Authoring/CoreLib/CoreLib.pro12
-rw-r--r--src/Authoring/QT3DSIMP/Qt3DSImportLib/Qt3DSImportComposerTypes.cpp1
-rw-r--r--src/Authoring/Qt3DStudio/Application/StudioApp.cpp40
-rw-r--r--src/Authoring/Qt3DStudio/Application/StudioApp.h1
-rw-r--r--src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlModel.cpp208
-rw-r--r--src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlModel.h50
-rw-r--r--src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlView.cpp22
-rw-r--r--src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlView.qml4
-rw-r--r--src/Authoring/Qt3DStudio/Palettes/Inspector/Qt3DSDMInspectable.cpp44
-rw-r--r--src/Authoring/Qt3DStudio/Palettes/Inspector/Qt3DSDMInspectable.h3
-rw-r--r--src/Authoring/Qt3DStudio/Palettes/Inspector/Qt3DSDMInspectorGroup.cpp8
-rw-r--r--src/Authoring/Qt3DStudio/Palettes/Inspector/Qt3DSDMInspectorGroup.h3
-rw-r--r--src/Authoring/Qt3DStudio/Palettes/Project/ProjectFileSystemModel.cpp8
-rw-r--r--src/Authoring/Qt3DStudio/PreviewHelper.cpp28
-rw-r--r--src/Authoring/Qt3DStudio/Qt3DStudio.pro28
-rw-r--r--src/Authoring/Qt3DStudio/Render/StudioRendererTranslation.cpp1
m---------src/Runtime/ogl-runtime0
-rw-r--r--src/commonplatform.pri10
-rw-r--r--src/shared/shared.pro4
-rw-r--r--src/src.pro2
-rw-r--r--tests/auto/auto.pro10
-rw-r--r--tests/auto/qtextras/qt3dsqmlstream/qt3dsqmlstream.pro18
-rw-r--r--tests/auto/qtextras/qt3dsqmlstream/tst_qt3dsqmlstream.cpp106
-rw-r--r--tests/auto/qtextras/qtextras.pro4
-rw-r--r--tests/auto/runtime/Qt3DSRenderTestBase.cpp101
-rw-r--r--tests/auto/runtime/Qt3DSRenderTestBase.h164
-rw-r--r--tests/auto/runtime/Qt3DSRenderTestMathUtil.cpp118
-rw-r--r--tests/auto/runtime/Qt3DSRenderTestMathUtil.h50
-rw-r--r--tests/auto/runtime/base/Qt3DSRenderTestAtomicCounterBuffer.cpp248
-rw-r--r--tests/auto/runtime/base/Qt3DSRenderTestAtomicCounterBuffer.h59
-rw-r--r--tests/auto/runtime/base/Qt3DSRenderTestAttribBuffers.cpp251
-rw-r--r--tests/auto/runtime/base/Qt3DSRenderTestAttribBuffers.h59
-rw-r--r--tests/auto/runtime/base/Qt3DSRenderTestBackendQuery.cpp332
-rw-r--r--tests/auto/runtime/base/Qt3DSRenderTestBackendQuery.h62
-rw-r--r--tests/auto/runtime/base/Qt3DSRenderTestClear.cpp131
-rw-r--r--tests/auto/runtime/base/Qt3DSRenderTestClear.h56
-rw-r--r--tests/auto/runtime/base/Qt3DSRenderTestConstantBuffer.cpp847
-rw-r--r--tests/auto/runtime/base/Qt3DSRenderTestConstantBuffer.h63
-rw-r--r--tests/auto/runtime/base/Qt3DSRenderTestDrawIndirectBuffer.cpp358
-rw-r--r--tests/auto/runtime/base/Qt3DSRenderTestDrawIndirectBuffer.h60
-rw-r--r--tests/auto/runtime/base/Qt3DSRenderTestPrimitives.cpp321
-rw-r--r--tests/auto/runtime/base/Qt3DSRenderTestPrimitives.h77
-rw-r--r--tests/auto/runtime/base/Qt3DSRenderTestProgramPipeline.cpp401
-rw-r--r--tests/auto/runtime/base/Qt3DSRenderTestProgramPipeline.h60
-rw-r--r--tests/auto/runtime/base/Qt3DSRenderTestTexture2D.cpp288
-rw-r--r--tests/auto/runtime/base/Qt3DSRenderTestTexture2D.h67
-rw-r--r--tests/auto/runtime/base/Qt3DSRenderTestTimerQuery.cpp436
-rw-r--r--tests/auto/runtime/base/Qt3DSRenderTestTimerQuery.h64
-rw-r--r--tests/auto/runtime/compute/Qt3DSRenderTestComputeShader.cpp636
-rw-r--r--tests/auto/runtime/compute/Qt3DSRenderTestComputeShader.h61
-rw-r--r--tests/auto/runtime/fbo/Qt3DSRenderTestFboMsaa.cpp299
-rw-r--r--tests/auto/runtime/fbo/Qt3DSRenderTestFboMsaa.h67
-rw-r--r--tests/auto/runtime/geometry/Qt3DSRenderTestGeometryShader.cpp390
-rw-r--r--tests/auto/runtime/geometry/Qt3DSRenderTestGeometryShader.h60
-rw-r--r--tests/auto/runtime/geometry/Qt3DSRenderTestOcclusionQuery.cpp367
-rw-r--r--tests/auto/runtime/geometry/Qt3DSRenderTestOcclusionQuery.h66
-rw-r--r--tests/auto/runtime/geometry/Qt3DSRenderTestTessellation.cpp560
-rw-r--r--tests/auto/runtime/geometry/Qt3DSRenderTestTessellation.h60
-rw-r--r--tests/auto/runtime/images/NVRenderTestAttribBuffers.pngbin3820 -> 0 bytes
-rw-r--r--tests/auto/runtime/images/NVRenderTestBackendQuery.pngbin2355 -> 0 bytes
-rw-r--r--tests/auto/runtime/images/NVRenderTestClear.pngbin2327 -> 0 bytes
-rw-r--r--tests/auto/runtime/images/NVRenderTestComputeShader.pngbin3889 -> 0 bytes
-rw-r--r--tests/auto/runtime/images/NVRenderTestDrawIndirectBuffer.pngbin2355 -> 0 bytes
-rw-r--r--tests/auto/runtime/images/NVRenderTestFboMsaa.pngbin3168 -> 0 bytes
-rw-r--r--tests/auto/runtime/images/NVRenderTestGeometryShader.pngbin3311 -> 0 bytes
-rw-r--r--tests/auto/runtime/images/NVRenderTestOcclusionQuery.pngbin2355 -> 0 bytes
-rw-r--r--tests/auto/runtime/images/NVRenderTestProgramPipeline.pngbin3224 -> 0 bytes
-rw-r--r--tests/auto/runtime/images/NVRenderTestTexture2D.pngbin2991 -> 0 bytes
-rw-r--r--tests/auto/runtime/runtime.pro83
-rw-r--r--tests/auto/runtime/runtime.qrc14
-rw-r--r--tests/auto/runtime/shadergenerator/Qt3DSRenderTestCustomMaterialGenerator.cpp469
-rw-r--r--tests/auto/runtime/shadergenerator/Qt3DSRenderTestCustomMaterialGenerator.h55
-rw-r--r--tests/auto/runtime/shadergenerator/Qt3DSRenderTestDefaultMaterialGenerator.cpp574
-rw-r--r--tests/auto/runtime/shadergenerator/Qt3DSRenderTestDefaultMaterialGenerator.h56
-rw-r--r--tests/auto/runtime/shadergenerator/Qt3DSRenderTestEffectGenerator.cpp155
-rw-r--r--tests/auto/runtime/shadergenerator/Qt3DSRenderTestEffectGenerator.h55
-rw-r--r--tests/auto/runtime/tst_qt3dsruntime.cpp727
-rw-r--r--tests/auto/runtime/tst_qt3dsruntime.h144
-rw-r--r--tests/auto/studio3d/q3dssurfaceviewer/q3dssurfaceviewer.pro10
-rw-r--r--tests/auto/studio3d/q3dssurfaceviewer/tst_q3dssurfaceviewer.cpp1516
-rw-r--r--tests/auto/studio3d/shared/presentation/animation.uip35
-rw-r--r--tests/auto/studio3d/shared/presentation/blue.uip31
-rw-r--r--tests/auto/studio3d/shared/presentation/datainput.uia18
-rw-r--r--tests/auto/studio3d/shared/presentation/datainput.uip63
-rw-r--r--tests/auto/studio3d/shared/presentation/datainput_sub.uip31
-rw-r--r--tests/auto/studio3d/shared/presentation/fonts/TitilliumWeb-Regular.ttfbin63752 -> 0 bytes
-rw-r--r--tests/auto/studio3d/shared/presentation/mixed.uip36
-rw-r--r--tests/auto/studio3d/shared/presentation/mixed_vertical.uip36
-rw-r--r--tests/auto/studio3d/shared/presentation/mouse.uip54
-rw-r--r--tests/auto/studio3d/shared/presentation/multislide.uip99
-rw-r--r--tests/auto/studio3d/shared/presentation/red.uip31
-rw-r--r--tests/auto/studio3d/shared/presentation/settings.uip31
-rw-r--r--tests/auto/studio3d/shared/shared_presentations.h39
-rw-r--r--tests/auto/studio3d/shared/shared_presentations.qrc15
-rw-r--r--tests/auto/studio3d/studio3d.pro4
-rw-r--r--tests/auto/viewer/tst_qt3dsviewer.cpp762
-rw-r--r--tests/auto/viewer/tst_qt3dsviewer.h80
-rw-r--r--tests/auto/viewer/tst_qt3dsviewer.qml62
-rw-r--r--tests/auto/viewer/viewer.pro21
-rw-r--r--tests/auto/viewer/viewer.qrc16
-rw-r--r--tests/scenes/customvertex/customvertex.uia15
-rw-r--r--tests/scenes/customvertex/materials/simple.shader29
-rw-r--r--tests/scenes/customvertex/presentations/customvertex.uip33
-rw-r--r--tests/scenes/simple_cube_animation/maps/QT-symbol.pngbin4541 -> 0 bytes
-rw-r--r--tests/scenes/simple_cube_animation/maps/materials/shadow.pngbin334 -> 0 bytes
-rw-r--r--tests/scenes/simple_cube_animation/maps/materials/spherical_checker.pngbin11066 -> 0 bytes
-rw-r--r--tests/scenes/simple_cube_animation/materials/Basic Blue.materialdef25
-rw-r--r--tests/scenes/simple_cube_animation/materials/Basic Green.materialdef25
-rw-r--r--tests/scenes/simple_cube_animation/materials/Basic Red.materialdef25
-rw-r--r--tests/scenes/simple_cube_animation/materials/Basic Texture.materialdef63
-rw-r--r--tests/scenes/simple_cube_animation/materials/Copper.materialdef14
-rw-r--r--tests/scenes/simple_cube_animation/materials/copper.shader178
-rw-r--r--tests/scenes/simple_cube_animation/presentations/simple_cube_animation.uip62
-rw-r--r--tests/scenes/simple_cube_animation/simple_cube_animation.uia16
-rw-r--r--tests/tests.pro3
121 files changed, 313 insertions, 13408 deletions
diff --git a/doc/style/qt5-sidebar.html b/doc/style/qt5-sidebar.html
index 765cf6ff..822add38 100644
--- a/doc/style/qt5-sidebar.html
+++ b/doc/style/qt5-sidebar.html
@@ -1,7 +1,6 @@
<div class="sectionlist normallist">
<div class="heading">
- <a name="reference"></a>
- <h2 id="reference">Qt 3D Studio</h2>
+ <h2>Qt 3D Studio</h2>
</div>
<div class="indexboxcont indexboxbar">
<ul>
@@ -11,8 +10,30 @@
<li><a href="scripting.html">Scripting</a></li>
<li><a href="deployment.html">Deployment</a></li>
<li><a href="getting-help.html">Getting Help</a></li>
- <li><a href="runtime/index.html">Runtime</a></li>
+ </ul>
+ </div>
+</div>
+<div class="sectionlist normallist">
+ <div class="heading">
+ <h2>Qt 3D Runtime</h2>
+ </div>
+ <div class="indexboxcont indexboxbar">
+ <ul>
+ <li><a href="runtime/index.html">Table of Contents</a></li>
<li><a href="runtime/qt3d-runtime-qml.html">QML API Reference</a></li>
<li><a href="runtime/qt3d-runtime-cpp.html">C++ API Reference</a></li>
</ul>
</div>
+</div>
+<div class="sectionlist normallist">
+ <div class="heading">
+ <h2>OpenGL Runtime</h2>
+ </div>
+ <div class="indexboxcont indexboxbar">
+ <ul>
+ <li><a href="openglruntime/index.html">Table of Contents</a></li>
+ <li><a href="openglruntime/qtstudio3d-opengl-qmlmodule.html">QML API Reference</a></li>
+ <li><a href="openglruntime/openglruntime-module.html">C++ API Reference</a></li>
+ </ul>
+ </div>
+</div>
diff --git a/qt3dstudio.pro b/qt3dstudio.pro
index 62f7e50d..56e18268 100644
--- a/qt3dstudio.pro
+++ b/qt3dstudio.pro
@@ -9,11 +9,6 @@ requires(qtHaveModule(quick))
requires(qtHaveModule(qml))
requires(qtHaveModule(opengl))
-#TODO: QT3DS-3660 fix developer builds of Qt 3D Studio editor
-linux:{
-requires(!contains(QT_CONFIG,private_tests))
-}
-
SUBDIRS += \
doc
@@ -31,7 +26,7 @@ load(qt_parts)
# Qt3DStudio and Qt3DViewer executables/application bundles are installed to.
# The required Qt libraries are copied into that directory/bundles.
!build_pass|!debug_and_release {
- !mingw:win32|macos {
+ win32|macos {
macos {
deploytool = macdeployqt
exesuffix = .app
@@ -67,9 +62,9 @@ load(qt_parts)
# copy QtStudio3D.dll
release {
- QTSTUDIO3D_LIB = Qt5Studio3D.dll
+ QTSTUDIO3D_LIB = Qt5Studio3D$${QT_LIBINFIX}.dll
} else {
- QTSTUDIO3D_LIB = Qt5Studio3Dd.dll
+ QTSTUDIO3D_LIB = Qt5Studio3D$${QT_LIBINFIX}d.dll
}
QMAKE_EXTRA_TARGETS += copyStudio3D
deployTarget.depends += copyStudio3D
@@ -115,9 +110,9 @@ load(qt_parts)
# use case for this is gathering installer content in CI after everything is
# already built, this shouldn't be a problem.
release {
- RUNTIME2_LIB = Qt53DStudioRuntime2.dll
+ RUNTIME2_LIB = Qt53DStudioRuntime2$${QT_LIBINFIX}.dll
} else {
- RUNTIME2_LIB = Qt53DStudioRuntime2d.dll
+ RUNTIME2_LIB = Qt53DStudioRuntime2$${QT_LIBINFIX}d.dll
}
QMAKE_EXTRA_TARGETS += copyRuntime2
deployTarget.depends += copyRuntime2
diff --git a/src/3rdparty/ColladaDOM b/src/3rdparty/ColladaDOM
-Subproject 7c7d1bab302c9101695026936a946adf6ecf282
+Subproject 89383cf7d69e3721fc284456fb055c97a0d0013
diff --git a/src/Authoring/Client/Code/Core/Doc/ClientDataModelBridge/ClientDataModelBridge.cpp b/src/Authoring/Client/Code/Core/Doc/ClientDataModelBridge/ClientDataModelBridge.cpp
index 7d1b11a5..f6beca04 100644
--- a/src/Authoring/Client/Code/Core/Doc/ClientDataModelBridge/ClientDataModelBridge.cpp
+++ b/src/Authoring/Client/Code/Core/Doc/ClientDataModelBridge/ClientDataModelBridge.cpp
@@ -1173,7 +1173,7 @@ Qt3DSDMInstanceHandle CClientDataModelBridge::getMaterialReference(Qt3DSDMInstan
bool CClientDataModelBridge::isMaterialContainer(Qt3DSDMInstanceHandle instance) const
{
- return instance == getMaterialContainer();
+ return instance.Valid() && instance == getMaterialContainer();
}
bool CClientDataModelBridge::isInsideMaterialContainer(Qt3DSDMInstanceHandle instance) const
diff --git a/src/Authoring/Client/Code/Core/Utility/cpuid.cpp b/src/Authoring/Client/Code/Core/Utility/cpuid.cpp
index 3e3ac13a..46149e87 100644
--- a/src/Authoring/Client/Code/Core/Utility/cpuid.cpp
+++ b/src/Authoring/Client/Code/Core/Utility/cpuid.cpp
@@ -43,7 +43,7 @@ extern "C" {
// register set to 80000001h (only applicable to AMD)
#define _3DNOW_FEATURE_BIT 0x80000000
-#ifndef _WIN32
+#if !defined(_WIN32) || !defined(_MSC_VER)
void __cpuid(int cpuInfo[4], int function_id)
{
asm volatile
diff --git a/src/Authoring/Common/Common.pro b/src/Authoring/Common/Common.pro
index e53cd02b..49319021 100644
--- a/src/Authoring/Common/Common.pro
+++ b/src/Authoring/Common/Common.pro
@@ -13,6 +13,17 @@ contains(QMAKE_TARGET.arch, x86_64) {
DEFINES += _AMD64_
}
+mingw {
+LIBS += \
+ -lqt3dsruntimestatic$$qtPlatformTargetSuffix() \
+ -lqt3dsqmlstreamer$$qtPlatformTargetSuffix() \
+ -lEASTL$$qtPlatformTargetSuffix() \
+ -lpcre$$qtPlatformTargetSuffix() \
+ -lTinyXML$$qtPlatformTargetSuffix() \
+ -lColladaDOM$$qtPlatformTargetSuffix() \
+ -lQT3DSDM$$qtPlatformTargetSuffix()
+}
+
INCLUDEPATH += \
Code/_Win32 \
Code/Thread \
diff --git a/src/Authoring/CoreLib/CoreLib.pro b/src/Authoring/CoreLib/CoreLib.pro
index c9a4110a..1d64b1da 100644
--- a/src/Authoring/CoreLib/CoreLib.pro
+++ b/src/Authoring/CoreLib/CoreLib.pro
@@ -17,6 +17,18 @@ contains(QMAKE_TARGET.arch, x86_64) {
QT += widgets
+mingw {
+LIBS += \
+ -lqt3dsruntimestatic$$qtPlatformTargetSuffix() \
+ -lqt3dsqmlstreamer$$qtPlatformTargetSuffix() \
+ -lEASTL$$qtPlatformTargetSuffix() \
+ -lpcre$$qtPlatformTargetSuffix() \
+ -lTinyXML$$qtPlatformTargetSuffix() \
+ -lColladaDOM$$qtPlatformTargetSuffix() \
+ -lQT3DSDM$$qtPlatformTargetSuffix() \
+ -lCommonLib$$qtPlatformTargetSuffix()
+}
+
macos:DEFINES += WIDE_IS_DIFFERENT_TYPE_THAN_CHAR16_T QT3DS_LITTLE_ENDIAN
linux|qnx: DEFINES += WIDE_IS_DIFFERENT_TYPE_THAN_CHAR16_T
diff --git a/src/Authoring/QT3DSIMP/Qt3DSImportLib/Qt3DSImportComposerTypes.cpp b/src/Authoring/QT3DSIMP/Qt3DSImportLib/Qt3DSImportComposerTypes.cpp
index d1d692fb..b5dab1c1 100644
--- a/src/Authoring/QT3DSIMP/Qt3DSImportLib/Qt3DSImportComposerTypes.cpp
+++ b/src/Authoring/QT3DSIMP/Qt3DSImportLib/Qt3DSImportComposerTypes.cpp
@@ -114,6 +114,7 @@ DataModelDataType::Value SImportControllableObject::GetPropertyDataType(
ITERATE_COMPOSER_MATERIAL_PROPERTIES
ITERATE_COMPOSER_NODE_PROPERTIES
ITERATE_COMPOSER_LIGHT_PROPERTIES
+ ITERATE_COMPOSER_CAMERA_PROPERTIES
// Cannot fall back to SImportAsset as we might receive custom material
// properties which are not known to property system and cause assert.
return DataModelDataType::None;
diff --git a/src/Authoring/Qt3DStudio/Application/StudioApp.cpp b/src/Authoring/Qt3DStudio/Application/StudioApp.cpp
index f5914702..6a0ca70a 100644
--- a/src/Authoring/Qt3DStudio/Application/StudioApp.cpp
+++ b/src/Authoring/Qt3DStudio/Application/StudioApp.cpp
@@ -204,7 +204,6 @@ int main(int argc, char *argv[])
#include "Qt3DSDMStudioSystem.h"
#include "Qt3DSDMInspectable.h"
#include "Qt3DSDMSlides.h"
-#include "Qt3DSDMMaterialInspectable.h"
#include "Qt3DSDMAnimation.h"
#include "Qt3DSDMDataCore.h"
#include "IDirectoryWatchingSystem.h"
@@ -215,17 +214,6 @@ CStudioApp g_StudioApp;
using namespace Q3DStudio;
-namespace qt3ds
-{
-void Qt3DSAssert(const char *exp, const char *file, int line, bool *ignore)
-{
- Q_UNUSED(ignore)
- g_StudioApp.GetDialogs()->DestroyProgressScreen();
- g_StudioApp.GetDialogs()->DisplayKnownErrorDialog(exp);
- qFatal("Assertion thrown %s(%d): %s", file, line, exp);
-}
-}
-
//=============================================================================
/**
* Constructor
@@ -1408,34 +1396,6 @@ void CStudioApp::PlaybackToggle()
PlaybackPlay();
}
-// TODO: move to more appropriate place (InspectorControlModel.cpp)
-CInspectableBase *CStudioApp::getInspectableFromInstance(qt3dsdm::Qt3DSDMInstanceHandle inInstance)
-{
- CInspectableBase *inspectableBase = nullptr;
- CDoc *doc = m_core->GetDoc();
-
- if (doc->GetDocumentReader().IsInstance(inInstance)) {
- CClientDataModelBridge *theBridge = doc->GetStudioSystem()->GetClientDataModelBridge();
- qt3dsdm::Qt3DSDMSlideHandle activeSlide = doc->GetActiveSlide();
-
- // Slide, scene or component
- if (inInstance == theBridge->GetOwningComponentInstance(activeSlide)) {
- Qt3DSDMInstanceHandle activeSlideInstance = doc->GetStudioSystem()->GetSlideSystem()
- ->GetSlideInstance(activeSlide);
-
- inspectableBase = new Qt3DSDMInspectable(inInstance, activeSlideInstance);
- }
- if (!inspectableBase) {
- if (theBridge->IsMaterialBaseInstance(inInstance))
- inspectableBase = new Qt3DSDMMaterialInspectable(inInstance);
- else
- inspectableBase = new Qt3DSDMInspectable(inInstance);
- }
- }
-
- return inspectableBase;
-}
-
void CStudioApp::RegisterGlobalKeyboardShortcuts(CHotKeys *inShortcutHandler,
QWidget *actionParent)
{
diff --git a/src/Authoring/Qt3DStudio/Application/StudioApp.h b/src/Authoring/Qt3DStudio/Application/StudioApp.h
index dd4acf5b..522cd6e7 100644
--- a/src/Authoring/Qt3DStudio/Application/StudioApp.h
+++ b/src/Authoring/Qt3DStudio/Application/StudioApp.h
@@ -199,7 +199,6 @@ public:
void AdvanceUltraBigTime();
void ReduceUltraBigTime();
void PlaybackToggle();
- CInspectableBase *getInspectableFromInstance(qt3dsdm::Qt3DSDMInstanceHandle inInstance);
void RegisterGlobalKeyboardShortcuts(CHotKeys *inShortcutHandler, QWidget *actionParent);
bool OnSave(bool autosave = false);
void onProjectSaveAs();
diff --git a/src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlModel.cpp b/src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlModel.cpp
index 3680b5aa..96c1c829 100644
--- a/src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlModel.cpp
+++ b/src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlModel.cpp
@@ -44,7 +44,6 @@
#include "Qt3DSDMDataTypes.h"
#include "IObjectReferenceHelper.h"
#include "SlideSystem.h"
-#include "Qt3DSDMMaterialInspectable.h"
#include "ClientDataModelBridge.h"
#include "IDocumentReader.h"
#include "IStudioRenderer.h"
@@ -373,9 +372,8 @@ void InspectorControlModel::updateMaterialValues(const QStringList &values, int
startIndex = m_groupElements.count() - 1; // Update the last group for referenced materials
for (int row = startIndex; row < m_groupElements.count(); ++row) {
const CInspectorGroup *inspectorGroup = m_inspectableBase->getGroup(row);
- const auto group = dynamic_cast<const Qt3DSDMInspectorGroup *>(inspectorGroup);
- const auto materialGroup = dynamic_cast<const Qt3DSDMMaterialInspectorGroup *>(group);
- if (materialGroup && (materialGroup->isMaterialGroup() || isReferenced)) {
+ const auto group = static_cast<const Qt3DSDMInspectorGroup *>(inspectorGroup);
+ if (group->isMaterial() || isReferenced) {
if (m_groupElements[row].controlElements.size()) {
auto item = m_groupElements[row].controlElements[elementIndex]
.value<InspectorControlBase *>();
@@ -642,11 +640,7 @@ InspectorControlBase *InspectorControlModel::createMaterialTypeItem(
item->m_propertyType = qt3dsdm::AdditionalMetaDataType::None;
item->m_tooltip = tr("Type of material being used");
item->m_animatable = false;
-
- const QStringList values = materialTypeValues();
- item->m_values = values;
-
- QString sourcePath = getBridge()->GetSourcePath(item->m_instance);
+ item->m_values = materialTypeValues();
switch (inspectable->getObjectType()) {
case OBJTYPE_MATERIAL:
@@ -654,17 +648,19 @@ InspectorControlBase *InspectorControlModel::createMaterialTypeItem(
item->m_value = getAnimatableMaterialString();
break;
- case OBJTYPE_REFERENCEDMATERIAL:
- item->m_value = getReferencedMaterialString();
- if (sourcePath == getBridge()->getDefaultMaterialName())
- item->m_value = getBasicMaterialString();
- for (int matIdx = 0, end = int(m_matDatas.size()); matIdx < end; ++matIdx) {
- if (QString::compare(m_matDatas[matIdx].m_relativePath,
- sourcePath, Qt::CaseInsensitive) == 0) {
+ case OBJTYPE_REFERENCEDMATERIAL: {
+ QString sourcePath = getBridge()->GetSourcePath(item->m_instance);
+ item->m_value = sourcePath == getBridge()->getDefaultMaterialName()
+ ? getBasicMaterialString()
+ : getReferencedMaterialString();
+
+ for (auto &mData : m_matDatas) {
+ if (QString::compare(mData.m_relativePath, sourcePath, Qt::CaseInsensitive) == 0) {
item->m_value = getBasicMaterialString();
+ break;
}
}
- break;
+ } break;
default:
break;
@@ -691,9 +687,11 @@ InspectorControlBase *InspectorControlModel::createShaderItem(
QString sourcePath = getBridge()->GetSourcePath(item->m_instance);
item->m_value = values[0];
- for (int matIdx = 0, end = int(m_materials.size()); matIdx < end; ++matIdx) {
- if (m_materials[matIdx].m_relativePath == sourcePath)
- item->m_value = values[matIdx + 1];
+ for (int i = 0, end = int(m_materials.size()); i < end; ++i) {
+ if (m_materials[i].m_relativePath == sourcePath) {
+ item->m_value = values[i + 1]; // + 1 for Standard shader
+ break;
+ }
}
return item;
@@ -717,10 +715,10 @@ InspectorControlBase *InspectorControlModel::createMatDataItem(
QString sourcePath = getBridge()->GetSourcePath(item->m_instance);
item->m_value = getDefaultMaterialString();
- for (int matIdx = 0, end = int(m_matDatas.size()); matIdx < end; ++matIdx) {
- if (QString::compare(m_matDatas[matIdx].m_relativePath,
- sourcePath, Qt::CaseInsensitive) == 0) {
- item->m_value = values[matIdx + 1]; // + 1 for Default basic material
+ for (int i = 0, end = int(m_matDatas.size()); i < end; ++i) {
+ if (QString::compare(m_matDatas[i].m_relativePath, sourcePath, Qt::CaseInsensitive) == 0) {
+ item->m_value = values[i + 1]; // + 1 for Default basic material
+ break;
}
}
@@ -921,29 +919,31 @@ bool InspectorControlModel::isGroupRebuildRequired(CInspectableBase *inspectable
if (existingGroup.groupTitle != theInspectorGroup->GetName())
return true;
- if (const auto cdmInspectable = dynamic_cast<Qt3DSDMInspectable *>(inspectable)) {
+ if (inspectable->getObjectType() != OBJTYPE_GUIDE) {
+ const auto dmInspectable = static_cast<Qt3DSDMInspectable *>(inspectable);
+ const auto group = static_cast<const Qt3DSDMInspectorGroup *>(theInspectorGroup);
int existingIndex = 0;
- if (const auto group = dynamic_cast<const Qt3DSDMInspectorGroup *>(theInspectorGroup)) {
- const auto materialGroup = dynamic_cast<const Qt3DSDMMaterialInspectorGroup *>(group);
- if (materialGroup && materialGroup->isMaterialGroup()) {
- auto i = existingGroup.controlElements.at(existingIndex++).value<InspectorControlBase*>();
- if (i->m_instance != cdmInspectable->GetGroupInstance(theIndex))
- return true;
- if (!isInsideMaterialContainer())
- existingIndex++; // Add material type dropdown to existing elements
- }
-
- if ((existingGroup.controlElements.size() - existingIndex) != group->GetRows().size())
+ if (group && group->isMaterial()) {
+ auto i = existingGroup.controlElements.at(existingIndex++)
+ .value<InspectorControlBase *>();
+ if (i->m_instance != dmInspectable->GetGroupInstance(theIndex))
return true;
- for (const auto row : group->GetRows()) {
- auto i = existingGroup.controlElements.at(existingIndex++).value<InspectorControlBase*>();
- if (i->m_instance != cdmInspectable->GetGroupInstance(theIndex))
- return true;
+ if (!isInsideMaterialContainer())
+ existingIndex++; // Add material type dropdown to existing elements
+ }
- if (i->m_property != row->GetMetaDataPropertyInfo().m_Property)
- return true;
- }
+ if ((existingGroup.controlElements.size() - existingIndex) != group->GetRows().size())
+ return true;
+
+ for (const auto row : group->GetRows()) {
+ auto i = existingGroup.controlElements.at(existingIndex++)
+ .value<InspectorControlBase *>();
+ if (i->m_instance != dmInspectable->GetGroupInstance(theIndex))
+ return true;
+
+ if (i->m_property != row->GetMetaDataPropertyInfo().m_Property)
+ return true;
}
}
@@ -955,17 +955,37 @@ CClientDataModelBridge *InspectorControlModel::getBridge() const
return g_StudioApp.GetCore()->GetDoc()->GetStudioSystem()->GetClientDataModelBridge();
}
-auto InspectorControlModel::computeTree(CInspectableBase *inspectBase)
+CInspectableBase *InspectorControlModel::getInspectableFromInstance(
+ qt3dsdm::Qt3DSDMInstanceHandle inInstance)
+{
+ CDoc *doc = g_StudioApp.GetCore()->GetDoc();
+ qt3dsdm::ISlideSystem *slideSystem = doc->GetStudioSystem()->GetSlideSystem();
+
+ if (doc->GetDocumentReader().IsInstance(inInstance)) {
+ qt3dsdm::Qt3DSDMSlideHandle activeSlide = doc->GetActiveSlide();
+ qt3dsdm::Qt3DSDMInstanceHandle activeSlideInstance = 0;
+
+ // Slide, scene or component
+ if (inInstance == getBridge()->GetOwningComponentInstance(activeSlide))
+ activeSlideInstance = slideSystem->GetSlideInstance(activeSlide);
+
+ return new Qt3DSDMInspectable(inInstance, activeSlideInstance);
+ }
+
+ return nullptr;
+}
+
+auto InspectorControlModel::computeTree(CInspectableBase *inspectableBase)
-> QVector<GroupInspectorControl>
{
QVector<GroupInspectorControl> result;
- if (inspectBase) {
- qt3dsdm::Qt3DSDMInstanceHandle instance = inspectBase->getInstance();
+ if (inspectableBase) {
+ qt3dsdm::Qt3DSDMInstanceHandle instance = inspectableBase->getInstance();
bool isMatFromFile = instance.Valid() && getBridge()->isInsideMaterialContainer(instance);
- long groupCount = inspectBase->getGroupCount();
+ long groupCount = inspectableBase->getGroupCount();
for (long idx = 0; idx < groupCount; ++idx)
- result.append(computeGroup(inspectBase, idx, isMatFromFile, false));
+ result.append(computeGroup(inspectableBase, idx, isMatFromFile, false));
if (isDefaultMaterial() && result.size() > 0) {
result[result.size() - 1].groupInfo = tr("\nDefault material cannot be edited.\n\n"
@@ -973,9 +993,9 @@ auto InspectorControlModel::computeTree(CInspectableBase *inspectBase)
}
//Show original material properties for referenced materials
- auto refMaterial = getReferenceMaterial(inspectBase);
+ auto refMaterial = getReferenceMaterial(inspectableBase);
if (refMaterial.Valid()) {
- auto refMaterialInspectable = g_StudioApp.getInspectableFromInstance(refMaterial);
+ auto refMaterialInspectable = getInspectableFromInstance(refMaterial);
if (refMaterialInspectable) {
QString materialSrcPath;
if (instance.Valid())
@@ -995,11 +1015,11 @@ auto InspectorControlModel::computeTree(CInspectableBase *inspectBase)
return result;
}
-auto InspectorControlModel::computeGroup(CInspectableBase *inspectable, int theIndex,
+auto InspectorControlModel::computeGroup(CInspectableBase *inspectable, int index,
bool disableAnimation, bool isReference)
-> GroupInspectorControl
{
- CInspectorGroup *theInspectorGroup = inspectable->getGroup(theIndex);
+ CInspectorGroup *theInspectorGroup = inspectable->getGroup(index);
GroupInspectorControl result;
result.groupTitle = theInspectorGroup->GetName();
result.groupInfo.clear();
@@ -1007,43 +1027,44 @@ auto InspectorControlModel::computeGroup(CInspectableBase *inspectable, int theI
if (isReference)
result.groupTitle += tr(" (Reference)");
- if (const auto cdmInspectable = dynamic_cast<Qt3DSDMInspectable *>(inspectable)) {
- if (const auto group = dynamic_cast<Qt3DSDMInspectorGroup *>(theInspectorGroup)) {
- const auto materialGroup = dynamic_cast<Qt3DSDMMaterialInspectorGroup *>(group);
- bool isMatData = isBasicMaterial(cdmInspectable);
- if (materialGroup && materialGroup->isMaterialGroup()) {
- InspectorControlBase *item = nullptr;
-
- if (!isInsideMaterialContainer(cdmInspectable) && !isReference) {
- item = createMaterialTypeItem(cdmInspectable, theIndex);
- if (item)
- result.controlElements.push_back(QVariant::fromValue(item));
- }
-
- if (isAnimatableMaterial(cdmInspectable)) {
- item = createShaderItem(cdmInspectable, theIndex);
- if (item)
- result.controlElements.push_back(QVariant::fromValue(item));
- } else if (isMatData) {
- item = createMatDataItem(cdmInspectable, theIndex);
- if (item)
- result.controlElements.push_back(QVariant::fromValue(item));
- }
- }
+ if (inspectable->getObjectType() != OBJTYPE_GUIDE) {
+ const auto dmInspectable = static_cast<Qt3DSDMInspectable *>(inspectable);
+ const auto group = static_cast<Qt3DSDMInspectorGroup *>(theInspectorGroup);
- for (const auto row : group->GetRows()) {
- InspectorControlBase *item = createItem(cdmInspectable, row, theIndex);
- if (!item)
- continue;
+ bool isBasicMat = isBasicMaterial(dmInspectable);
+ if (group->isMaterial()) {
+ InspectorControlBase *item = nullptr;
- if (disableAnimation)
- item->m_animatable = false;
+ if (!isInsideMaterialContainer(dmInspectable) && !isReference) {
+ item = createMaterialTypeItem(dmInspectable, index);
+ if (item)
+ result.controlElements.push_back(QVariant::fromValue(item));
+ }
- if (!isMatData || item->m_title != getReferencedMaterialString())
+ if (isAnimatableMaterial(dmInspectable)) {
+ item = createShaderItem(dmInspectable, index);
+ if (item)
+ result.controlElements.push_back(QVariant::fromValue(item));
+ } else if (isBasicMat) {
+ item = createMatDataItem(dmInspectable, index);
+ if (item)
result.controlElements.push_back(QVariant::fromValue(item));
}
}
- } else if (const auto guideInspectable = dynamic_cast<GuideInspectable *>(inspectable)) {
+
+ for (const auto row : group->GetRows()) {
+ InspectorControlBase *item = createItem(dmInspectable, row, index);
+ if (!item)
+ continue;
+
+ if (disableAnimation)
+ item->m_animatable = false;
+
+ if (!isBasicMat || item->m_title != getReferencedMaterialString())
+ result.controlElements.push_back(QVariant::fromValue(item));
+ }
+ } else { // Guide
+ const auto guideInspectable = static_cast<GuideInspectable *>(inspectable);
// Guide properties don't come from metadata as they are not actual objects
m_guideInspectable = guideInspectable;
const auto &properties = m_guideInspectable->properties();
@@ -1439,7 +1460,7 @@ void InspectorControlModel::saveIfMaterial(qt3dsdm::Qt3DSDMInstanceHandle instan
EStudioObjectType type = getBridge()->GetObjectType(instance);
auto material = instance;
- if (type == EStudioObjectType::OBJTYPE_IMAGE)
+ if (type == OBJTYPE_IMAGE)
material = sceneEditor->GetParent(instance);
if (!material.Valid())
@@ -1454,8 +1475,7 @@ void InspectorControlModel::saveIfMaterial(qt3dsdm::Qt3DSDMInstanceHandle instan
type = getBridge()->GetObjectType(material);
- if (type == EStudioObjectType::OBJTYPE_MATERIAL
- || type == EStudioObjectType::OBJTYPE_CUSTOMMATERIAL) {
+ if (type & (OBJTYPE_MATERIAL | OBJTYPE_CUSTOMMATERIAL)) {
qt3dsdm::SValue value;
studio->GetPropertySystem()->GetInstancePropertyValue(
material, getBridge()->GetObjectDefinitions().m_Named.m_NameProp, value);
@@ -1576,7 +1596,7 @@ void InspectorControlModel::setMatDataValue(long instance, int handle, const QVa
const QString typeValue = value.toString();
QString v;
QString name;
- Q3DStudio::CString srcPath;
+ QString srcPath;
QMap<QString, QString> values;
QMap<QString, QMap<QString, QString>> textureValues;
@@ -1586,7 +1606,7 @@ void InspectorControlModel::setMatDataValue(long instance, int handle, const QVa
if (typeValue == getDefaultMaterialString()) {
v = QStringLiteral("Referenced Material");
name = getBridge()->getDefaultMaterialName();
- srcPath = Q3DStudio::CString::fromQString(name);
+ srcPath = name;
changeMaterialFile = true;
} else {
const auto sceneEditor = doc->getSceneEditor();
@@ -1602,15 +1622,15 @@ void InspectorControlModel::setMatDataValue(long instance, int handle, const QVa
v = QStringLiteral("Referenced Material");
changeMaterialFile = true;
name = m_matDatas[matIdx].m_name;
- srcPath = Q3DStudio::CString::fromQString(m_matDatas[matIdx].m_relativePath);
- const auto material = sceneEditor->getMaterial(srcPath.toQString());
+ srcPath = m_matDatas[matIdx].m_relativePath;
+ const auto material = sceneEditor->getMaterial(srcPath);
if (material.Valid()) {
// Get the correct case source path
const auto absPath = sceneEditor->getFilePathFromMaterialName(
sceneEditor->GetName(material).toQString());
const auto relPath = QDir(doc->GetDocumentDirectory())
.relativeFilePath(absPath);
- srcPath = Q3DStudio::CString::fromQString(relPath);
+ srcPath = relPath;
}
values = m_matDatas[matIdx].m_values;
textureValues = m_matDatas[matIdx].m_textureValues;
@@ -1622,7 +1642,7 @@ void InspectorControlModel::setMatDataValue(long instance, int handle, const QVa
if (changeMaterialFile) {
{
Q3DStudio::SCOPED_DOCUMENT_EDITOR(*doc, QString())
- ->setMaterialValues(srcPath.toQString(), values, textureValues);
+ ->setMaterialValues(srcPath, values, textureValues);
}
// Several aspects of the editor are not updated correctly
// if the data core is changed without a transaction
@@ -1637,8 +1657,8 @@ void InspectorControlModel::setMatDataValue(long instance, int handle, const QVa
scopedEditor->SetMaterialType(instance, v);
if (changeMaterialFile) {
- scopedEditor->setMaterialSourcePath(instance, srcPath);
- scopedEditor->setMaterialReferenceByPath(instance, srcPath.toQString());
+ scopedEditor->setMaterialSourcePath(instance, Q3DStudio::CString::fromQString(srcPath));
+ scopedEditor->setMaterialReferenceByPath(instance, srcPath);
// Select original instance again since potentially
// creating a material selects the created one
diff --git a/src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlModel.h b/src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlModel.h
index 05a3ee57..7c3be20e 100644
--- a/src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlModel.h
+++ b/src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlModel.h
@@ -161,23 +161,13 @@ public:
Q_INVOKABLE void updateGroupCollapseState(int groupIdx, bool state);
private:
- void onSlideRearranged(const qt3dsdm::Qt3DSDMSlideHandle &inMaster, int inOldIndex,
- int inNewIndex);
-
-
- struct GroupInspectorControl {
+ struct GroupInspectorControl
+ {
QString groupTitle;
QVariantList controlElements;
QString groupInfo;
-
- ~GroupInspectorControl() {
- }
};
- QVector<GroupInspectorControl> m_groupElements;
- CInspectableBase *m_inspectableBase = nullptr;
- GuideInspectable *m_guideInspectable = nullptr;
-
struct MaterialEntry
{
QString m_name;
@@ -192,20 +182,9 @@ private:
QMap<QString, QMap<QString, QString>> m_textureValues;
};
- std::vector<MaterialEntry> m_materials;
- std::vector<MaterialDataEntry> m_matDatas;
- std::vector<Q3DStudio::CFilePath> m_cachedMatDatas;
- qt3dsdm::Qt3DSDMInstanceHandle m_refMaterial;
-
- Q3DStudio::CUpdateableDocumentEditor m_UpdatableEditor;
-
- bool m_suspendMaterialRename = false;
-
- QPair<long, int> m_modifiedProperty;
-
- qt3dsdm::SValue m_previouslyCommittedValue;
+ void onSlideRearranged(const qt3dsdm::Qt3DSDMSlideHandle &inMaster, int inOldIndex,
+ int inNewIndex);
- QHash<int, QHash<int, bool> > m_collapseMap;
QString getBasicMaterialString() const;
QString getAnimatableMaterialString() const;
@@ -248,11 +227,30 @@ private:
int theIndex, bool disableAnimation = false,
bool isReference = false);
bool isGroupRebuildRequired(CInspectableBase *inspectable, int theIndex) const;
-
+ CInspectableBase *getInspectableFromInstance(qt3dsdm::Qt3DSDMInstanceHandle inInstance);
CClientDataModelBridge *getBridge() const;
static int handleToGuidePropIndex(int handle) { return handle - 1; }
+ QVector<GroupInspectorControl> m_groupElements;
+ CInspectableBase *m_inspectableBase = nullptr;
+ GuideInspectable *m_guideInspectable = nullptr;
+
+ std::vector<MaterialEntry> m_materials;
+ std::vector<MaterialDataEntry> m_matDatas;
+ std::vector<Q3DStudio::CFilePath> m_cachedMatDatas;
+ qt3dsdm::Qt3DSDMInstanceHandle m_refMaterial;
+
+ Q3DStudio::CUpdateableDocumentEditor m_UpdatableEditor;
+
+ bool m_suspendMaterialRename = false;
+
+ QPair<long, int> m_modifiedProperty;
+
+ qt3dsdm::SValue m_previouslyCommittedValue;
+
+ QHash<int, QHash<int, bool> > m_collapseMap;
+
VariantsGroupModel *m_variantsModel = nullptr;
};
diff --git a/src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlView.cpp b/src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlView.cpp
index e73a0e24..e19a2dca 100644
--- a/src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlView.cpp
+++ b/src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlView.cpp
@@ -65,7 +65,6 @@
#include "SelectedValue.h"
#include "Qt3DSDMInspectable.h"
#include "Qt3DSDMSlides.h"
-#include "Qt3DSDMMaterialInspectable.h"
#include "GuideInspectable.h"
#include <QtCore/qtimer.h>
@@ -288,16 +287,23 @@ QString InspectorControlView::noneString() const
bool InspectorControlView::canLinkProperty(int instance, int handle) const
{
- if (getBridge()->isInsideMaterialContainer(instance))
+ if (!instance || !handle)
return false;
- if (getBridge()->IsMaterialBaseInstance(instance)) // all material types are unlinkable
+ if (getBridge()->isInsideMaterialContainer(instance))
return false;
if (handle == getBridge()->GetSceneAsset().m_Eyeball.m_Property) // eyeball is unlinkable
return false;
CDoc *doc = g_StudioApp.GetCore()->GetDoc();
+
+ // Disallow linking of properties that refer to images as unlinking them is not trivial at all.
+ qt3dsdm::AdditionalMetaDataType::Value thePropertyMetaData =
+ doc->GetStudioSystem()->GetPropertySystem()->GetAdditionalMetaDataType(instance, handle);
+ if (thePropertyMetaData == qt3dsdm::AdditionalMetaDataType::Image)
+ return false;
+
return doc->GetDocumentReader().CanPropertyBeLinked(instance, handle);
}
@@ -397,8 +403,10 @@ void InspectorControlView::OnSelectionSet(Q3DStudio::SSelectedValue selectable)
{
CInspectableBase *inspectable = createInspectableFromSelectable(selectable);
- if (inspectable && !inspectable->isValid())
+ if (inspectable && !inspectable->isValid()) {
+ delete inspectable;
inspectable = nullptr;
+ }
setInspectable(inspectable);
}
@@ -433,8 +441,6 @@ CInspectableBase *InspectorControlView::createInspectableFromSelectable(
->GetSlideSystem()->GetSlideInstance(activeSlide);
inspectableBase = new Qt3DSDMInspectable(selectedInstance,
activeSlideInstance);
- } else if (getBridge()->IsMaterialBaseInstance(selectedInstance)) {
- inspectableBase = new Qt3DSDMMaterialInspectable(selectedInstance);
} else {
inspectableBase = new Qt3DSDMInspectable(selectedInstance);
}
@@ -459,6 +465,10 @@ void InspectorControlView::setInspectable(CInspectableBase *inInspectable)
{
if (m_inspectableBase != inInspectable) {
m_activeBrowser.clear();
+
+ if (m_inspectableBase)
+ delete m_inspectableBase;
+
m_inspectableBase = inInspectable;
m_inspectorControlModel->setInspectable(inInspectable);
diff --git a/src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlView.qml b/src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlView.qml
index c291de7b..9446d5a6 100644
--- a/src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlView.qml
+++ b/src/Authoring/Qt3DStudio/Palettes/Inspector/InspectorControlView.qml
@@ -280,9 +280,6 @@ Rectangle {
coords.x, coords.y,
model.modelData.handle,
model.modelData.instance);
- // Refresh text; title color is wrong after this
- propertyRow.color = _parentView.titleColor(
- modelData.instance, modelData.handle);
}
ColumnLayout { // Property row and datainput control
@@ -372,7 +369,6 @@ Rectangle {
+ ctrldPropButton.width,
ctrldPropButton.y
+ ctrldPropButton.height));
-
}
}
diff --git a/src/Authoring/Qt3DStudio/Palettes/Inspector/Qt3DSDMInspectable.cpp b/src/Authoring/Qt3DStudio/Palettes/Inspector/Qt3DSDMInspectable.cpp
index a82df79c..a4a484fe 100644
--- a/src/Authoring/Qt3DStudio/Palettes/Inspector/Qt3DSDMInspectable.cpp
+++ b/src/Authoring/Qt3DStudio/Palettes/Inspector/Qt3DSDMInspectable.cpp
@@ -29,6 +29,7 @@
#include "Qt3DSDMInspectable.h"
#include "Qt3DSDMInspectorGroup.h"
+#include "Qt3DSDMInspectorRow.h"
#include "StudioApp.h"
#include "Core.h"
#include "Doc.h"
@@ -54,6 +55,13 @@ Qt3DSDMInspectable::Qt3DSDMInspectable(qt3dsdm::Qt3DSDMInstanceHandle instance,
}
}
+Qt3DSDMInspectable::~Qt3DSDMInspectable()
+{
+ for (auto g : qAsConst(m_groups))
+ delete g;
+ m_groups.clear();
+}
+
// Returns the name of this inspectable
Q3DStudio::CString Qt3DSDMInspectable::getName()
{
@@ -87,11 +95,31 @@ long Qt3DSDMInspectable::getGroupCount() const
}
// Return the property group for display
-CInspectorGroup *Qt3DSDMInspectable::getGroup(long inIndex)
+CInspectorGroup *Qt3DSDMInspectable::getGroup(long index)
{
- Qt3DSDMInspectorGroup *group = new Qt3DSDMInspectorGroup(GetGroupName(inIndex));
+ TMetaDataPropertyHandleList properties = GetGroupProperties(index);
+ if (m_groups.contains(index)) {
+ // Check if the group properties have changed. This can f.ex happen if property
+ // filter status changed and it became visible.
+ std::vector<Q3DStudio::Qt3DSDMInspectorRow *> rows
+ = static_cast<const Qt3DSDMInspectorGroup *>(m_groups[index])->GetRows();
+ TMetaDataPropertyHandleList rowProps;
+
+ for (uint i = 0; i < rows.size(); ++i)
+ rowProps.push_back(rows[i]->GetMetaDataProperty());
+
+ // No need to sort; if ordering has changed for some reason, group also needs to be
+ // reconstructed. (Assume that the default case is that row ordering is derived from
+ // property ordering, so we can use direct == operator to see if properties match the
+ // inspector rows.)
+ if (properties == rowProps)
+ return m_groups[index];
+
+ delete m_groups[index];
+ }
- TMetaDataPropertyHandleList properties = GetGroupProperties(inIndex);
+ Qt3DSDMInspectorGroup *group = new Qt3DSDMInspectorGroup(GetGroupName(index));
+ m_groups[index] = group;
for (auto &prop : properties)
group->CreateRow(getDoc(), prop);
@@ -100,16 +128,16 @@ CInspectorGroup *Qt3DSDMInspectable::getGroup(long inIndex)
}
// Return the property handles for display, given the group index
-TMetaDataPropertyHandleList Qt3DSDMInspectable::GetGroupProperties(long inIndex)
+TMetaDataPropertyHandleList Qt3DSDMInspectable::GetGroupProperties(long index)
{
- long activeGroupIdx = activeGroupIndex(inIndex);
+ long activeGroupIdx = activeGroupIndex(index);
TMetaDataPropertyHandleList retval;
IMetaData &theMetaData = *getDoc()->GetStudioSystem()->GetActionMetaData();
- theMetaData.GetMetaDataProperties(GetGroupInstance(inIndex), retval);
+ theMetaData.GetMetaDataProperties(GetGroupInstance(index), retval);
qt3dsdm::IPropertySystem &thePropertySystem(*getDoc()->GetStudioSystem()->GetPropertySystem());
// get name of the current group for filtering
Option<qt3dsdm::TCharStr> theGroupFilterName =
- theMetaData.GetGroupFilterNameForInstance(GetGroupInstance(inIndex), activeGroupIdx);
+ theMetaData.GetGroupFilterNameForInstance(GetGroupInstance(index), activeGroupIdx);
long theGroupCount = getGroupCount();
// end is explicitly required
@@ -140,7 +168,7 @@ TMetaDataPropertyHandleList Qt3DSDMInspectable::GetGroupProperties(long inIndex)
SValue theValue;
thePropertySystem.GetInstancePropertyValue(
- GetGroupInstance(inIndex), theFilter.m_FilterProperty, theValue);
+ GetGroupInstance(index), theFilter.m_FilterProperty, theValue);
bool resultIfTrue = theFilter.m_FilterType == PropertyFilterTypes::ShowIfEqual;
if (Equals(theValue.toOldSkool(), theFilter.m_Value.toOldSkool())) {
keepProperty = resultIfTrue;
diff --git a/src/Authoring/Qt3DStudio/Palettes/Inspector/Qt3DSDMInspectable.h b/src/Authoring/Qt3DStudio/Palettes/Inspector/Qt3DSDMInspectable.h
index 0da2916d..56529c5d 100644
--- a/src/Authoring/Qt3DStudio/Palettes/Inspector/Qt3DSDMInspectable.h
+++ b/src/Authoring/Qt3DStudio/Palettes/Inspector/Qt3DSDMInspectable.h
@@ -41,6 +41,7 @@ class Qt3DSDMInspectable : public CInspectableBase
public:
Qt3DSDMInspectable(qt3dsdm::Qt3DSDMInstanceHandle inInstance,
qt3dsdm::Qt3DSDMInstanceHandle activeSlideInstance = 0);
+ ~Qt3DSDMInspectable();
Q3DStudio::CString getName() override;
long getGroupCount() const override;
@@ -59,6 +60,8 @@ protected:
virtual QString GetGroupName(long inGroupIndex);
CDoc *getDoc() const;
long activeGroupIndex(long groupIndex) const;
+
+ QHash<int, CInspectorGroup *> m_groups;
};
#endif
diff --git a/src/Authoring/Qt3DStudio/Palettes/Inspector/Qt3DSDMInspectorGroup.cpp b/src/Authoring/Qt3DStudio/Palettes/Inspector/Qt3DSDMInspectorGroup.cpp
index f62812ac..c3f435f1 100644
--- a/src/Authoring/Qt3DStudio/Palettes/Inspector/Qt3DSDMInspectorGroup.cpp
+++ b/src/Authoring/Qt3DStudio/Palettes/Inspector/Qt3DSDMInspectorGroup.cpp
@@ -29,7 +29,6 @@
#include "Qt3DSDMInspectorGroup.h"
#include "Qt3DSDMInspectorRow.h"
-#include "Qt3DSDMInspectable.h"
#include "Qt3DSDMMetaData.h"
Qt3DSDMInspectorGroup::Qt3DSDMInspectorGroup(const QString &inName)
@@ -39,11 +38,12 @@ Qt3DSDMInspectorGroup::Qt3DSDMInspectorGroup(const QString &inName)
Qt3DSDMInspectorGroup::~Qt3DSDMInspectorGroup()
{
- for (auto it = m_inspectorRows.begin(); it != m_inspectorRows.end(); ++it)
- delete (*it);
+ for (auto row : m_inspectorRows)
+ delete row;
+
+ m_inspectorRows.clear();
}
-// Create a new InspectorRowBase.
void Qt3DSDMInspectorGroup::CreateRow(CDoc *inDoc,
qt3dsdm::Qt3DSDMMetaDataPropertyHandle inProperty)
{
diff --git a/src/Authoring/Qt3DStudio/Palettes/Inspector/Qt3DSDMInspectorGroup.h b/src/Authoring/Qt3DStudio/Palettes/Inspector/Qt3DSDMInspectorGroup.h
index c2bbc9fc..146d6363 100644
--- a/src/Authoring/Qt3DStudio/Palettes/Inspector/Qt3DSDMInspectorGroup.h
+++ b/src/Authoring/Qt3DStudio/Palettes/Inspector/Qt3DSDMInspectorGroup.h
@@ -49,8 +49,9 @@ public:
void CreateRow(CDoc *inDoc, qt3dsdm::Qt3DSDMMetaDataPropertyHandle inProperty);
const std::vector<Q3DStudio::Qt3DSDMInspectorRow *> &GetRows() const { return m_inspectorRows; }
+ bool isMaterial() const { return m_name == QLatin1String("Material"); }
-protected:
+private:
std::vector<Q3DStudio::Qt3DSDMInspectorRow *> m_inspectorRows;
};
diff --git a/src/Authoring/Qt3DStudio/Palettes/Project/ProjectFileSystemModel.cpp b/src/Authoring/Qt3DStudio/Palettes/Project/ProjectFileSystemModel.cpp
index 0462ae07..74b3afb4 100644
--- a/src/Authoring/Qt3DStudio/Palettes/Project/ProjectFileSystemModel.cpp
+++ b/src/Authoring/Qt3DStudio/Palettes/Project/ProjectFileSystemModel.cpp
@@ -34,6 +34,9 @@
#include "ProjectFileSystemModel.h"
#include "StudioUtils.h"
#include "StudioApp.h"
+#include "MainFrm.h"
+#include "InspectorControlView.h"
+#include "VariantsGroupModel.h"
#include "ClientDataModelBridge.h"
#include "Core.h"
#include "Doc.h"
@@ -687,6 +690,9 @@ void ProjectFileSystemModel::importUrls(const QList<QUrl> &urls, int row, bool a
if (expandRow >= 0 && !m_items[expandRow].expanded)
expand(expandRow);
}
+
+ // Refresh the variants model of inspector in case variants were imported
+ g_StudioApp.m_pMainWnd->getInspectorView()->variantsModel()->refresh();
}
/**
@@ -800,6 +806,8 @@ void ProjectFileSystemModel::importUrl(QDir &targetDir, const QUrl &url,
if (allDataInputs.contains(di))
outDataInputs.insert(di, allDataInputs[di]);
}
+ // Merge variant groups and tags from imported presentation's project
+ doc->GetCore()->getProjectFile().loadVariants(projFile);
} else if (qmlRoot && isQmlStream) { // importing a qml stream
presentationPath = doc->GetCore()->getProjectFile().getRelativeFilePathTo(destPath);
importQmlAssets(qmlRoot, fileInfo.dir(), targetDir, outImportedFiles,
diff --git a/src/Authoring/Qt3DStudio/PreviewHelper.cpp b/src/Authoring/Qt3DStudio/PreviewHelper.cpp
index 56d08804..b2490a9b 100644
--- a/src/Authoring/Qt3DStudio/PreviewHelper.cpp
+++ b/src/Authoring/Qt3DStudio/PreviewHelper.cpp
@@ -118,18 +118,22 @@ QString CPreviewHelper::getViewerFilePath(const QString &exeName)
viewerFile = QStringLiteral("%1.exe").arg(exeName);
QString viewer = viewerDir.filePath() + QStringLiteral("/") + viewerFile;
- if (!QFileInfo(viewer).exists()
- && exeName == QLatin1String("q3dsviewer")) {
- viewer = viewerDir.filePath() + QStringLiteral("/../src/Runtime/qt3d-runtime/bin/")
- + viewerFile;
+ if (!QFileInfo(viewer).exists()) {
+ if (exeName == QLatin1String("q3dsviewer")) {
+ viewer = viewerDir.filePath() + QStringLiteral("/../src/Runtime/qt3d-runtime/bin/")
+ + viewerFile;
+ } else if (exeName == QLatin1String("Qt3DViewer")) {
+ viewer = viewerDir.filePath() + QStringLiteral("/../src/Runtime/ogl-runtime/bin/")
+ + viewerFile;
+ }
}
#else
#ifdef Q_OS_MACOS
- // Check if we're looking for Viewer 2.x that has a different development
- // time path for the executable
QString viewerDevPath;
if (exeName == QLatin1String("q3dsviewer"))
viewerDevPath = QStringLiteral("../src/Runtime/qt3d-runtime/bin/");
+ else if (exeName == QLatin1String("Qt3DViewer"))
+ viewerDevPath = QStringLiteral("../src/Runtime/ogl-runtime/bin/");
// Name of the executable file on macOS
viewerFile = QStringLiteral("%1.app/Contents/MacOS/%1").arg(exeName);
@@ -151,10 +155,14 @@ QString CPreviewHelper::getViewerFilePath(const QString &exeName)
viewerFile = exeName;
QString viewer = viewerDir.filePath() + QStringLiteral("/") + viewerFile;
- if (!QFileInfo(viewer).exists()
- && exeName == QLatin1String("q3dsviewer")) {
- viewer = viewerDir.filePath() + QStringLiteral("/../src/Runtime/qt3d-runtime/bin/")
- + viewerFile;
+ if (!QFileInfo(viewer).exists()) {
+ if (exeName == QLatin1String("q3dsviewer")) {
+ viewer = viewerDir.filePath() + QStringLiteral("/../src/Runtime/qt3d-runtime/bin/")
+ + viewerFile;
+ } else if (exeName == QLatin1String("Qt3DViewer")) {
+ viewer = viewerDir.filePath() + QStringLiteral("/../src/Runtime/ogl-runtime/bin/")
+ + viewerFile;
+ }
}
#endif
#endif
diff --git a/src/Authoring/Qt3DStudio/Qt3DStudio.pro b/src/Authoring/Qt3DStudio/Qt3DStudio.pro
index 5a7af2a3..261842e4 100644
--- a/src/Authoring/Qt3DStudio/Qt3DStudio.pro
+++ b/src/Authoring/Qt3DStudio/Qt3DStudio.pro
@@ -105,12 +105,31 @@ STATICRUNTIME = \
QMAKE_LFLAGS += $$STATICRUNTIME
} else {
DEFINES += WIN32_LEAN_AND_MEAN
- LIBS += $$STATICRUNTIME
- !mingw: QMAKE_LFLAGS += /NODEFAULTLIB:tinyxml.lib
+ mingw {
+ LIBS += -lEASTL$$qtPlatformTargetSuffix() \
+ -lpcre$$qtPlatformTargetSuffix() \
+ -lTinyXML$$qtPlatformTargetSuffix() \
+ -lColladaDOM$$qtPlatformTargetSuffix() \
+ -lQT3DSDM$$qtPlatformTargetSuffix() \
+ -lCommonLib$$qtPlatformTargetSuffix() \
+ -lCoreLib$$qtPlatformTargetSuffix() \
+ -lqt3dsruntimestatic$$qtPlatformTargetSuffix() \
+ } else {
+ LIBS += $$STATICRUNTIME
+ QMAKE_LFLAGS += /NODEFAULTLIB:tinyxml.lib
+ }
+
}
-!macos {
- LIBS += -lQt5Studio3D$$qtPlatformTargetSuffix()
+if (qtHaveModule(3dstudio)) {
+ QT += 3dstudio 3dstudio-private
+} else {
+ RUNTIME_LIB = $$qt5LibraryTarget(QtStudio3D$$QT_LIBINFIX)
+ macos {
+ LIBS += -framework QtStudio3D
+ } else {
+ LIBS += -l$$RUNTIME_LIB
+ }
}
LIBS += \
@@ -314,7 +333,6 @@ SOURCES += \
Palettes/Inspector/Qt3DSDMInspectable.cpp \
Palettes/Inspector/Qt3DSDMInspectorGroup.cpp \
Palettes/Inspector/Qt3DSDMInspectorRow.cpp \
- Palettes/Inspector/Qt3DSDMMaterialInspectable.cpp \
Palettes/Inspector/TabOrderHandler.cpp \
Palettes/Inspector/TextureChooserView.cpp \
Palettes/PaletteManager.cpp \
diff --git a/src/Authoring/Qt3DStudio/Render/StudioRendererTranslation.cpp b/src/Authoring/Qt3DStudio/Render/StudioRendererTranslation.cpp
index 82678986..13413793 100644
--- a/src/Authoring/Qt3DStudio/Render/StudioRendererTranslation.cpp
+++ b/src/Authoring/Qt3DStudio/Render/StudioRendererTranslation.cpp
@@ -2167,6 +2167,7 @@ void STranslation::PreRender(bool scenePreviewPass)
CStudioPreferences::matteColor().greenF(),
CStudioPreferences::matteColor().blueF(), 1.0f);
m_Context.SetMatteColor(matteColor);
+ m_Context.setMatteEnabled(true);
// Ensure the camera points where it should
if (m_EditCameraEnabled && !scenePreviewPass) {
m_EditCameraInfo.ApplyToCamera(m_EditCamera, theViewportDims);
diff --git a/src/Runtime/ogl-runtime b/src/Runtime/ogl-runtime
-Subproject 2025912174c4cf99270b7439ec3b021e1d089ae
+Subproject a41270dced230d90e0e07f2ebb880e4f97317a7
diff --git a/src/commonplatform.pri b/src/commonplatform.pri
index 8c56d99d..6ee5eb6d 100644
--- a/src/commonplatform.pri
+++ b/src/commonplatform.pri
@@ -266,7 +266,7 @@ android {
}
win32 {
- DEFINES += QT3DS_OS_WINDOWS _WIN32 _PCPLATFORM \
+ DEFINES += QT3DS_OS_WINDOWS _PCPLATFORM \
WIDE_IS_DIFFERENT_TYPE_THAN_CHAR16_T KDWIN NOMINMAX
win32-msvc {
@@ -291,20 +291,20 @@ win32 {
contains(QT_ARCH, x86_64) {
DEFINES += _WIN64
+ } else {
+ DEFINES += _WIN32
}
}
BINDIR = $$MODULE_BASE_OUTDIR/bin
LIBDIR = $$MODULE_BASE_OUTDIR/lib
-!qtConfig(private_tests): {
- # Non-developer build
+
+exists($$MODULE_BASE_OUTDIR/src/Runtime/ogl-runtime/bin) {
RUNTIME_BINDIR = $$MODULE_BASE_OUTDIR/src/Runtime/ogl-runtime/bin
RUNTIME_LIBDIR = $$MODULE_BASE_OUTDIR/src/Runtime/ogl-runtime/lib
RUNTIME_INCLUDEDIR = $$MODULE_BASE_OUTDIR/src/Runtime/ogl-runtime/include
LIBS += -L"$$RUNTIME_LIBDIR"
-
} else {
- # Developer build
RUNTIME_BINDIR = $$BINDIR
RUNTIME_LIBDIR = $$LIBDIR
RUNTIME_INCLUDEDIR = $$MODULE_BASE_OUTDIR/include
diff --git a/src/shared/shared.pro b/src/shared/shared.pro
index eba654e5..1dece294 100644
--- a/src/shared/shared.pro
+++ b/src/shared/shared.pro
@@ -1,6 +1,8 @@
TEMPLATE = subdirs
-exists ($$(BREAKPAD_SOURCE_DIR)) {
+BREAKPAD_SOURCE_DIR = $$(BREAKPAD_SOURCE_DIR)
+
+!isEmpty(BREAKPAD_SOURCE_DIR):exists($$BREAKPAD_SOURCE_DIR) {
CONFIG += ordered
SUBDIRS += qt-breakpad
}
diff --git a/src/src.pro b/src/src.pro
index 279d386f..81532f12 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -2,7 +2,7 @@ TEMPLATE = subdirs
CONFIG += ordered
# When building the desktop authoring tool, skip embedded/mobile targets
-!cross_compile:!qnx:!mingw:!android:!ios:!integrity {
+!cross_compile:!qnx:!android:!ios:!integrity {
SUBDIRS += \
Runtime \
3rdparty \
diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro
deleted file mode 100644
index 61f50fd5..00000000
--- a/tests/auto/auto.pro
+++ /dev/null
@@ -1,10 +0,0 @@
-TEMPLATE = subdirs
-CONFIG += ordered
-
-!macos:!win32: SUBDIRS += \
- qtextras
-
-# TODO: Re-enable these tests after fixing them
-# runtime \
-# viewer \
-# studio3d
diff --git a/tests/auto/qtextras/qt3dsqmlstream/qt3dsqmlstream.pro b/tests/auto/qtextras/qt3dsqmlstream/qt3dsqmlstream.pro
deleted file mode 100644
index 1ca4f737..00000000
--- a/tests/auto/qtextras/qt3dsqmlstream/qt3dsqmlstream.pro
+++ /dev/null
@@ -1,18 +0,0 @@
-TEMPLATE = app
-CONFIG += testcase
-include($$PWD/../../../../src/commonplatform.pri)
-
-TARGET = tst_qt3dsqmlstream
-
-QT += testlib quick
-
-SOURCES += tst_qt3dsqmlstream.cpp
-
-INCLUDEPATH += \
- $$PWD/../../../../src/Runtime/ogl-runtime/src/qmlstreamer
-
-LIBS += \
- -lqt3dsqmlstreamer$$qtPlatformTargetSuffix()
-
-ANDROID_EXTRA_LIBS = \
- libqt3dsqmlstreamer.so
diff --git a/tests/auto/qtextras/qt3dsqmlstream/tst_qt3dsqmlstream.cpp b/tests/auto/qtextras/qt3dsqmlstream/tst_qt3dsqmlstream.cpp
deleted file mode 100644
index 71de525f..00000000
--- a/tests/auto/qtextras/qt3dsqmlstream/tst_qt3dsqmlstream.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 <QtTest/QtTest>
-#include <QSignalSpy>
-#include <q3dsqmlstream.h>
-#include <QQuickItem>
-
-class tst_Qt3DSQmlStream : public QObject
-{
- Q_OBJECT
-public:
- tst_Qt3DSQmlStream()
- {
- qRegisterMetaType<QQuickItem*>();
- }
- ~tst_Qt3DSQmlStream() {}
-private slots:
-
- void checkInitialState()
- {
- // GIVEN
- Q3DSQmlStream qmlstream;
-
- // THEN
- QVERIFY(qmlstream.presentationId().isNull());
- QVERIFY(qmlstream.item() == nullptr);
- }
-
- void testSetPresentationId()
- {
- // GIVEN
- Q3DSQmlStream qmlstream;
- QString pid = "presentation0";
- QSignalSpy spy(&qmlstream, SIGNAL(presentationIdChanged(const QString&)));
-
- // WHEN
- qmlstream.setPresentationId(pid);
-
- // THEN
- QVERIFY(spy.isValid());
- QCOMPARE(qmlstream.presentationId(), pid);
- QCOMPARE(spy.count(), 1);
-
- // WHEN
- spy.clear();
- qmlstream.setPresentationId(pid);
-
- // THEN
- QVERIFY(spy.isValid());
- QCOMPARE(spy.count(), 0);
- }
-
- void testSetItem()
- {
- // GIVEN
- Q3DSQmlStream qmlstream;
- QScopedPointer<QQuickItem> item(new QQuickItem());
- QSignalSpy spy(&qmlstream, SIGNAL(itemChanged(QQuickItem *)));
-
- // WHEN
- qmlstream.setItem(item.data());
-
- // THEN
- QVERIFY(spy.isValid());
- QCOMPARE(qmlstream.item(), item.data());
- QCOMPARE(spy.count(), 1);
-
- // WHEN
- spy.clear();
- qmlstream.setItem(item.data());
-
- // THEN
- QVERIFY(spy.isValid());
- QCOMPARE(spy.count(), 0);
- }
-};
-
-QTEST_APPLESS_MAIN(tst_Qt3DSQmlStream)
-
-#include "tst_qt3dsqmlstream.moc"
diff --git a/tests/auto/qtextras/qtextras.pro b/tests/auto/qtextras/qtextras.pro
deleted file mode 100644
index 16a1ed80..00000000
--- a/tests/auto/qtextras/qtextras.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-TEMPLATE = subdirs
-
-SUBDIRS += \
- qt3dsqmlstream
diff --git a/tests/auto/runtime/Qt3DSRenderTestBase.cpp b/tests/auto/runtime/Qt3DSRenderTestBase.cpp
deleted file mode 100644
index f4ab0793..00000000
--- a/tests/auto/runtime/Qt3DSRenderTestBase.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "Qt3DSRenderTestBase.h"
-
-#include "Qt3DSDMPrefix.h"
-#include "EASTL/allocator.h"
-
-namespace eastl
-{
-void AssertionFailure(const char* pExpression)
-{
- Q_UNUSED(pExpression);
-}
-EmptyString gEmptyString;
-void* gpEmptyBucketArray[2] = { nullptr, (void*)uintptr_t(~0) };
-}
-
-namespace qt3ds {
-
-void Qt3DSAssert(const char *exp, const char *file, int line, bool *ignore)
-{
- Q_UNUSED(ignore)
- qFatal("Assertion thrown %s(%d): %s", file, line, exp);
-}
-
-namespace render {
-SEndlType Endl;
-}
-}
-
-void *operator new[](size_t size, const char *, int, unsigned, const char *, int)
-{
- return malloc(size);
-}
-
-void *operator new[](size_t size, size_t, size_t, const char *, int, unsigned, const char *, int)
-{
- return malloc(size);
-}
-
-using namespace qt3ds::render;
-
-namespace qt3ds {
-namespace render {
-
-NVRenderTestBase::~NVRenderTestBase()
-{
- delete m_renderImpl;
-}
-
-bool NVRenderTestBase::initializeQt3DSRenderer(QSurfaceFormat format)
-{
- m_coreFactory = qt3ds::render::IQt3DSRenderFactoryCore::CreateRenderFactoryCore("", m_windowSystem,
- m_timeProvider);
- m_factory = m_coreFactory->CreateRenderFactory(format, false);
- m_rc = m_factory->GetQt3DSRenderContext();
- m_renderImpl = new qt3ds::render::Qt3DSRendererImpl(*m_rc);
-
- return true;
-}
-
-Qt3DSRendererImpl *NVRenderTestBase::qt3dsRenderer()
-{
- return m_renderImpl;
-}
-
-Q3DStudio::IRuntimeMetaData *NVRenderTestBase::metadata()
-{
- if (m_metaData.mPtr == NULL)
- m_metaData = &Q3DStudio::IRuntimeMetaData::Create(m_coreFactory->GetInputStreamFactory());
- return m_metaData.mPtr;
-}
-
-}
-}
diff --git a/tests/auto/runtime/Qt3DSRenderTestBase.h b/tests/auto/runtime/Qt3DSRenderTestBase.h
deleted file mode 100644
index bde0948f..00000000
--- a/tests/auto/runtime/Qt3DSRenderTestBase.h
+++ /dev/null
@@ -1,164 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-#ifndef QT3DS_RENDER_TEST_BASE_H
-#define QT3DS_RENDER_TEST_BASE_H
-#include "foundation/Qt3DS.h"
-#include "foundation/Qt3DSAssert.h"
-#include "foundation/Qt3DSFoundation.h"
-#include "foundation/Qt3DSBroadcastingAllocator.h"
-#include "render/Qt3DSRenderBaseTypes.h"
-#include "render/Qt3DSRenderContext.h"
-#include "Qt3DSWindowSystem.h"
-#include "Qt3DSTypes.h"
-#include "Qt3DSTimer.h"
-#include "Qt3DSRenderRuntimeBinding.h"
-#include "Qt3DSRenderRuntimeBindingImpl.h"
-#include "Qt3DSRenderContextCore.h"
-#include "rendererimpl/Qt3DSRendererImpl.h"
-#include "Qt3DSMetadata.h"
-
-namespace qt3ds {
-namespace render {
-class IQt3DSRenderer;
-class Qt3DSRendererImpl;
-class IQt3DSRenderFactoryCore;
-class IQt3DSRenderFactory;
-}
-}
-
-namespace qt3ds {
-namespace render {
-
- class IQt3DSRenderFactoryCore;
- class IQt3DSRenderFactory;
- class Qt3DSRenderer;
-
- typedef struct SUSER_CONTEXT_DATA
- {
- unsigned int winWidth;
- unsigned int winHeight;
- } userContextData;
-
- struct SNullTimeProvider : public Q3DStudio::ITimeProvider
- {
- virtual Q3DStudio::INT64 GetCurrentTimeMicroSeconds() { return 0; }
- };
-
- struct SNullWindowSystem : public Q3DStudio::IWindowSystem
- {
- virtual QSize GetWindowDimensions() { return QSize(); }
-
- virtual void SetWindowDimensions(const QSize &) {}
- // For platforms that support it, we get the egl info for render plugins
- // Feel free to return NULL.
- virtual Q3DStudio::SEGLInfo *GetEGLInfo() { return NULL; }
-
- // on some systems we allow our default render target to be a offscreen buffer
- // otherwise return 0;
- virtual int GetDefaultRenderTargetID() { return 0; }
- // returns the depth buffer bit count for the render window
- // does not really matter here
- virtual int GetDepthBitCount() { return 16; }
- };
-
- /// this is the base class for all tests
- class NVRenderTestBase
- {
- public:
- /// constructor
- NVRenderTestBase(){}
- /// destructor
- virtual ~NVRenderTestBase();
-
- /// Checks if this test is supported
- ///
- /// @return true if supported
- virtual bool isSupported(NVRenderContext *context) = 0;
-
- /// This runs the test
- ///
- /// @param context (in) Pointer to a NVRenderContext context
- /// @param pUserData (in) Pointer to pUserData
- ///
- /// @return false if failed
- virtual bool run(NVRenderContext *context, userContextData *pUserData) = 0;
-
- /// This cleans up state after the test if needed
- ///
- /// @param context (in) Pointer to a NVRenderContext context
- /// @param pUserData (in) Pointer to pUserData
- ///
- /// @return false if failed
- virtual void cleanup(NVRenderContext *context, userContextData *pUserData) = 0;
-
- /// This runs the performance test
- ///
- /// @param context (in) Pointer to a NVRenderContext context
- /// @param pUserData (in) Pointer to pUserData
- ///
- /// @return false if failed
- virtual bool runPerformance(NVRenderContext *context, userContextData *pContextData) = 0;
-
- /// This is a query to determine if we run on a ES context
- ///
- /// @param context (in) Pointer to a NVRenderContext context
- ///
- /// @return false if failed
- virtual const bool isGLESContext(NVRenderContext *context)
- {
- NVRenderContextType ctxType = context->GetRenderContextType();
-
- // Need minimum of GL3 or GLES3
- if (ctxType == NVRenderContextValues::GLES2 || ctxType == NVRenderContextValues::GLES3
- || ctxType == NVRenderContextValues::GLES3PLUS) {
- return true;
- }
-
- return false;
- }
-
- bool initializeQt3DSRenderer(QSurfaceFormat format);
- qt3ds::render::Qt3DSRendererImpl *qt3dsRenderer();
- Q3DStudio::IRuntimeMetaData *metadata();
-
- private:
-
- NVScopedRefCounted<qt3ds::render::IQt3DSRenderFactoryCore> m_coreFactory;
- NVScopedRefCounted<qt3ds::render::IQt3DSRenderFactory> m_factory;
- NVScopedRefCounted<qt3ds::render::IQt3DSRenderContext> m_rc;
- qt3ds::foundation::NVScopedReleasable<Q3DStudio::IRuntimeMetaData> m_metaData;
- qt3ds::render::Qt3DSRendererImpl *m_renderImpl;
-
- SNullTimeProvider m_timeProvider;
- SNullWindowSystem m_windowSystem;
- };
-}
-}
-
-#endif // QT3DS_RENDER_TEST_BASE_H
diff --git a/tests/auto/runtime/Qt3DSRenderTestMathUtil.cpp b/tests/auto/runtime/Qt3DSRenderTestMathUtil.cpp
deleted file mode 100644
index f216faa2..00000000
--- a/tests/auto/runtime/Qt3DSRenderTestMathUtil.cpp
+++ /dev/null
@@ -1,118 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "Qt3DSRenderTestMathUtil.h"
-#include <math.h>
-
-using namespace qt3ds;
-using namespace qt3ds::render;
-
-#define QT3DS_RENDER_TEST_PI 3.14159265358979323846f
-
-inline float degreeToRad(float degree)
-{
- return (degree * QT3DS_RENDER_TEST_PI) / 180.0f;
-}
-
-void qt3ds::render::NvRenderTestMatrixFrustum(QT3DSMat44 *m, float l, float r, float b, float t, float n,
- float f)
-{
- float rightMinusLeftInv, topMinusBottomInv, farMinusNearInv, twoNear;
-
- rightMinusLeftInv = 1.0f / (r - l);
- topMinusBottomInv = 1.0f / (t - b);
- farMinusNearInv = 1.0f / (f - n);
- twoNear = 2.0f * n;
-
- m->column0 = QT3DSVec4(twoNear * rightMinusLeftInv, 0, 0, 0);
- m->column1 = QT3DSVec4(0, twoNear * topMinusBottomInv, 0, 0);
- m->column2 = QT3DSVec4((r + l) * rightMinusLeftInv, (t + b) * topMinusBottomInv,
- -(f + n) * farMinusNearInv, -1.0f);
- m->column3 = QT3DSVec4(0, 0, -(twoNear * f) * farMinusNearInv, 0.0f);
-}
-
-void qt3ds::render::NvGl2DemoMatrixOrtho(QT3DSMat44 *m, float l, float r, float b, float t, float n,
- float f)
-{
- float rightMinusLeftInv, topMinusBottomInv, farMinusNearInv;
-
- rightMinusLeftInv = 1.0f / (r - l);
- topMinusBottomInv = 1.0f / (t - b);
- farMinusNearInv = 1.0f / (f - n);
-
- m->column0 = QT3DSVec4(2.0f * rightMinusLeftInv, 0, 0, 0);
- m->column1 = QT3DSVec4(0, 2.0f * topMinusBottomInv, 0, 0);
- m->column2 = QT3DSVec4(0, 0, -2.0f * farMinusNearInv, 0);
- m->column3 = QT3DSVec4(-(r + l) * rightMinusLeftInv, -(t + b) * topMinusBottomInv,
- -(f + n) * farMinusNearInv, 1.0f);
-}
-
-void qt3ds::render::NvRenderTestMatrixRotX(QT3DSMat44 *m, float angle)
-{
- float rad = degreeToRad(angle);
- float cosPhi = cos(rad);
- float sinPhi = sin(rad);
-
- m->column0 = QT3DSVec4(1.0, 0.0, 0.0, 0.0);
- m->column1 = QT3DSVec4(0.0, cosPhi, -sinPhi, 0.0);
- m->column2 = QT3DSVec4(0.0, sinPhi, cosPhi, 0.0);
- m->column3 = QT3DSVec4(0.0, 0.0, 0.0, 1.0);
-}
-
-void qt3ds::render::NvRenderTestMatrixRotY(QT3DSMat44 *m, float angle)
-{
- float rad = degreeToRad(angle);
- float cosPhi = cos(rad);
- float sinPhi = sin(rad);
-
- m->column0 = QT3DSVec4(cosPhi, 0.0, sinPhi, 0.0);
- m->column1 = QT3DSVec4(0.0, 1.0, 0.0, 0.0);
- m->column2 = QT3DSVec4(-sinPhi, 0.0, cosPhi, 0.0);
- m->column3 = QT3DSVec4(0.0, 0.0, 0.0, 1.0);
-}
-
-void qt3ds::render::NvRenderTestMatrixRotZ(QT3DSMat44 *m, float angle)
-{
- float rad = degreeToRad(angle);
- float cosPhi = cos(rad);
- float sinPhi = sin(rad);
-
- m->column0 = QT3DSVec4(cosPhi, -sinPhi, 0.0, 0.0);
- m->column1 = QT3DSVec4(sinPhi, cosPhi, 0.0, 0.0);
- m->column2 = QT3DSVec4(0.0, 0.0, 1.0, 0.0);
- m->column3 = QT3DSVec4(0.0, 0.0, 0.0, 1.0);
-}
-
-void qt3ds::render::NvRenderTestMatrixTranslation(QT3DSMat44 *m, float x, float y, float z)
-{
- m->column0 = QT3DSVec4(1.0, 0.0, 0.0, 0.0);
- m->column1 = QT3DSVec4(0.0, 1.0, 0.0, 0.0);
- m->column2 = QT3DSVec4(0.0, 0.0, 1.0, 0.0);
- m->column3 = QT3DSVec4(x, y, z, 1.0);
-}
diff --git a/tests/auto/runtime/Qt3DSRenderTestMathUtil.h b/tests/auto/runtime/Qt3DSRenderTestMathUtil.h
deleted file mode 100644
index 739209e8..00000000
--- a/tests/auto/runtime/Qt3DSRenderTestMathUtil.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-#ifndef QT3DS_RENDER_TEST_MATH_UTIL_H
-#define QT3DS_RENDER_TEST_MATH_UTIL_H
-
-#include "foundation/Qt3DSMat44.h"
-
-namespace qt3ds {
-namespace render {
-
- void NvRenderTestMatrixFrustum(QT3DSMat44 *m, float l, float r, float b, float t, float n,
- float f);
-
- void NvGl2DemoMatrixOrtho(QT3DSMat44 *m, float l, float r, float b, float t, float n, float f);
-
- void NvRenderTestMatrixRotX(QT3DSMat44 *m, float angle);
- void NvRenderTestMatrixRotY(QT3DSMat44 *m, float angle);
- void NvRenderTestMatrixRotZ(QT3DSMat44 *m, float angle);
-
- void NvRenderTestMatrixTranslation(QT3DSMat44 *m, float x, float y, float z);
-}
-}
-
-#endif
diff --git a/tests/auto/runtime/base/Qt3DSRenderTestAtomicCounterBuffer.cpp b/tests/auto/runtime/base/Qt3DSRenderTestAtomicCounterBuffer.cpp
deleted file mode 100644
index 9f81214f..00000000
--- a/tests/auto/runtime/base/Qt3DSRenderTestAtomicCounterBuffer.cpp
+++ /dev/null
@@ -1,248 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "Qt3DSRenderTestAtomicCounterBuffer.h"
-#include "../Qt3DSRenderTestMathUtil.h"
-#include "render/Qt3DSRenderAtomicCounterBuffer.h"
-#include "render/Qt3DSRenderShaderProgram.h"
-
-#include <string>
-
-using namespace qt3ds;
-using namespace qt3ds::render;
-
-struct Vertex
-{
- QT3DSVec3 positions;
-};
-
-static const char *vertShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 430\n";
- }
-
- prog += "uniform mat4 mat_mvp;\n"
- "in vec3 attr_pos; // Vertex pos\n"
- "void main()\n"
- "{\n"
- " gl_Position = vec4(attr_pos, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *fragShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 430\n";
- }
-
- prog += "layout(binding = 2, offset = 0) uniform atomic_uint ac_raster;\n"
- "out vec4 fragColor;\n"
- "void main()\n"
- "{\n"
- " uint counter = atomicCounterIncrement(ac_raster);\n"
- " float g = (float(counter)/255.0) / 255.0;\n"
- " fragColor = vec4(0.0, g, 0.0, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-NVRenderTestAtomicCounterBuffer::NVRenderTestAtomicCounterBuffer()
-{
- _curTest = 0;
- _maxColumn = 4;
-}
-
-NVRenderTestAtomicCounterBuffer::~NVRenderTestAtomicCounterBuffer()
-{
-}
-
-bool NVRenderTestAtomicCounterBuffer::isSupported(NVRenderContext *context)
-{
- // This is currently only supported on GL 4 and GLES 3.1
- if (!context->IsAtomicCounterBufferSupported())
- return false;
-
- return true;
-}
-
-////////////////////////////////
-// test for functionality
-////////////////////////////////
-
-inline NVConstDataRef<QT3DSI8> toRef(const char *data)
-{
- size_t len = strlen(data) + 1;
- return NVConstDataRef<QT3DSI8>((const QT3DSI8 *)data, (QT3DSU32)len);
-}
-
-bool NVRenderTestAtomicCounterBuffer::run(NVRenderContext *context, userContextData *pUserData)
-{
- bool success = true;
- // conpute cell width
- _cellSize = pUserData->winWidth / _maxColumn;
-
- context->SetClearColor(QT3DSVec4(.0f, .0f, .0f, 1.f));
- context->Clear(NVRenderClearFlags(NVRenderClearValues::Color | NVRenderClearValues::Depth));
-
- success &= rasterizerTest(context, pUserData);
- _curTest++;
-
- // cleanup
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-
- return success;
-}
-
-bool NVRenderTestAtomicCounterBuffer::rasterizerTest(NVRenderContext *context,
- userContextData *pUserData)
-{
- static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, -0.9, 0) }, { QT3DSVec3(0.9, 0.9, 0) },
- { QT3DSVec3(-0.9, 0.9, 0) }, { QT3DSVec3(-0.9, -0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) }, { QT3DSVec3(0.9, 0.9, 0) } };
-
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- NVScopedRefCounted<NVRenderIndexBuffer> mIndexBuffer;
- NVScopedRefCounted<NVRenderAtomicCounterBuffer> mAtomicCounterBuffer;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
-
- // create atomic counter buffer
- QT3DSU32 acCounter = 0;
- NVDataRef<QT3DSU8> acData((QT3DSU8 *)&acCounter, sizeof(QT3DSU32));
- mAtomicCounterBuffer = context->CreateAtomicCounterBuffer(
- "ac_buffer", NVRenderBufferUsageType::Static, sizeof(QT3DSU32), acData);
- if (!mAtomicCounterBuffer) {
- qWarning() << "NVRenderTestAtomicCounterBuffer: Failed to create atomic counter buffer";
- return false;
- }
- // add a parameter
- CRegisteredString theACName(context->GetStringTable().RegisterStr("ac_raster"));
- mAtomicCounterBuffer->AddParam(theACName, 0);
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- NVRenderVertFragCompilationResult compResult =
- context->CompileSource("NVRenderTestAtomicCounterBuffer shader",
- toRef(vertShader(vtxProg, isGLESContext(context))),
- toRef(fragShader(frgProg, isGLESContext(context))));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- };
-
- QT3DSU32 bufSize = 6 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 3 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestAtomicCounterBuffer: Failed to create vertex buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 1));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler = context->CreateInputAssembler(
- mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), mIndexBuffer.mPtr,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1), NVRenderDrawMode::Triangles);
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestAtomicCounterBuffer: Failed to create input assembler";
- return false;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- compResult.mShader->SetPropertyValue("mat_mvp", mvp);
- qt3ds::render::NVRenderCachedShaderBuffer<NVRenderShaderAtomicCounterBuffer *> atomicBuffer(
- "ac_buffer", *compResult.mShader);
- atomicBuffer.Set();
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- context->Draw(mInputAssembler->GetPrimitiveType(), 6, 0);
-
- context->SetActiveShader(0);
- compResult.mShader->release();
-
- return true;
-}
-
-////////////////////////////////
-// performance test
-////////////////////////////////
-bool NVRenderTestAtomicCounterBuffer::runPerformance(NVRenderContext *context,
- userContextData *pUserData)
-{
- return true;
-}
-
-////////////////////////////////
-// test cleanup
-////////////////////////////////
-void NVRenderTestAtomicCounterBuffer::cleanup(NVRenderContext *context, userContextData *pUserData)
-{
- context->SetClearColor(QT3DSVec4(0.0f, .0f, .0f, 0.f));
- // dummy
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-}
diff --git a/tests/auto/runtime/base/Qt3DSRenderTestAtomicCounterBuffer.h b/tests/auto/runtime/base/Qt3DSRenderTestAtomicCounterBuffer.h
deleted file mode 100644
index 87b0910a..00000000
--- a/tests/auto/runtime/base/Qt3DSRenderTestAtomicCounterBuffer.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2014 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-#ifndef QT3DS_RENDER_TEST_ATOMIC_COUNTER_BUFFER_H
-#define QT3DS_RENDER_TEST_ATOMIC_COUNTER_BUFFER_H
-
-#include "../Qt3DSRenderTestBase.h"
-
-namespace qt3ds {
-namespace render {
-
- /// This class tests the creation of all kinds of primitives
- class NVRenderTestAtomicCounterBuffer : public NVRenderTestBase
- {
- public:
- NVRenderTestAtomicCounterBuffer();
- ~NVRenderTestAtomicCounterBuffer();
-
- bool isSupported(NVRenderContext *context);
- bool run(NVRenderContext *context, userContextData *pUserData);
- bool runPerformance(NVRenderContext *context, userContextData *pContextData);
- void cleanup(NVRenderContext *context, userContextData *pUserData);
-
- private:
- bool rasterizerTest(NVRenderContext *context, userContextData *pUserData);
-
- unsigned int _curTest;
- unsigned int _cellSize;
- unsigned int _maxColumn;
- };
-}
-}
-
-#endif // QT3DS_RENDER_TEST_ATOMIC_COUNTER_BUFFER_H
diff --git a/tests/auto/runtime/base/Qt3DSRenderTestAttribBuffers.cpp b/tests/auto/runtime/base/Qt3DSRenderTestAttribBuffers.cpp
deleted file mode 100644
index 805782f7..00000000
--- a/tests/auto/runtime/base/Qt3DSRenderTestAttribBuffers.cpp
+++ /dev/null
@@ -1,251 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "Qt3DSRenderTestAttribBuffers.h"
-#include "../Qt3DSRenderTestMathUtil.h"
-#include "render/Qt3DSRenderShaderProgram.h"
-
-#include <string>
-
-using namespace qt3ds;
-using namespace qt3ds::render;
-
-struct Vertex
-{
- QT3DSVec3 positions;
-};
-
-static const char *vertShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 300 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 430\n";
- }
-
- prog += "uniform mat4 mat_mvp;\n"
- "in vec3 attr_pos; // Vertex pos\n"
- "in vec3 attr_col; // Vertex col\n"
- "out vec3 color; // output color\n"
- "void main()\n"
- "{\n"
- " gl_Position = vec4(attr_pos, 1.0);\n"
- " color = attr_col;\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *fragShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 300 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 430\n";
- }
-
- prog += "in vec3 color; // input color\n"
- "out vec4 fragColor;\n"
- "void main()\n"
- "{\n"
- " fragColor = vec4( color, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-NVRenderTestAttribBuffers::NVRenderTestAttribBuffers()
-{
- _curTest = 0;
- _maxColumn = 4;
-}
-
-NVRenderTestAttribBuffers::~NVRenderTestAttribBuffers()
-{
-}
-
-bool NVRenderTestAttribBuffers::isSupported(NVRenderContext *context)
-{
- return true;
-}
-
-////////////////////////////////
-// test for functionality
-////////////////////////////////
-
-inline NVConstDataRef<QT3DSI8> toRef(const char *data)
-{
- size_t len = strlen(data) + 1;
- return NVConstDataRef<QT3DSI8>((const QT3DSI8 *)data, (QT3DSU32)len);
-}
-
-bool NVRenderTestAttribBuffers::run(NVRenderContext *context, userContextData *pUserData)
-{
- bool success = true;
- // conpute cell width
- _cellSize = pUserData->winWidth / _maxColumn;
-
- context->SetClearColor(QT3DSVec4(.0f, .0f, .0f, 1.f));
- context->Clear(NVRenderClearFlags(NVRenderClearValues::Color | NVRenderClearValues::Depth));
-
- success &= multiAttribBufferTest(context, pUserData);
- _curTest++;
-
- // cleanup
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-
- return success;
-}
-
-bool NVRenderTestAttribBuffers::multiAttribBufferTest(NVRenderContext *context,
- userContextData *pUserData)
-{
- static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, -0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) },
- { QT3DSVec3(0.0, 0.9, 0) } };
-
- static const Vertex vertexColors[] = { { QT3DSVec3(0.0, 1.0, 0.0) },
- { QT3DSVec3(0.0, 0.6, 0.0) },
- { QT3DSVec3(0.0, 0.2, 0.0) } };
-
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderVertexBuffer> mColorBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- NVRenderVertexBuffer *attribBuffers[2];
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
- qt3ds::QT3DSVec3 color(0.0, 1.0, 0.0);
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- NVRenderVertFragCompilationResult compResult = context->CompileSource(
- "NVRenderTestAttribBuffers shader", toRef(vertShader(vtxProg, isGLESContext(context))),
- toRef(fragShader(frgProg, isGLESContext(context))));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0, 0),
- NVRenderVertexBufferEntry("attr_col", NVRenderComponentTypes::QT3DSF32, 3, 0, 1),
- };
-
- // position buffer
- QT3DSU32 bufSize = 3 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 3 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestAttribBuffers: Failed to create vertex buffer";
- return false;
- }
- // color buffer
- NVDataRef<QT3DSU8> colorData((QT3DSU8 *)vertexColors, bufSize);
- mColorBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 3 * sizeof(QT3DSF32), colorData);
- if (!mColorBuffer) {
- qWarning() << "NVRenderTestAttribBuffers: Failed to create color buffer";
- return false;
- }
-
- attribBuffers[0] = mVertexBuffer;
- attribBuffers[1] = mColorBuffer;
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 2));
- // create input Assembler
- QT3DSU32 strides[2];
- QT3DSU32 offsets[2];
- strides[0] = mVertexBuffer->GetStride();
- offsets[0] = 0;
- strides[1] = mColorBuffer->GetStride();
- offsets[1] = 0;
-
- mInputAssembler = context->CreateInputAssembler(
- mAttribLayout, NVConstDataRef<NVRenderVertexBuffer *>(attribBuffers, 2), NULL,
- toConstDataRef(strides, 2), toConstDataRef(offsets, 2), NVRenderDrawMode::Triangles);
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestAttribBuffers: Failed to create input assembler";
- return false;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- compResult.mShader->SetPropertyValue("mat_mvp", mvp);
- // set color
- compResult.mShader->SetPropertyValue("color", color);
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- context->Draw(mInputAssembler->GetPrimitiveType(), 3, 0);
-
- context->SetActiveShader(0);
- compResult.mShader->release();
-
- return true;
-}
-
-////////////////////////////////
-// performance test
-////////////////////////////////
-bool NVRenderTestAttribBuffers::runPerformance(NVRenderContext *context, userContextData *pUserData)
-{
- return true;
-}
-
-////////////////////////////////
-// test cleanup
-////////////////////////////////
-void NVRenderTestAttribBuffers::cleanup(NVRenderContext *context, userContextData *pUserData)
-{
- context->SetClearColor(QT3DSVec4(0.0f, .0f, .0f, 0.f));
- // dummy
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-}
diff --git a/tests/auto/runtime/base/Qt3DSRenderTestAttribBuffers.h b/tests/auto/runtime/base/Qt3DSRenderTestAttribBuffers.h
deleted file mode 100644
index 47e898f2..00000000
--- a/tests/auto/runtime/base/Qt3DSRenderTestAttribBuffers.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2014 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-#ifndef QT3DS_RENDER_TEST_ATTRIB_BUFFERS_H
-#define QT3DS_RENDER_TEST_ATTRIB_BUFFERS_H
-
-#include "../Qt3DSRenderTestBase.h"
-
-namespace qt3ds {
-namespace render {
-
- /// This class tests the creation of all kinds of primitives
- class NVRenderTestAttribBuffers : public NVRenderTestBase
- {
- public:
- NVRenderTestAttribBuffers();
- ~NVRenderTestAttribBuffers();
-
- bool isSupported(NVRenderContext *context);
- bool run(NVRenderContext *context, userContextData *pUserData);
- bool runPerformance(NVRenderContext *context, userContextData *pContextData);
- void cleanup(NVRenderContext *context, userContextData *pUserData);
-
- private:
- bool multiAttribBufferTest(NVRenderContext *context, userContextData *pUserData);
-
- unsigned int _curTest;
- unsigned int _cellSize;
- unsigned int _maxColumn;
- };
-}
-}
-
-#endif // QT3DS_RENDER_TEST_ATTRIB_BUFFERS_H
diff --git a/tests/auto/runtime/base/Qt3DSRenderTestBackendQuery.cpp b/tests/auto/runtime/base/Qt3DSRenderTestBackendQuery.cpp
deleted file mode 100644
index 30f26378..00000000
--- a/tests/auto/runtime/base/Qt3DSRenderTestBackendQuery.cpp
+++ /dev/null
@@ -1,332 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "Qt3DSRenderTestBackendQuery.h"
-#include "../Qt3DSRenderTestMathUtil.h"
-#include "render/Qt3DSRenderShaderProgram.h"
-
-using namespace qt3ds;
-using namespace qt3ds::render;
-
-static const char *PassthroughVertShader()
-{
- return "uniform mat4 mat_mvp;\n"
- "attribute vec3 attr_pos; // Vertex pos\n"
- "void main()\n"
- "{\n"
- " gl_Position = mat_mvp * vec4(attr_pos, 1.0);\n"
- "}\n";
-}
-
-static const char *SimpleFragShader()
-{
- return "#ifdef GL_ES\n"
- "precision mediump float;\n"
- "#endif\n"
- "uniform vec3 color;\n"
- "void main()\n"
- "{\n"
- "gl_FragColor = vec4( color, 1);\n"
- "}\n";
-}
-
-struct Vertex
-{
- QT3DSVec3 positions;
-};
-
-static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, 0.9, 0) }, { QT3DSVec3(-0.9, -0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) }, { QT3DSVec3(-0.9, 0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) }, { QT3DSVec3(0.9, 0.9, 0) } };
-
-NVRenderTestBackendQuery::NVRenderTestBackendQuery()
-{
- _curTest = 0;
- _maxColumn = 4;
-}
-
-NVRenderTestBackendQuery::~NVRenderTestBackendQuery()
-{
-}
-
-bool NVRenderTestBackendQuery::isSupported(NVRenderContext *context)
-{
- return true;
-}
-
-////////////////////////////////
-// test for functionality
-////////////////////////////////
-
-inline NVConstDataRef<QT3DSI8> toRef(const char *data)
-{
- size_t len = strlen(data) + 1;
- return NVConstDataRef<QT3DSI8>((const QT3DSI8 *)data, (QT3DSU32)len);
-}
-
-bool NVRenderTestBackendQuery::run(NVRenderContext *context, userContextData *pUserData)
-{
- bool success = true;
- // conpute cell width
- _cellSize = pUserData->winWidth / _maxColumn;
-
- context->SetClearColor(QT3DSVec4(.0f, .0f, .0f, 1.f));
- context->Clear(NVRenderClearFlags(NVRenderClearValues::Color | NVRenderClearValues::Depth));
-
- success &= depthBitsTest(context, pUserData);
- _curTest++;
- success &= depthBitsFBOTest(context, pUserData);
- _curTest++;
-
- // cleanup
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-
- return success;
-}
-
-bool NVRenderTestBackendQuery::renderQuad(NVRenderContext *context, userContextData *pUserData,
- QT3DSVec3 color)
-{
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- NVScopedRefCounted<NVRenderIndexBuffer> mIndexBuffer;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
-
- // create shaders
- NVRenderVertFragCompilationResult compResult =
- context->CompileSource("NVRenderTestBackendQuery shader", toRef(PassthroughVertShader()),
- toRef(SimpleFragShader()));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- };
-
- QT3DSU32 bufSize = 6 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 3 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestBackendQuery::depthBitsTest: Failed to create vertex buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 1));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler = context->CreateInputAssembler(
- mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), mIndexBuffer.mPtr,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1));
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestBackendQuery::depthBitsTest: Failed to create input assembler";
- return false;
- }
-
- // check if default buffer bit size is in an acceptable size range
- // we accept a range from 16 to 32
- const QT3DSU32 bits = context->GetDepthBits();
- bool passed = (bits >= 16 && bits <= 32);
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- compResult.mShader->SetPropertyValue("mat_mvp", mvp);
- // set color
- compResult.mShader->SetPropertyValue("color", color);
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- context->Draw(NVRenderDrawMode::Triangles, 6, 0);
-
- context->SetActiveShader(0);
- compResult.mShader->release();
-
- return passed;
-}
-
-bool NVRenderTestBackendQuery::depthBitsTest(NVRenderContext *context, userContextData *pUserData)
-{
- QT3DSVec3 color(0.0, 0.0, 0.0);
- // check if default buffer bit size is in an acceptable size range
- // we accept a range from 16 to 32
- const QT3DSU32 bits = context->GetDepthBits();
- bool passed = (bits >= 16 && bits <= 32);
- if (passed)
- color.y = 1.0;
- else
- color.x = 1.0;
-
- passed &= renderQuad(context, pUserData, color);
-
- return passed;
-}
-
-bool NVRenderTestBackendQuery::depthBitsFBOTest(NVRenderContext *context,
- userContextData *pUserData)
-{
- // depneding on the context we get different values
- NVRenderContextType theContextFlags(NVRenderContextValues::GLES2 | NVRenderContextValues::GL2);
- NVRenderContextType type = context->GetRenderContextType();
- bool depth16_Only = (type & theContextFlags);
- // create a FBO
- NVScopedRefCounted<NVRenderFrameBuffer> m_FBO;
- NVScopedRefCounted<NVRenderTexture2D> m_ColorTexture;
- NVScopedRefCounted<NVRenderTexture2D> m_Depth16Texture;
- NVScopedRefCounted<NVRenderTexture2D> m_Depth24Texture;
- NVScopedRefCounted<NVRenderTexture2D> m_Depth32Texture;
- NVScopedRefCounted<NVRenderTexture2D> m_Depth24Stencil8Texture;
-
- m_ColorTexture = context->CreateTexture2D();
- m_ColorTexture->SetTextureData(NVDataRef<QT3DSU8>(), 0, 256, 256, NVRenderTextureFormats::RGBA8);
- m_Depth16Texture = context->CreateTexture2D();
- m_Depth16Texture->SetTextureData(NVDataRef<QT3DSU8>(), 0, 256, 256,
- NVRenderTextureFormats::Depth16);
-
- m_FBO = context->CreateFrameBuffer();
- m_FBO->Attach(NVRenderFrameBufferAttachments::Color0,
- NVRenderTextureOrRenderBuffer(*m_ColorTexture));
- m_FBO->Attach(NVRenderFrameBufferAttachments::Depth,
- NVRenderTextureOrRenderBuffer(*m_Depth16Texture));
-
- if (!m_FBO->IsComplete()) {
- qWarning() << "NVRenderTestBackendQuery::depthBitsFBOTest: Failed to create FBO";
- return false;
- }
-
- context->SetRenderTarget(m_FBO);
-
- QT3DSVec3 color(0.0, 0.0, 0.0);
- // check depth bit count
- QT3DSU32 bits = context->GetDepthBits();
- QT3DSU32 bitsExpected = 16;
- bool passed = (bits == bitsExpected);
-
- // detach depth
- m_FBO->Attach(NVRenderFrameBufferAttachments::Depth, NVRenderTextureOrRenderBuffer());
-
- m_Depth24Texture = context->CreateTexture2D();
- m_Depth24Texture->SetTextureData(NVDataRef<QT3DSU8>(), 0, 256, 256,
- NVRenderTextureFormats::Depth24);
- m_FBO->Attach(NVRenderFrameBufferAttachments::Depth,
- NVRenderTextureOrRenderBuffer(*m_Depth24Texture));
- if (!m_FBO->IsComplete()) {
- qWarning() << "NVRenderTestBackendQuery::depthBitsFBOTest: Failed to create FBO";
- return false;
- }
- // check depth bit count
- bits = context->GetDepthBits();
- bitsExpected = (depth16_Only) ? 16 : 24;
- passed &= (bits == bitsExpected);
-
- // detach depth
- m_FBO->Attach(NVRenderFrameBufferAttachments::Depth, NVRenderTextureOrRenderBuffer());
-
- m_Depth32Texture = context->CreateTexture2D();
- m_Depth32Texture->SetTextureData(NVDataRef<QT3DSU8>(), 0, 256, 256,
- NVRenderTextureFormats::Depth32);
- m_FBO->Attach(NVRenderFrameBufferAttachments::Depth,
- NVRenderTextureOrRenderBuffer(*m_Depth32Texture));
- if (!m_FBO->IsComplete()) {
- qWarning() << "NVRenderTestBackendQuery::depthBitsFBOTest: Failed to create FBO";
- return false;
- }
- // check depth bit count
- bits = context->GetDepthBits();
- bitsExpected = (depth16_Only) ? 16 : 32;
- passed &= (bits == bitsExpected);
-
- // detach depth
- m_FBO->Attach(NVRenderFrameBufferAttachments::Depth, NVRenderTextureOrRenderBuffer());
-
- // only test depth stencil if supported
- if (context->IsDepthStencilSupported()) {
- m_Depth24Stencil8Texture = context->CreateTexture2D();
- m_Depth24Stencil8Texture->SetTextureData(NVDataRef<QT3DSU8>(), 0, 256, 256,
- NVRenderTextureFormats::Depth24Stencil8);
- m_FBO->Attach(NVRenderFrameBufferAttachments::DepthStencil,
- NVRenderTextureOrRenderBuffer(*m_Depth24Stencil8Texture));
- if (!m_FBO->IsComplete()) {
- qWarning() << "NVRenderTestBackendQuery::depthBitsFBOTest: Failed to create FBO";
- return false;
- }
- // check depth bit count
- bits = context->GetDepthBits();
- bitsExpected = (depth16_Only) ? 16 : 24;
- passed &= (bits == bitsExpected);
- }
-
- context->SetRenderTarget(NULL);
-
- if (passed)
- color.y = 1.0;
- else
- color.x = 1.0;
-
- passed &= renderQuad(context, pUserData, color);
-
- return passed;
-}
-
-////////////////////////////////
-// performance test
-////////////////////////////////
-bool NVRenderTestBackendQuery::runPerformance(NVRenderContext *context, userContextData *pUserData)
-{
- return true;
-}
-
-////////////////////////////////
-// test cleanup
-////////////////////////////////
-void NVRenderTestBackendQuery::cleanup(NVRenderContext *context, userContextData *pUserData)
-{
- context->SetClearColor(QT3DSVec4(0.0f, .0f, .0f, 0.f));
- // dummy
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-}
diff --git a/tests/auto/runtime/base/Qt3DSRenderTestBackendQuery.h b/tests/auto/runtime/base/Qt3DSRenderTestBackendQuery.h
deleted file mode 100644
index e5fde648..00000000
--- a/tests/auto/runtime/base/Qt3DSRenderTestBackendQuery.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2014 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-#ifndef QT3DS_RENDER_TEST_BACKEND_QUERY_H
-#define QT3DS_RENDER_TEST_BACKEND_QUERY_H
-
-#include "../Qt3DSRenderTestBase.h"
-
-namespace qt3ds {
-namespace render {
-
- /// This class tests the creation of all kinds of primitives
- class NVRenderTestBackendQuery : public NVRenderTestBase
- {
- public:
- NVRenderTestBackendQuery();
- ~NVRenderTestBackendQuery();
-
- bool isSupported(NVRenderContext *context);
- bool run(NVRenderContext *context, userContextData *pUserData);
- bool runPerformance(NVRenderContext *context, userContextData *pContextData);
- void cleanup(NVRenderContext *context, userContextData *pUserData);
-
- private:
- bool depthBitsTest(NVRenderContext *context, userContextData *pUserData);
- bool depthBitsFBOTest(NVRenderContext *context, userContextData *pUserData);
-
- bool renderQuad(NVRenderContext *context, userContextData *pUserData, QT3DSVec3 color);
-
- unsigned int _curTest;
- unsigned int _cellSize;
- unsigned int _maxColumn;
- };
-}
-}
-
-#endif // QT3DS_RENDER_TEST_CONSTANT_BUFFER_H
diff --git a/tests/auto/runtime/base/Qt3DSRenderTestClear.cpp b/tests/auto/runtime/base/Qt3DSRenderTestClear.cpp
deleted file mode 100644
index 8accb864..00000000
--- a/tests/auto/runtime/base/Qt3DSRenderTestClear.cpp
+++ /dev/null
@@ -1,131 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "Qt3DSRenderTestClear.h"
-#include "foundation/Qt3DSVec4.h"
-
-using namespace qt3ds;
-using namespace qt3ds::render;
-
-NVRenderTestClear::NVRenderTestClear()
-{
-}
-
-NVRenderTestClear::~NVRenderTestClear()
-{
-}
-
-bool NVRenderTestClear::isSupported(NVRenderContext *context)
-{
- return true;
-}
-
-////////////////////////////////
-// test for functionality
-////////////////////////////////
-
-static bool checkColor(int width, int height, unsigned char *pixels, const QT3DSVec3 &color)
-{
- unsigned char *pSrc = pixels;
-
- for (int h = 0; h < height; h++) {
- for (int w = 0; w < width; w++) {
- if (pSrc[0] != (unsigned char)color.x || pSrc[1] != (unsigned char)color.y
- || pSrc[2] != (unsigned char)color.z) {
- return false;
- }
-
- pSrc += 3;
- }
- }
-
- return true;
-}
-
-bool NVRenderTestClear::run(NVRenderContext *context, userContextData *pUserData)
-{
- bool success = true;
-
- success &= testColorClear(context, pUserData);
-
- // if successfull draw green otherwise a red
- if (success) {
- // set clear color to green
- context->SetClearColor(QT3DSVec4(0.0f, 1.0f, .0f, 1.f));
- context->Clear(NVRenderClearFlags(NVRenderClearValues::Color));
- } else {
- // set clear color to green
- context->SetClearColor(QT3DSVec4(1.0f, .0f, .0f, 1.f));
- context->Clear(NVRenderClearFlags(NVRenderClearValues::Color));
- }
-
- return success;
-}
-
-bool NVRenderTestClear::testColorClear(NVRenderContext *context, userContextData *pUserData)
-{
- // allocate buffer for readback
- NVAllocatorCallback &alloc(context->GetFoundation().getAllocator());
- QT3DSU32 size = pUserData->winHeight * pUserData->winHeight * 3 * sizeof(QT3DSU8);
- QT3DSU8 *pixels = (QT3DSU8 *)alloc.allocate(size, "testColorClear color clear", __FILE__, __LINE__);
-
- if (!pixels)
- return false;
-
- // set clear color to yellow
- context->SetClearColor(QT3DSVec4(1.0f, 1.0f, .0f, 0.f));
- context->Clear(NVRenderClearFlags(NVRenderClearValues::Color));
-
- // read back pixels
- context->ReadPixels(NVRenderRect(0, 0, pUserData->winHeight, pUserData->winHeight),
- NVRenderReadPixelFormats::RGB8, NVDataRef<QT3DSU8>(pixels, size));
- // check color
- bool passed =
- checkColor(pUserData->winHeight, pUserData->winHeight, pixels, QT3DSVec3(255.0f, 255.0f, .0f));
-
- alloc.deallocate(pixels);
-
- return passed;
-}
-
-////////////////////////////////
-// performance test
-////////////////////////////////
-bool NVRenderTestClear::runPerformance(NVRenderContext *context, userContextData *pUserData)
-{
- return true;
-}
-
-////////////////////////////////
-// test cleanup
-////////////////////////////////
-void NVRenderTestClear::cleanup(NVRenderContext *context, userContextData *pUserData)
-{
- context->SetClearColor(QT3DSVec4(0.0f, .0f, .0f, 0.f));
-}
diff --git a/tests/auto/runtime/base/Qt3DSRenderTestClear.h b/tests/auto/runtime/base/Qt3DSRenderTestClear.h
deleted file mode 100644
index 6113b7bd..00000000
--- a/tests/auto/runtime/base/Qt3DSRenderTestClear.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-#ifndef QT3DS_RENDER_TEST_CLEAR_H
-#define QT3DS_RENDER_TEST_CLEAR_H
-
-#include "../Qt3DSRenderTestBase.h"
-
-namespace qt3ds {
-namespace render {
-
- /// This class tests the render target clearing
- class NVRenderTestClear : public NVRenderTestBase
- {
- public:
- NVRenderTestClear();
- ~NVRenderTestClear();
-
- bool isSupported(NVRenderContext *context);
- bool run(NVRenderContext *context, userContextData *pUserData);
- bool runPerformance(NVRenderContext *context, userContextData *pContextDat);
- void cleanup(NVRenderContext *context, userContextData *pUserData);
-
- private:
- /// subtests
- bool testColorClear(NVRenderContext *context, userContextData *pUserData);
- };
-}
-}
-
-#endif // QT3DS_RENDER_TEST_CLEAR_H
diff --git a/tests/auto/runtime/base/Qt3DSRenderTestConstantBuffer.cpp b/tests/auto/runtime/base/Qt3DSRenderTestConstantBuffer.cpp
deleted file mode 100644
index 8b6cb344..00000000
--- a/tests/auto/runtime/base/Qt3DSRenderTestConstantBuffer.cpp
+++ /dev/null
@@ -1,847 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "Qt3DSRenderTestConstantBuffer.h"
-#include "../Qt3DSRenderTestMathUtil.h"
-#include "render/Qt3DSRenderShaderProgram.h"
-
-#include <string>
-
-using namespace qt3ds;
-using namespace qt3ds::render;
-
-struct Vertex
-{
- QT3DSVec3 positions;
-};
-
-static const char *scalarVertShader(bool bESContext, std::string &prog)
-{
- if (bESContext) {
- prog += "#version 300 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 330 compatibility\n";
- }
-
- prog += "layout (std140) uniform cbBuffer { \n"
- "float red;\n"
- "float green;\n"
- "mat4 mat_mvp;\n"
- "float blue;\n };\n"
- "in vec3 attr_pos; // Vertex pos\n"
- "void main()\n"
- "{\n"
- " gl_Position = mat_mvp * vec4(attr_pos, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *scalarFragShader(bool bESContext, std::string &prog)
-{
- if (bESContext) {
- prog += "#version 300 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 330 compatibility\n";
- }
-
- prog += "layout (std140) uniform cbBuffer { \n"
- "float red;\n"
- "float green;\n"
- "mat4 mat_mvp;\n"
- "float blue;\n };\n"
- "void main()\n"
- "{\n"
- " gl_FragColor = vec4(red, green, blue, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *vectorVertShader(bool bESContext, std::string &prog)
-{
- if (bESContext) {
- prog += "#version 300 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 330 compatibility\n";
- }
-
- prog += "layout (std140) uniform cbBuffer { \n"
- "vec2 rg;\n"
- "mat4 mat_mvp;\n"
- "vec2 ba;\n };\n"
- "in vec3 attr_pos; // Vertex pos\n"
- "void main()\n"
- "{\n"
- " gl_Position = mat_mvp * vec4(attr_pos, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *vectorFragShader(bool bESContext, std::string &prog)
-{
- if (bESContext) {
- prog += "#version 300 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 330 compatibility\n";
- }
-
- prog += "layout (std140) uniform cbBuffer { \n"
- "vec2 rg;\n"
- "mat4 mat_mvp;\n"
- "vec2 ba;\n };\n"
- "void main()\n"
- "{\n"
- " gl_FragColor = vec4(rg[0], rg[1], ba[0], ba[1]);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *structVertShader(bool bESContext, std::string &prog)
-{
- if (bESContext) {
- prog += "#version 300 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 330 compatibility\n";
- }
-
- prog += "struct sampleStruct {\n"
- "vec2 rg;\n"
- "mat4 mat_mvp;\n"
- "float blue;\n"
- "float alpha; };\n"
- "layout (std140) uniform cbBuffer { \n"
- "sampleStruct s[2]; };\n"
- "in vec3 attr_pos; // Vertex pos\n"
- "void main()\n"
- "{\n"
- " gl_Position = s[0].mat_mvp * vec4(attr_pos, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *structFragShader(bool bESContext, std::string &prog)
-{
- if (bESContext) {
- prog += "#version 300 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 330 compatibility\n";
- }
-
- prog += "struct sampleStruct {\n"
- "vec2 rg;\n"
- "mat4 mat_mvp;\n"
- "float blue;\n"
- "float alpha; };\n"
- "layout (std140) uniform cbBuffer { \n"
- "sampleStruct s[2]; };\n"
- "void main()\n"
- "{\n"
- " gl_FragColor = vec4(s[0].rg[0], s[0].rg[1], s[0].blue, s[0].alpha);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *multiCBVertShader(bool bESContext, std::string &prog)
-{
- if (bESContext) {
- prog += "#version 300 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 330 compatibility\n";
- }
-
- prog += "layout (std140) uniform cbBufferTrans { \n"
- "mat4 mat_mvp;\n };\n"
- "layout (std140) uniform cbBufferCol { \n"
- "float red;\n"
- "float green;\n"
- "float blue;\n };\n"
- "in vec3 attr_pos; // Vertex pos\n"
- "void main()\n"
- "{\n"
- " gl_Position = mat_mvp * vec4(attr_pos, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *multiCBFragShader(bool bESContext, std::string &prog)
-{
- if (bESContext) {
- prog += "#version 300 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 330 compatibility\n";
- }
-
- prog += "layout (std140) uniform cbBufferTrans { \n"
- "mat4 mat_mvp;\n };\n"
- "layout (std140) uniform cbBufferCol { \n"
- "float red;\n"
- "float green;\n"
- "float blue;\n };\n"
- "void main()\n"
- "{\n"
- " gl_FragColor = vec4(red, green, blue, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-NVRenderTestConstantBuffer::NVRenderTestConstantBuffer()
-{
- _curTest = 0;
- _maxColumn = 4;
-}
-
-NVRenderTestConstantBuffer::~NVRenderTestConstantBuffer()
-{
-}
-
-bool NVRenderTestConstantBuffer::isSupported(NVRenderContext *context)
-{
- NVRenderContextType ctxType = context->GetRenderContextType();
- NVRenderContextType nonSupportedFlags(NVRenderContextValues::GL2
- | NVRenderContextValues::GLES2);
-
- // This is currently only supported on GL(Es) >= 3
- if ((ctxType & nonSupportedFlags))
- return false;
-
- return true;
-}
-
-////////////////////////////////
-// test for functionality
-////////////////////////////////
-
-inline NVConstDataRef<QT3DSI8> toRef(const char *data)
-{
- size_t len = strlen(data) + 1;
- return NVConstDataRef<QT3DSI8>((const QT3DSI8 *)data, (QT3DSU32)len);
-}
-
-bool NVRenderTestConstantBuffer::run(NVRenderContext *context, userContextData *pUserData)
-{
- bool success = true;
- // conpute cell width
- _cellSize = pUserData->winWidth / _maxColumn;
-
- context->SetClearColor(QT3DSVec4(.0f, .0f, .0f, 1.f));
- context->Clear(NVRenderClearFlags(NVRenderClearValues::Color | NVRenderClearValues::Depth));
-
- success &= scalarTest(context, pUserData);
- _curTest++;
- success &= vectorTest(context, pUserData);
- _curTest++;
- success &= structTest(context, pUserData);
- _curTest++;
- success &= rawTest(context, pUserData);
- _curTest++;
- success &= multiCBTest(context, pUserData);
- _curTest++;
-
- // cleanup
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-
- return success;
-}
-
-bool NVRenderTestConstantBuffer::scalarTest(NVRenderContext *context, userContextData *pUserData)
-{
- static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, 0.9, 0) }, { QT3DSVec3(-0.9, -0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) }, { QT3DSVec3(-0.9, 0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) }, { QT3DSVec3(0.9, 0.9, 0) } };
-
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- NVScopedRefCounted<NVRenderIndexBuffer> mIndexBuffer;
- NVScopedRefCounted<NVRenderConstantBuffer> mConstantBuffer;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
-
- // create constant buffer referred in the program
- mConstantBuffer = context->CreateConstantBuffer("cbBuffer", NVRenderBufferUsageType::Static, 0,
- NVDataRef<QT3DSU8>());
- // buffer parameter. They must be in the order of appearance
- CRegisteredString theRedName(context->GetStringTable().RegisterStr("red"));
- mConstantBuffer->AddParam(theRedName, NVRenderShaderDataTypes::QT3DSF32, 1);
- CRegisteredString theGreenName(context->GetStringTable().RegisterStr("green"));
- mConstantBuffer->AddParam(theGreenName, NVRenderShaderDataTypes::QT3DSF32, 1);
- CRegisteredString theMatName(context->GetStringTable().RegisterStr("mat_mvp"));
- mConstantBuffer->AddParam(theMatName, NVRenderShaderDataTypes::QT3DSMat44, 1);
- CRegisteredString theBlueName(context->GetStringTable().RegisterStr("blue"));
- mConstantBuffer->AddParam(theBlueName, NVRenderShaderDataTypes::QT3DSF32, 1);
-
- // set values
- QT3DSF32 red = 0.0;
- mConstantBuffer->UpdateParam("red", NVDataRef<QT3DSU8>((QT3DSU8 *)&red, 1));
- QT3DSF32 green = 1.0;
- mConstantBuffer->UpdateParam("green", NVDataRef<QT3DSU8>((QT3DSU8 *)&green, 1));
- QT3DSF32 blue = 0.0;
- mConstantBuffer->UpdateParam("blue", NVDataRef<QT3DSU8>((QT3DSU8 *)&blue, 1));
- mConstantBuffer->UpdateParam("mat_mvp", NVDataRef<QT3DSU8>((QT3DSU8 *)mvp.front(), 1));
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- NVRenderVertFragCompilationResult compResult =
- context->CompileSource("NVRenderTestConstantBuffer::scalarTest",
- toRef(scalarVertShader(isGLESContext(context), vtxProg)),
- toRef(scalarFragShader(isGLESContext(context), frgProg)));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- };
-
- QT3DSU32 bufSize = 6 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 3 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestConstantBuffer::scalarTest: Failed to create vertex buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 1));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler = context->CreateInputAssembler(
- mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), mIndexBuffer.mPtr,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1));
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestConstantBuffer::scalarTest: Failed to create input assembler";
- return false;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- qt3ds::render::NVRenderCachedShaderBuffer<NVRenderShaderConstantBuffer *> cb("cbBuffer",
- *compResult.mShader);
- mConstantBuffer->Update();
- cb.Set();
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- context->Draw(NVRenderDrawMode::Triangles, 6, 0);
-
- context->SetActiveShader(0);
- compResult.mShader->release();
-
- return true;
-}
-
-bool NVRenderTestConstantBuffer::vectorTest(NVRenderContext *context, userContextData *pUserData)
-{
- static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, 0.9, 0) }, { QT3DSVec3(-0.9, -0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) }, { QT3DSVec3(-0.9, 0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) }, { QT3DSVec3(0.9, 0.9, 0) } };
-
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- NVScopedRefCounted<NVRenderIndexBuffer> mIndexBuffer;
- NVScopedRefCounted<NVRenderConstantBuffer> mConstantBuffer;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
-
- // create constant buffer referred in the program
- mConstantBuffer = context->CreateConstantBuffer("cbBuffer", NVRenderBufferUsageType::Static, 0,
- NVDataRef<QT3DSU8>());
- // buffer parameter. They must be in the order of appearance
- CRegisteredString theRGName(context->GetStringTable().RegisterStr("rg"));
- mConstantBuffer->AddParam(theRGName, NVRenderShaderDataTypes::QT3DSVec2, 1);
- CRegisteredString theMatName(context->GetStringTable().RegisterStr("mat_mvp"));
- mConstantBuffer->AddParam(theMatName, NVRenderShaderDataTypes::QT3DSMat44, 1);
- CRegisteredString theBAName(context->GetStringTable().RegisterStr("ba"));
- mConstantBuffer->AddParam(theBAName, NVRenderShaderDataTypes::QT3DSVec2, 1);
-
- // set values
- QT3DSVec2 rg;
- rg[0] = 0.0;
- rg[1] = 1.0;
- mConstantBuffer->UpdateParam("rg", NVDataRef<QT3DSU8>((QT3DSU8 *)&rg, 1));
- QT3DSVec2 ba;
- ba[0] = 0.0;
- ba[1] = 1.0;
- mConstantBuffer->UpdateParam("ba", NVDataRef<QT3DSU8>((QT3DSU8 *)&ba, 1));
- mConstantBuffer->UpdateParam("mat_mvp", NVDataRef<QT3DSU8>((QT3DSU8 *)mvp.front(), 1));
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- NVRenderVertFragCompilationResult compResult =
- context->CompileSource("NVRenderTestConstantBuffer::vectorTest",
- toRef(vectorVertShader(isGLESContext(context), vtxProg)),
- toRef(vectorFragShader(isGLESContext(context), frgProg)));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- };
-
- QT3DSU32 bufSize = 6 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 3 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestConstantBuffer::vectorTest: Failed to create vertex buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 1));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler = context->CreateInputAssembler(
- mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), mIndexBuffer.mPtr,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1));
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestConstantBuffer::vectorTest: Failed to create input assembler";
- return false;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- qt3ds::render::NVRenderCachedShaderBuffer<NVRenderShaderConstantBuffer *> cb("cbBuffer",
- *compResult.mShader);
- cb.Set();
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- context->Draw(NVRenderDrawMode::Triangles, 6, 0);
-
- context->SetActiveShader(0);
- compResult.mShader->release();
-
- return true;
-}
-
-bool NVRenderTestConstantBuffer::structTest(NVRenderContext *context, userContextData *pUserData)
-{
- static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, 0.9, 0) }, { QT3DSVec3(-0.9, -0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) }, { QT3DSVec3(-0.9, 0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) }, { QT3DSVec3(0.9, 0.9, 0) } };
-
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- NVScopedRefCounted<NVRenderIndexBuffer> mIndexBuffer;
- NVScopedRefCounted<NVRenderConstantBuffer> mConstantBuffer;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
-
- // create constant buffer referred in the program
- mConstantBuffer = context->CreateConstantBuffer("cbBuffer", NVRenderBufferUsageType::Static, 0,
- NVDataRef<QT3DSU8>());
- // buffer parameter. They must be in the order of appearance
- CRegisteredString theRGName(context->GetStringTable().RegisterStr("s[0].rg"));
- mConstantBuffer->AddParam(theRGName, NVRenderShaderDataTypes::QT3DSVec2, 1);
- CRegisteredString theMatName(context->GetStringTable().RegisterStr("s[0].mat_mvp"));
- mConstantBuffer->AddParam(theMatName, NVRenderShaderDataTypes::QT3DSMat44, 1);
- CRegisteredString theBlueName(context->GetStringTable().RegisterStr("s[0].blue"));
- mConstantBuffer->AddParam(theBlueName, NVRenderShaderDataTypes::QT3DSF32, 1);
- CRegisteredString theAlphaName(context->GetStringTable().RegisterStr("s[0].alpha"));
- mConstantBuffer->AddParam(theAlphaName, NVRenderShaderDataTypes::QT3DSF32, 1);
-
- // set values
- QT3DSVec2 rg;
- rg[0] = 0.0;
- rg[1] = 1.0;
- mConstantBuffer->UpdateParam("s[0].rg", NVDataRef<QT3DSU8>((QT3DSU8 *)&rg, 1));
- QT3DSF32 blue, alpha;
- blue = 0.0;
- alpha = 1.0;
- mConstantBuffer->UpdateParam("s[0].blue", NVDataRef<QT3DSU8>((QT3DSU8 *)&blue, 1));
- mConstantBuffer->UpdateParam("s[0].alpha", NVDataRef<QT3DSU8>((QT3DSU8 *)&alpha, 1));
- mConstantBuffer->UpdateParam("s[0].mat_mvp", NVDataRef<QT3DSU8>((QT3DSU8 *)mvp.front(), 1));
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- NVRenderVertFragCompilationResult compResult =
- context->CompileSource("NVRenderTestConstantBuffer::structTest",
- toRef(structVertShader(isGLESContext(context), vtxProg)),
- toRef(structFragShader(isGLESContext(context), frgProg)));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- };
-
- QT3DSU32 bufSize = 6 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 3 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestConstantBuffer::structTest: Failed to create vertex buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 1));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler = context->CreateInputAssembler(
- mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), mIndexBuffer.mPtr,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1));
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestConstantBuffer::structTest: Failed to create input assembler";
- return false;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- qt3ds::render::NVRenderCachedShaderBuffer<NVRenderShaderConstantBuffer *> cb("cbBuffer",
- *compResult.mShader);
- cb.Set();
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- context->Draw(NVRenderDrawMode::Triangles, 6, 0);
-
- context->SetActiveShader(0);
- compResult.mShader->release();
-
- return true;
-}
-
-bool NVRenderTestConstantBuffer::rawTest(NVRenderContext *context, userContextData *pUserData)
-{
- static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, 0.9, 0) }, { QT3DSVec3(-0.9, -0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) }, { QT3DSVec3(-0.9, 0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) }, { QT3DSVec3(0.9, 0.9, 0) } };
-
- struct sampleStruct
- {
- float rg[2];
- float padding[2];
- QT3DSMat44 mat_mvp; // matrices start on 16 byte boundaries
- float blue;
- float alpha;
- } s;
-
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- NVScopedRefCounted<NVRenderIndexBuffer> mIndexBuffer;
- NVScopedRefCounted<NVRenderConstantBuffer> mConstantBuffer;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
-
- NVDataRef<QT3DSU8> cBuffer((QT3DSU8 *)&s, sizeof(sampleStruct));
- // create constant buffer referred in the program
- mConstantBuffer = context->CreateConstantBuffer("cbBuffer", NVRenderBufferUsageType::Static,
- sizeof(sampleStruct), cBuffer);
- // set values
- s.rg[0] = 0.0;
- s.rg[1] = 1.0;
- s.mat_mvp = mvp;
- s.blue = 0.0;
- s.alpha = 0.0;
- mConstantBuffer->UpdateRaw(0, cBuffer);
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- NVRenderVertFragCompilationResult compResult =
- context->CompileSource("NVRenderTestConstantBuffer::rawTest",
- toRef(structVertShader(isGLESContext(context), vtxProg)),
- toRef(structFragShader(isGLESContext(context), frgProg)));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- };
-
- QT3DSU32 bufSize = 6 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 3 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestConstantBuffer::rawTest: Failed to create vertex buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 1));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler = context->CreateInputAssembler(
- mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), mIndexBuffer.mPtr,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1));
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestConstantBuffer::rawTest: Failed to create input assembler";
- return false;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- qt3ds::render::NVRenderCachedShaderBuffer<NVRenderShaderConstantBuffer *> cb("cbBuffer",
- *compResult.mShader);
- cb.Set();
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- context->Draw(NVRenderDrawMode::Triangles, 6, 0);
-
- context->SetActiveShader(0);
- compResult.mShader->release();
-
- return true;
-}
-
-///< test of multiple constant buffers
-bool NVRenderTestConstantBuffer::multiCBTest(NVRenderContext *context, userContextData *pUserData)
-{
- static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, 0.9, 0) }, { QT3DSVec3(-0.9, -0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) }, { QT3DSVec3(-0.9, 0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) }, { QT3DSVec3(0.9, 0.9, 0) } };
-
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- NVScopedRefCounted<NVRenderIndexBuffer> mIndexBuffer;
- NVScopedRefCounted<NVRenderConstantBuffer> mConstantBufferTrans;
- NVScopedRefCounted<NVRenderConstantBuffer> mConstantBufferCol;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
-
- // create constant buffer referred in the program
- mConstantBufferTrans = context->CreateConstantBuffer(
- "cbBufferTrans", NVRenderBufferUsageType::Static, 0, NVDataRef<QT3DSU8>());
- // buffer parameter. They must be in the order of appearance
- CRegisteredString theMatName(context->GetStringTable().RegisterStr("mat_mvp"));
- mConstantBufferTrans->AddParam(theMatName, NVRenderShaderDataTypes::QT3DSMat44, 1);
-
- // create constant buffer referred in the program
- mConstantBufferCol = context->CreateConstantBuffer(
- "cbBufferCol", NVRenderBufferUsageType::Static, 0, NVDataRef<QT3DSU8>());
- CRegisteredString theRedName(context->GetStringTable().RegisterStr("red"));
- mConstantBufferCol->AddParam(theRedName, NVRenderShaderDataTypes::QT3DSF32, 1);
- CRegisteredString theGreenName(context->GetStringTable().RegisterStr("green"));
- mConstantBufferCol->AddParam(theGreenName, NVRenderShaderDataTypes::QT3DSF32, 1);
- CRegisteredString theBlueName(context->GetStringTable().RegisterStr("blue"));
- mConstantBufferCol->AddParam(theBlueName, NVRenderShaderDataTypes::QT3DSF32, 1);
-
- // set values
- mConstantBufferTrans->UpdateParam("mat_mvp", NVDataRef<QT3DSU8>((QT3DSU8 *)mvp.front(), 1));
-
- QT3DSF32 red = 0.0;
- mConstantBufferCol->UpdateParam("red", NVDataRef<QT3DSU8>((QT3DSU8 *)&red, 1));
- QT3DSF32 green = 1.0;
- mConstantBufferCol->UpdateParam("green", NVDataRef<QT3DSU8>((QT3DSU8 *)&green, 1));
- QT3DSF32 blue = 0.0;
- mConstantBufferCol->UpdateParam("blue", NVDataRef<QT3DSU8>((QT3DSU8 *)&blue, 1));
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- NVRenderVertFragCompilationResult compResult =
- context->CompileSource("NVRenderTestConstantBuffer::multiCBTest",
- toRef(multiCBVertShader(isGLESContext(context), vtxProg)),
- toRef(multiCBFragShader(isGLESContext(context), frgProg)));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- };
-
- QT3DSU32 bufSize = 6 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 3 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestConstantBuffer::scalarTest: Failed to create vertex buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 1));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler = context->CreateInputAssembler(
- mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), mIndexBuffer.mPtr,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1));
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestConstantBuffer::scalarTest: Failed to create input assembler";
- return false;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- qt3ds::render::NVRenderCachedShaderBuffer<NVRenderShaderConstantBuffer *> cbTrans(
- "cbBufferTrans", *compResult.mShader);
- mConstantBufferTrans->Update();
- cbTrans.Set();
- qt3ds::render::NVRenderCachedShaderBuffer<NVRenderShaderConstantBuffer *> cbCol(
- "cbBufferCol", *compResult.mShader);
- mConstantBufferCol->Update();
- cbCol.Set();
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- context->Draw(NVRenderDrawMode::Triangles, 6, 0);
-
- context->SetActiveShader(0);
- compResult.mShader->release();
-
- return true;
-}
-
-////////////////////////////////
-// performance test
-////////////////////////////////
-bool NVRenderTestConstantBuffer::runPerformance(NVRenderContext *context,
- userContextData *pUserData)
-{
- return true;
-}
-
-////////////////////////////////
-// test cleanup
-////////////////////////////////
-void NVRenderTestConstantBuffer::cleanup(NVRenderContext *context, userContextData *pUserData)
-{
- context->SetClearColor(QT3DSVec4(0.0f, .0f, .0f, 0.f));
- // dummy
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-}
diff --git a/tests/auto/runtime/base/Qt3DSRenderTestConstantBuffer.h b/tests/auto/runtime/base/Qt3DSRenderTestConstantBuffer.h
deleted file mode 100644
index 417e4bb3..00000000
--- a/tests/auto/runtime/base/Qt3DSRenderTestConstantBuffer.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2014 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-#ifndef QT3DS_RENDER_TEST_CONSTANT_BUFFER_H
-#define QT3DS_RENDER_TEST_CONSTANT_BUFFER_H
-
-#include "../Qt3DSRenderTestBase.h"
-
-namespace qt3ds {
-namespace render {
-
- /// This class tests the creation of all kinds of primitives
- class NVRenderTestConstantBuffer : public NVRenderTestBase
- {
- public:
- NVRenderTestConstantBuffer();
- ~NVRenderTestConstantBuffer();
-
- bool isSupported(NVRenderContext *context);
- bool run(NVRenderContext *context, userContextData *pUserData);
- bool runPerformance(NVRenderContext *context, userContextData *pContextData);
- void cleanup(NVRenderContext *context, userContextData *pUserData);
-
- private:
- bool scalarTest(NVRenderContext *context, userContextData *pUserData);
- bool vectorTest(NVRenderContext *context, userContextData *pUserData);
- bool structTest(NVRenderContext *context, userContextData *pUserData);
- bool rawTest(NVRenderContext *context, userContextData *pUserData);
- bool multiCBTest(NVRenderContext *context, userContextData *pUserData);
-
- unsigned int _curTest;
- unsigned int _cellSize;
- unsigned int _maxColumn;
- };
-}
-}
-
-#endif // QT3DS_RENDER_TEST_CONSTANT_BUFFER_H
diff --git a/tests/auto/runtime/base/Qt3DSRenderTestDrawIndirectBuffer.cpp b/tests/auto/runtime/base/Qt3DSRenderTestDrawIndirectBuffer.cpp
deleted file mode 100644
index 4b8044d3..00000000
--- a/tests/auto/runtime/base/Qt3DSRenderTestDrawIndirectBuffer.cpp
+++ /dev/null
@@ -1,358 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "Qt3DSRenderTestDrawIndirectBuffer.h"
-#include "../Qt3DSRenderTestMathUtil.h"
-#include "render/Qt3DSRenderDrawIndirectBuffer.h"
-#include "render/Qt3DSRenderShaderProgram.h"
-
-#include <string>
-
-using namespace qt3ds;
-using namespace qt3ds::render;
-
-struct Vertex
-{
- QT3DSVec3 positions;
-};
-
-static const char *vertShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 430\n";
- }
-
- prog += "uniform mat4 mat_mvp;\n"
- "in vec3 attr_pos; // Vertex pos\n"
- "void main()\n"
- "{\n"
- " gl_Position = vec4(attr_pos, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *fragShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 430\n";
- }
-
- prog += "out vec4 fragColor;\n"
- "void main()\n"
- "{\n"
- " fragColor = vec4(0.0, 1.0, 0.0, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-NVRenderTestDrawIndirectBuffer::NVRenderTestDrawIndirectBuffer()
-{
- _curTest = 0;
- _maxColumn = 4;
-}
-
-NVRenderTestDrawIndirectBuffer::~NVRenderTestDrawIndirectBuffer()
-{
-}
-
-bool NVRenderTestDrawIndirectBuffer::isSupported(NVRenderContext *context)
-{
- // This is currently only supported on GL 4 and GLES 3.1
- // we have no direct check for this but this is the same version
- if (!context->IsAtomicCounterBufferSupported())
- return false;
-
- return true;
-}
-
-////////////////////////////////
-// test for functionality
-////////////////////////////////
-
-inline NVConstDataRef<QT3DSI8> toRef(const char *data)
-{
- size_t len = strlen(data) + 1;
- return NVConstDataRef<QT3DSI8>((const QT3DSI8 *)data, (QT3DSU32)len);
-}
-
-bool NVRenderTestDrawIndirectBuffer::run(NVRenderContext *context, userContextData *pUserData)
-{
- bool success = true;
- // conpute cell width
- _cellSize = pUserData->winWidth / _maxColumn;
-
- context->SetClearColor(QT3DSVec4(.0f, .0f, .0f, 1.f));
- context->Clear(NVRenderClearFlags(NVRenderClearValues::Color | NVRenderClearValues::Depth));
-
- success &= drawArrayIndirect(context, pUserData);
- _curTest++;
- success &= drawElementsIndirect(context, pUserData);
- _curTest++;
-
- // cleanup
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-
- return success;
-}
-
-bool NVRenderTestDrawIndirectBuffer::drawArrayIndirect(NVRenderContext *context,
- userContextData *pUserData)
-{
- static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, -0.9, 0) }, { QT3DSVec3(0.9, 0.9, 0) },
- { QT3DSVec3(-0.9, 0.9, 0) }, { QT3DSVec3(-0.9, -0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) }, { QT3DSVec3(0.9, 0.9, 0) } };
-
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- NVScopedRefCounted<NVRenderDrawIndirectBuffer> mDrawIndirectBuffer;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- NVRenderVertFragCompilationResult compResult = context->CompileSource(
- "NVRenderTestDrawIndirectBuffer shader", toRef(vertShader(vtxProg, isGLESContext(context))),
- toRef(fragShader(frgProg, isGLESContext(context))));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- };
-
- QT3DSU32 bufSize = 6 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 3 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestAtomicCounterBuffer: Failed to create vertex buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 1));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler = context->CreateInputAssembler(
- mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), NULL, toConstDataRef(&strides, 1),
- toConstDataRef(&offsets, 1), NVRenderDrawMode::Triangles);
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestAtomicCounterBuffer: Failed to create input assembler";
- return false;
- }
-
- // create draw indirect buffer
- DrawArraysIndirectCommand command;
- command.baseInstance = 0;
- command.count = 6;
- command.first = 0;
- command.primCount = 1;
- QT3DSU32 commandBufSize = sizeof(DrawArraysIndirectCommand);
- NVDataRef<QT3DSU8> commandData((QT3DSU8 *)&command, commandBufSize);
- mDrawIndirectBuffer = context->CreateDrawIndirectBuffer(NVRenderBufferUsageType::Dynamic,
- commandBufSize, commandData);
-
- if (!mDrawIndirectBuffer) {
- qWarning() << "NVRenderTestAtomicCounterBuffer: Failed to create vertex buffer";
- return false;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- compResult.mShader->SetPropertyValue("mat_mvp", mvp);
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- mDrawIndirectBuffer->Bind();
- context->DrawIndirect(mInputAssembler->GetPrimitiveType(), 0);
-
- context->SetActiveShader(0);
- compResult.mShader->release();
-
- return true;
-}
-
-bool NVRenderTestDrawIndirectBuffer::drawElementsIndirect(NVRenderContext *context,
- userContextData *pUserData)
-{
- static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, -0.9, 0) }, { QT3DSVec3(0.9, 0.9, 0) },
- { QT3DSVec3(-0.9, 0.9, 0) }, { QT3DSVec3(-0.9, -0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) }, { QT3DSVec3(0.9, 0.9, 0) } };
-
- const unsigned short indices[] = { 0, 1, 2, 3, 4, 5 };
-
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderIndexBuffer> mIndexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- NVScopedRefCounted<NVRenderDrawIndirectBuffer> mDrawIndirectBuffer;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- NVRenderVertFragCompilationResult compResult = context->CompileSource(
- "NVRenderTestDrawIndirectBuffer shader", toRef(vertShader(vtxProg, isGLESContext(context))),
- toRef(fragShader(frgProg, isGLESContext(context))));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- };
-
- QT3DSU32 bufSize = 6 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 3 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestAtomicCounterBuffer: Failed to create vertex buffer";
- return false;
- }
-
- // index buffer
- bufSize = 6 * sizeof(unsigned short);
- NVDataRef<QT3DSU8> idxData((QT3DSU8 *)indices, bufSize);
- mIndexBuffer = context->CreateIndexBuffer(
- NVRenderBufferUsageType::Static, NVRenderComponentTypes::QT3DSU16, bufSize,
- NVConstDataRef<QT3DSU8>(reinterpret_cast<const QT3DSU8 *>(indices), bufSize));
- if (!mIndexBuffer) {
- qWarning() << "NVRenderTestPrimitives::Triangles: Failed to create index buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 1));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler = context->CreateInputAssembler(
- mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), mIndexBuffer,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1), NVRenderDrawMode::Triangles);
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestAtomicCounterBuffer: Failed to create input assembler";
- return false;
- }
-
- // create draw indirect buffer
- DrawElementsIndirectCommand command;
- command.baseInstance = 0;
- command.count = 6;
- command.firstIndex = 0;
- command.baseVertex = 0;
- command.primCount = 1;
- QT3DSU32 commandBufSize = sizeof(DrawElementsIndirectCommand);
- NVDataRef<QT3DSU8> commandData((QT3DSU8 *)&command, commandBufSize);
- mDrawIndirectBuffer = context->CreateDrawIndirectBuffer(NVRenderBufferUsageType::Dynamic,
- commandBufSize, commandData);
-
- if (!mDrawIndirectBuffer) {
- qWarning() << "NVRenderTestAtomicCounterBuffer: Failed to create vertex buffer";
- return false;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- compResult.mShader->SetPropertyValue("mat_mvp", mvp);
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- mDrawIndirectBuffer->Bind();
- context->DrawIndirect(mInputAssembler->GetPrimitiveType(), 0);
-
- context->SetActiveShader(0);
- compResult.mShader->release();
-
- return true;
-}
-
-////////////////////////////////
-// performance test
-////////////////////////////////
-bool NVRenderTestDrawIndirectBuffer::runPerformance(NVRenderContext *context,
- userContextData *pUserData)
-{
- return true;
-}
-
-////////////////////////////////
-// test cleanup
-////////////////////////////////
-void NVRenderTestDrawIndirectBuffer::cleanup(NVRenderContext *context, userContextData *pUserData)
-{
- context->SetClearColor(QT3DSVec4(0.0f, .0f, .0f, 0.f));
- // dummy
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-}
diff --git a/tests/auto/runtime/base/Qt3DSRenderTestDrawIndirectBuffer.h b/tests/auto/runtime/base/Qt3DSRenderTestDrawIndirectBuffer.h
deleted file mode 100644
index ee37a133..00000000
--- a/tests/auto/runtime/base/Qt3DSRenderTestDrawIndirectBuffer.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2014 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-#ifndef QT3DS_RENDER_TEST_DRAW_INDIRECT_BUFFER_H
-#define QT3DS_RENDER_TEST_DRAW_INDIRECT_BUFFER_H
-
-#include "../Qt3DSRenderTestBase.h"
-
-namespace qt3ds {
-namespace render {
-
- /// This class tests the creation of all kinds of primitives
- class NVRenderTestDrawIndirectBuffer : public NVRenderTestBase
- {
- public:
- NVRenderTestDrawIndirectBuffer();
- ~NVRenderTestDrawIndirectBuffer();
-
- bool isSupported(NVRenderContext *context);
- bool run(NVRenderContext *context, userContextData *pUserData);
- bool runPerformance(NVRenderContext *context, userContextData *pContextData);
- void cleanup(NVRenderContext *context, userContextData *pUserData);
-
- private:
- bool drawArrayIndirect(NVRenderContext *context, userContextData *pUserData);
- bool drawElementsIndirect(NVRenderContext *context, userContextData *pUserData);
-
- unsigned int _curTest;
- unsigned int _cellSize;
- unsigned int _maxColumn;
- };
-}
-}
-
-#endif // QT3DS_RENDER_TEST_ATOMIC_COUNTER_BUFFER_H
diff --git a/tests/auto/runtime/base/Qt3DSRenderTestPrimitives.cpp b/tests/auto/runtime/base/Qt3DSRenderTestPrimitives.cpp
deleted file mode 100644
index d3c2423b..00000000
--- a/tests/auto/runtime/base/Qt3DSRenderTestPrimitives.cpp
+++ /dev/null
@@ -1,321 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "Qt3DSRenderTestPrimitives.h"
-#include "../Qt3DSRenderTestMathUtil.h"
-#include "render/Qt3DSRenderShaderProgram.h"
-
-using namespace qt3ds;
-using namespace qt3ds::render;
-
-static const char *PassthroughVertShader()
-{
- return "uniform mat4 mat_mvp;\n"
- "attribute vec3 attr_pos; // Vertex pos\n"
- "void main()\n"
- "{\n"
- " gl_Position = mat_mvp * vec4(attr_pos, 1.0);\n"
- "}\n";
-}
-
-static const char *SimpleFragShader()
-{
- return "#ifdef GL_ES\n"
- "precision mediump float;\n"
- "#endif\n"
- "void main()\n"
- "{\n"
- "gl_FragColor = vec4(0, 1, 0, 1);\n"
- "}\n";
-}
-
-NVRenderTestPrimitives::NVRenderTestPrimitives()
-{
- _curTest = 0;
- _maxColumn = 4;
-}
-
-NVRenderTestPrimitives::~NVRenderTestPrimitives()
-{
-}
-
-bool NVRenderTestPrimitives::isSupported(NVRenderContext *context)
-{
- return true;
-}
-
-////////////////////////////////
-// test for functionality
-////////////////////////////////
-
-inline NVConstDataRef<QT3DSI8> toRef(const char *data)
-{
- size_t len = strlen(data) + 1;
- return NVConstDataRef<QT3DSI8>((const QT3DSI8 *)data, (QT3DSU32)len);
-}
-
-bool NVRenderTestPrimitives::renderPrimitive(NVRenderContext *context,
- userContextData *pContextData,
- const Vertex *pVertexData, unsigned int vertexCount,
- const unsigned short *pIndexData,
- unsigned int indexCount,
- NVRenderDrawMode::Enum primType)
-{
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- NVScopedRefCounted<NVRenderIndexBuffer> mIndexBuffer;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
-
- // create shaders
- NVRenderVertFragCompilationResult compResult = context->CompileSource(
- "NVRenderTestPrimitives shader", toRef(PassthroughVertShader()), toRef(SimpleFragShader()));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- };
-
- QT3DSU32 bufSize = vertexCount * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)pVertexData, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 3 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestPrimitives::Triangles: Failed to create vertex buffer";
- return false;
- }
-
- // index buffer
- if (pIndexData && indexCount) {
- bufSize = indexCount * sizeof(unsigned short);
- NVDataRef<QT3DSU8> idxData((QT3DSU8 *)pIndexData, bufSize);
- mIndexBuffer = context->CreateIndexBuffer(
- NVRenderBufferUsageType::Static, NVRenderComponentTypes::QT3DSU16, bufSize,
- NVConstDataRef<QT3DSU8>(reinterpret_cast<const QT3DSU8 *>(pIndexData), bufSize));
- if (!mIndexBuffer) {
- qWarning() << "NVRenderTestPrimitives::Triangles: Failed to create index buffer";
- return false;
- }
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 1));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler = context->CreateInputAssembler(
- mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), mIndexBuffer.mPtr,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1));
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestPrimitives::Triangles: Failed to create inout assembler";
- return false;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- compResult.mShader->SetPropertyValue("mat_mvp", mvp);
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- QT3DSU32 count = (mIndexBuffer.mPtr) ? indexCount : vertexCount;
- context->Draw(primType, count, 0);
-
- context->SetActiveShader(0);
- compResult.mShader->release();
-
- return true;
-}
-
-bool NVRenderTestPrimitives::run(NVRenderContext *context, userContextData *pUserData)
-{
- bool success = true;
- // conpute cell width
- _cellSize = pUserData->winWidth / _maxColumn;
-
- context->SetClearColor(QT3DSVec4(.0f, .0f, .0f, 1.f));
- context->Clear(NVRenderClearFlags(NVRenderClearValues::Color | NVRenderClearValues::Depth));
-
- success &= triangles(context, pUserData);
- _curTest++;
- success &= triangleStrip(context, pUserData);
- _curTest++;
- success &= lines(context, pUserData);
- _curTest++;
- success &= lineStrip(context, pUserData);
- _curTest++;
- success &= trianglesIndexed(context, pUserData);
- _curTest++;
- success &= triangleStripIndexed(context, pUserData);
- _curTest++;
- success &= linesIndexed(context, pUserData);
- _curTest++;
- success &= lineStripIndexed(context, pUserData);
-
- // cleanup
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-
- return success;
-}
-
-bool NVRenderTestPrimitives::triangles(NVRenderContext *context, userContextData *pUserData)
-{
- static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, 0.9, 0) }, { QT3DSVec3(-0.9, -0.9, 0) },
- { QT3DSVec3(0.85, -0.9, 0) }, { QT3DSVec3(-0.85, 0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) }, { QT3DSVec3(0.9, 0.9, 0) } };
-
- return renderPrimitive(context, pUserData, vertexPositions, 6, NULL, 0,
- NVRenderDrawMode::Triangles);
-}
-
-bool NVRenderTestPrimitives::triangleStrip(NVRenderContext *context, userContextData *pUserData)
-{
- const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, 0.9, 0.0) },
- { QT3DSVec3(-0.9f, -0.9f, 0.0f) },
- { QT3DSVec3(0.9f, 0.9f, 0.0f) },
- { QT3DSVec3(0.9f, -0.9f, 0.0f) } };
-
- return renderPrimitive(context, pUserData, vertexPositions, 4, NULL, 0,
- NVRenderDrawMode::TriangleStrip);
-}
-
-bool NVRenderTestPrimitives::lines(NVRenderContext *context, userContextData *pUserData)
-{
- const Vertex vertexPositions[] = {
- { QT3DSVec3(0.9f, 0.9f, 0.0f) }, { QT3DSVec3(0.9f, -0.9f, 0.0f) },
- { QT3DSVec3(0.9f, -0.9f, 0.0f) }, { QT3DSVec3(-0.85f, -0.9f, 0.0f) },
- { QT3DSVec3(-0.85f, -0.9f, 0.0f) }, { QT3DSVec3(0.9f, 0.9f, 0.0f) },
- { QT3DSVec3(-0.9f, -0.9f, 0.0f) }, { QT3DSVec3(0.85f, 0.9f, 0.0f) },
- { QT3DSVec3(0.85f, 0.9f, 0.0f) }, { QT3DSVec3(-0.9f, 0.9f, 0.0f) },
- { QT3DSVec3(-0.9f, 0.9f, 0.0f) }, { QT3DSVec3(-0.9f, -0.9f, 0.0f) }
- };
-
- return renderPrimitive(context, pUserData, vertexPositions, 12, NULL, 0,
- NVRenderDrawMode::Lines);
-}
-
-bool NVRenderTestPrimitives::lineStrip(NVRenderContext *context, userContextData *pUserData)
-{
- const Vertex vertexPositions[] = {
- { QT3DSVec3(-0.9f, 0.9f, 0.0f) }, { QT3DSVec3(-0.9f, -0.9f, 0.0f) },
- { QT3DSVec3(0.9f, -0.9f, 0.0f) }, { QT3DSVec3(0.9f, 0.9f, 0.0f) },
- { QT3DSVec3(-0.9f, 0.9f, 0.0f) },
- };
-
- return renderPrimitive(context, pUserData, vertexPositions, 5, NULL, 0,
- NVRenderDrawMode::LineStrip);
-}
-
-bool NVRenderTestPrimitives::trianglesIndexed(NVRenderContext *context, userContextData *pUserData)
-{
- static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, 0.9, 0) }, { QT3DSVec3(-0.9, -0.9, 0) },
- { QT3DSVec3(0.85, -0.9, 0) }, { QT3DSVec3(-0.85, 0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) }, { QT3DSVec3(0.9, 0.9, 0) } };
-
- const unsigned short indices[] = { 0, 1, 2, 3, 4, 5 };
-
- return renderPrimitive(context, pUserData, vertexPositions, 6, indices, 6,
- NVRenderDrawMode::Triangles);
-}
-
-bool NVRenderTestPrimitives::triangleStripIndexed(NVRenderContext *context,
- userContextData *pUserData)
-{
- const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, 0.9, 0.0) },
- { QT3DSVec3(-0.9f, -0.9f, 0.0f) },
- { QT3DSVec3(0.9f, 0.9f, 0.0f) },
- { QT3DSVec3(0.9f, -0.9f, 0.0f) } };
-
- const unsigned short indices[] = { 0, 1, 2, 3 };
-
- return renderPrimitive(context, pUserData, vertexPositions, 4, indices, 4,
- NVRenderDrawMode::TriangleStrip);
-}
-
-bool NVRenderTestPrimitives::linesIndexed(NVRenderContext *context, userContextData *pUserData)
-{
- const Vertex vertexPositions[] = {
- { QT3DSVec3(0.9f, 0.9f, 0.0f) }, { QT3DSVec3(0.9f, -0.9f, 0.0f) },
- { QT3DSVec3(-0.85f, -0.9f, 0.0f) }, { QT3DSVec3(-0.9f, -0.9f, 0.0f) },
- { QT3DSVec3(0.85f, 0.9f, 0.0f) }, { QT3DSVec3(-0.9f, 0.9f, 0.0f) },
- };
-
- const unsigned short indices[] = { 0, 1, 1, 2, 2, 0, 3, 4, 4, 5, 5, 3 };
-
- return renderPrimitive(context, pUserData, vertexPositions, 6, indices, 12,
- NVRenderDrawMode::Lines);
-}
-
-bool NVRenderTestPrimitives::lineStripIndexed(NVRenderContext *context, userContextData *pUserData)
-{
- const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, 0.9, 0.0) },
- { QT3DSVec3(-0.9f, -0.9f, 0.0f) },
- { QT3DSVec3(0.9f, -0.9f, 0.0f) },
- { QT3DSVec3(0.9f, 0.9f, 0.0f) } };
-
- const unsigned short indices[] = { 0, 1, 2, 3, 0 };
-
- return renderPrimitive(context, pUserData, vertexPositions, 4, indices, 5,
- NVRenderDrawMode::LineStrip);
-}
-
-////////////////////////////////
-// performance test
-////////////////////////////////
-bool NVRenderTestPrimitives::runPerformance(NVRenderContext *context, userContextData *pUserData)
-{
- return true;
-}
-
-////////////////////////////////
-// test cleanup
-////////////////////////////////
-void NVRenderTestPrimitives::cleanup(NVRenderContext *context, userContextData *pUserData)
-{
- context->SetClearColor(QT3DSVec4(0.0f, .0f, .0f, 0.f));
- // dummy
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-}
diff --git a/tests/auto/runtime/base/Qt3DSRenderTestPrimitives.h b/tests/auto/runtime/base/Qt3DSRenderTestPrimitives.h
deleted file mode 100644
index 4b6128e2..00000000
--- a/tests/auto/runtime/base/Qt3DSRenderTestPrimitives.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-#ifndef QT3DS_RENDER_TEST_PRIMITIVES_H
-#define QT3DS_RENDER_TEST_PRIMITIVES_H
-
-#include "../Qt3DSRenderTestBase.h"
-
-namespace qt3ds {
-namespace render {
-
- struct Vertex
- {
- QT3DSVec3 positions;
- };
-
- /// This class tests the creation of all kinds of primitives
- class NVRenderTestPrimitives : public NVRenderTestBase
- {
- public:
- NVRenderTestPrimitives();
- ~NVRenderTestPrimitives();
-
- bool isSupported(NVRenderContext *context);
- bool run(NVRenderContext *context, userContextData *pUserData);
- bool runPerformance(NVRenderContext *context, userContextData *pContextData);
- void cleanup(NVRenderContext *context, userContextData *pUserData);
-
- private:
- bool triangles(NVRenderContext *context, userContextData *pUserData);
- bool triangleStrip(NVRenderContext *context, userContextData *pUserData);
- bool lines(NVRenderContext *context, userContextData *pUserData);
- bool lineStrip(NVRenderContext *context, userContextData *pContextData);
-
- bool trianglesIndexed(NVRenderContext *context, userContextData *pUserData);
- bool triangleStripIndexed(NVRenderContext *context, userContextData *pUserData);
- bool linesIndexed(NVRenderContext *context, userContextData *pUserData);
- bool lineStripIndexed(NVRenderContext *context, userContextData *pContextData);
-
- bool renderPrimitive(NVRenderContext *context, userContextData *pContextData,
- const Vertex *pVertexData, unsigned int vertexCount,
- const unsigned short *pIndexData, unsigned int indexCount,
- NVRenderDrawMode::Enum primType);
-
- unsigned int _curTest;
- unsigned int _cellSize;
- unsigned int _maxColumn;
- };
-}
-}
-
-#endif // QT3DS_RENDER_TEST_PRIMITIVES_H
diff --git a/tests/auto/runtime/base/Qt3DSRenderTestProgramPipeline.cpp b/tests/auto/runtime/base/Qt3DSRenderTestProgramPipeline.cpp
deleted file mode 100644
index a76bfa05..00000000
--- a/tests/auto/runtime/base/Qt3DSRenderTestProgramPipeline.cpp
+++ /dev/null
@@ -1,401 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "Qt3DSRenderTestProgramPipeline.h"
-#include "../Qt3DSRenderTestMathUtil.h"
-#include "render/Qt3DSRenderShaderProgram.h"
-#include "render/Qt3DSRenderProgramPipeline.h"
-
-#include <string>
-
-using namespace qt3ds;
-using namespace qt3ds::render;
-
-struct Vertex
-{
- QT3DSVec3 positions;
-};
-
-static const char *vertShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 430\n";
-
- prog += "out gl_PerVertex\n"
- "{\n"
- "\tvec4 gl_Position;\n"
- "\tfloat gl_PointSize;\n"
- "\tfloat gl_ClipDistance[];\n"
- "};\n";
- }
-
- prog += "uniform mat4 mat_mvp;\n"
- "in vec3 attr_pos; // Vertex pos\n"
- "in vec3 attr_col; // Vertex col\n"
- "out vec3 color; // output color\n"
- "void main()\n"
- "{\n"
- " gl_Position = mat_mvp * vec4(attr_pos, 1.0);\n"
- " color = attr_col;\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *fragShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 300 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 430\n";
- }
-
- prog += "in vec3 color; // input color\n"
- "out vec4 fragColor;\n"
- "void main()\n"
- "{\n"
- " fragColor = vec4( color, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-NVRenderTestProgramPipeline::NVRenderTestProgramPipeline()
-{
- _curTest = 0;
- _maxColumn = 4;
-}
-
-NVRenderTestProgramPipeline::~NVRenderTestProgramPipeline()
-{
-}
-
-bool NVRenderTestProgramPipeline::isSupported(NVRenderContext *context)
-{
- return context->IsProgramPipelineSupported();
-}
-
-////////////////////////////////
-// test for functionality
-////////////////////////////////
-
-inline NVConstDataRef<QT3DSI8> toRef(const char *data)
-{
- size_t len = strlen(data) + 1;
- return NVConstDataRef<QT3DSI8>((const QT3DSI8 *)data, (QT3DSU32)len);
-}
-
-bool NVRenderTestProgramPipeline::run(NVRenderContext *context, userContextData *pUserData)
-{
- bool success = true;
- // conpute cell width
- _cellSize = pUserData->winWidth / _maxColumn;
-
- context->SetClearColor(QT3DSVec4(.0f, .0f, .0f, 1.f));
- context->Clear(NVRenderClearFlags(NVRenderClearValues::Color | NVRenderClearValues::Depth));
-
- success &= vertFragSeparateTest(context, pUserData);
- _curTest++;
- success &= vertFragCombinedTest(context, pUserData);
- _curTest++;
-
- // cleanup
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-
- return success;
-}
-
-bool NVRenderTestProgramPipeline::vertFragSeparateTest(NVRenderContext *context,
- userContextData *pUserData)
-{
- static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, -0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) },
- { QT3DSVec3(0.0, 0.9, 0) } };
-
- static const Vertex vertexColors[] = { { QT3DSVec3(0.0, 1.0, 0.0) },
- { QT3DSVec3(0.0, 1.0, 0.0) },
- { QT3DSVec3(0.0, 1.0, 0.0) } };
-
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderVertexBuffer> mColorBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- NVScopedRefCounted<NVRenderProgramPipeline> mProgramPipeline;
- NVRenderVertexBuffer *attribBuffers[2];
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
- qt3ds::QT3DSVec3 color(0.0, 1.0, 0.0);
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- NVRenderVertFragCompilationResult vtxResult = context->CompileSource(
- "NVRenderTestProgramPipeline vertex shader",
- toRef(vertShader(vtxProg, isGLESContext(context))), NVConstDataRef<QT3DSI8>(),
- NVConstDataRef<QT3DSI8>(), NVConstDataRef<QT3DSI8>(), NVConstDataRef<QT3DSI8>(), true);
- if (!vtxResult.mShader) {
- return false;
- }
-
- NVRenderVertFragCompilationResult fragResult = context->CompileSource(
- "NVRenderTestProgramPipeline fragment shader", NVConstDataRef<QT3DSI8>(),
- toRef(fragShader(frgProg, isGLESContext(context))), NVConstDataRef<QT3DSI8>(),
- NVConstDataRef<QT3DSI8>(), NVConstDataRef<QT3DSI8>(), true);
-
- if (!fragResult.mShader) {
- return false;
- }
-
- // setup program pipeline
- mProgramPipeline = context->CreateProgramPipeline();
- if (!mProgramPipeline) {
- qWarning() << "NVRenderTestProgramPipeline: Failed to create program pipeline";
- return false;
- }
-
- mProgramPipeline->SetProgramStages(vtxResult.mShader,
- NVRenderShaderTypeFlags(NVRenderShaderTypeValue::Vertex));
- mProgramPipeline->SetProgramStages(fragResult.mShader,
- NVRenderShaderTypeFlags(NVRenderShaderTypeValue::Fragment));
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0, 0),
- NVRenderVertexBufferEntry("attr_col", NVRenderComponentTypes::QT3DSF32, 3, 0, 1),
- };
-
- // position buffer
- QT3DSU32 bufSize = 3 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 3 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestAttribBuffers: Failed to create vertex buffer";
- return false;
- }
- // color buffer
- NVDataRef<QT3DSU8> colorData((QT3DSU8 *)vertexColors, bufSize);
- mColorBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 3 * sizeof(QT3DSF32), colorData);
- if (!mColorBuffer) {
- qWarning() << "NVRenderTestAttribBuffers: Failed to create color buffer";
- return false;
- }
-
- attribBuffers[0] = mVertexBuffer;
- attribBuffers[1] = mColorBuffer;
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 2));
- // create input Assembler
- QT3DSU32 strides[2];
- QT3DSU32 offsets[2];
- strides[0] = mVertexBuffer->GetStride();
- offsets[0] = 0;
- strides[1] = mColorBuffer->GetStride();
- offsets[1] = 0;
-
- mInputAssembler = context->CreateInputAssembler(
- mAttribLayout, NVConstDataRef<NVRenderVertexBuffer *>(attribBuffers, 2), NULL,
- toConstDataRef(strides, 2), toConstDataRef(offsets, 2), NVRenderDrawMode::Triangles);
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestAttribBuffers: Failed to create input assembler";
- return false;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveProgramPipeline(mProgramPipeline);
- vtxResult.mShader->SetPropertyValue("mat_mvp", mvp);
- // set color
- vtxResult.mShader->SetPropertyValue("color", color);
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- context->Draw(mInputAssembler->GetPrimitiveType(), 3, 0);
-
- context->SetActiveProgramPipeline(0);
- return true;
-}
-
-bool NVRenderTestProgramPipeline::vertFragCombinedTest(NVRenderContext *context,
- userContextData *pUserData)
-{
- static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, -0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) },
- { QT3DSVec3(0.0, 0.9, 0) } };
-
- static const Vertex vertexColors[] = { { QT3DSVec3(0.0, 1.0, 0.0) },
- { QT3DSVec3(0.0, 1.0, 0.0) },
- { QT3DSVec3(0.0, 1.0, 0.0) } };
-
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderVertexBuffer> mColorBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- NVScopedRefCounted<NVRenderProgramPipeline> mProgramPipeline;
- NVRenderVertexBuffer *attribBuffers[2];
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
- qt3ds::QT3DSVec3 color(0.0, 1.0, 0.0);
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- NVRenderVertFragCompilationResult compResult = context->CompileSource(
- "NVRenderTestProgramPipeline vertex shader",
- toRef(vertShader(vtxProg, isGLESContext(context))),
- toRef(fragShader(frgProg, isGLESContext(context))), NVConstDataRef<QT3DSI8>(),
- NVConstDataRef<QT3DSI8>(), NVConstDataRef<QT3DSI8>(), true);
- if (!compResult.mShader) {
- return false;
- }
-
- // setup program pipeline
- mProgramPipeline = context->CreateProgramPipeline();
- if (!mProgramPipeline) {
- qWarning() << "NVRenderTestProgramPipeline: Failed to create program pipeline";
- return false;
- }
-
- mProgramPipeline->SetProgramStages(
- compResult.mShader, NVRenderShaderTypeFlags(NVRenderShaderTypeValue::Vertex
- | NVRenderShaderTypeValue::Fragment));
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0, 0),
- NVRenderVertexBufferEntry("attr_col", NVRenderComponentTypes::QT3DSF32, 3, 0, 1),
- };
-
- // position buffer
- QT3DSU32 bufSize = 3 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 3 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestAttribBuffers: Failed to create vertex buffer";
- return false;
- }
- // color buffer
- NVDataRef<QT3DSU8> colorData((QT3DSU8 *)vertexColors, bufSize);
- mColorBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 3 * sizeof(QT3DSF32), colorData);
- if (!mColorBuffer) {
- qWarning() << "NVRenderTestAttribBuffers: Failed to create color buffer";
- return false;
- }
-
- attribBuffers[0] = mVertexBuffer;
- attribBuffers[1] = mColorBuffer;
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 2));
- // create input Assembler
- QT3DSU32 strides[2];
- QT3DSU32 offsets[2];
- strides[0] = mVertexBuffer->GetStride();
- offsets[0] = 0;
- strides[1] = mColorBuffer->GetStride();
- offsets[1] = 0;
-
- mInputAssembler = context->CreateInputAssembler(
- mAttribLayout, NVConstDataRef<NVRenderVertexBuffer *>(attribBuffers, 2), NULL,
- toConstDataRef(strides, 2), toConstDataRef(offsets, 2), NVRenderDrawMode::Triangles);
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestAttribBuffers: Failed to create input assembler";
- return false;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveProgramPipeline(mProgramPipeline);
- compResult.mShader->SetPropertyValue("mat_mvp", mvp);
- // set color
- compResult.mShader->SetPropertyValue("color", color);
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- context->Draw(mInputAssembler->GetPrimitiveType(), 3, 0);
-
- context->SetActiveProgramPipeline(0);
-
- return true;
-}
-
-////////////////////////////////
-// performance test
-////////////////////////////////
-bool NVRenderTestProgramPipeline::runPerformance(NVRenderContext *context,
- userContextData *pUserData)
-{
- return true;
-}
-
-////////////////////////////////
-// test cleanup
-////////////////////////////////
-void NVRenderTestProgramPipeline::cleanup(NVRenderContext *context, userContextData *pUserData)
-{
- context->SetClearColor(QT3DSVec4(0.0f, .0f, .0f, 0.f));
- // dummy
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-}
diff --git a/tests/auto/runtime/base/Qt3DSRenderTestProgramPipeline.h b/tests/auto/runtime/base/Qt3DSRenderTestProgramPipeline.h
deleted file mode 100644
index eeec086d..00000000
--- a/tests/auto/runtime/base/Qt3DSRenderTestProgramPipeline.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2014 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-#ifndef QT3DS_RENDER_TEST_PROGRAM_PIPELINE_H
-#define QT3DS_RENDER_TEST_PROGRAM_PIPELINE_H
-
-#include "../Qt3DSRenderTestBase.h"
-
-namespace qt3ds {
-namespace render {
-
- /// This class tests the creation of all kinds of primitives
- class NVRenderTestProgramPipeline : public NVRenderTestBase
- {
- public:
- NVRenderTestProgramPipeline();
- ~NVRenderTestProgramPipeline();
-
- bool isSupported(NVRenderContext *context);
- bool run(NVRenderContext *context, userContextData *pUserData);
- bool runPerformance(NVRenderContext *context, userContextData *pContextData);
- void cleanup(NVRenderContext *context, userContextData *pUserData);
-
- private:
- bool vertFragSeparateTest(NVRenderContext *context, userContextData *pUserData);
- bool vertFragCombinedTest(NVRenderContext *context, userContextData *pUserData);
-
- unsigned int _curTest;
- unsigned int _cellSize;
- unsigned int _maxColumn;
- };
-}
-}
-
-#endif // QT3DS_RENDER_TEST_PROGRAM_PIPELINE_H
diff --git a/tests/auto/runtime/base/Qt3DSRenderTestTexture2D.cpp b/tests/auto/runtime/base/Qt3DSRenderTestTexture2D.cpp
deleted file mode 100644
index 6904955f..00000000
--- a/tests/auto/runtime/base/Qt3DSRenderTestTexture2D.cpp
+++ /dev/null
@@ -1,288 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "Qt3DSRenderTestTexture2D.h"
-#include "../Qt3DSRenderTestMathUtil.h"
-#include "render/Qt3DSRenderShaderProgram.h"
-#include "render/Qt3DSRenderTexture2D.h"
-#include "render/Qt3DSRenderTexture2DArray.h"
-
-#include <string>
-
-using namespace qt3ds;
-using namespace qt3ds::render;
-
-static const char *vertShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 300 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 330\n";
- }
-
- prog += "uniform mat4 mat_mvp;\n"
- "in vec3 attr_pos; // Vertex pos\n"
- "in vec3 attr_uv; // texture coord\n"
- "out vec3 varTexCoord;\n"
- "void main()\n"
- "{\n"
- " gl_Position = mat_mvp * vec4(attr_pos, 1.0);\n"
- " varTexCoord = attr_uv;\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *fragShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 300 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 330\n";
- }
-
- prog += "uniform sampler2DArray inTex;\n"
- "in vec3 varTexCoord;\n"
- "out vec4 fragColor;\n"
- "void main()\n"
- "{\n"
- " fragColor = texture(inTex, varTexCoord);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-struct Vertex
-{
- QT3DSVec3 positions;
- QT3DSVec3 texCoord;
-};
-
-static const Vertex vertexPositionsL0[] = {
- { QT3DSVec3(-0.9, 0.0, 0), QT3DSVec3(0, 0, 0) }, { QT3DSVec3(0.0, 0.9, 0), QT3DSVec3(1, 1, 0) },
- { QT3DSVec3(-0.9, 0.9, 0), QT3DSVec3(0, 1, 0) }, { QT3DSVec3(-0.9, 0.0, 0), QT3DSVec3(0, 0, 0) },
- { QT3DSVec3(0.0, 0.0, 0), QT3DSVec3(1, 0, 0) }, { QT3DSVec3(0.0, 0.9, 0), QT3DSVec3(1, 1, 0) }
-};
-
-static const Vertex vertexPositionsL1[] = {
- { QT3DSVec3(0.0, -0.9, 0), QT3DSVec3(0, 0, 1) }, { QT3DSVec3(0.9, 0.0, 0), QT3DSVec3(1, 1, 1) },
- { QT3DSVec3(0.0, 0.0, 0), QT3DSVec3(0, 1, 1) }, { QT3DSVec3(0.0, -0.9, 0), QT3DSVec3(0, 0, 1) },
- { QT3DSVec3(0.9, -0.9, 0), QT3DSVec3(1, 0, 1) }, { QT3DSVec3(0.9, 0.0, 0), QT3DSVec3(1, 1, 1) }
-};
-
-#define TEXTURE_LAYER_SIZE 2
-#define TEXTURE_SIZE 64
-#define PATTERN_SIZE 0x8
-
-NVRenderTestTexture2D::NVRenderTestTexture2D()
-{
- _curTest = 0;
- _maxColumn = 4;
- _pTextureData = NULL;
-}
-
-NVRenderTestTexture2D::~NVRenderTestTexture2D()
-{
-}
-
-bool NVRenderTestTexture2D::isSupported(NVRenderContext *context)
-{
- return context->IsTextureArraySupported();
-}
-
-////////////////////////////////
-// test for functionality
-////////////////////////////////
-
-inline NVConstDataRef<QT3DSI8> toRef(const char *data)
-{
- size_t len = strlen(data) + 1;
- return NVConstDataRef<QT3DSI8>((const QT3DSI8 *)data, (QT3DSU32)len);
-}
-
-bool NVRenderTestTexture2D::run(NVRenderContext *context, userContextData *pUserData)
-{
- bool success = true;
- // conpute cell width
- _cellSize = pUserData->winWidth / _maxColumn;
-
- // alloc data
- _pTextureData = new unsigned char[TEXTURE_SIZE * TEXTURE_SIZE * 4 * TEXTURE_LAYER_SIZE];
- CreateTexData(_pTextureData);
-
- context->SetClearColor(QT3DSVec4(.0f, .0f, .0f, 1.f));
- context->Clear(NVRenderClearFlags(NVRenderClearValues::Color | NVRenderClearValues::Depth));
-
- success &= texArray2DTest(context, pUserData);
- _curTest++;
-
- // cleanup
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-
- if (_pTextureData)
- delete _pTextureData;
-
- return success;
-}
-
-void NVRenderTestTexture2D::CreateTexData(unsigned char *_pOutData)
-{
- if (!_pOutData)
- return;
-
- unsigned char *_pData = _pOutData;
-
- // Create a checkerboard pattern
- for (int i = 0; i < TEXTURE_LAYER_SIZE; i++) {
- for (int j = 0; j < TEXTURE_SIZE; j++) {
- for (int k = 0; k < TEXTURE_SIZE; k++) {
- unsigned char c = (((j & PATTERN_SIZE) == 0) ^ ((k & PATTERN_SIZE) == 0)) * 255;
- *_pData++ = 0x0;
- *_pData++ = c >> i;
- *_pData++ = 0x0;
- *_pData++ = 0xFF;
- }
- }
- }
-}
-
-bool NVRenderTestTexture2D::renderTexArrayQuad(NVRenderContext *context, userContextData *pUserData,
- NVRenderTexture2DArray *pTex, QT3DSU8 *vertexPositions)
-{
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- NVRenderVertFragCompilationResult compResult = context->CompileSource(
- "NVRenderTestTexture2D shader", toRef(vertShader(vtxProg, isGLESContext(context))),
- toRef(fragShader(frgProg, isGLESContext(context))));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- NVRenderVertexBufferEntry("attr_uv", NVRenderComponentTypes::QT3DSF32, 3, 12),
- };
-
- QT3DSU32 bufSize = 6 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData(vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 6 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestTexture2D: Failed to create vertex buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 2));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler =
- context->CreateInputAssembler(mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), NULL,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1));
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestTexture2D: Failed to create input assembler";
- return false;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- NVRenderCachedShaderProperty<NVRenderTexture2DArray *> mArrayTexture("inTex",
- *compResult.mShader);
- mArrayTexture.Set(pTex);
- compResult.mShader->SetPropertyValue("mat_mvp", mvp);
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- context->Draw(NVRenderDrawMode::Triangles, 6, 0);
-
- context->SetActiveShader(0);
- compResult.mShader->release();
-
- return true;
-}
-
-bool NVRenderTestTexture2D::texArray2DTest(NVRenderContext *context, userContextData *pUserData)
-{
- bool success = true;
- // create texture
- NVScopedRefCounted<NVRenderTexture2DArray> mArrayTexture;
- mArrayTexture = context->CreateTexture2DArray();
- mArrayTexture->SetTextureData(
- NVDataRef<QT3DSU8>(_pTextureData, TEXTURE_SIZE * TEXTURE_SIZE * 4 * TEXTURE_LAYER_SIZE), 0,
- TEXTURE_SIZE, TEXTURE_SIZE, TEXTURE_LAYER_SIZE, NVRenderTextureFormats::RGBA8);
-
- success &= renderTexArrayQuad(context, pUserData, mArrayTexture, (QT3DSU8 *)vertexPositionsL0);
- success &= renderTexArrayQuad(context, pUserData, mArrayTexture, (QT3DSU8 *)vertexPositionsL1);
-
- return success;
-}
-
-////////////////////////////////
-// performance test
-////////////////////////////////
-bool NVRenderTestTexture2D::runPerformance(NVRenderContext *context, userContextData *pUserData)
-{
- return true;
-}
-
-////////////////////////////////
-// test cleanup
-////////////////////////////////
-void NVRenderTestTexture2D::cleanup(NVRenderContext *context, userContextData *pUserData)
-{
- context->SetClearColor(QT3DSVec4(0.0f, .0f, .0f, 0.f));
- // dummy
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-}
diff --git a/tests/auto/runtime/base/Qt3DSRenderTestTexture2D.h b/tests/auto/runtime/base/Qt3DSRenderTestTexture2D.h
deleted file mode 100644
index 5c5de114..00000000
--- a/tests/auto/runtime/base/Qt3DSRenderTestTexture2D.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2014 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-#ifndef QT3DS_RENDER_TEST_TEXTURE_2D_H
-#define QT3DS_RENDER_TEST_TEXTURE_2D_H
-
-#include "../Qt3DSRenderTestBase.h"
-
-namespace qt3ds {
-namespace render {
-
- class NVRenderTexture2D;
- class NVRenderTexture2DArray;
-
- /// This class tests the creation of all kinds of primitives
- class NVRenderTestTexture2D : public NVRenderTestBase
- {
- public:
- NVRenderTestTexture2D();
- ~NVRenderTestTexture2D();
-
- bool isSupported(NVRenderContext *context);
- bool run(NVRenderContext *context, userContextData *pUserData);
- bool runPerformance(NVRenderContext *context, userContextData *pContextData);
- void cleanup(NVRenderContext *context, userContextData *pUserData);
-
- private:
- bool texArray2DTest(NVRenderContext *context, userContextData *pUserData);
-
- bool renderTexArrayQuad(NVRenderContext *context, userContextData *pUserData,
- NVRenderTexture2DArray *pTex, QT3DSU8 *vertexPositions);
- void CreateTexData(unsigned char *_pOutData);
-
- unsigned int _curTest;
- unsigned int _cellSize;
- unsigned int _maxColumn;
- unsigned char *_pTextureData;
- };
-}
-}
-
-#endif // QT3DS_RENDER_TEST_TEXTURE_2D_H
diff --git a/tests/auto/runtime/base/Qt3DSRenderTestTimerQuery.cpp b/tests/auto/runtime/base/Qt3DSRenderTestTimerQuery.cpp
deleted file mode 100644
index bf8ff0e3..00000000
--- a/tests/auto/runtime/base/Qt3DSRenderTestTimerQuery.cpp
+++ /dev/null
@@ -1,436 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "Qt3DSRenderTestTimerQuery.h"
-#include "../Qt3DSRenderTestMathUtil.h"
-#include "render/Qt3DSRenderShaderProgram.h"
-#include "render/Qt3DSRenderTimerQuery.h"
-
-#include <string>
-
-using namespace qt3ds;
-using namespace qt3ds::render;
-
-static const char *vertShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 300 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 330\n";
- }
-
- prog += "uniform mat4 mat_mvp;\n"
- "in vec3 attr_pos; // Vertex pos\n"
- "void main()\n"
- "{\n"
- " gl_Position = mat_mvp * vec4(attr_pos, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *fragShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 300 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 330\n";
- }
-
- prog += "uniform vec3 color;\n"
- "out vec4 fragColor;\n"
- "void main()\n"
- "{\n"
- " fragColor = vec4(color, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-struct Vertex
-{
- QT3DSVec3 positions;
-};
-
-static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, 0.9, 0) }, { QT3DSVec3(-0.9, -0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) }, { QT3DSVec3(-0.9, 0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) }, { QT3DSVec3(0.9, 0.9, 0) } };
-
-NVRenderTestTimerQuery::NVRenderTestTimerQuery()
-{
- _curTest = 0;
- _maxColumn = 4;
-}
-
-NVRenderTestTimerQuery::~NVRenderTestTimerQuery()
-{
-}
-
-bool NVRenderTestTimerQuery::isSupported(NVRenderContext *context)
-{
- return context->IsTimerQuerySupported();
-}
-
-////////////////////////////////
-// test for functionality
-////////////////////////////////
-
-inline NVConstDataRef<QT3DSI8> toRef(const char *data)
-{
- size_t len = strlen(data) + 1;
- return NVConstDataRef<QT3DSI8>((const QT3DSI8 *)data, (QT3DSU32)len);
-}
-
-bool NVRenderTestTimerQuery::run(NVRenderContext *context, userContextData *pUserData)
-{
- bool success = true;
- // conpute cell width
- _cellSize = pUserData->winWidth / _maxColumn;
-
- context->SetClearColor(QT3DSVec4(.0f, .0f, .0f, 1.f));
- context->Clear(NVRenderClearFlags(NVRenderClearValues::Color | NVRenderClearValues::Depth));
-
- success &= timerTest(context, pUserData);
- _curTest++;
- success &= absoluteTimerTest(context, pUserData);
- _curTest++;
-
- // cleanup
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-
- return success;
-}
-
-bool NVRenderTestTimerQuery::renderQuad(NVRenderContext *context, userContextData *pUserData,
- QT3DSVec3 color)
-{
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- NVRenderVertFragCompilationResult compResult = context->CompileSource(
- "NVRenderTestTimerQuery shader", toRef(vertShader(vtxProg, isGLESContext(context))),
- toRef(fragShader(frgProg, isGLESContext(context))));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- };
-
- QT3DSU32 bufSize = 6 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 3 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestTimerQuery: Failed to create vertex buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 1));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler =
- context->CreateInputAssembler(mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), NULL,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1));
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestTimerQuery: Failed to create input assembler";
- return false;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- compResult.mShader->SetPropertyValue("mat_mvp", mvp);
- // set color
- compResult.mShader->SetPropertyValue("color", color);
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- context->Draw(NVRenderDrawMode::Triangles, 6, 0);
-
- context->SetActiveShader(0);
- compResult.mShader->release();
-
- return true;
-}
-
-bool NVRenderTestTimerQuery::timerTest(NVRenderContext *context, userContextData *pUserData)
-{
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- QT3DSMat44 proj = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&proj, -1, 1, -1, 1, -10, 10);
- QT3DSVec3 color(1.0, 1.0, 0.0);
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- NVRenderVertFragCompilationResult compResult = context->CompileSource(
- "NVRenderTestTimerQuery shader", toRef(vertShader(vtxProg, isGLESContext(context))),
- toRef(fragShader(frgProg, isGLESContext(context))));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- };
-
- QT3DSU32 bufSize = 6 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 3 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestTimerQuery: Failed to create vertex buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 1));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler =
- context->CreateInputAssembler(mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), NULL,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1));
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestTimerQuery: Failed to create input assembler";
- return false;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
-
- // setup translation
- QT3DSMat44 transZ;
- NvRenderTestMatrixTranslation(&transZ, 0.0, 0.0, 0.2);
- mvp = transZ * proj;
-
- // set program
- context->SetActiveShader(compResult.mShader);
- compResult.mShader->SetPropertyValue("mat_mvp", mvp);
- // set color
- compResult.mShader->SetPropertyValue("color", color);
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- NVScopedRefCounted<NVRenderTimerQuery> pQuery = context->CreateTimerQuery();
-
- // render 1000 quads this should take at least some amount of time
- pQuery->Begin();
- for (QT3DSI32 i = 0; i < 1000; i++) {
- context->Draw(NVRenderDrawMode::Triangles, 6, 0);
- }
- pQuery->End();
-
- // get elapsed time in nano seconds
- QT3DSU64 result = 0;
- pQuery->GetResult(&result);
- // convert to milli second
- QT3DSF64 elapsed = double(result) / 1e06;
-
- /// it should take at least a fraction of a milli second
- if (elapsed > 0.0)
- color.x = 0.0; // right
- else
- color.y = 0.0; // wrong
-
- context->SetActiveShader(0);
- compResult.mShader->release();
-
- renderQuad(context, pUserData, color);
-
- return (elapsed > 0.0);
-}
-
-bool NVRenderTestTimerQuery::absoluteTimerTest(NVRenderContext *context, userContextData *pUserData)
-{
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- QT3DSMat44 proj = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&proj, -1, 1, -1, 1, -10, 10);
- QT3DSVec3 color(1.0, 1.0, 0.0);
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- NVRenderVertFragCompilationResult compResult = context->CompileSource(
- "NVRenderTestTimerQuery shader", toRef(vertShader(vtxProg, isGLESContext(context))),
- toRef(fragShader(frgProg, isGLESContext(context))));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- };
-
- QT3DSU32 bufSize = 6 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 3 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestTimerQuery: Failed to create vertex buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 1));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler =
- context->CreateInputAssembler(mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), NULL,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1));
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestTimerQuery: Failed to create input assembler";
- return false;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
-
- // setup translation
- QT3DSMat44 transZ;
- NvRenderTestMatrixTranslation(&transZ, 0.0, 0.0, 0.2);
- mvp = transZ * proj;
-
- // set program
- context->SetActiveShader(compResult.mShader);
- compResult.mShader->SetPropertyValue("mat_mvp", mvp);
- // set color
- compResult.mShader->SetPropertyValue("color", color);
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- NVScopedRefCounted<NVRenderTimerQuery> pQueryStart = context->CreateTimerQuery();
- NVScopedRefCounted<NVRenderTimerQuery> pQueryEnd = context->CreateTimerQuery();
-
- // render 1000 quads this should take at least some amount of time
- pQueryStart->SetTimerQuery();
- for (QT3DSI32 i = 0; i < 1000; i++) {
- context->Draw(NVRenderDrawMode::Triangles, 6, 0);
- }
- pQueryEnd->SetTimerQuery();
-
- // get absolute time in nano seconds
- QT3DSU64 start = 0;
- pQueryStart->GetResult(&start);
- QT3DSU64 end = 0;
- pQueryEnd->GetResult(&end);
-
- // convert to milli second
- QT3DSF64 elapsed = double(end - start) / 1e06;
-
- // it should take at least a fraction of a milli second
- if (elapsed > 0.0)
- color.x = 0.0; // right
- else
- color.y = 0.0; // wrong
-
- context->SetActiveShader(0);
- compResult.mShader->release();
-
- renderQuad(context, pUserData, color);
-
- return (elapsed > 0.0);
-}
-
-////////////////////////////////
-// performance test
-////////////////////////////////
-bool NVRenderTestTimerQuery::runPerformance(NVRenderContext *context, userContextData *pUserData)
-{
- return true;
-}
-
-////////////////////////////////
-// test cleanup
-////////////////////////////////
-void NVRenderTestTimerQuery::cleanup(NVRenderContext *context, userContextData *pUserData)
-{
- context->SetClearColor(QT3DSVec4(0.0f, .0f, .0f, 0.f));
- // dummy
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-}
diff --git a/tests/auto/runtime/base/Qt3DSRenderTestTimerQuery.h b/tests/auto/runtime/base/Qt3DSRenderTestTimerQuery.h
deleted file mode 100644
index 127c25fc..00000000
--- a/tests/auto/runtime/base/Qt3DSRenderTestTimerQuery.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2014 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-#ifndef QT3DS_RENDER_TEST_TIMER_QUERY_H
-#define QT3DS_RENDER_TEST_TIMER_QUERY_H
-
-#include "../Qt3DSRenderTestBase.h"
-
-namespace qt3ds {
-namespace render {
-
- class NVRenderTimerQuery;
-
- /// This class tests the creation of all kinds of primitives
- class NVRenderTestTimerQuery : public NVRenderTestBase
- {
- public:
- NVRenderTestTimerQuery();
- ~NVRenderTestTimerQuery();
-
- bool isSupported(NVRenderContext *context);
- bool run(NVRenderContext *context, userContextData *pUserData);
- bool runPerformance(NVRenderContext *context, userContextData *pContextData);
- void cleanup(NVRenderContext *context, userContextData *pUserData);
-
- private:
- bool timerTest(NVRenderContext *context, userContextData *pUserData);
- bool absoluteTimerTest(NVRenderContext *context, userContextData *pUserData);
-
- bool renderQuad(NVRenderContext *context, userContextData *pUserData, QT3DSVec3 color);
-
- unsigned int _curTest;
- unsigned int _cellSize;
- unsigned int _maxColumn;
- };
-}
-}
-
-#endif // QT3DS_RENDER_TEST_TIMER_QUERY_H
diff --git a/tests/auto/runtime/compute/Qt3DSRenderTestComputeShader.cpp b/tests/auto/runtime/compute/Qt3DSRenderTestComputeShader.cpp
deleted file mode 100644
index 15035b43..00000000
--- a/tests/auto/runtime/compute/Qt3DSRenderTestComputeShader.cpp
+++ /dev/null
@@ -1,636 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "Qt3DSRenderTestComputeShader.h"
-#include "../Qt3DSRenderTestMathUtil.h"
-#include "render/Qt3DSRenderImageTexture.h"
-#include "render/Qt3DSRenderStorageBuffer.h"
-#include "render/Qt3DSRenderShaderProgram.h"
-
-#include <string>
-
-using namespace qt3ds;
-using namespace qt3ds::render;
-
-static const char *vertShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 400\n";
- }
-
- prog += "uniform mat4 mat_mvp;\n"
- "in vec3 attr_pos; // Vertex pos\n"
- "void main()\n"
- "{\n"
- " gl_Position = vec4(attr_pos, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *vertTexShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 400\n";
- }
-
- prog += "uniform mat4 mat_mvp;\n"
- "in vec3 attr_pos; // Vertex pos\n"
- "in vec2 attr_uv; // texture coord\n"
- "out vec2 varTexCoord;\n"
- "void main()\n"
- "{\n"
- " gl_Position = vec4(attr_pos, 1.0);\n"
- " varTexCoord = attr_uv;\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *fragShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 400\n";
- }
-
- prog += "uniform vec3 color;\n"
- "out vec4 fragColor;\n"
- "void main()\n"
- "{\n"
- " fragColor = vec4(color, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *fragTexShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 400\n";
- }
-
- prog += "uniform sampler2D inTex;\n"
- "in vec2 varTexCoord;\n"
- "out vec4 fragColor;\n"
- "void main()\n"
- "{\n"
- " fragColor = texture(inTex, varTexCoord);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *computeShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "#extension GL_ARB_compute_shader : enable\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 430\n"
- "#extension GL_ARB_compute_shader : enable\n";
- }
-
- prog += "// Set workgroup layout;\n"
- "layout (local_size_x =16, local_size_y = 16) in;\n\n"
- "void main()\n"
- "{\n"
- " // do nothing\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *computeWorkShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "#extension GL_ARB_compute_shader : enable\n"
- "precision highp float;\n"
- "precision highp int;\n"
- "precision mediump image2D;\n";
- } else {
- prog += "#version 430\n"
- "#extension GL_ARB_compute_shader : enable\n";
- }
-
- prog += "// Set workgroup layout;\n"
- "layout (local_size_x = 32, local_size_y = 32) in;\n\n"
- "layout (rgba8, binding = 2) uniform image2D outputImage;\n\n"
- "void main()\n"
- "{\n"
- " imageStore( outputImage, ivec2(gl_GlobalInvocationID.xy), vec4( "
- "vec2(gl_LocalInvocationID.xy) / vec2(gl_WorkGroupSize.xy), 0.0, 1.0 ) );\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *computeStorageShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "#extension GL_ARB_compute_shader : enable\n"
- "#extension GL_ARB_shader_storage_buffer_object : enable\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 430\n"
- "#extension GL_ARB_compute_shader : enable\n"
- "#extension GL_ARB_shader_storage_buffer_object : enable\n";
- }
-
- prog += "layout( std140, binding=4 ) buffer Pos\n"
- "{\n"
- " vec4 Positions[ ]; // array of positions\n"
- "};\n"
- "// Set workgroup layout;\n"
- "layout (local_size_x = 32, local_size_y = 1) in;\n\n"
- "void main()\n"
- "{\n"
- " uint gid = gl_GlobalInvocationID.x;\n"
- " if ( gid < uint(1000) ) {\n"
- " Positions[gid].x = float(gl_GlobalInvocationID.x);\n"
- " }\n"
- "}\n";
-
- return prog.c_str();
-}
-
-struct Vertex
-{
- QT3DSVec3 positions;
- QT3DSVec2 texCoord;
-};
-
-NVRenderTestComputeShader::NVRenderTestComputeShader()
-{
- _curTest = 0;
- _maxColumn = 4;
-}
-
-NVRenderTestComputeShader::~NVRenderTestComputeShader()
-{
-}
-
-bool NVRenderTestComputeShader::isSupported(NVRenderContext *context)
-{
- return context->IsComputeSupported();
-}
-
-////////////////////////////////
-// test for functionality
-////////////////////////////////
-
-inline NVConstDataRef<QT3DSI8> toRef(const char *data)
-{
- size_t len = strlen(data) + 1;
- return NVConstDataRef<QT3DSI8>((const QT3DSI8 *)data, (QT3DSU32)len);
-}
-
-bool NVRenderTestComputeShader::run(NVRenderContext *context, userContextData *pUserData)
-{
- bool success = true;
-
- context->SetRenderTarget(NULL);
- // conpute cell width
- _cellSize = pUserData->winWidth / _maxColumn;
-
- context->SetClearColor(QT3DSVec4(.0f, .0f, .0f, 1.f));
- context->Clear(NVRenderClearFlags(NVRenderClearValues::Color | NVRenderClearValues::Depth));
-
- success &= computeCompile(context, pUserData);
- _curTest++;
- success &= computeWorkgroup(context, pUserData);
- _curTest++;
- success &= computeStorage(context, pUserData);
- _curTest++;
-
- return success;
-}
-
-bool NVRenderTestComputeShader::computeCompile(NVRenderContext *context, userContextData *pUserData)
-{
- static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, -0.9, 0), QT3DSVec2(0, 0) },
- { QT3DSVec3(0.9, -0.9, 0), QT3DSVec2(0, 0) },
- { QT3DSVec3(0.0, 0.9, 0), QT3DSVec2(0, 0) } };
-
- qt3ds::QT3DSVec3 color(0.0, 1.0, 0.0);
-
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- NVScopedRefCounted<NVRenderIndexBuffer> mIndexBuffer;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- NVRenderVertFragCompilationResult compResult = context->CompileSource(
- "NVRenderTestComputeShader shader", toRef(vertShader(vtxProg, isGLESContext(context))),
- toRef(fragShader(frgProg, isGLESContext(context))));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- };
-
- QT3DSU32 bufSize = 3 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 5 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestComputeShader: Failed to create vertex buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 1));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler = context->CreateInputAssembler(
- mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), mIndexBuffer.mPtr,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1), NVRenderDrawMode::Triangles);
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestComputeShader: Failed to create input assembler";
- return false;
- }
-
- // create a compute shader which does nothing just as a compile check
- std::string computeProg;
- NVRenderVertFragCompilationResult computeResult = context->CompileComputeSource(
- "Compute nothing shader", toRef(computeShader(computeProg, isGLESContext(context))));
-
- if (!computeResult.mShader) {
- color.x = 1.0;
- color.y = 0.0;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- compResult.mShader->SetPropertyValue("mat_mvp", mvp);
- // set color
- compResult.mShader->SetPropertyValue("color", color);
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- context->Draw(mInputAssembler->GetPrimitiveType(), 3, 0);
-
- context->SetActiveShader(0);
- compResult.mShader->release();
- if (computeResult.mShader)
- computeResult.mShader->release();
-
- return true;
-}
-
-#define WORKGROUP_SIZE 32
-
-bool NVRenderTestComputeShader::computeWorkgroup(NVRenderContext *context,
- userContextData *pUserData)
-{
- static const Vertex vertexPositions[] = {
- { QT3DSVec3(-0.9, -0.9, 0), QT3DSVec2(0, 0) }, { QT3DSVec3(0.9, 0.9, 0), QT3DSVec2(1, 1) },
- { QT3DSVec3(-0.9, 0.9, 0), QT3DSVec2(0, 1) }, { QT3DSVec3(-0.9, -0.9, 0), QT3DSVec2(0, 0) },
- { QT3DSVec3(0.9, -0.9, 0), QT3DSVec2(1, 0) }, { QT3DSVec3(0.9, 0.9, 0), QT3DSVec2(1, 1) }
- };
-
- qt3ds::QT3DSVec3 color(0.0, 1.0, 0.0);
-
- // create texture
- NVScopedRefCounted<NVRenderTexture2D> mColorTexture;
- mColorTexture = context->CreateTexture2D();
- mColorTexture->SetTextureStorage(1, pUserData->winWidth, pUserData->winHeight,
- NVRenderTextureFormats::RGBA8);
- // create a image buffer wrapper
- NVScopedRefCounted<NVRenderImage2D> mColorImage;
- mColorImage = context->CreateImage2D(mColorTexture, NVRenderImageAccessType::Write);
-
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- NVScopedRefCounted<NVRenderIndexBuffer> mIndexBuffer;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- NVRenderVertFragCompilationResult compResult = context->CompileSource(
- "NVRenderTestComputeShader shader", toRef(vertTexShader(vtxProg, isGLESContext(context))),
- toRef(fragTexShader(frgProg, isGLESContext(context))));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- NVRenderVertexBufferEntry("attr_uv", NVRenderComponentTypes::QT3DSF32, 2, 12),
- };
-
- QT3DSU32 bufSize = 6 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 5 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestComputeShader: Failed to create vertex buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 2));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler = context->CreateInputAssembler(
- mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), mIndexBuffer.mPtr,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1), NVRenderDrawMode::Triangles);
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestComputeShader: Failed to create input assembler";
- return false;
- }
-
- // create a compute shader which outputs the workgroups as color codes
- std::string computeProg;
- NVRenderVertFragCompilationResult computeResult = context->CompileComputeSource(
- "Compute workgroup shader", toRef(computeWorkShader(computeProg, isGLESContext(context))));
-
- if (!computeResult.mShader) {
- qWarning() << "NVRenderTestComputeShader: Failed to create compute shader";
- return false;
- }
-
- // set program
- context->SetActiveShader(computeResult.mShader);
- NVRenderCachedShaderProperty<NVRenderImage2D *> mOutputImage("outputImage",
- *computeResult.mShader);
- mOutputImage.Set(mColorImage);
- // run compute shader
- context->DispatchCompute(computeResult.mShader, pUserData->winWidth / WORKGROUP_SIZE,
- pUserData->winHeight / WORKGROUP_SIZE, 1);
- NVRenderBufferBarrierFlags flags(NVRenderBufferBarrierValues::ShaderImageAccess);
- // sync
- context->SetMemoryBarrier(flags);
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- compResult.mShader->SetPropertyValue("mat_mvp", mvp);
- // set color
- compResult.mShader->SetPropertyValue("color", color);
- // set texture
- NVRenderCachedShaderProperty<NVRenderTexture2D *> mInputImage("inTex", *compResult.mShader);
- mInputImage.Set(mColorTexture);
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- context->Draw(mInputAssembler->GetPrimitiveType(), 6, 0);
-
- context->SetActiveShader(0);
-
- compResult.mShader->release();
- if (computeResult.mShader)
- computeResult.mShader->release();
-
- return true;
-}
-
-bool NVRenderTestComputeShader::computeStorage(NVRenderContext *context, userContextData *pUserData)
-{
- static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, -0.9, 0), QT3DSVec2(0, 0) },
- { QT3DSVec3(0.9, -0.9, 0), QT3DSVec2(0, 0) },
- { QT3DSVec3(0.0, 0.9, 0), QT3DSVec2(0, 0) } };
-
- qt3ds::QT3DSVec3 color(0.0, 1.0, 0.0);
-
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- NVScopedRefCounted<NVRenderIndexBuffer> mIndexBuffer;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
-
- // create vertex buffer for compute shader usage
- NVScopedRefCounted<NVRenderVertexBuffer> mComputeVertexBuffer;
- QT3DSF32 *storageData = new QT3DSF32[1000 * 4]; // vec 4 in shader program
- NVDataRef<QT3DSU8> storData((QT3DSU8 *)storageData, 1000 * sizeof(QT3DSF32) * 4);
- mComputeVertexBuffer = context->CreateVertexBuffer(
- NVRenderBufferUsageType::Static, 1000 * sizeof(QT3DSF32) * 4, sizeof(QT3DSF32), storData);
- if (!mComputeVertexBuffer) {
- qWarning() << "NVRenderTestComputeShader: Failed to create compute vertex buffer";
- return false;
- }
- // create storage wrapper for vertex buffer
- NVScopedRefCounted<NVRenderStorageBuffer> mComputeStorageBuffer;
- mComputeStorageBuffer =
- context->CreateStorageBuffer("Pos", NVRenderBufferUsageType::Static,
- 1000 * sizeof(QT3DSF32) * 4, storData, mComputeVertexBuffer.mPtr);
- if (!mComputeStorageBuffer) {
- qWarning() << "NVRenderTestComputeShader: Failed to create compute storage buffer";
- return false;
- }
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- NVRenderVertFragCompilationResult compResult = context->CompileSource(
- "NVRenderTestComputeShader shader", toRef(vertShader(vtxProg, isGLESContext(context))),
- toRef(fragShader(frgProg, isGLESContext(context))));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- };
-
- QT3DSU32 bufSize = 3 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 5 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestComputeShader: Failed to create vertex buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 1));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler = context->CreateInputAssembler(
- mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), mIndexBuffer.mPtr,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1), NVRenderDrawMode::Triangles);
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestComputeShader: Failed to create input assembler";
- return false;
- }
-
- // create a compute shader which places id's into the buffer
- std::string computeProg;
- NVRenderVertFragCompilationResult computeResult = context->CompileComputeSource(
- "Compute storage shader", toRef(computeStorageShader(computeProg, isGLESContext(context))));
-
- if (!computeResult.mShader) {
- qWarning() << "NVRenderTestComputeShader: Failed to create compute shader";
- return false;
- }
-
- // set and run compute program
- context->SetActiveShader(computeResult.mShader);
- qt3ds::render::NVRenderCachedShaderBuffer<NVRenderShaderStorageBuffer *> storageBuffer(
- "Pos", *computeResult.mShader);
- storageBuffer.Set();
- // run compute shader
- context->DispatchCompute(computeResult.mShader, 1024 / WORKGROUP_SIZE, 1, 1);
- NVRenderBufferBarrierFlags flags(NVRenderBufferBarrierValues::ShaderStorage
- | NVRenderBufferBarrierValues::VertexAttribArray);
- // sync
- context->SetMemoryBarrier(flags);
-
- // check content
- bool contentOK = true;
- mComputeVertexBuffer->Bind();
- NVDataRef<QT3DSU8> pData = mComputeVertexBuffer->MapBuffer();
- QT3DSF32 *fData = (QT3DSF32 *)pData.begin();
- QT3DSU32 size = pData.size() / 4;
- for (QT3DSU32 i = 0, k = 0; i < size; i += 4, k++) {
- if (fData[i] != (float)k)
- contentOK = false;
- }
-
- mComputeVertexBuffer->UnmapBuffer();
-
- if (!contentOK) {
- color.x = 1.0;
- color.y = 0.0;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- compResult.mShader->SetPropertyValue("mat_mvp", mvp);
- // set color
- compResult.mShader->SetPropertyValue("color", color);
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- context->Draw(mInputAssembler->GetPrimitiveType(), 3, 0);
-
- context->SetActiveShader(0);
- compResult.mShader->release();
- if (computeResult.mShader)
- computeResult.mShader->release();
-
- delete storageData;
-
- return true;
-}
-
-////////////////////////////////
-// performance test
-////////////////////////////////
-bool NVRenderTestComputeShader::runPerformance(NVRenderContext *context, userContextData *pUserData)
-{
- return true;
-}
-
-////////////////////////////////
-// test cleanup
-////////////////////////////////
-void NVRenderTestComputeShader::cleanup(NVRenderContext *context, userContextData *pUserData)
-{
- context->SetClearColor(QT3DSVec4(.0f, .0f, .0f, 0.f));
- // dummy
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-}
diff --git a/tests/auto/runtime/compute/Qt3DSRenderTestComputeShader.h b/tests/auto/runtime/compute/Qt3DSRenderTestComputeShader.h
deleted file mode 100644
index 826fb9c7..00000000
--- a/tests/auto/runtime/compute/Qt3DSRenderTestComputeShader.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-#ifndef QT3DS_RENDER_TEST_COMPUTE_SHADER_H
-#define QT3DS_RENDER_TEST_COMPUTE_SHADER_H
-
-#include "../Qt3DSRenderTestBase.h"
-
-namespace qt3ds {
-namespace render {
-
- /// This class tests the creation of all kinds of primitives
- class NVRenderTestComputeShader : public NVRenderTestBase
- {
- public:
- NVRenderTestComputeShader();
- ~NVRenderTestComputeShader();
-
- bool isSupported(NVRenderContext *context);
- bool run(NVRenderContext *context, userContextData *pUserData);
- bool runPerformance(NVRenderContext *context, userContextData *pContextData);
- void cleanup(NVRenderContext *context, userContextData *pUserData);
-
- private:
- bool computeCompile(NVRenderContext *context, userContextData *pUserData);
- bool computeWorkgroup(NVRenderContext *context, userContextData *pUserData);
- bool computeStorage(NVRenderContext *context, userContextData *pUserData);
-
- unsigned int _curTest;
- unsigned int _cellSize;
- unsigned int _maxColumn;
- };
-}
-}
-
-#endif
diff --git a/tests/auto/runtime/fbo/Qt3DSRenderTestFboMsaa.cpp b/tests/auto/runtime/fbo/Qt3DSRenderTestFboMsaa.cpp
deleted file mode 100644
index 400cfc51..00000000
--- a/tests/auto/runtime/fbo/Qt3DSRenderTestFboMsaa.cpp
+++ /dev/null
@@ -1,299 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "Qt3DSRenderTestFboMsaa.h"
-#include "../Qt3DSRenderTestMathUtil.h"
-#include "render/Qt3DSRenderShaderProgram.h"
-
-using namespace qt3ds;
-using namespace qt3ds::render;
-
-static const char *PassthroughVertShader()
-{
- return "uniform mat4 mat_mvp;\n"
- "attribute vec3 attr_pos; // Vertex pos\n"
- "void main()\n"
- "{\n"
- " gl_Position = mat_mvp * vec4(attr_pos, 1.0);\n"
- "}\n";
-}
-
-static const char *SimpleFragShader()
-{
- return "#ifdef GL_ES\n"
- "precision mediump float;\n"
- "#endif\n"
- "uniform vec3 color;\n"
- "void main()\n"
- "{\n"
- "gl_FragColor = vec4( color, 1.0);\n"
- "}\n";
-}
-
-struct Vertex
-{
- QT3DSVec3 positions;
-};
-
-static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, -0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) },
- { QT3DSVec3(0.0, 0.9, 0) } };
-
-NVRenderTestFboMsaa::NVRenderTestFboMsaa()
-{
- _curTest = 0;
- _maxColumn = 4;
-}
-
-NVRenderTestFboMsaa::~NVRenderTestFboMsaa()
-{
-}
-
-bool NVRenderTestFboMsaa::isSupported(NVRenderContext *context)
-{
- NVRenderContextType ctxType = context->GetRenderContextType();
- NVRenderContextType nonSupportedFlags(NVRenderContextValues::GL2 | NVRenderContextValues::GLES2
- | NVRenderContextValues::GLES3);
-
- // This is currently only supported on >= GL3 && >= GLES 3.1
- if ((ctxType & nonSupportedFlags))
- return false;
-
- return true;
-}
-
-bool NVRenderTestFboMsaa::run(NVRenderContext *context, userContextData *pUserData)
-{
- if (!setupResolveFbo(context, pUserData))
- return false;
-
- bool success = true;
- // conpute cell width
- _cellSize = pUserData->winWidth / _maxColumn;
-
- context->SetRenderTarget(NULL);
- context->SetClearColor(QT3DSVec4(.0f, .0f, .0f, 1.f));
- context->Clear(NVRenderClearFlags(NVRenderClearValues::Color | NVRenderClearValues::Depth));
-
- success &= simpleMsaaTest(context, pUserData);
- _curTest++;
-
- // cleanup
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-
- return success;
-}
-
-inline NVConstDataRef<QT3DSI8> toRef(const char *data)
-{
- size_t len = strlen(data) + 1;
- return NVConstDataRef<QT3DSI8>((const QT3DSI8 *)data, (QT3DSU32)len);
-}
-
-bool NVRenderTestFboMsaa::renderTriangle(NVRenderContext *context, QT3DSVec3 color)
-{
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- NVScopedRefCounted<NVRenderIndexBuffer> mIndexBuffer;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
-
- // create shaders
- NVRenderVertFragCompilationResult compResult =
- context->CompileSource("NVRenderTestBackendQuery shader", toRef(PassthroughVertShader()),
- toRef(SimpleFragShader()));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- };
-
- QT3DSU32 bufSize = 3 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 3 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestFboMsaa: Failed to create vertex buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 1));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler = context->CreateInputAssembler(
- mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), mIndexBuffer.mPtr,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1));
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestFboMsaa: Failed to create input assembler";
- return false;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- compResult.mShader->SetPropertyValue("mat_mvp", mvp);
- // set color
- compResult.mShader->SetPropertyValue("color", color);
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- context->Draw(NVRenderDrawMode::Triangles, 3, 0);
-
- context->SetActiveShader(0);
- compResult.mShader->release();
-
- return true;
-}
-
-bool NVRenderTestFboMsaa::setupResolveFbo(NVRenderContext *context, userContextData *pUserData)
-{
- // color texture
- m_ResolveColorTexture = context->CreateTexture2D();
- m_ResolveColorTexture->SetTextureData(NVDataRef<QT3DSU8>(), 0, pUserData->winWidth,
- pUserData->winHeight, NVRenderTextureFormats::RGBA8);
- // depth texture
- m_ResolveDepthTexture = context->CreateTexture2D();
- m_ResolveDepthTexture->SetTextureData(NVDataRef<QT3DSU8>(), 0, pUserData->winWidth,
- pUserData->winHeight, NVRenderTextureFormats::Depth24);
- // create resolve FBO
- m_ResolveFbo = context->CreateFrameBuffer();
- m_ResolveFbo->Attach(NVRenderFrameBufferAttachments::Color0,
- NVRenderTextureOrRenderBuffer(*m_ResolveColorTexture));
- m_ResolveFbo->Attach(NVRenderFrameBufferAttachments::Depth,
- NVRenderTextureOrRenderBuffer(*m_ResolveDepthTexture));
-
- return m_ResolveFbo->IsComplete();
-}
-
-bool NVRenderTestFboMsaa::simpleMsaaTest(NVRenderContext *context, userContextData *pUserData)
-{
- // create a multisampled FBO
- NVScopedRefCounted<NVRenderFrameBuffer> msFBO;
- NVScopedRefCounted<NVRenderTexture2D> msColorTexture;
- NVScopedRefCounted<NVRenderTexture2D> msDepth24Texture;
-
- msColorTexture = context->CreateTexture2D();
- msColorTexture->SetTextureDataMultisample(4, pUserData->winWidth, pUserData->winHeight,
- NVRenderTextureFormats::RGBA8);
- msDepth24Texture = context->CreateTexture2D();
- msDepth24Texture->SetTextureDataMultisample(4, pUserData->winWidth, pUserData->winHeight,
- NVRenderTextureFormats::Depth24);
-
- msFBO = context->CreateFrameBuffer();
- msFBO->Attach(NVRenderFrameBufferAttachments::Color0,
- NVRenderTextureOrRenderBuffer(*msColorTexture),
- NVRenderTextureTargetType::Texture2D_MS);
- msFBO->Attach(NVRenderFrameBufferAttachments::Depth,
- NVRenderTextureOrRenderBuffer(*msDepth24Texture),
- NVRenderTextureTargetType::Texture2D_MS);
-
- if (!msFBO->IsComplete())
- return false;
-
- // clear and draw to multisampled buffer
- context->SetRenderTarget(msFBO);
- context->SetMultisampleEnabled(true);
- context->SetClearColor(QT3DSVec4(.0f, .0f, .0f, 1.f));
- context->Clear(NVRenderClearFlags(NVRenderClearValues::Color | NVRenderClearValues::Depth));
- renderTriangle(context, qt3ds::QT3DSVec3(0.0, 1.0, 0.0));
- context->SetMultisampleEnabled(false);
-
- // do resolve blit
- // first we must setup the render target
- context->SetRenderTarget(m_ResolveFbo);
- // second setup read target
- context->SetReadTarget(msFBO);
- context->SetReadBuffer(NVReadFaces::Color0);
-
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-
- context->BlitFramebuffer(0, 0, pUserData->winWidth, pUserData->winHeight, 0, 0,
- pUserData->winWidth, pUserData->winHeight, NVRenderClearValues::Color,
- NVRenderTextureMagnifyingOp::Nearest);
-
- // copy to default buffer
- // first we must setup the render target
- context->SetRenderTarget(NULL);
- // second setup read target
- context->SetReadTarget(m_ResolveFbo);
- context->SetReadBuffer(NVReadFaces::Color0);
-
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-
- context->BlitFramebuffer(0, 0, pUserData->winWidth, pUserData->winHeight, 0, 0,
- pUserData->winWidth, pUserData->winHeight, NVRenderClearValues::Color,
- NVRenderTextureMagnifyingOp::Nearest);
-
- context->SetReadTarget(NULL);
-
- return true;
-}
-
-////////////////////////////////
-// performance test
-////////////////////////////////
-bool NVRenderTestFboMsaa::runPerformance(NVRenderContext *context, userContextData *pUserData)
-{
- return true;
-}
-
-////////////////////////////////
-// test cleanup
-////////////////////////////////
-void NVRenderTestFboMsaa::cleanup(NVRenderContext *context, userContextData *pUserData)
-{
- m_ResolveColorTexture->release();
- m_ResolveDepthTexture->release();
- m_ResolveFbo->release();
-
- context->SetClearColor(QT3DSVec4(0.0f, .0f, .0f, 0.f));
- // dummy
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-
- context->SetRenderTarget(NULL);
-}
diff --git a/tests/auto/runtime/fbo/Qt3DSRenderTestFboMsaa.h b/tests/auto/runtime/fbo/Qt3DSRenderTestFboMsaa.h
deleted file mode 100644
index bf9ed842..00000000
--- a/tests/auto/runtime/fbo/Qt3DSRenderTestFboMsaa.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2014 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-#ifndef QT3DS_RENDER_TEST_FBO_MSAA_H
-#define QT3DS_RENDER_TEST_FBO_MSAA_H
-
-#include "../Qt3DSRenderTestBase.h"
-
-namespace qt3ds {
-namespace render {
-
- /// This class tests the creation of all kinds of primitives
- class NVRenderTestFboMsaa : public NVRenderTestBase
- {
- public:
- NVRenderTestFboMsaa();
- ~NVRenderTestFboMsaa();
-
- bool isSupported(NVRenderContext *context);
- bool run(NVRenderContext *context, userContextData *pUserData);
- bool runPerformance(NVRenderContext *context, userContextData *pContextData);
- void cleanup(NVRenderContext *context, userContextData *pUserData);
-
- private:
- bool setupResolveFbo(NVRenderContext *context, userContextData *pUserData);
- bool renderTriangle(NVRenderContext *context, QT3DSVec3 color);
-
- // tests
- bool simpleMsaaTest(NVRenderContext *context, userContextData *pUserData);
-
- NVScopedRefCounted<NVRenderFrameBuffer> m_ResolveFbo;
- NVScopedRefCounted<NVRenderTexture2D> m_ResolveColorTexture;
- NVScopedRefCounted<NVRenderTexture2D> m_ResolveDepthTexture;
-
- unsigned int _curTest;
- unsigned int _cellSize;
- unsigned int _maxColumn;
- };
-}
-}
-
-#endif // QT3DS_RENDER_TEST_FBO_MSAA_H
diff --git a/tests/auto/runtime/geometry/Qt3DSRenderTestGeometryShader.cpp b/tests/auto/runtime/geometry/Qt3DSRenderTestGeometryShader.cpp
deleted file mode 100644
index 1a1c34c5..00000000
--- a/tests/auto/runtime/geometry/Qt3DSRenderTestGeometryShader.cpp
+++ /dev/null
@@ -1,390 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "Qt3DSRenderTestGeometryShader.h"
-#include "../Qt3DSRenderTestMathUtil.h"
-#include "render/Qt3DSRenderImageTexture.h"
-#include "render/Qt3DSRenderShaderProgram.h"
-
-#include <string>
-
-using namespace qt3ds;
-using namespace qt3ds::render;
-
-static const char *vertShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 400\n";
- }
-
- prog += "uniform mat4 mat_mvp;\n"
- "in vec3 attr_pos; // Vertex pos\n"
- "void main()\n"
- "{\n"
- " gl_Position = vec4(attr_pos, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *fragShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 400\n";
- }
-
- prog += "uniform vec3 color;\n"
- "out vec4 fragColor;\n"
- "void main()\n"
- "{\n"
- " fragColor = vec4(color, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *geometryShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "#extension GL_EXT_geometry_shader : enable\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 430\n";
- }
-
- // pass through shader
- prog += "layout (triangles) in;\n"
- "layout (triangle_strip, max_vertices = 3) out;\n"
- "void main()\n"
- "{\n"
- " int i;\n"
- " for(i=0; i<gl_in.length(); i++)\n"
- " {\n"
- " gl_Position = gl_in[i].gl_Position;\n"
- " EmitVertex();\n"
- " }\n"
- " EndPrimitive();\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *wireframeShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "#extension GL_EXT_geometry_shader : enable\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 430\n";
- }
-
- // convert to wireframe
- prog += "layout (triangles) in;\n"
- "layout (line_strip, max_vertices = 4) out;\n"
- "void main()\n"
- "{\n"
- " int i;\n"
- " for(i=0; i<gl_in.length(); i++)\n"
- " {\n"
- " gl_Position = gl_in[i].gl_Position;\n"
- " EmitVertex();\n"
- " }\n"
- " gl_Position = gl_in[0].gl_Position;\n"
- " EmitVertex();\n"
- " EndPrimitive();\n"
- "}\n";
-
- return prog.c_str();
-}
-
-struct Vertex
-{
- QT3DSVec3 positions;
- QT3DSVec2 texCoord;
-};
-
-NVRenderTestGeometryShader::NVRenderTestGeometryShader()
-{
- _curTest = 0;
- _maxColumn = 4;
-}
-
-NVRenderTestGeometryShader::~NVRenderTestGeometryShader()
-{
-}
-
-bool NVRenderTestGeometryShader::isSupported(NVRenderContext *context)
-{
- return context->IsGeometryStageSupported();
-}
-
-////////////////////////////////
-// test for functionality
-////////////////////////////////
-
-inline NVConstDataRef<QT3DSI8> toRef(const char *data)
-{
- size_t len = strlen(data) + 1;
- return NVConstDataRef<QT3DSI8>((const QT3DSI8 *)data, (QT3DSU32)len);
-}
-
-bool NVRenderTestGeometryShader::run(NVRenderContext *context, userContextData *pUserData)
-{
- bool success = true;
-
- context->SetRenderTarget(NULL);
- // conpute cell width
- _cellSize = pUserData->winWidth / _maxColumn;
-
- context->SetClearColor(QT3DSVec4(.0f, .0f, .0f, 1.f));
- context->Clear(NVRenderClearFlags(NVRenderClearValues::Color | NVRenderClearValues::Depth));
-
- success &= geometryCompile(context, pUserData);
- _curTest++;
- success &= wireframe(context, pUserData);
- _curTest++;
-
- return success;
-}
-
-bool NVRenderTestGeometryShader::geometryCompile(NVRenderContext *context,
- userContextData *pUserData)
-{
- static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, -0.9, 0), QT3DSVec2(0, 0) },
- { QT3DSVec3(0.9, -0.9, 0), QT3DSVec2(0, 0) },
- { QT3DSVec3(0.0, 0.9, 0), QT3DSVec2(0, 0) } };
-
- qt3ds::QT3DSVec3 color(0.0, 1.0, 0.0);
-
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- NVScopedRefCounted<NVRenderIndexBuffer> mIndexBuffer;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- NVRenderVertFragCompilationResult compResult = context->CompileSource(
- "NVRenderTestGeometryShader shader", toRef(vertShader(vtxProg, isGLESContext(context))),
- toRef(fragShader(frgProg, isGLESContext(context))));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- };
-
- QT3DSU32 bufSize = 3 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 5 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestGeometryShader: Failed to create vertex buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 1));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler = context->CreateInputAssembler(
- mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), mIndexBuffer.mPtr,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1), NVRenderDrawMode::Triangles);
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestGeometryShader: Failed to create input assembler";
- return false;
- }
-
- // create a geometry shader which does nothing just as a compile check
- std::string geomProg;
- std::string vtxProgDummy;
- std::string frgProgDummy;
- NVRenderVertFragCompilationResult geomResult = context->CompileSource(
- "NVRenderTestGeometryShader shader",
- toRef(vertShader(vtxProgDummy, isGLESContext(context))),
- toRef(fragShader(frgProgDummy, isGLESContext(context))), NVConstDataRef<QT3DSI8>(),
- NVConstDataRef<QT3DSI8>(), toRef(geometryShader(geomProg, isGLESContext(context))));
-
- if (!geomResult.mShader) {
- color.x = 1.0;
- color.y = 0.0;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- compResult.mShader->SetPropertyValue("mat_mvp", mvp);
- // set color
- compResult.mShader->SetPropertyValue("color", color);
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- context->Draw(mInputAssembler->GetPrimitiveType(), 3, 0);
-
- context->SetActiveShader(0);
- compResult.mShader->release();
- if (geomResult.mShader)
- geomResult.mShader->release();
-
- return true;
-}
-
-bool NVRenderTestGeometryShader::wireframe(NVRenderContext *context, userContextData *pUserData)
-{
- static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, -0.9, 0), QT3DSVec2(0, 0) },
- { QT3DSVec3(0.9, -0.9, 0), QT3DSVec2(0, 0) },
- { QT3DSVec3(0.0, 0.9, 0), QT3DSVec2(0, 0) } };
-
- qt3ds::QT3DSVec3 color(0.0, 1.0, 0.0);
-
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- NVScopedRefCounted<NVRenderIndexBuffer> mIndexBuffer;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
-
- // create shaders
- // geometry shader converts primitives from triangles to lines
- std::string vtxProg;
- std::string frgProg;
- std::string geomProg;
- NVRenderVertFragCompilationResult compResult = context->CompileSource(
- "NVRenderTestGeometryShader shader", toRef(vertShader(vtxProg, isGLESContext(context))),
- toRef(fragShader(frgProg, isGLESContext(context))), NVConstDataRef<QT3DSI8>(),
- NVConstDataRef<QT3DSI8>(), toRef(wireframeShader(geomProg, isGLESContext(context))));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- };
-
- QT3DSU32 bufSize = 3 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 5 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestGeometryShader: Failed to create vertex buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 1));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler = context->CreateInputAssembler(
- mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), mIndexBuffer.mPtr,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1), NVRenderDrawMode::Triangles);
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestGeometryShader: Failed to create input assembler";
- return false;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- compResult.mShader->SetPropertyValue("mat_mvp", mvp);
- // set color
- compResult.mShader->SetPropertyValue("color", color);
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- context->Draw(mInputAssembler->GetPrimitiveType(), 3, 0);
-
- context->SetActiveShader(0);
- compResult.mShader->release();
-
- return true;
-}
-
-////////////////////////////////
-// performance test
-////////////////////////////////
-bool NVRenderTestGeometryShader::runPerformance(NVRenderContext *context,
- userContextData *pUserData)
-{
- return true;
-}
-
-////////////////////////////////
-// test cleanup
-////////////////////////////////
-void NVRenderTestGeometryShader::cleanup(NVRenderContext *context, userContextData *pUserData)
-{
- context->SetClearColor(QT3DSVec4(.0f, .0f, .0f, 0.f));
- // dummy
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-}
diff --git a/tests/auto/runtime/geometry/Qt3DSRenderTestGeometryShader.h b/tests/auto/runtime/geometry/Qt3DSRenderTestGeometryShader.h
deleted file mode 100644
index 139a7e26..00000000
--- a/tests/auto/runtime/geometry/Qt3DSRenderTestGeometryShader.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-#ifndef QT3DS_RENDER_TEST_GEOMETRY_SHADER_H
-#define QT3DS_RENDER_TEST_GEOMETRY_SHADER_H
-
-#include "../Qt3DSRenderTestBase.h"
-
-namespace qt3ds {
-namespace render {
-
- /// This class tests the creation of all kinds of primitives
- class NVRenderTestGeometryShader : public NVRenderTestBase
- {
- public:
- NVRenderTestGeometryShader();
- ~NVRenderTestGeometryShader();
-
- bool isSupported(NVRenderContext *context);
- bool run(NVRenderContext *context, userContextData *pUserData);
- bool runPerformance(NVRenderContext *context, userContextData *pContextData);
- void cleanup(NVRenderContext *context, userContextData *pUserData);
-
- private:
- bool geometryCompile(NVRenderContext *context, userContextData *pUserData);
- bool wireframe(NVRenderContext *context, userContextData *pUserData);
-
- unsigned int _curTest;
- unsigned int _cellSize;
- unsigned int _maxColumn;
- };
-}
-}
-
-#endif
diff --git a/tests/auto/runtime/geometry/Qt3DSRenderTestOcclusionQuery.cpp b/tests/auto/runtime/geometry/Qt3DSRenderTestOcclusionQuery.cpp
deleted file mode 100644
index 1bb0b160..00000000
--- a/tests/auto/runtime/geometry/Qt3DSRenderTestOcclusionQuery.cpp
+++ /dev/null
@@ -1,367 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "Qt3DSRenderTestOcclusionQuery.h"
-#include "../Qt3DSRenderTestMathUtil.h"
-#include "render/Qt3DSRenderShaderProgram.h"
-#include "render/Qt3DSRenderOcclusionQuery.h"
-
-#include <string>
-
-using namespace qt3ds;
-using namespace qt3ds::render;
-
-static const char *vertShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 300 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 330\n";
- }
-
- prog += "uniform mat4 mat_mvp;\n"
- "in vec3 attr_pos; // Vertex pos\n"
- "void main()\n"
- "{\n"
- " gl_Position = mat_mvp * vec4(attr_pos, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *fragShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 300 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 330\n";
- }
-
- prog += "uniform vec3 color;\n"
- "out vec4 fragColor;\n"
- "void main()\n"
- "{\n"
- " fragColor = vec4(color, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-struct Vertex
-{
- QT3DSVec3 positions;
-};
-
-static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, 0.9, 0) }, { QT3DSVec3(-0.9, -0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) }, { QT3DSVec3(-0.9, 0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) }, { QT3DSVec3(0.9, 0.9, 0) } };
-
-static const Vertex largeQuadPositions[] = { { QT3DSVec3(-0.7, 0.7, 0) }, { QT3DSVec3(-0.7, -0.7, 0) },
- { QT3DSVec3(0.7, -0.7, 0) }, { QT3DSVec3(-0.7, 0.7, 0) },
- { QT3DSVec3(0.7, -0.7, 0) }, { QT3DSVec3(0.7, 0.7, 0) } };
-
-static const Vertex smallQuadPositions[] = { { QT3DSVec3(-0.5, 0.5, 0) }, { QT3DSVec3(-0.5, -0.5, 0) },
- { QT3DSVec3(0.5, -0.5, 0) }, { QT3DSVec3(-0.5, 0.5, 0) },
- { QT3DSVec3(0.5, -0.5, 0) }, { QT3DSVec3(0.5, 0.5, 0) } };
-
-NVRenderTestOcclusionQuery::NVRenderTestOcclusionQuery()
-{
- _curTest = 0;
- _maxColumn = 4;
-}
-
-NVRenderTestOcclusionQuery::~NVRenderTestOcclusionQuery()
-{
-}
-
-bool NVRenderTestOcclusionQuery::isSupported(NVRenderContext *context)
-{
- return context->IsSampleQuerySupported();
-}
-
-////////////////////////////////
-// test for functionality
-////////////////////////////////
-
-inline NVConstDataRef<QT3DSI8> toRef(const char *data)
-{
- size_t len = strlen(data) + 1;
- return NVConstDataRef<QT3DSI8>((const QT3DSI8 *)data, (QT3DSU32)len);
-}
-
-bool NVRenderTestOcclusionQuery::run(NVRenderContext *context, userContextData *pUserData)
-{
- bool success = true;
- // conpute cell width
- _cellSize = pUserData->winWidth / _maxColumn;
-
- context->SetClearColor(QT3DSVec4(.0f, .0f, .0f, 1.f));
- context->Clear(NVRenderClearFlags(NVRenderClearValues::Color | NVRenderClearValues::Depth));
-
- success &= occlusionPassTest(context, pUserData);
- _curTest++;
- success &= occlusionFailTest(context, pUserData);
- _curTest++;
-
- // cleanup
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-
- return success;
-}
-
-bool NVRenderTestOcclusionQuery::renderQuad(NVRenderContext *context, userContextData *pUserData,
- QT3DSVec3 color)
-{
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- NVRenderVertFragCompilationResult compResult = context->CompileSource(
- "NVRenderTestOcclusionQuery shader", toRef(vertShader(vtxProg, isGLESContext(context))),
- toRef(fragShader(frgProg, isGLESContext(context))));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- };
-
- QT3DSU32 bufSize = 6 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 3 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestOcclusionQuery: Failed to create vertex buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 1));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler =
- context->CreateInputAssembler(mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), NULL,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1));
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestOcclusionQuery: Failed to create input assembler";
- return false;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- compResult.mShader->SetPropertyValue("mat_mvp", mvp);
- // set color
- compResult.mShader->SetPropertyValue("color", color);
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- context->Draw(NVRenderDrawMode::Triangles, 6, 0);
-
- context->SetActiveShader(0);
- compResult.mShader->release();
-
- return true;
-}
-
-void NVRenderTestOcclusionQuery::renderPrim(NVRenderContext *context, userContextData *pUserData,
- void *pData, float zOffset, QT3DSVec3 color,
- NVRenderOcclusionQuery *pQuery)
-{
- NVScopedRefCounted<NVRenderVertexBuffer> mVB;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mIA;
- Vertex *pVtxData = (Vertex *)pData;
- QT3DSMat44 proj = QT3DSMat44::createIdentity();
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&proj, -1, 1, -1, 1, -10, 10);
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- NVRenderVertFragCompilationResult compResult = context->CompileSource(
- "NVRenderTestOcclusionQuery shader", toRef(vertShader(vtxProg, isGLESContext(context))),
- toRef(fragShader(frgProg, isGLESContext(context))));
- if (!compResult.mShader) {
- return;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- };
-
- QT3DSU32 bufSize = 6 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertDataSmall((QT3DSU8 *)pVtxData, bufSize);
- mVB = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize, 3 * sizeof(QT3DSF32),
- vertDataSmall);
- if (!mVB)
- qWarning() << "NVRenderTestOcclusionQuery: Failed to create vertex buffer";
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 1));
- // create input Assembler
- QT3DSU32 strides = mVB->GetStride();
- QT3DSU32 offsets = 0;
- mIA = context->CreateInputAssembler(mAttribLayout, toConstDataRef(&mVB.mPtr, 1), NULL,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1));
- if (!mVB) {
- qWarning() << "NVRenderTestOcclusionQuery: Failed to create input assembler";
- return;
- }
-
- // make input assembler active
- context->SetInputAssembler(mIA);
- // setup translation
- QT3DSMat44 transZ;
- NvRenderTestMatrixTranslation(&transZ, 0.0, 0.0, zOffset);
- mvp = transZ * proj;
-
- // set program
- context->SetActiveShader(compResult.mShader);
- compResult.mShader->SetPropertyValue("mat_mvp", mvp);
- // set color
- compResult.mShader->SetPropertyValue("color", color);
-
- // start query
- if (pQuery)
- pQuery->Begin();
-
- context->Draw(NVRenderDrawMode::Triangles, 6, 0);
-
- // end query
- if (pQuery)
- pQuery->End();
-
- context->SetActiveShader(0);
- compResult.mShader->release();
-}
-
-bool NVRenderTestOcclusionQuery::occlusionPassTest(NVRenderContext *context,
- userContextData *pUserData)
-{
- NVScopedRefCounted<NVRenderOcclusionQuery> pQuery = context->CreateOcclusionQuery();
-
- renderPrim(context, pUserData, (void *)largeQuadPositions, 0.1, QT3DSVec3(0.0, 0.0, 1.0), NULL);
- // this quad should be covered by the previous one
- renderPrim(context, pUserData, (void *)smallQuadPositions, 0.2, QT3DSVec3(1.0, 1.0, 0.0), pQuery);
- // check visibility
- QT3DSU32 result = 0;
- pQuery->GetResult(&result);
-
- QT3DSVec3 color(0.0, 0.0, 0.0);
- if (result)
- color.x = 1.0; // wrong
- else
- color.y = 1.0; // right
-
- renderQuad(context, pUserData, color);
-
- return (result == 0);
-}
-
-bool NVRenderTestOcclusionQuery::occlusionFailTest(NVRenderContext *context,
- userContextData *pUserData)
-{
- NVScopedRefCounted<NVRenderOcclusionQuery> pQuery = context->CreateOcclusionQuery();
-
- renderPrim(context, pUserData, (void *)largeQuadPositions, 0.2, QT3DSVec3(0.0, 0.0, 1.0), NULL);
- // this quad should be visible by the previous one
- renderPrim(context, pUserData, (void *)smallQuadPositions, 0.1, QT3DSVec3(1.0, 1.0, 0.0), pQuery);
- // check visibility
- QT3DSU32 result = 0;
- pQuery->GetResult(&result);
-
- QT3DSVec3 color(0.0, 0.0, 0.0);
- if (result == 0)
- color.x = 1.0; // wrong
- else
- color.y = 1.0; // right
-
- renderQuad(context, pUserData, color);
-
- return (result == 1);
-}
-
-////////////////////////////////
-// performance test
-////////////////////////////////
-bool NVRenderTestOcclusionQuery::runPerformance(NVRenderContext *context,
- userContextData *pUserData)
-{
- return true;
-}
-
-////////////////////////////////
-// test cleanup
-////////////////////////////////
-void NVRenderTestOcclusionQuery::cleanup(NVRenderContext *context, userContextData *pUserData)
-{
- context->SetClearColor(QT3DSVec4(0.0f, .0f, .0f, 0.f));
- // dummy
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-}
diff --git a/tests/auto/runtime/geometry/Qt3DSRenderTestOcclusionQuery.h b/tests/auto/runtime/geometry/Qt3DSRenderTestOcclusionQuery.h
deleted file mode 100644
index d540dadf..00000000
--- a/tests/auto/runtime/geometry/Qt3DSRenderTestOcclusionQuery.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2014 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-#ifndef QT3DS_RENDER_TEST_OCCLUSION_QUERY_H
-#define QT3DS_RENDER_TEST_OCCLUSION_QUERY_H
-
-#include "../Qt3DSRenderTestBase.h"
-
-namespace qt3ds {
-namespace render {
-
- class NVRenderOcclusionQuery;
-
- /// This class tests the creation of all kinds of primitives
- class NVRenderTestOcclusionQuery : public NVRenderTestBase
- {
- public:
- NVRenderTestOcclusionQuery();
- ~NVRenderTestOcclusionQuery();
-
- bool isSupported(NVRenderContext *context);
- bool run(NVRenderContext *context, userContextData *pUserData);
- bool runPerformance(NVRenderContext *context, userContextData *pContextData);
- void cleanup(NVRenderContext *context, userContextData *pUserData);
-
- private:
- bool occlusionPassTest(NVRenderContext *context, userContextData *pUserData);
- bool occlusionFailTest(NVRenderContext *context, userContextData *pUserData);
-
- bool renderQuad(NVRenderContext *context, userContextData *pUserData, QT3DSVec3 color);
- void renderPrim(NVRenderContext *context, userContextData *pUserData, void *pData, float z,
- QT3DSVec3 color, NVRenderOcclusionQuery *pQuery);
-
- unsigned int _curTest;
- unsigned int _cellSize;
- unsigned int _maxColumn;
- };
-}
-}
-
-#endif // QT3DS_RENDER_TEST_OCCLUSION_QUERY_H
diff --git a/tests/auto/runtime/geometry/Qt3DSRenderTestTessellation.cpp b/tests/auto/runtime/geometry/Qt3DSRenderTestTessellation.cpp
deleted file mode 100644
index f2724a4a..00000000
--- a/tests/auto/runtime/geometry/Qt3DSRenderTestTessellation.cpp
+++ /dev/null
@@ -1,560 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "Qt3DSRenderTestTessellation.h"
-#include "../Qt3DSRenderTestMathUtil.h"
-#include "render/Qt3DSRenderShaderProgram.h"
-#include "render/backends/gl/Qt3DSOpenGLUtil.h"
-
-#include <string>
-
-using namespace qt3ds;
-using namespace qt3ds::render;
-
-static const char *vertShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 400\n";
- }
-
- prog += "uniform mat4 mat_mvp;\n"
- "in vec3 attr_pos; // Vertex pos\n"
- "void main()\n"
- "{\n"
- " gl_Position = vec4(attr_pos, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *vertPhongShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 400\n";
- }
-
- prog += "uniform mat4 mat_mvp;\n"
- "in vec3 attr_pos; // Vertex pos\n"
- "in vec3 attr_norm; // normal pos\n"
- "out vec3 ctNorm; // output normal control patch\n"
- "void main()\n"
- "{\n"
- " ctNorm = attr_norm;\n"
- " gl_Position = vec4(attr_pos, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *fragShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 400\n";
- }
-
- prog += "uniform vec3 color;\n"
- "out vec4 fragColor;\n"
- "void main()\n"
- "{\n"
- " fragColor = vec4(color, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *fragPhongShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 400\n";
- }
-
- prog += "uniform vec3 color;\n"
- "in vec3 normWorld;\n"
- "out vec4 fragColor;\n"
- "void main()\n"
- "{\n"
- " fragColor = vec4(color, 1.0);\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *tessControlShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "#extension GL_EXT_tessellation_shader : enable\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 400\n";
- }
-
- prog += "// number of CPs in patch\n"
- "layout (vertices = 3) out;\n"
- "uniform float tessLevelInner; // controlled by keyboard buttons\n"
- "uniform float tessLevelOuter; // controlled by keyboard buttons\n"
- "void main () {\n"
- "gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;\n"
- "// Calculate the tessellation levels\n"
- "gl_TessLevelInner[0] = tessLevelInner; // number of nested primitives to generate\n"
- "gl_TessLevelOuter[0] = tessLevelOuter; // times to subdivide first side\n"
- "gl_TessLevelOuter[1] = tessLevelOuter; // times to subdivide second side\n"
- "gl_TessLevelOuter[2] = tessLevelOuter; // times to subdivide third side\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *tessPhongControlShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "#extension GL_EXT_tessellation_shader : enable\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 400\n";
- }
-
- prog +=
- "// number of CPs in patch\n"
- "layout (vertices = 3) out;\n"
- "// phong tessellation per patch data\n"
- "struct PhongTessPatch {\n"
- " float projIJ;\n"
- " float projJK;\n"
- " float projIK;\n"
- "};\n"
- "in vec3 ctNorm[]; // control point normal\n"
- "out vec3 normObj[]; // output normal pos\n"
- "uniform float tessLevels;\n"
- "uniform float tessBlend;\n"
- "out PhongTessPatch tcTessPatch[3];\n"
- "float PIi(int i, vec3 q)\n"
- "{\n"
- " vec3 q_minus_p = q - gl_in[i].gl_Position.xyz;\n"
- " return q[gl_InvocationID] - dot(q_minus_p, ctNorm[i]) * ctNorm[i][gl_InvocationID];\n"
- "}\n"
- "void main () {\n"
- " // path through data\n"
- " gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;\n"
- " normObj[gl_InvocationID] = ctNorm[gl_InvocationID];\n"
- " // compute projections separate for each xyz component\n"
- " tcTessPatch[gl_InvocationID].projIJ = PIi(0, gl_in[1].gl_Position.xyz) + PIi(1, "
- "gl_in[0].gl_Position.xyz);\n"
- " tcTessPatch[gl_InvocationID].projJK = PIi(1, gl_in[2].gl_Position.xyz) + PIi(2, "
- "gl_in[1].gl_Position.xyz);\n"
- " tcTessPatch[gl_InvocationID].projIK = PIi(2, gl_in[0].gl_Position.xyz) + PIi(0, "
- "gl_in[2].gl_Position.xyz);\n"
- " // set the tessellation levels\n"
- " gl_TessLevelInner[0] = tessLevels; // number of nested primitives to generate\n"
- " gl_TessLevelOuter[gl_InvocationID] = tessLevels; // times to subdivide first side\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *tessEvaluationShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "#extension GL_EXT_tessellation_shader : enable\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 400\n";
- }
-
- prog += "// triangles, quads, or isolines\n"
- "layout (triangles, equal_spacing, ccw) in;\n"
- "uniform mat4 mat_mvp;\n"
- "// gl_TessCoord is location within the patch\n"
- "// (barycentric for triangles, UV for quads)\n"
- "void main () {\n"
- "vec4 p0 = gl_TessCoord.x * gl_in[0].gl_Position; // x is one corner\n"
- "vec4 p1 = gl_TessCoord.y * gl_in[1].gl_Position; // y is the 2nd corner\n"
- "vec4 p2 = gl_TessCoord.z * gl_in[2].gl_Position; // z is the 3rd corner (ignore when "
- "using quads)\n"
- "vec4 pos = p0 + p1 + p2;\n"
- "gl_Position = mat_mvp * pos;\n"
- "}\n";
-
- return prog.c_str();
-}
-
-static const char *tessPhongEvaluationShader(std::string &prog, bool binESContext)
-{
- if (binESContext) {
- prog += "#version 310 es\n"
- "#extension GL_EXT_tessellation_shader : enable\n"
- "precision highp float;\n"
- "precision highp int;\n";
- } else {
- prog += "#version 400\n";
- }
-
- prog += "// triangles, quads, or isolines\n"
- "layout (triangles, fractional_odd_spacing, ccw) in;\n"
- "struct PhongTessPatch {\n"
- " float projIJ;\n"
- " float projJK;\n"
- " float projIK;\n"
- "};\n"
- "in vec3 normObj[]; // control point normal\n"
- "out vec3 normWorld; // output normal pos\n"
- "in PhongTessPatch tcTessPatch[];\n"
- "uniform mat4 mat_mvp;\n"
- "uniform float tessBlend;\n"
- "// gl_TessCoord is location within the patch\n"
- "// (barycentric for triangles, UV for quads)\n"
- "void main () {\n"
- " // output normal\n"
- " // pre compute square tesselation coord\n"
- " vec3 tessSquared = gl_TessCoord * gl_TessCoord;\n"
- " vec3 norm = gl_TessCoord.x * normObj[0]\n"
- " + gl_TessCoord.y * normObj[1]\n"
- " + gl_TessCoord.z * normObj[2]; // z is the 3rd corner (ignore when "
- "using quads)\n"
- " // barycentric linear position\n"
- " vec3 linearPos = gl_TessCoord.x * gl_in[0].gl_Position.xyz\n"
- " + gl_TessCoord.y * gl_in[1].gl_Position.xyz\n"
- " + gl_TessCoord.z * gl_in[2].gl_Position.xyz;\n"
- " // projective terms\n"
- " vec3 projJI = vec3(tcTessPatch[0].projIJ, tcTessPatch[1].projIJ, "
- "tcTessPatch[2].projIJ);\n"
- " vec3 projKJ = vec3(tcTessPatch[0].projJK, tcTessPatch[1].projJK, "
- "tcTessPatch[2].projJK);\n"
- " vec3 projIK = vec3(tcTessPatch[0].projIK, tcTessPatch[1].projIK, "
- "tcTessPatch[2].projIK);\n"
- " // phong interpolated position\n"
- " vec3 phongPos = tessSquared.x * gl_in[0].gl_Position.xyz\n"
- " + tessSquared.y * gl_in[1].gl_Position.xyz\n"
- " + tessSquared.z * gl_in[2].gl_Position.xyz\n"
- " + gl_TessCoord.x * gl_TessCoord.y * projJI\n"
- " + gl_TessCoord.y * gl_TessCoord.z * projKJ\n"
- " + gl_TessCoord.z * gl_TessCoord.x * projIK;\n"
- " // final position\n"
- " vec3 finalPos = (1.0-tessBlend)*linearPos + tessBlend*phongPos;\n"
- " gl_Position = mat_mvp * vec4(finalPos, 1.0);\n"
- " normWorld = norm;\n"
- "}\n";
-
- return prog.c_str();
-}
-
-struct Vertex
-{
- QT3DSVec3 positions;
- QT3DSVec3 normals;
-};
-
-NVRenderTestTessellation::NVRenderTestTessellation()
-{
- _curTest = 0;
- _maxColumn = 4;
-}
-
-NVRenderTestTessellation::~NVRenderTestTessellation()
-{
-}
-
-bool NVRenderTestTessellation::isSupported(NVRenderContext *context)
-{
- NVRenderContextType ctxType = context->GetRenderContextType();
- NVRenderContextType nonSupportedFlags(
- NVRenderContextValues::GL2 | NVRenderContextValues::GLES2 | NVRenderContextValues::GL3
- | NVRenderContextValues::GLES3 | NVRenderContextValues::GLES3PLUS);
-
- // This is currently only supported on >= GL4 && >= GLES 3.1
- if ((ctxType & nonSupportedFlags))
- return false;
-
- return true;
-}
-
-////////////////////////////////
-// test for functionality
-////////////////////////////////
-
-inline NVConstDataRef<QT3DSI8> toRef(const char *data)
-{
- size_t len = strlen(data) + 1;
- return NVConstDataRef<QT3DSI8>((const QT3DSI8 *)data, (QT3DSU32)len);
-}
-
-bool NVRenderTestTessellation::run(NVRenderContext *context, userContextData *pUserData)
-{
- bool success = true;
-
- context->SetRenderTarget(NULL);
- // conpute cell width
- _cellSize = pUserData->winWidth / _maxColumn;
-
- context->SetClearColor(QT3DSVec4(.0f, .0f, .0f, 1.f));
- context->Clear(NVRenderClearFlags(NVRenderClearValues::Color | NVRenderClearValues::Depth));
-
- success &= trianglePatches(context, pUserData);
- _curTest++;
- success &= phongPatches(context, pUserData);
- _curTest++;
-
- return success;
-}
-
-bool NVRenderTestTessellation::trianglePatches(NVRenderContext *context, userContextData *pUserData)
-{
- static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, -0.9, 0) },
- { QT3DSVec3(0.9, -0.9, 0) },
- { QT3DSVec3(0.0, 0.9, 0) } };
-
- qt3ds::QT3DSVec3 color(0.0, 1.0, 0.0);
-
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- NVScopedRefCounted<NVRenderIndexBuffer> mIndexBuffer;
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&mvp, -1, 1, -1, 1, -10, 10);
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- std::string tcProg;
- std::string teProg;
- NVRenderVertFragCompilationResult compResult = context->CompileSource(
- "NVRenderTestTessellation shader", toRef(vertShader(vtxProg, isGLESContext(context))),
- toRef(fragShader(frgProg, isGLESContext(context))),
- toRef(tessControlShader(tcProg, isGLESContext(context))),
- toRef(tessEvaluationShader(teProg, isGLESContext(context))));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- };
-
- QT3DSU32 bufSize = 3 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 6 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestFboMsaa: Failed to create vertex buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 1));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler = context->CreateInputAssembler(
- mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), mIndexBuffer.mPtr,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1), NVRenderDrawMode::Patches, 3);
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestFboMsaa: Failed to create input assembler";
- return false;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- compResult.mShader->SetPropertyValue("mat_mvp", mvp);
- // set color
- compResult.mShader->SetPropertyValue("color", color);
- // set tessellation values
- float tessLevelInner = 4.0;
- compResult.mShader->SetPropertyValue("tessLevelInner", tessLevelInner);
- float tessLevelOuter = 4.0;
- compResult.mShader->SetPropertyValue("tessLevelOuter", tessLevelOuter);
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- context->Draw(mInputAssembler->GetPrimitiveType(), 3, 0);
-
- context->SetActiveShader(0);
- compResult.mShader->release();
-
- return true;
-}
-
-bool NVRenderTestTessellation::phongPatches(NVRenderContext *context, userContextData *pUserData)
-{
- QT3DSVec3 n1(-1.0, 0.5, 1.0);
- n1.normalize();
- QT3DSVec3 n2(1.0, 0.5, 1.0);
- n2.normalize();
- QT3DSVec3 n3(0.0, 1.0, 1.0);
- n3.normalize();
- static const Vertex vertexPositions[] = { { QT3DSVec3(-0.9, -0.9, 0.0), n1 },
- { QT3DSVec3(0.9, -0.9, 0.0), n2 },
- { QT3DSVec3(0.0, 0.9, -0.0), n3 } };
-
- qt3ds::QT3DSVec3 color(0.0, 1.0, 0.0);
-
- NVScopedRefCounted<NVRenderVertexBuffer> mVertexBuffer;
- NVScopedRefCounted<NVRenderAttribLayout> mAttribLayout;
- NVScopedRefCounted<NVRenderInputAssembler> mInputAssembler;
- NVScopedRefCounted<NVRenderIndexBuffer> mIndexBuffer;
- QT3DSMat44 p = QT3DSMat44::createIdentity();
- QT3DSMat44 rotX = QT3DSMat44::createIdentity();
- QT3DSMat44 rotY = QT3DSMat44::createIdentity();
- QT3DSMat44 mv = QT3DSMat44::createIdentity();
- QT3DSMat44 mvp = QT3DSMat44::createIdentity();
- NvGl2DemoMatrixOrtho(&p, -1, 1, -1, 1, -10, 10);
- // NvRenderTestMatrixRotY( &rotY, 45.0 );
- // NvRenderTestMatrixRotX( &rotX, 90.0 );
- mv = rotY * rotX;
- mvp = mv * p;
-
- // create shaders
- std::string vtxProg;
- std::string frgProg;
- std::string tcProg;
- std::string teProg;
- NVRenderVertFragCompilationResult compResult = context->CompileSource(
- "NVRenderTestTessellation shader", toRef(vertPhongShader(vtxProg, isGLESContext(context))),
- toRef(fragPhongShader(frgProg, isGLESContext(context))),
- toRef(tessPhongControlShader(tcProg, isGLESContext(context))),
- toRef(tessPhongEvaluationShader(teProg, isGLESContext(context))));
- if (!compResult.mShader) {
- return false;
- }
-
- unsigned int curY = 0;
- unsigned int curX = _curTest;
- if (_curTest >= _maxColumn) {
- curY = (_curTest / _maxColumn);
- curX = (_curTest % _maxColumn);
- }
-
- // set viewport
- context->SetViewport(NVRenderRect(curX * _cellSize, curY * _cellSize, _cellSize, _cellSize));
-
- // this is the layout
- NVRenderVertexBufferEntry entries[] = {
- NVRenderVertexBufferEntry("attr_pos", NVRenderComponentTypes::QT3DSF32, 3, 0),
- NVRenderVertexBufferEntry("attr_norm", NVRenderComponentTypes::QT3DSF32, 3, 12),
- };
-
- QT3DSU32 bufSize = 3 * sizeof(Vertex);
- NVDataRef<QT3DSU8> vertData((QT3DSU8 *)vertexPositions, bufSize);
- mVertexBuffer = context->CreateVertexBuffer(NVRenderBufferUsageType::Static, bufSize,
- 6 * sizeof(QT3DSF32), vertData);
- if (!mVertexBuffer) {
- qWarning() << "NVRenderTestFboMsaa: Failed to create vertex buffer";
- return false;
- }
-
- // create our attribute layout
- mAttribLayout = context->CreateAttributeLayout(toConstDataRef(entries, 2));
- // create input Assembler
- QT3DSU32 strides = mVertexBuffer->GetStride();
- QT3DSU32 offsets = 0;
- mInputAssembler = context->CreateInputAssembler(
- mAttribLayout, toConstDataRef(&mVertexBuffer.mPtr, 1), mIndexBuffer.mPtr,
- toConstDataRef(&strides, 1), toConstDataRef(&offsets, 1), NVRenderDrawMode::Patches, 3);
- if (!mInputAssembler) {
- qWarning() << "NVRenderTestFboMsaa: Failed to create input assembler";
- return false;
- }
-
- // make input assembler active
- context->SetInputAssembler(mInputAssembler);
- // set program
- context->SetActiveShader(compResult.mShader);
- compResult.mShader->SetPropertyValue("mat_mvp", mvp);
- // set color
- compResult.mShader->SetPropertyValue("color", color);
- // set tessellation values
- float tessLevels = 8.0;
- compResult.mShader->SetPropertyValue("tessLevels", tessLevels);
- float tessBlend = 1.0;
- compResult.mShader->SetPropertyValue("tessBlend", tessBlend);
-
- context->SetDepthTestEnabled(true);
- context->SetDepthWriteEnabled(true);
-
- // draw
- context->Draw(mInputAssembler->GetPrimitiveType(), 3, 0);
-
- context->SetActiveShader(0);
- compResult.mShader->release();
-
- return true;
-}
-
-////////////////////////////////
-// performance test
-////////////////////////////////
-bool NVRenderTestTessellation::runPerformance(NVRenderContext *context, userContextData *pUserData)
-{
- return true;
-}
-
-////////////////////////////////
-// test cleanup
-////////////////////////////////
-void NVRenderTestTessellation::cleanup(NVRenderContext *context, userContextData *pUserData)
-{
- context->SetClearColor(QT3DSVec4(.0f, .0f, .0f, 0.f));
- // dummy
- context->SetViewport(NVRenderRect(0, 0, pUserData->winWidth, pUserData->winHeight));
-}
diff --git a/tests/auto/runtime/geometry/Qt3DSRenderTestTessellation.h b/tests/auto/runtime/geometry/Qt3DSRenderTestTessellation.h
deleted file mode 100644
index 74036969..00000000
--- a/tests/auto/runtime/geometry/Qt3DSRenderTestTessellation.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-#ifndef QT3DS_RENDER_TEST_TESSELLATION_H
-#define QT3DS_RENDER_TEST_TESSELLATION_H
-
-#include "../Qt3DSRenderTestBase.h"
-
-namespace qt3ds {
-namespace render {
-
- /// This class tests the creation of all kinds of primitives
- class NVRenderTestTessellation : public NVRenderTestBase
- {
- public:
- NVRenderTestTessellation();
- ~NVRenderTestTessellation();
-
- bool isSupported(NVRenderContext *context);
- bool run(NVRenderContext *context, userContextData *pUserData);
- bool runPerformance(NVRenderContext *context, userContextData *pContextData);
- void cleanup(NVRenderContext *context, userContextData *pUserData);
-
- private:
- bool trianglePatches(NVRenderContext *context, userContextData *pUserData);
- bool phongPatches(NVRenderContext *context, userContextData *pUserData);
-
- unsigned int _curTest;
- unsigned int _cellSize;
- unsigned int _maxColumn;
- };
-}
-}
-
-#endif // QT3DS_RENDER_TEST_TESSELLATION_H
diff --git a/tests/auto/runtime/images/NVRenderTestAttribBuffers.png b/tests/auto/runtime/images/NVRenderTestAttribBuffers.png
deleted file mode 100644
index e0fe9463..00000000
--- a/tests/auto/runtime/images/NVRenderTestAttribBuffers.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/runtime/images/NVRenderTestBackendQuery.png b/tests/auto/runtime/images/NVRenderTestBackendQuery.png
deleted file mode 100644
index 76592360..00000000
--- a/tests/auto/runtime/images/NVRenderTestBackendQuery.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/runtime/images/NVRenderTestClear.png b/tests/auto/runtime/images/NVRenderTestClear.png
deleted file mode 100644
index 6e4c3191..00000000
--- a/tests/auto/runtime/images/NVRenderTestClear.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/runtime/images/NVRenderTestComputeShader.png b/tests/auto/runtime/images/NVRenderTestComputeShader.png
deleted file mode 100644
index 6f08814a..00000000
--- a/tests/auto/runtime/images/NVRenderTestComputeShader.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/runtime/images/NVRenderTestDrawIndirectBuffer.png b/tests/auto/runtime/images/NVRenderTestDrawIndirectBuffer.png
deleted file mode 100644
index 76592360..00000000
--- a/tests/auto/runtime/images/NVRenderTestDrawIndirectBuffer.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/runtime/images/NVRenderTestFboMsaa.png b/tests/auto/runtime/images/NVRenderTestFboMsaa.png
deleted file mode 100644
index 8eab95ce..00000000
--- a/tests/auto/runtime/images/NVRenderTestFboMsaa.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/runtime/images/NVRenderTestGeometryShader.png b/tests/auto/runtime/images/NVRenderTestGeometryShader.png
deleted file mode 100644
index 820534e0..00000000
--- a/tests/auto/runtime/images/NVRenderTestGeometryShader.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/runtime/images/NVRenderTestOcclusionQuery.png b/tests/auto/runtime/images/NVRenderTestOcclusionQuery.png
deleted file mode 100644
index 76592360..00000000
--- a/tests/auto/runtime/images/NVRenderTestOcclusionQuery.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/runtime/images/NVRenderTestProgramPipeline.png b/tests/auto/runtime/images/NVRenderTestProgramPipeline.png
deleted file mode 100644
index f868b2d7..00000000
--- a/tests/auto/runtime/images/NVRenderTestProgramPipeline.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/runtime/images/NVRenderTestTexture2D.png b/tests/auto/runtime/images/NVRenderTestTexture2D.png
deleted file mode 100644
index afde59f3..00000000
--- a/tests/auto/runtime/images/NVRenderTestTexture2D.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/runtime/runtime.pro b/tests/auto/runtime/runtime.pro
deleted file mode 100644
index 146a243f..00000000
--- a/tests/auto/runtime/runtime.pro
+++ /dev/null
@@ -1,83 +0,0 @@
-TEMPLATE = app
-CONFIG += testcase
-include($$PWD/../../../src/Runtime/ogl-runtime/commoninclude.pri)
-
-TARGET = tst_qt3dsruntime
-QT += testlib gui
-QT += quick-private
-
-RESOURCES += \
- runtime.qrc \
- $$PWD/../../../src/Runtime/ogl-runtime/testres.qrc
-
-INCLUDEPATH += \
- $$PWD/../../../src/Runtime/ogl-runtime/src/Qt3DSRuntimeRender/RendererImpl
-
-HEADERS += \
- base/Qt3DSRenderTestAtomicCounterBuffer.h \
- base/Qt3DSRenderTestAttribBuffers.h \
- base/Qt3DSRenderTestBackendQuery.h \
- base/Qt3DSRenderTestClear.h \
- base/Qt3DSRenderTestConstantBuffer.h \
- base/Qt3DSRenderTestDrawIndirectBuffer.h \
- base/Qt3DSRenderTestPrimitives.h \
- base/Qt3DSRenderTestProgramPipeline.h \
- base/Qt3DSRenderTestTexture2D.h \
- base/Qt3DSRenderTestTimerQuery.h \
- compute/Qt3DSRenderTestComputeShader.h \
- fbo/Qt3DSRenderTestFboMsaa.h \
- geometry/Qt3DSRenderTestGeometryShader.h \
- geometry/Qt3DSRenderTestOcclusionQuery.h \
- geometry/Qt3DSRenderTestTessellation.h \
- Qt3DSRenderTestBase.h \
- Qt3DSRenderTestMathUtil.h \
- tst_qt3dsruntime.h \
- shadergenerator/Qt3DSRenderTestDefaultMaterialGenerator.h \
- shadergenerator/Qt3DSRenderTestCustomMaterialGenerator.h \
- shadergenerator/Qt3DSRenderTestEffectGenerator.h
-
-SOURCES += \
- base/Qt3DSRenderTestAtomicCounterBuffer.cpp \
- base/Qt3DSRenderTestAttribBuffers.cpp \
- base/Qt3DSRenderTestBackendQuery.cpp \
- base/Qt3DSRenderTestClear.cpp \
- base/Qt3DSRenderTestConstantBuffer.cpp \
- base/Qt3DSRenderTestDrawIndirectBuffer.cpp \
- base/Qt3DSRenderTestPrimitives.cpp \
- base/Qt3DSRenderTestProgramPipeline.cpp \
- base/Qt3DSRenderTestTexture2D.cpp \
- base/Qt3DSRenderTestTimerQuery.cpp \
- compute/Qt3DSRenderTestComputeShader.cpp \
- fbo/Qt3DSRenderTestFboMsaa.cpp \
- geometry/Qt3DSRenderTestGeometryShader.cpp \
- geometry/Qt3DSRenderTestOcclusionQuery.cpp \
- geometry/Qt3DSRenderTestTessellation.cpp \
- Qt3DSRenderTestMathUtil.cpp \
- tst_qt3dsruntime.cpp \
- Qt3DSRenderTestBase.cpp \
- shadergenerator/Qt3DSRenderTestDefaultMaterialGenerator.cpp \
- shadergenerator/Qt3DSRenderTestCustomMaterialGenerator.cpp \
- shadergenerator/Qt3DSRenderTestEffectGenerator.cpp
-
-linux {
- BEGIN_ARCHIVE = -Wl,--whole-archive
- END_ARCHIVE = -Wl,--no-whole-archive
-}
-
-LIBS += \
- -lqt3dsopengl$$qtPlatformTargetSuffix() \
- -lqt3dsqmlstreamer$$qtPlatformTargetSuffix()
-
-ANDROID_EXTRA_LIBS = \
- libqt3dsqmlstreamer.so
-
-win32 {
- LIBS += \
- -lws2_32
-}
-
-linux {
- LIBS += \
- -ldl \
- -lEGL
-}
diff --git a/tests/auto/runtime/runtime.qrc b/tests/auto/runtime/runtime.qrc
deleted file mode 100644
index f4318f5a..00000000
--- a/tests/auto/runtime/runtime.qrc
+++ /dev/null
@@ -1,14 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file>images/NVRenderTestTexture2D.png</file>
- <file>images/NVRenderTestProgramPipeline.png</file>
- <file>images/NVRenderTestAttribBuffers.png</file>
- <file>images/NVRenderTestBackendQuery.png</file>
- <file>images/NVRenderTestClear.png</file>
- <file>images/NVRenderTestComputeShader.png</file>
- <file>images/NVRenderTestDrawIndirectBuffer.png</file>
- <file>images/NVRenderTestFboMsaa.png</file>
- <file>images/NVRenderTestGeometryShader.png</file>
- <file>images/NVRenderTestOcclusionQuery.png</file>
- </qresource>
-</RCC>
diff --git a/tests/auto/runtime/shadergenerator/Qt3DSRenderTestCustomMaterialGenerator.cpp b/tests/auto/runtime/shadergenerator/Qt3DSRenderTestCustomMaterialGenerator.cpp
deleted file mode 100644
index 244065a3..00000000
--- a/tests/auto/runtime/shadergenerator/Qt3DSRenderTestCustomMaterialGenerator.cpp
+++ /dev/null
@@ -1,469 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "Qt3DSRenderTestCustomMaterialGenerator.h"
-#include "../Qt3DSRenderTestMathUtil.h"
-#include "render/Qt3DSRenderShaderProgram.h"
-#include "render/Qt3DSRenderContext.h"
-#include "Qt3DSRenderCustomMaterialSystem.h"
-#include "Qt3DSRenderCustomMaterialRenderContext.h"
-#include "Qt3DSRenderCustomMaterialShaderGenerator.h"
-#include "Qt3DSRenderDynamicObjectSystem.h"
-#include "Qt3DSRenderDynamicObjectSystemCommands.h"
-#include "Qt3DSRenderContextCore.h"
-#include "Qt3DSTypes.h"
-#include "Qt3DSRenderRuntimeBinding.h"
-#include "Qt3DSApplication.h"
-#include "Qt3DSInputEngine.h"
-#include "foundation/FileTools.h"
-#include "Qt3DSWindowSystem.h"
-#include "Qt3DSRenderShaderCache.h"
-#include "rendererimpl/Qt3DSRendererImpl.h"
-#include "Qt3DSRenderLight.h"
-#include "Qt3DSRenderUIPLoader.h"
-#include "Qt3DSDMMetaDataTypes.h"
-
-#include <QTime>
-#include <QString>
-#include <QTextStream>
-
-#include <string>
-
-using namespace qt3ds;
-using namespace qt3ds::render;
-
-
-
-namespace qt3ds {
-namespace render {
-
-Qt3DSRenderTestCustomMaterialGenerator::Qt3DSRenderTestCustomMaterialGenerator()
-{
-
-}
-
-Qt3DSRenderTestCustomMaterialGenerator::~Qt3DSRenderTestCustomMaterialGenerator()
-{
-
-}
-
-
-bool Qt3DSRenderTestCustomMaterialGenerator::isSupported(NVRenderContext *context)
-{
- Q_UNUSED(context);
- return true;
-}
-
-bool Qt3DSRenderTestCustomMaterialGenerator::runPerformance(NVRenderContext *context,
- userContextData *pContextData)
-{
- Q_UNUSED(context);
- Q_UNUSED(pContextData);
- return false;
-}
-
-void Qt3DSRenderTestCustomMaterialGenerator::cleanup(NVRenderContext *context,
- userContextData *pUserData)
-{
- Q_UNUSED(context);
- Q_UNUSED(pUserData);
-}
-
-struct CustomTestParams
-{
- SRenderableObjectFlags flags;
- dynamic::SDynamicShaderProgramFlags dynamicFlags;
- QT3DSF32 opacity;
- SLayer layer;
- SLayerRenderData layerData;
- SRenderableImage *images;
- SLight light[QT3DS_MAX_NUM_LIGHTS];
- SModel model;
- SRenderSubset subset;
- SShaderDefaultMaterialKey shaderkey;
- SCustomMaterial *material;
- eastl::vector<SShaderPreprocessorFeature> features;
- Option<qt3dsdm::SMetaDataCustomMaterial> metaMaterial;
- SImage dummyImages[SShaderDefaultMaterialKeyProperties::ImageMapCount];
- eastl::vector<SRenderableImage*> renderableImages;
- qt3ds::render::Qt3DSRendererImpl *render;
- SImage iblLightProbe;
- NVRenderTexture2D *texture;
-
- CustomTestParams(Qt3DSRendererImpl &impl)
- : layerData(layer, impl)
- , images(NULL)
- , subset(impl.GetContext().GetAllocator())
- , material(NULL)
- , render(&impl)
- , texture(NULL)
- {
- }
- ~CustomTestParams()
- {
- if (texture)
- texture->release();
- }
-
- void addRenderableImage(ImageMapTypes::Enum type,
- SShaderDefaultMaterialKeyProperties::ImageMapNames name)
- {
- renderableImages.push_back(new SRenderableImage(type, dummyImages[name]));
- render->DefaultMaterialShaderKeyProperties().m_ImageMaps[name].SetEnabled(shaderkey, true);
- }
- void prepare()
- {
- for (unsigned int i = 0; i < renderableImages.size(); i++) {
- if (i == 0)
- images = renderableImages[0];
- else
- renderableImages[i-1]->m_NextImage = renderableImages[i];
- }
- }
-};
-
-struct CustomTestKey
-{
- unsigned int tessellation : 2;
- unsigned int wireframe : 1;
- unsigned int lighting: 1;
- unsigned int indirectLightmap: 1;
- unsigned int radiosityLightmap: 1;
- unsigned int shadowLightmap: 1;
- unsigned int transparency : 1;
- unsigned int refraction : 1;
- unsigned int iblprobe : 1;
- unsigned int emissiveMap : 1;
- unsigned int displacementMap : 1;
- unsigned int diffuse = 1;
- unsigned int specular = 1;
- unsigned int glossy = 1;
- unsigned int cutout = 1;
- unsigned int transmissive : 1;
- unsigned int ssao : 1;
- unsigned int ssdo : 1;
- unsigned int ssm : 1;
-
- CustomTestKey(TessModeValues::Enum tess = TessModeValues::NoTess, bool wire = false,
- bool lights = false, bool indirect = false, bool radiosity = false,
- bool shadow = false, bool trans = false, bool refract = false, bool ibl = false,
- bool emissive = false, bool disp = false, bool diff = false,
- bool spec = false, bool glo = false, bool cut = false, bool transm = false,
- bool ao = false, bool direct = false, bool shadowssm = false)
- : tessellation(tess), wireframe(wire), lighting(lights), indirectLightmap(indirect)
- , radiosityLightmap(radiosity), shadowLightmap(shadow), transparency(trans)
- , refraction(refract), iblprobe(ibl), emissiveMap(emissive), displacementMap(disp)
- , diffuse(diff), specular(spec), glossy(glo), cutout(cut), transmissive(transm)
- , ssao(ao), ssdo(direct), ssm(shadowssm)
- {
-
- }
-
- bool operator == (const CustomTestKey &other) const
- {
- uint64_t a = *(uint64_t *)this;
- uint64_t b = *(uint64_t *)&other;
- return a == b;
- }
-
- QString toString()
- {
- QString str;
- QTextStream stream(&str);
- stream << "Custom Key tessellation: " << int(tessellation);
- stream << " wireframe: " << (wireframe ? "true" : "false");
- stream << " lighting: " << (lighting ? "true" : "false");
- stream << " indirectLightmap: " << (indirectLightmap ? "true" : "false");
- stream << " radiosityLightmap: " << (radiosityLightmap ? "true" : "false");
- stream << " shadowLightmap: " << (shadowLightmap ? "true" : "false");
- stream << " transparency: " << (transparency ? "true" : "false");
- stream << " refraction: " << (refraction ? "true" : "false");
- stream << " iblprobe: " << (iblprobe ? "true" : "false");
- stream << " emissiveMap: " << (emissiveMap ? "true" : "false");
- stream << " displacementMap: " << (displacementMap ? "true" : "false");
- stream << " diffuse: " << (diffuse ? "true" : "false");
- stream << " specular: " << (specular ? "true" : "false");
- stream << " glossy: " << (glossy ? "true" : "false");
- stream << " cutout: " << (cutout ? "true" : "false");
- stream << " transmissive: " << (transmissive ? "true" : "false");
- stream << " ssao: " << (ssao ? "true" : "false");
- stream << " ssdo: " << (ssdo ? "true" : "false");
- stream << " ssm: " << (ssm ? "true" : "false");
- return str;
- }
-};
-
-#define MAX_TEST_KEY ((1llu<<20)-1)
-
-static CustomTestKey randomizeTestKey()
-{
- uint64_t v = (uint64_t(qrand()))%MAX_TEST_KEY;
- return *reinterpret_cast<CustomTestKey*>(&v);
-}
-
-CustomTestParams *generateTest(qt3ds::render::Qt3DSRendererImpl *renderImpl,
- NVRenderContext *context, CustomTestKey key, SCustomMaterial *material)
-{
- CustomTestParams *params = new CustomTestParams(*renderImpl);
- params->material = material;
- params->material->m_ShaderKeyValues = (SCustomMaterialShaderKeyFlags)0;
- params->material->m_Lightmaps = SLightmaps();
- params->material->m_DisplacementMap = NULL;
- params->material->m_EmissiveMap2 = NULL;
- params->material->m_hasTransparency = false;
- params->material->m_IblProbe = NULL;
- params->material->m_hasRefraction = false;
- switch (key.tessellation) {
- case 1:
- params->model.m_TessellationMode = TessModeValues::TessLinear;
- break;
- case 2:
- params->model.m_TessellationMode = TessModeValues::TessPhong;
- break;
- case 3:
- params->model.m_TessellationMode = TessModeValues::TessNPatch;
- break;
- default:
- params->model.m_TessellationMode = TessModeValues::NoTess;
- break;
- }
-
- renderImpl->DefaultMaterialShaderKeyProperties()
- .m_TessellationMode.SetValue(params->shaderkey, params->model.m_TessellationMode);
-
- if (key.wireframe && key.tessellation > 0) {
- params->subset.m_WireframeMode = true;
- renderImpl->DefaultMaterialShaderKeyProperties().m_WireframeMode.SetValue(
- params->shaderkey, true);
- }
-
- CRegisteredString lighting =
- renderImpl->GetContext().GetStringTable().RegisterStr("QT3DS_ENABLE_CG_LIGHTING");
- params->features.push_back(SShaderPreprocessorFeature(lighting, key.lighting));
-
- if (key.indirectLightmap) {
- params->material->m_Lightmaps.m_LightmapIndirect
- = &params->dummyImages[SShaderDefaultMaterialKeyProperties::LightmapIndirect];
- params->addRenderableImage(ImageMapTypes::LightmapIndirect,
- SShaderDefaultMaterialKeyProperties::LightmapIndirect);
- }
- if (key.radiosityLightmap) {
- params->material->m_Lightmaps.m_LightmapRadiosity
- = &params->dummyImages[SShaderDefaultMaterialKeyProperties::LightmapRadiosity];
- params->addRenderableImage(ImageMapTypes::LightmapRadiosity,
- SShaderDefaultMaterialKeyProperties::LightmapRadiosity);
- }
- if (key.shadowLightmap) {
- params->material->m_Lightmaps.m_LightmapShadow
- = &params->dummyImages[SShaderDefaultMaterialKeyProperties::LightmapShadow];
- params->addRenderableImage(ImageMapTypes::LightmapRadiosity,
- SShaderDefaultMaterialKeyProperties::LightmapShadow);
- }
-
- if (key.diffuse)
- params->material->m_ShaderKeyValues &= SCustomMaterialShaderKeyValues::diffuse;
-
- // TODO: emissive mask doesn't work
-// if (key.emissiveMap >= 1) {
-// params->material->m_EmissiveMap2
-// = &params->dummyImages[SShaderDefaultMaterialKeyProperties::EmissiveMap];
-// params->addRenderableImage(ImageMapTypes::Emissive,
-// SShaderDefaultMaterialKeyProperties::EmissiveMap);
-// }
-
- if (key.specular)
- params->material->m_ShaderKeyValues &= SCustomMaterialShaderKeyValues::specular;
-
- if (key.displacementMap) {
- params->material->m_DisplacementMap
- = &params->dummyImages[SShaderDefaultMaterialKeyProperties::DisplacementMap];
- params->material->m_DisplacementMap->m_ImageShaderName
- = renderImpl->GetQt3DSContext().GetStringTable()
- .RegisterStr("DisplacementMap");
- params->material->m_DisplaceAmount = 1.0f;
- params->addRenderableImage(ImageMapTypes::Displacement,
- SShaderDefaultMaterialKeyProperties::DisplacementMap);
-
- params->material->m_ShaderKeyValues &= SCustomMaterialShaderKeyValues::displace;
- }
-
- if (key.iblprobe) {
- renderImpl->DefaultMaterialShaderKeyProperties().m_HasIbl.SetValue(
- params->shaderkey, true);
- CRegisteredString str(renderImpl->GetQt3DSContext().GetStringTable()
- .RegisterStr("QT3DS_ENABLE_LIGHT_PROBE"));
- params->features.push_back(SShaderPreprocessorFeature(str, true));
-
- params->material->m_IblProbe = &params->iblLightProbe;
- params->texture = context->CreateTexture2D();
- NVRenderTextureFormats::Enum format = NVRenderTextureFormats::RGBA8;
- unsigned int data = 0;
- NVDataRef<QT3DSU8> buffer = toU8DataRef<unsigned int>(data);
- params->texture->SetTextureData(buffer, 0, 1, 1, format);
- params->iblLightProbe.m_TextureData.m_Texture = params->texture;
- } else {
- CRegisteredString str(renderImpl->GetQt3DSContext().GetStringTable()
- .RegisterStr("QT3DS_ENABLE_LIGHT_PROBE"));
- params->features.push_back(SShaderPreprocessorFeature(str, false));
- }
-
- // these requires calculateGlass function in material
-// if (key.transparency) {
-// params->material->m_ShaderKeyValues &= SCustomMaterialShaderKeyValues::transparent;
-// params->material->m_hasTransparency = true;
-// }
-// if (key.refraction) {
-// params->material->m_ShaderKeyValues &= SCustomMaterialShaderKeyValues::refraction;
-// params->material->m_hasRefraction = true;
-// }
- if (key.glossy)
- params->material->m_ShaderKeyValues &= SCustomMaterialShaderKeyValues::glossy;
-
- if (key.cutout)
- params->material->m_ShaderKeyValues &= SCustomMaterialShaderKeyValues::cutout;
-
- if (key.transmissive)
- params->material->m_ShaderKeyValues &= SCustomMaterialShaderKeyValues::transmissive;
-
- if (key.ssm) {
- CRegisteredString str(renderImpl->GetQt3DSContext().GetStringTable()
- .RegisterStr("QT3DS_ENABLE_SSM"));
- params->features.push_back(SShaderPreprocessorFeature(str, true));
- }
- if (key.ssao) {
- CRegisteredString str(renderImpl->GetQt3DSContext().GetStringTable()
- .RegisterStr("QT3DS_ENABLE_SSAO"));
- params->features.push_back(SShaderPreprocessorFeature(str, true));
- }
- if (key.ssdo) {
- CRegisteredString str(renderImpl->GetQt3DSContext().GetStringTable()
- .RegisterStr("QT3DS_ENABLE_SSDO"));
- params->features.push_back(SShaderPreprocessorFeature(str, true));
- }
-
- params->prepare();
- return params;
-}
-
-bool GenShader(IQt3DSRenderContext &qt3dsContext, CustomTestParams &params)
-{
- bool success = true;
- ICustomMaterialShaderGenerator &theMaterialGenerator(qt3dsContext.GetCustomMaterialShaderGenerator());
-
- SCustomMaterialVertexPipeline thePipeline(&qt3dsContext,
- params.model.m_TessellationMode);
-
- for (int i = 0; i < params.metaMaterial->m_CustomMaterialCommands.size(); i++) {
- dynamic::SCommand &command = *params.metaMaterial->m_CustomMaterialCommands[i];
- if (command.m_Type == dynamic::CommandTypes::Enum::BindShader) {
- dynamic::SBindShader *bindShader = static_cast<dynamic::SBindShader *>(&command);
- NVRenderShaderProgram *theProgram = theMaterialGenerator.GenerateShader(
- *params.material, params.shaderkey, thePipeline,
- toConstDataRef(params.features.data(), (QT3DSU32)params.features.size()),
- params.layerData.m_Lights, params.images,
- (params.material->m_hasTransparency || params.material->m_hasRefraction),
- "custom material pipeline-- ", bindShader->m_ShaderPath);
- if (!theProgram) {
- success = false;
- break;
- }
- }
- }
-
- return success;
-}
-
-bool Qt3DSRenderTestCustomMaterialGenerator::run(NVRenderContext *context,
- userContextData *pUserData)
-{
- Q_UNUSED(pUserData);
- bool success = true;
-
- QVector<CustomTestKey> testKeys;
- testKeys.push_back(CustomTestKey());
- testKeys.push_back(CustomTestKey(TessModeValues::TessLinear));
- testKeys.push_back(CustomTestKey(TessModeValues::TessNPatch));
- testKeys.push_back(CustomTestKey(TessModeValues::TessPhong));
- testKeys.push_back(CustomTestKey(TessModeValues::NoTess, true));
- testKeys.push_back(CustomTestKey(TessModeValues::NoTess, false, true));
- testKeys.push_back(CustomTestKey(TessModeValues::NoTess, false, true, true));
- testKeys.push_back(CustomTestKey(TessModeValues::NoTess, false, true, true, true));
- testKeys.push_back(CustomTestKey(TessModeValues::NoTess, false, true, true, true, true));
- testKeys.push_back(CustomTestKey(TessModeValues::NoTess, false, true, true, true, true, true));
- testKeys.push_back(CustomTestKey(TessModeValues::NoTess, false, true, true, true, true, true, true));
- testKeys.push_back(CustomTestKey(TessModeValues::NoTess, false, true, true, true, true, true, true, true));
- testKeys.push_back(CustomTestKey(TessModeValues::NoTess, false, true, true, true, true, true, true, true, true));
- testKeys.push_back(CustomTestKey(TessModeValues::NoTess, false, true, true, true, true, true, true, true, true, true));
- testKeys.push_back(CustomTestKey(TessModeValues::NoTess, false, true, true, true, true, true, true, true, true, true, true));
- testKeys.push_back(CustomTestKey(TessModeValues::NoTess, false, true, true, true, true, true, true, true, true, true, true, true));
- testKeys.push_back(CustomTestKey(TessModeValues::NoTess, false, true, true, true, true, true, true, true, true, true, true, true, true));
- testKeys.push_back(CustomTestKey(TessModeValues::NoTess, false, true, true, true, true, true, true, true, true, true, true, true, true, true));
- testKeys.push_back(CustomTestKey(TessModeValues::NoTess, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true));
- testKeys.push_back(CustomTestKey(TessModeValues::NoTess, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true));
- testKeys.push_back(CustomTestKey(TessModeValues::NoTess, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true));
- testKeys.push_back(CustomTestKey(TessModeValues::NoTess, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true));
-
- while (testKeys.size() < 100) {
- CustomTestKey key = randomizeTestKey();
- if (!testKeys.contains(key))
- testKeys.push_back(key);
- }
-
- if (success) {
- CRegisteredString name = context->GetStringTable().RegisterStr("qrc:/copper.shader");
-
- metadata()->LoadMaterialXMLFile("CustomMaterial", "", "copper", "qrc:/copper.shader");
- Option<qt3dsdm::SMetaDataCustomMaterial> metaMaterial =
- metadata()->GetMaterialMetaDataBySourcePath("qrc:/copper.shader");
-
- if (metaMaterial.hasValue()) {
- qt3ds::render::IUIPLoader::CreateMaterialClassFromMetaMaterial(
- name, context->GetFoundation(),
- qt3dsRenderer()->GetQt3DSContext().GetCustomMaterialSystem(), *metaMaterial,
- context->GetStringTable());
- SCustomMaterial *material = qt3dsRenderer()->GetQt3DSContext().GetCustomMaterialSystem()
- .CreateCustomMaterial(name, qt3dsRenderer()->GetContext().GetAllocator());
-
- for (CustomTestKey key : testKeys) {
- CustomTestParams *params = generateTest(qt3dsRenderer(), context, key, material);
- params->metaMaterial = metaMaterial;
- success &= GenShader(qt3dsRenderer()->GetQt3DSContext(), *params);
- if (!success)
- qDebug () << "failing key: " << key.toString();
- delete params;
- }
- delete material;
- }
- }
-
- return success;
-}
-
-} // render
-} // qt3ds
diff --git a/tests/auto/runtime/shadergenerator/Qt3DSRenderTestCustomMaterialGenerator.h b/tests/auto/runtime/shadergenerator/Qt3DSRenderTestCustomMaterialGenerator.h
deleted file mode 100644
index 621d20f6..00000000
--- a/tests/auto/runtime/shadergenerator/Qt3DSRenderTestCustomMaterialGenerator.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-
-#ifndef QT3DS_RENDER_TEST_CUSTOM_MATERIAL_GENERATOR_H
-#define QT3DS_RENDER_TEST_CUSTOM_MATERIAL_GENERATOR_H
-
-#include "../Qt3DSRenderTestBase.h"
-
-namespace qt3ds {
-namespace render {
-
-class Qt3DSRenderTestCustomMaterialGenerator : public NVRenderTestBase
-{
-public:
- Qt3DSRenderTestCustomMaterialGenerator();
- ~Qt3DSRenderTestCustomMaterialGenerator();
-
- bool isSupported(NVRenderContext *context);
- bool run(NVRenderContext *context, userContextData *pUserData);
- bool runPerformance(NVRenderContext *context, userContextData *pContextData);
- void cleanup(NVRenderContext *context, userContextData *pUserData);
-
-private:
-
-};
-
-} // render
-} // qt3ds
-
-#endif
diff --git a/tests/auto/runtime/shadergenerator/Qt3DSRenderTestDefaultMaterialGenerator.cpp b/tests/auto/runtime/shadergenerator/Qt3DSRenderTestDefaultMaterialGenerator.cpp
deleted file mode 100644
index 1e2c07e8..00000000
--- a/tests/auto/runtime/shadergenerator/Qt3DSRenderTestDefaultMaterialGenerator.cpp
+++ /dev/null
@@ -1,574 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "Qt3DSRenderTestDefaultMaterialGenerator.h"
-#include "../Qt3DSRenderTestMathUtil.h"
-#include "render/Qt3DSRenderShaderProgram.h"
-#include "render/Qt3DSRenderContext.h"
-#include "Qt3DSTypes.h"
-#include "Qt3DSRenderRuntimeBinding.h"
-#include "Qt3DSApplication.h"
-#include "Qt3DSInputEngine.h"
-#include "foundation/FileTools.h"
-#include "Qt3DSWindowSystem.h"
-#include "Qt3DSRenderContextCore.h"
-#include "Qt3DSRenderShaderCache.h"
-#include "rendererimpl/Qt3DSRendererImpl.h"
-#include "Qt3DSRenderLight.h"
-
-#include <QTime>
-
-#include <string>
-
-using namespace qt3ds;
-using namespace qt3ds::render;
-
-
-
-namespace qt3ds {
-namespace render {
-
-Qt3DSRenderTestDefaultMaterialGenerator::Qt3DSRenderTestDefaultMaterialGenerator()
-{
-
-}
-
-Qt3DSRenderTestDefaultMaterialGenerator::~Qt3DSRenderTestDefaultMaterialGenerator()
-{
-
-}
-
-
-bool Qt3DSRenderTestDefaultMaterialGenerator::isSupported(NVRenderContext *context)
-{
- Q_UNUSED(context);
- return true;
-}
-
-bool Qt3DSRenderTestDefaultMaterialGenerator::runPerformance(NVRenderContext *context,
- userContextData *pContextData)
-{
- Q_UNUSED(context);
- Q_UNUSED(pContextData);
- return false;
-}
-
-void Qt3DSRenderTestDefaultMaterialGenerator::cleanup(NVRenderContext *context,
- userContextData *pUserData)
-{
- Q_UNUSED(context);
- Q_UNUSED(pUserData);
-}
-
-
-#define MAX_TEST_KEY ((1llu<<32)-1)
-
-struct TestKey
-{
- unsigned int tessellation: 2;
- unsigned int wireframe: 1;
- unsigned int lighting: 2;
- unsigned int lights: 4;
- unsigned int indirectLightmap: 1;
- unsigned int radiosityLightmap: 1;
- unsigned int lightProbe: 2;
- unsigned int iblLightProbe: 1;
- unsigned int iblfow: 1;
- unsigned int diffuseMap: 2;
- unsigned int emissiveMap: 2;
- unsigned int specularModel: 2;
- unsigned int specularMap: 1;
- unsigned int specularReflection: 1;
- unsigned int fresnel: 1;
- unsigned int bumpmapping: 2;
- unsigned int displacementMap: 1;
- unsigned int opacityMap: 1;
- unsigned int translucencyMap: 1;
- unsigned int ssm: 1;
- unsigned int ssdo: 1;
- unsigned int ssao: 1;
-
- TestKey(TessModeValues::Enum tess = TessModeValues::NoTess, bool wire = false,
- DefaultMaterialLighting::Enum lmode = DefaultMaterialLighting::NoLighting,
- int lightCount = 0, bool indirect = false, bool radio = false, int lprobe = 0,
- bool iblProbe = false, bool iblf = false, int diffuse = 0, int emissive = 0,
- DefaultMaterialSpecularModel::Enum sModel = DefaultMaterialSpecularModel::Default,
- bool sMap = false, bool sRef = false, bool fre = false, int bump = 0,
- bool disp = false, bool opac = false, bool trans = false, bool shadow = false,
- bool ao = false, bool directOcc = false)
- : tessellation(tess), wireframe(wire), lighting(lmode), lights(lightCount)
- , indirectLightmap(indirect), radiosityLightmap(radio), lightProbe(lprobe)
- , iblLightProbe(iblProbe), iblfow(iblf), diffuseMap(diffuse), emissiveMap(emissive)
- , specularModel(sModel), specularMap(sMap), specularReflection(sRef)
- , fresnel(fre), bumpmapping(bump), displacementMap(disp), opacityMap(opac)
- , translucencyMap(trans), ssm(shadow), ssao(ao), ssdo(directOcc)
- {
-
- }
-
- bool operator == (const TestKey &other) const
- {
- return toInt() == other.toInt();
- }
-
- QString toString()
- {
- QString str;
- QTextStream stream(&str);
-
- stream << " tessellation: " << tessellation;
- stream << " wireframe: " << (wireframe ? "true" : "false");
- stream << " lighting: " << lighting;
- stream << " lights: " << lights;
- stream << " indirectLightmap: " << (indirectLightmap ? "true" : "false");
- stream << " radiosityLightmap: " << (radiosityLightmap ? "true" : "false");
- stream << " lightProbe: " << lightProbe;
- stream << " iblLightProbe: " << (iblLightProbe ? "true" : "false");
- stream << " iblfow: " << (iblfow ? "true" : "false");
- stream << " diffuseMap: " << diffuseMap;
- stream << " emissiveMap: " << emissiveMap;
- stream << " specularModel: " << specularModel;
- stream << " specularMap: " << (specularMap ? "true" : "false");
- stream << " specularReflection: " << (specularReflection ? "true" : "false");
- stream << " fresnel: " << (fresnel ? "true" : "false");
- stream << " bumpmapping: " << bumpmapping;
- stream << " displacementMap: " << (displacementMap ? "true" : "false");
- stream << " opacityMap: " << (opacityMap ? "true" : "false");
- stream << " translucencyMap: " << (translucencyMap ? "true" : "false");
- stream << " ssm: " << (ssm ? "true" : "false");
- stream << " ssdo: " << (ssdo ? "true" : "false");
- stream << " ssao: " << (ssao ? "true" : "false");
-
- return str;
- }
-
- void clampValues()
- {
- lighting = qMin(lighting, 2u);
- if (lighting == 1)
- lighting = 2;
- emissiveMap = qMin(emissiveMap, 2u);
- specularModel = qMin(specularModel, 2u);
- bumpmapping = qMin(bumpmapping, 2u);
- lightProbe = 0;
- if (!iblLightProbe)
- iblfow = 0;
- if (!tessellation)
- wireframe = 0;
- }
-
- uint64_t toInt() const
- {
- return (*(uint64_t *)this)&MAX_TEST_KEY;
- }
-};
-
-struct TestParams
-{
- SRenderableObjectFlags flags;
- NVConstDataRef<QT3DSMat44> boneGlobals;
- SRenderSubset subset;
- SDefaultMaterial material;
- SModel model;
- QT3DSMat44 viewProjection;
- SModelContext modelContext;
- SRenderableImage *images;
- SShaderDefaultMaterialKey shaderkey;
- SSubsetRenderable renderable;
- eastl::vector<SShaderPreprocessorFeature> features;
- SLight light[QT3DS_MAX_NUM_LIGHTS];
- SLayer layer;
- SLayerRenderData layerData;
- SImage dummyImages[SShaderDefaultMaterialKeyProperties::ImageMapCount];
- NVRenderTexture2D *textures[4];
- eastl::vector<SRenderableImage*> renderableImages;
- qt3ds::render::Qt3DSRendererImpl *render;
-
- TestParams(NVRenderContext *context, qt3ds::render::Qt3DSRendererImpl *renderImpl)
- : subset(context->GetAllocator())
- , modelContext(model, viewProjection)
- , images(NULL)
- , renderable(flags, QT3DSVec3(), *renderImpl, subset, material, modelContext, 1.0f, images,
- shaderkey, boneGlobals)
- , layerData(layer, *renderImpl)
- , render(renderImpl)
- {
- for (int i = 0; i < 4; ++i) {
- textures[i] = context->CreateTexture2D();
- NVRenderTextureFormats::Enum format = NVRenderTextureFormats::RGBA8;
- unsigned int data = 0;
- NVDataRef<QT3DSU8> buffer = toU8DataRef<unsigned int>(data);
- textures[i]->SetTextureData(buffer, 0, 1, 1, format);
- }
- for (int i = 0; i < SShaderDefaultMaterialKeyProperties::ImageMapCount; ++i)
- dummyImages[i].m_TextureData.m_Texture = textures[i%4];
- dummyImages[SShaderDefaultMaterialKeyProperties::DiffuseMap1].m_TextureData.
- m_TextureFlags.SetPreMultiplied(true);
- dummyImages[SShaderDefaultMaterialKeyProperties::EmissiveMap2].m_TextureData.
- m_TextureFlags.SetInvertUVCoords(true);
- }
- ~TestParams()
- {
- for (NVRenderTexture2D *tex : textures)
- tex->release();
- for (SRenderableImage *img : renderableImages)
- delete img;
- }
- void addRenderableImage(ImageMapTypes::Enum type,
- SShaderDefaultMaterialKeyProperties::ImageMapNames name)
- {
- renderableImages.push_back(new SRenderableImage(type, dummyImages[name]));
- render->DefaultMaterialShaderKeyProperties().m_ImageMaps[name].SetEnabled(shaderkey, true);
- }
- void prepare()
- {
- for (unsigned int i = 0; i < renderableImages.size(); i++) {
- if (i == 0)
- images = renderableImages[0];
- else {
- renderableImages[i-1]->m_NextImage = renderableImages[i];
- }
-
- }
- renderable.m_ShaderDescription = shaderkey;
- renderable.m_FirstImage = images;
- }
-};
-
-TestKey randomizeTestKey()
-{
- uint64_t v = (uint64_t(qrand()) << 32 | uint64_t(qrand()))&MAX_TEST_KEY;
- TestKey key = *reinterpret_cast<TestKey*>(&v);
- key.clampValues();
- return key;
-}
-
-
-TestParams *generateTest(qt3ds::render::Qt3DSRendererImpl *renderImpl,
- NVRenderContext *context, TestKey key)
-{
- // TODO: light probes
- TestParams *params = new TestParams(context, renderImpl);
-
- switch (key.tessellation) {
- case 1:
- params->model.m_TessellationMode = TessModeValues::TessLinear;
- break;
- case 2:
- params->model.m_TessellationMode = TessModeValues::TessPhong;
- break;
- case 3:
- params->model.m_TessellationMode = TessModeValues::TessNPatch;
- break;
- default:
- params->model.m_TessellationMode = TessModeValues::NoTess;
- break;
- }
-
- renderImpl->DefaultMaterialShaderKeyProperties()
- .m_TessellationMode.SetValue(params->shaderkey, params->model.m_TessellationMode);
-
- switch (key.lighting) {
- case 1:
- params->material.m_Lighting = DefaultMaterialLighting::VertexLighting;
- break;
- case 2:
- params->material.m_Lighting = DefaultMaterialLighting::FragmentLighting;
- break;
- default:
- params->material.m_Lighting = DefaultMaterialLighting::NoLighting;
- break;
- }
- if (key.lighting != 0) {
- renderImpl->DefaultMaterialShaderKeyProperties()
- .m_HasLighting.SetValue(params->shaderkey, true);
- }
-
- if (key.wireframe && key.tessellation > 0) {
- params->subset.m_WireframeMode = true;
- renderImpl->DefaultMaterialShaderKeyProperties().m_WireframeMode.SetValue(
- params->shaderkey, true);
- }
- bool castShadow = false;
- key.lights = qMin(int(key.lights), int(QT3DS_MAX_NUM_LIGHTS));
- for (unsigned int i = 0; i < key.lights; ++i) {
- params->light[i].m_LightType = static_cast<RenderLightTypes::Enum>((i%3)+1);
- if (params->light[i].m_LightType != RenderLightTypes::Directional) {
- renderImpl->DefaultMaterialShaderKeyProperties().m_LightFlags[i].SetValue(
- params->shaderkey, true);
- }
- if (params->light[i].m_LightType == RenderLightTypes::Area) {
- renderImpl->DefaultMaterialShaderKeyProperties()
- .m_LightAreaFlags[i]
- .SetValue(params->shaderkey, true);
- }
- if (params->light[i].m_LightType != RenderLightTypes::Point) {
- renderImpl->DefaultMaterialShaderKeyProperties()
- .m_LightShadowFlags[i]
- .SetValue(params->shaderkey, castShadow);
- castShadow = !castShadow;
- }
- params->layerData.m_Lights.push_back(&params->light[i]);
- }
-
- renderImpl->DefaultMaterialShaderKeyProperties().m_LightCount.SetValue(params->shaderkey,
- key.lights);
-
- // shadow lightmap is not used
- if (key.indirectLightmap) {
- params->material.m_Lightmaps.m_LightmapIndirect
- = &params->dummyImages[SShaderDefaultMaterialKeyProperties::LightmapIndirect];
- params->addRenderableImage(ImageMapTypes::LightmapIndirect,
- SShaderDefaultMaterialKeyProperties::LightmapIndirect);
- }
- if (key.radiosityLightmap) {
- params->material.m_Lightmaps.m_LightmapRadiosity
- = &params->dummyImages[SShaderDefaultMaterialKeyProperties::LightmapRadiosity];
- params->addRenderableImage(ImageMapTypes::LightmapRadiosity,
- SShaderDefaultMaterialKeyProperties::LightmapRadiosity);
- }
-
- for (unsigned int i = 0; i < key.diffuseMap; ++i) {
- params->material.m_DiffuseMaps[i]
- = &params->dummyImages[static_cast<SShaderDefaultMaterialKeyProperties::ImageMapNames>
- (SShaderDefaultMaterialKeyProperties::DiffuseMap0 + i)];
- params->addRenderableImage(ImageMapTypes::Diffuse,
- static_cast<SShaderDefaultMaterialKeyProperties::ImageMapNames>
- (SShaderDefaultMaterialKeyProperties::DiffuseMap0 + i));
- }
-
- if (key.emissiveMap >= 1) {
- params->material.m_EmissiveMap
- = &params->dummyImages[SShaderDefaultMaterialKeyProperties::EmissiveMap];
- params->addRenderableImage(ImageMapTypes::Emissive,
- SShaderDefaultMaterialKeyProperties::EmissiveMap);
- }
- if (key.emissiveMap == 2) {
- params->material.m_EmissiveMap2
- = &params->dummyImages[SShaderDefaultMaterialKeyProperties::EmissiveMap2];
- params->addRenderableImage(ImageMapTypes::Emissive,
- SShaderDefaultMaterialKeyProperties::EmissiveMap2);
- }
-
- switch (key.specularModel) {
- case 1:
- params->material.m_SpecularModel = DefaultMaterialSpecularModel::KGGX;
- break;
- case 2:
- params->material.m_SpecularModel = DefaultMaterialSpecularModel::KWard;
- break;
- default:
- params->material.m_SpecularModel = DefaultMaterialSpecularModel::Default;
- break;
- }
-
- if (key.specularMap) {
- params->material.m_SpecularMap =
- &params->dummyImages[SShaderDefaultMaterialKeyProperties::SpecularAmountMap];
- params->material.m_SpecularAmount = 1.0f;
- params->addRenderableImage(ImageMapTypes::SpecularAmountMap,
- SShaderDefaultMaterialKeyProperties::SpecularAmountMap);
- }
- if (key.specularReflection) {
- params->dummyImages[SShaderDefaultMaterialKeyProperties::SpecularMap].m_MappingMode
- = ImageMappingModes::Environment;
- params->material.m_SpecularAmount = 1.0f;
- params->material.m_SpecularReflection
- = &params->dummyImages[SShaderDefaultMaterialKeyProperties::SpecularMap];
- params->addRenderableImage(ImageMapTypes::Specular,
- SShaderDefaultMaterialKeyProperties::SpecularMap);
- }
- if (key.fresnel)
- params->material.m_FresnelPower = 1.0f;
-
- if (key.bumpmapping == 1) {
- params->material.m_BumpMap
- = &params->dummyImages[SShaderDefaultMaterialKeyProperties::BumpMap];
- params->material.m_BumpAmount = 1.0f;
- params->addRenderableImage(ImageMapTypes::Bump, SShaderDefaultMaterialKeyProperties::BumpMap);
- }
- if (key.bumpmapping == 2) {
- params->material.m_NormalMap
- = &params->dummyImages[SShaderDefaultMaterialKeyProperties::NormalMap];
- params->addRenderableImage(ImageMapTypes::Normal, SShaderDefaultMaterialKeyProperties::NormalMap);
- }
-
- if (key.displacementMap) {
- params->material.m_DisplacementMap
- = &params->dummyImages[SShaderDefaultMaterialKeyProperties::DisplacementMap];
- params->material.m_DisplaceAmount = 1.0f;
- params->addRenderableImage(ImageMapTypes::Displacement,
- SShaderDefaultMaterialKeyProperties::DisplacementMap);
- }
-
- if (key.opacityMap) {
- params->material.m_OpacityMap
- = &params->dummyImages[SShaderDefaultMaterialKeyProperties::OpacityMap];
- params->material.m_Opacity = 0.5f;
- params->addRenderableImage(ImageMapTypes::Opacity,
- SShaderDefaultMaterialKeyProperties::OpacityMap);
- }
-
- if (key.translucencyMap) {
- params->material.m_TranslucencyMap
- = &params->dummyImages[SShaderDefaultMaterialKeyProperties::TranslucencyMap];
- params->material.m_TranslucentFalloff = 0.1f;
- params->addRenderableImage(ImageMapTypes::Translucency,
- SShaderDefaultMaterialKeyProperties::TranslucencyMap);
- }
-
- if (key.ssm) {
- CRegisteredString str(renderImpl->GetQt3DSContext().GetStringTable()
- .RegisterStr("QT3DS_ENABLE_SSM"));
- params->features.push_back(SShaderPreprocessorFeature(str, true));
- }
- if (key.ssao) {
- CRegisteredString str(renderImpl->GetQt3DSContext().GetStringTable()
- .RegisterStr("QT3DS_ENABLE_SSAO"));
- params->features.push_back(SShaderPreprocessorFeature(str, true));
- }
- if (key.ssdo) {
- CRegisteredString str(renderImpl->GetQt3DSContext().GetStringTable()
- .RegisterStr("QT3DS_ENABLE_SSDO"));
- params->features.push_back(SShaderPreprocessorFeature(str, true));
- }
-
- if (key.iblLightProbe) {
- renderImpl->DefaultMaterialShaderKeyProperties().m_HasIbl.SetValue(
- params->shaderkey, true);
- CRegisteredString str(renderImpl->GetQt3DSContext().GetStringTable()
- .RegisterStr("QT3DS_ENABLE_LIGHT_PROBE"));
- params->features.push_back(SShaderPreprocessorFeature(str, true));
- if (key.iblfow) {
- CRegisteredString str(renderImpl->GetQt3DSContext().GetStringTable()
- .RegisterStr("QT3DS_ENABLE_IBL_FOV"));
- params->features.push_back(SShaderPreprocessorFeature(str, true));
- }
- }
-
- if (params->material.IsSpecularEnabled()) {
- renderImpl->DefaultMaterialShaderKeyProperties().m_SpecularEnabled.SetValue(
- params->shaderkey, true);
- renderImpl->DefaultMaterialShaderKeyProperties().m_SpecularModel.SetSpecularModel(
- params->shaderkey, params->material.m_SpecularModel);
- }
- if (params->material.IsFresnelEnabled()) {
- renderImpl->DefaultMaterialShaderKeyProperties().m_FresnelEnabled.SetValue(
- params->shaderkey, true);
- }
-
- params->prepare();
- return params;
-}
-
-
-
-bool Qt3DSRenderTestDefaultMaterialGenerator::run(NVRenderContext *context,
- userContextData *pUserData)
-{
- Q_UNUSED(pUserData);
- bool success = true;
-
- qsrand(QTime::currentTime().msec());
-
- QVector<TestKey> testKeys;
-
- testKeys.push_back(TestKey());
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 1));
- testKeys.push_back(TestKey(TessModeValues::TessLinear, false, DefaultMaterialLighting::FragmentLighting, 1));
- testKeys.push_back(TestKey(TessModeValues::TessNPatch, false, DefaultMaterialLighting::FragmentLighting, 1));
- testKeys.push_back(TestKey(TessModeValues::TessPhong, false, DefaultMaterialLighting::FragmentLighting, 1));
- testKeys.push_back(TestKey(TessModeValues::TessLinear, true, DefaultMaterialLighting::FragmentLighting, 1));
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 6));
- // vertex lighting is not supported?
- //testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::VertexLighting, 6));
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 1, true));
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 1, true, true));
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 2, true, true, 0, false, false, 1));
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 2, true, true, 0, false, false, 2));
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 3, true, true, 0, false, false, 3));
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 3, true, true, 0, false, false, 1, 1));
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 4, true, true, 0, false, false, 1, 2));
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 4, true, true, 0, false, false, 1, 1, DefaultMaterialSpecularModel::KGGX, true));
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 5, true, true, 0, false, false, 1, 1, DefaultMaterialSpecularModel::KWard, true));
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 5, true, true, 0, false, false, 1, 1, DefaultMaterialSpecularModel::Default, true));
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 6, true, true, 0, false, false, 1, 1, DefaultMaterialSpecularModel::Default, true, true));
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 6, true, true, 0, false, false, 1, 1, DefaultMaterialSpecularModel::Default, true, true, true));
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 2, true, true, 0, false, false, 1, 1, DefaultMaterialSpecularModel::Default, true, true, true, 1));
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 2, true, true, 0, false, false, 1, 1, DefaultMaterialSpecularModel::Default, true, true, true, 2));
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 2, true, true, 0, false, false, 1, 1, DefaultMaterialSpecularModel::Default, true, true, true, 0, true));
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 2, true, true, 0, false, false, 1, 1, DefaultMaterialSpecularModel::Default, true, true, true, 0, true, true));
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 2, true, true, 0, false, false, 1, 1, DefaultMaterialSpecularModel::Default, true, true, true, 0, true, true, true));
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 2, true, true, 0, false, false, 1, 1, DefaultMaterialSpecularModel::Default, true, true, true, 0, true, true, true, true));
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 2, true, true, 0, false, false, 1, 1, DefaultMaterialSpecularModel::Default, true, true, true, 0, true, true, true, false, true));
- testKeys.push_back(TestKey(TessModeValues::NoTess, false, DefaultMaterialLighting::FragmentLighting, 2, true, true, 0, false, false, 1, 1, DefaultMaterialSpecularModel::Default, true, true, true, 0, true, true, true, true, false, true));
-
- while (testKeys.size() < 100) {
- TestKey key = randomizeTestKey();
- if (!testKeys.contains(key))
- testKeys.push_back(key);
- }
- // generated programs must be unique
- QVector<NVRenderShaderProgram *> programs;
- success = initializeQt3DSRenderer(context->format());
- if (success) {
- for (TestKey key : testKeys) {
- qDebug () << "testing key: " << key.toInt();
- TestParams *params = generateTest(qt3dsRenderer(), context, key);
-
- qt3dsRenderer()->BeginLayerRender(params->layerData);
- NVRenderShaderProgram *program
- = qt3dsRenderer()->GenerateShader(params->renderable,
- toConstDataRef(params->features.data(),
- (QT3DSU32)params->features.size()));
- if (!program) {
- success = false;
- } else {
- if (programs.contains(program)) {
- qDebug () << "Generated program is not unique vs " << testKeys[programs.indexOf(program)].toString();
- success = false;
- }
- else {
- programs.push_back(program);
- }
- }
-
- if (!success)
- qDebug () << "failing test key: " << key.toString();
-
- qt3dsRenderer()->EndLayerRender();
- delete params;
- }
- }
-
- return success;
-}
-
-} // render
-} // qt3ds
diff --git a/tests/auto/runtime/shadergenerator/Qt3DSRenderTestDefaultMaterialGenerator.h b/tests/auto/runtime/shadergenerator/Qt3DSRenderTestDefaultMaterialGenerator.h
deleted file mode 100644
index c1464a30..00000000
--- a/tests/auto/runtime/shadergenerator/Qt3DSRenderTestDefaultMaterialGenerator.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-
-#ifndef QT3DS_RENDER_TEST_DEFAULT_MATERIAL_GENERATOR_H
-#define QT3DS_RENDER_TEST_DEFAULT_MATERIAL_GENERATOR_H
-
-#include "../Qt3DSRenderTestBase.h"
-
-
-namespace qt3ds {
-namespace render {
-
-class Qt3DSRenderTestDefaultMaterialGenerator : public NVRenderTestBase
-{
-public:
- Qt3DSRenderTestDefaultMaterialGenerator();
- ~Qt3DSRenderTestDefaultMaterialGenerator();
-
- bool isSupported(NVRenderContext *context);
- bool run(NVRenderContext *context, userContextData *pUserData);
- bool runPerformance(NVRenderContext *context, userContextData *pContextData);
- void cleanup(NVRenderContext *context, userContextData *pUserData);
-
-private:
-
-};
-
-} // render
-} // qt3ds
-
-#endif
diff --git a/tests/auto/runtime/shadergenerator/Qt3DSRenderTestEffectGenerator.cpp b/tests/auto/runtime/shadergenerator/Qt3DSRenderTestEffectGenerator.cpp
deleted file mode 100644
index 48346e68..00000000
--- a/tests/auto/runtime/shadergenerator/Qt3DSRenderTestEffectGenerator.cpp
+++ /dev/null
@@ -1,155 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "Qt3DSRenderTestEffectGenerator.h"
-#include "../Qt3DSRenderTestMathUtil.h"
-#include "render/Qt3DSRenderShaderProgram.h"
-#include "render/Qt3DSRenderContext.h"
-#include "Qt3DSRenderCustomMaterialSystem.h"
-#include "Qt3DSRenderCustomMaterialRenderContext.h"
-#include "Qt3DSRenderCustomMaterialShaderGenerator.h"
-#include "Qt3DSRenderDynamicObjectSystem.h"
-#include "Qt3DSRenderDynamicObjectSystemCommands.h"
-#include "Qt3DSRenderContextCore.h"
-#include "Qt3DSTypes.h"
-#include "Qt3DSRenderRuntimeBinding.h"
-#include "Qt3DSApplication.h"
-#include "Qt3DSInputEngine.h"
-#include "foundation/FileTools.h"
-#include "Qt3DSWindowSystem.h"
-#include "Qt3DSRenderShaderCache.h"
-#include "rendererimpl/Qt3DSRendererImpl.h"
-#include "Qt3DSRenderLight.h"
-#include "Qt3DSRenderUIPLoader.h"
-#include "Qt3DSDMMetaDataTypes.h"
-
-#include <QTime>
-#include <QString>
-#include <QStringList>
-
-#include <string>
-
-using namespace qt3ds::render;
-
-namespace qt3ds {
-namespace render {
-
-Qt3DSRenderTestEffectGenerator::Qt3DSRenderTestEffectGenerator()
-{
-
-}
-
-Qt3DSRenderTestEffectGenerator::~Qt3DSRenderTestEffectGenerator()
-{
-
-}
-
-bool Qt3DSRenderTestEffectGenerator::isSupported(NVRenderContext *context)
-{
- Q_UNUSED(context);
- return true;
-}
-
-bool Qt3DSRenderTestEffectGenerator::runPerformance(NVRenderContext *context,
- userContextData *pContextData)
-{
- Q_UNUSED(context);
- Q_UNUSED(pContextData);
- return false;
-}
-
-void Qt3DSRenderTestEffectGenerator::cleanup(NVRenderContext *context,
- userContextData *pUserData)
-{
- Q_UNUSED(context);
- Q_UNUSED(pUserData);
-}
-
-bool GenShader(IQt3DSRenderContext &qt3dsContext, SEffect &effect, qt3dsdm::SMetaDataEffect *metaEffect)
-{
- bool success = true;
- for (int i = 0; i < metaEffect->m_EffectCommands.size(); i++) {
- dynamic::SCommand &command = *metaEffect->m_EffectCommands[i];
- if (command.m_Type == dynamic::CommandTypes::Enum::BindShader) {
- dynamic::SBindShader *bindShader = static_cast<dynamic::SBindShader *>(&command);
- NVRenderShaderProgram *theProgram =
- qt3dsContext.GetDynamicObjectSystem()
- .GetShaderProgram(bindShader->m_ShaderPath, bindShader->m_ShaderDefine,
- TShaderFeatureSet(), dynamic::SDynamicShaderProgramFlags())
- .first;
- if (!theProgram)
- success = false;
- }
- }
- return success;
-}
-
-bool Qt3DSRenderTestEffectGenerator::run(NVRenderContext *context, userContextData *pUserData)
-{
- Q_UNUSED(pUserData);
- bool success = true;
-
- QStringList effectFiles;
- effectFiles.append("Desaturate.effect");
- effectFiles.append("Gaussian Blur.effect");
- effectFiles.append("Sepia.effect");
- effectFiles.append("Bloom.effect");
-
- for (QString effectName : effectFiles) {
- QString qfile = "qrc:/";
- qfile.append(effectName);
- QByteArray data = qfile.toLatin1();
- const char *cname = data.data();
- CRegisteredString name = context->GetStringTable().RegisterStr(cname);
-
- metadata()->LoadEffectXMLFile("Effect", "", effectName.toLatin1().data(), cname);
- Option<qt3dsdm::SMetaDataEffect> metaEffect =
- metadata()->GetEffectMetaDataBySourcePath(cname);
-
- if (metaEffect.hasValue()) {
- qt3ds::render::IUIPLoader::CreateEffectClassFromMetaEffect(
- name, context->GetFoundation(),
- qt3dsRenderer()->GetQt3DSContext().GetEffectSystem(), *metaEffect,
- context->GetStringTable());
-
- SEffect *effect = qt3dsRenderer()->GetQt3DSContext().GetEffectSystem()
- .CreateEffectInstance(name, qt3dsRenderer()->GetContext().GetAllocator());
-
- success &= GenShader(qt3dsRenderer()->GetQt3DSContext(), *effect, &metaEffect.getValue());
- if (!success)
- qDebug () << "failed effect: " << effectName;
- delete effect;
- }
- }
-
- return success;
-}
-
-} // render
-} // qt3ds
diff --git a/tests/auto/runtime/shadergenerator/Qt3DSRenderTestEffectGenerator.h b/tests/auto/runtime/shadergenerator/Qt3DSRenderTestEffectGenerator.h
deleted file mode 100644
index 4e26cf3c..00000000
--- a/tests/auto/runtime/shadergenerator/Qt3DSRenderTestEffectGenerator.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-
-#ifndef QT3DS_RENDER_TEST_EFFECT_GENERATOR_H
-#define QT3DS_RENDER_TEST_EFFECT_GENERATOR_H
-
-#include "../Qt3DSRenderTestBase.h"
-
-namespace qt3ds {
-namespace render {
-
-class Qt3DSRenderTestEffectGenerator : public NVRenderTestBase
-{
-public:
- Qt3DSRenderTestEffectGenerator();
- ~Qt3DSRenderTestEffectGenerator();
-
- bool isSupported(NVRenderContext *context);
- bool run(NVRenderContext *context, userContextData *pUserData);
- bool runPerformance(NVRenderContext *context, userContextData *pContextData);
- void cleanup(NVRenderContext *context, userContextData *pUserData);
-
-private:
-
-};
-
-} // render
-} // qt3ds
-
-#endif
diff --git a/tests/auto/runtime/tst_qt3dsruntime.cpp b/tests/auto/runtime/tst_qt3dsruntime.cpp
deleted file mode 100644
index 763529cb..00000000
--- a/tests/auto/runtime/tst_qt3dsruntime.cpp
+++ /dev/null
@@ -1,727 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "tst_qt3dsruntime.h"
-
-#include "render/Qt3DSRenderContext.h"
-#include "foundation/TrackingAllocator.h"
-#include "foundation/Qt3DSFoundation.h"
-#include "foundation/StringTable.h"
-#include "foundation/Qt3DSMat44.h"
-
-#include "base/Qt3DSRenderTestClear.h"
-#include "base/Qt3DSRenderTestPrimitives.h"
-#include "base/Qt3DSRenderTestConstantBuffer.h"
-#include "base/Qt3DSRenderTestBackendQuery.h"
-#include "base/Qt3DSRenderTestTimerQuery.h"
-#include "base/Qt3DSRenderTestTexture2D.h"
-#include "base/Qt3DSRenderTestAtomicCounterBuffer.h"
-#include "base/Qt3DSRenderTestDrawIndirectBuffer.h"
-#include "base/Qt3DSRenderTestAttribBuffers.h"
-#include "base/Qt3DSRenderTestProgramPipeline.h"
-#include "fbo/Qt3DSRenderTestFboMsaa.h"
-#include "geometry/Qt3DSRenderTestTessellation.h"
-#include "geometry/Qt3DSRenderTestGeometryShader.h"
-#include "geometry/Qt3DSRenderTestOcclusionQuery.h"
-#include "compute/Qt3DSRenderTestComputeShader.h"
-#include "shadergenerator/Qt3DSRenderTestDefaultMaterialGenerator.h"
-#include "shadergenerator/Qt3DSRenderTestCustomMaterialGenerator.h"
-#include "shadergenerator/Qt3DSRenderTestEffectGenerator.h"
-
-#include <QImage>
-#include <QOpenGLContext>
-#include <QOffscreenSurface>
-#include <QOpenGLFramebufferObject>
-#include <QOpenGLFramebufferObjectFormat>
-
-using namespace std;
-using namespace qt3ds;
-using namespace qt3ds::render;
-using namespace qt3ds::foundation;
-
-extern "C" {
-bool InitializeGL();
-}
-
-// Enable this to dump the test output into a log.txt file
-//#define DUMP_LOGFILE
-
-#ifndef EA_PLATFORM_WINDOWS
-
-#ifndef EASTL_DEBUG_BREAK
-void EASTL_DEBUG_BREAK()
-{
- return;
-}
-#endif
-
-namespace qt3ds {
-void NVAssert(const char *exp, const char *file, int line, bool *ignore)
-{
- *ignore = true;
- QString message = QString("failed: %1, file %2, line %3\n")
- .arg(exp).arg(file).arg(line);
- QFAIL(message.toLatin1().constData());
-}
-}
-#endif
-
-void messageOutput(QtMsgType type, const QMessageLogContext &context,
- const QString &msg)
-{
- Q_UNUSED(context);
- switch (type) {
- case QtDebugMsg:
- case QtInfoMsg:
- case QtWarningMsg:
- case QtCriticalMsg: {
-#ifdef DUMP_LOGFILE
- QFile file("log.txt");
- if (file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) {
- QTextStream stream(&file);
- stream << msg;
- }
- file.close();
-#endif
- } break; // swallow
- case QtFatalMsg:
- QFAIL(msg.toLocal8Bit().constData());
- }
-}
-
-void tst_qt3dsruntime::initTestCase()
-{
- qInstallMessageHandler(messageOutput);
-#ifdef DUMP_LOGFILE
- QFile file("log.txt");
- if (file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate)) {
- QTextStream stream(&file);
- stream << "Log file: " << QTime::currentTime().toString() << "\n";
- }
- file.close();
-#endif
-}
-
-QSurfaceFormat makeFormat(int major, int minor, bool gles = false, bool coreProfile = true)
-{
- QSurfaceFormat format;
- format.setDepthBufferSize(32);
- format.setVersion(major, minor);
- if (coreProfile)
- format.setProfile(QSurfaceFormat::CoreProfile);
- else
- format.setProfile(QSurfaceFormat::CompatibilityProfile);
- if (gles)
- format.setRenderableType(QSurfaceFormat::OpenGLES);
- return format;
-}
-
-bool tst_qt3dsruntime::init(QSurfaceFormat format)
-{
- m_glContext = new QT_PREPEND_NAMESPACE(QOpenGLContext)(this);
- m_glContext->setFormat(format);
- bool success = m_glContext->create();
- if (!success)
- return false;
-
- m_glSurface = new QOffscreenSurface;
- m_glSurface->setFormat(format);
- m_glSurface->create();
- m_glContext->makeCurrent(m_glSurface);
-
- m_allocator = new CAllocator;
- m_foundation = NVCreateFoundation(QT3DS_FOUNDATION_VERSION, *m_allocator);
- m_stringTable = &IStringTable::CreateStringTable(*m_allocator);
- m_renderContext = &NVRenderContext::CreateGL(*m_foundation, *m_stringTable, format);
- return true;
-}
-
-bool tst_qt3dsruntime::init()
-{
-#if defined(QT_OPENGL_ES_2)
- return init(makeFormat(2, 0, true, false));
-#elif defined(Q_OS_ANDROID) || defined(QT_OPENGL_ES_3)
- return init(makeFormat(3, 2, true, false));
-#else
- return init(makeFormat(4, 3));
-#endif
-}
-
-bool tst_qt3dsruntime::executeTest(NVRenderTestBase *curTest,
- const QString &testName,
- bool performPixelTest)
-{
- bool success = true;
- int width = 640;
- int height = 480;
- userContextData userData = { (unsigned int)width, (unsigned int)height };
-
- QOpenGLFramebufferObjectFormat fboFormat;
- fboFormat.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil);
- QOpenGLFramebufferObject *fbo = new QOpenGLFramebufferObject(QSize(width, height), fboFormat);
-
- m_renderContext->SetDefaultRenderTarget(fbo->handle());
- m_renderContext->SetDefaultDepthBufferBitCount(m_glContext->format().depthBufferSize());
- m_renderContext->SetViewport(NVRenderRect(0, 0, userData.winWidth, userData.winHeight));
-
- success = curTest->run(m_renderContext, &userData);
-
- if (performPixelTest) {
- QImage image = fbo->toImage();
- QImage refImage(QString(":/images/%1.png").arg(testName));
- refImage = refImage.convertToFormat(QImage::Format_ARGB32_Premultiplied);
- if (!refImage.isNull()) {
- bool pixelTest = image == refImage;
- success &= pixelTest;
- if (!pixelTest)
- image.save(QString("%1_failed.png").arg(testName));
- }
- }
-
- curTest->cleanup(m_renderContext, &userData);
-
- return success;
-}
-
-void tst_qt3dsruntime::testNVRenderTestClear()
-{
- init();
- NVRenderTestClear *test =
- QT3DS_NEW(m_foundation->getAllocator(), NVRenderTestClear);
- if (!test->isSupported(m_renderContext)) {
- QT3DS_FREE(m_foundation->getAllocator(), test);
- QSKIP("not supported");
- }
- bool success = executeTest(test, "NVRenderTestClear");
- QT3DS_FREE(m_foundation->getAllocator(), test);
- test = 0;
- QVERIFY(success);
- cleanup();
-}
-
-void tst_qt3dsruntime::testNVRenderTestPrimitives()
-{
- init();
- NVRenderTestPrimitives *test =
- QT3DS_NEW(m_foundation->getAllocator(), NVRenderTestPrimitives);
- if (!test->isSupported(m_renderContext)) {
- QT3DS_FREE(m_foundation->getAllocator(), test);
- QSKIP("not supported");
- }
- bool success = executeTest(test, "NVRenderTestPrimitives");
- QT3DS_FREE(m_foundation->getAllocator(), test);
- test = 0;
- QVERIFY(success);
- cleanup();
-}
-
-void tst_qt3dsruntime::testNVRenderTestConstantBuffer()
-{
- init();
- NVRenderTestConstantBuffer *test =
- QT3DS_NEW(m_foundation->getAllocator(), NVRenderTestConstantBuffer);
- if (!test->isSupported(m_renderContext)) {
- QT3DS_FREE(m_foundation->getAllocator(), test);
- QSKIP("not supported");
- }
- bool success = executeTest(test, "NVRenderTestConstantBuffer");
- QT3DS_FREE(m_foundation->getAllocator(), test);
- test = 0;
- QVERIFY(success);
- cleanup();
-}
-
-void tst_qt3dsruntime::testNVRenderTestBackendQuery()
-{
- init();
- NVRenderTestBackendQuery *test =
- QT3DS_NEW(m_foundation->getAllocator(), NVRenderTestBackendQuery);
- if (!test->isSupported(m_renderContext)) {
- QT3DS_FREE(m_foundation->getAllocator(), test);
- QSKIP("not supported");
- }
- // TODO: Fix BOUL-332 to re-enable this pixel test
- bool success = executeTest(test, "NVRenderTestBackendQuery", false);
- QT3DS_FREE(m_foundation->getAllocator(), test);
- test = 0;
- QVERIFY(success);
- cleanup();
-}
-
-void tst_qt3dsruntime::testNVRenderTestTimerQuery()
-{
- init();
- NVRenderTestTimerQuery *test =
- QT3DS_NEW(m_foundation->getAllocator(), NVRenderTestTimerQuery);
- if (!test->isSupported(m_renderContext)) {
- QT3DS_FREE(m_foundation->getAllocator(), test);
- QSKIP("not supported");
- }
- bool success = executeTest(test, "NVRenderTestTimerQuery");
- QT3DS_FREE(m_foundation->getAllocator(), test);
- test = 0;
- QVERIFY(success);
- cleanup();
-}
-
-void tst_qt3dsruntime::testNVRenderTestFboMsaa()
-{
- init();
- NVRenderTestFboMsaa *test =
- QT3DS_NEW(m_foundation->getAllocator(), NVRenderTestFboMsaa);
- if (!test->isSupported(m_renderContext)) {
- QT3DS_FREE(m_foundation->getAllocator(), test);
- QSKIP("not supported");
- }
- // TODO: Fix BOUL-332 to re-enable this pixel test
- bool success = executeTest(test, "NVRenderTestFboMsaa", false);
- QT3DS_FREE(m_foundation->getAllocator(), test);
- test = 0;
- QVERIFY(success);
- cleanup();
-}
-
-void tst_qt3dsruntime::testNVRenderTestTessellation()
-{
- init();
- NVRenderTestTessellation *test =
- QT3DS_NEW(m_foundation->getAllocator(), NVRenderTestTessellation);
- if (!test->isSupported(m_renderContext)) {
- QT3DS_FREE(m_foundation->getAllocator(), test);
- QSKIP("not supported");
- }
- bool success = executeTest(test, "NVRenderTestTessellation");
- QT3DS_FREE(m_foundation->getAllocator(), test);
- test = 0;
- QVERIFY(success);
- cleanup();
-}
-
-void tst_qt3dsruntime::testNVRenderTestGeometryShader()
-{
- init();
- NVRenderTestGeometryShader *test =
- QT3DS_NEW(m_foundation->getAllocator(), NVRenderTestGeometryShader);
- if (!test->isSupported(m_renderContext)) {
- QT3DS_FREE(m_foundation->getAllocator(), test);
- QSKIP("not supported");
- }
- bool success = executeTest(test, "NVRenderTestGeometryShader");
- QT3DS_FREE(m_foundation->getAllocator(), test);
- test = 0;
- QVERIFY(success);
- cleanup();
-}
-
-void tst_qt3dsruntime::testNVRenderTestComputeShader()
-{
- init();
- NVRenderTestComputeShader *test =
- QT3DS_NEW(m_foundation->getAllocator(), NVRenderTestComputeShader);
- if (!test->isSupported(m_renderContext)) {
- QT3DS_FREE(m_foundation->getAllocator(), test);
- QSKIP("not supported");
- }
- // TODO: Fix BOUL-332 to re-enable this pixel test
- bool success = executeTest(test, "NVRenderTestComputeShader", false);
- QT3DS_FREE(m_foundation->getAllocator(), test);
- test = 0;
- QVERIFY(success);
- cleanup();
-}
-
-void tst_qt3dsruntime::testNVRenderTestOcclusionQuery()
-{
- init();
- NVRenderTestOcclusionQuery *test =
- QT3DS_NEW(m_foundation->getAllocator(), NVRenderTestOcclusionQuery);
- if (!test->isSupported(m_renderContext)) {
- QT3DS_FREE(m_foundation->getAllocator(), test);
- QSKIP("not supported");
- }
- // TODO: Fix BOUL-332 to re-enable this pixel test
- bool success = executeTest(test, "NVRenderTestOcclusionQuery", false);
- QT3DS_FREE(m_foundation->getAllocator(), test);
- test = 0;
- QVERIFY(success);
- cleanup();
-}
-
-void tst_qt3dsruntime::testNVRenderTestTexture2D()
-{
- init();
- NVRenderTestTexture2D *test =
- QT3DS_NEW(m_foundation->getAllocator(), NVRenderTestTexture2D);
- if (!test->isSupported(m_renderContext)) {
- QT3DS_FREE(m_foundation->getAllocator(), test);
- QSKIP("not supported");
- }
- // TODO: Fix BOUL-332 to re-enable this pixel test
- bool success = executeTest(test, "NVRenderTestTexture2D", false);
- QT3DS_FREE(m_foundation->getAllocator(), test);
- test = 0;
- QVERIFY(success);
- cleanup();
-}
-
-void tst_qt3dsruntime::testNVRenderTestAtomicCounterBuffer()
-{
- init();
- NVRenderTestAtomicCounterBuffer *test =
- QT3DS_NEW(m_foundation->getAllocator(), NVRenderTestAtomicCounterBuffer);
- if (!test->isSupported(m_renderContext)) {
- QT3DS_FREE(m_foundation->getAllocator(), test);
- QSKIP("not supported");
- }
- bool success = executeTest(test, "NVRenderTestAtomicCounterBuffer");
- QT3DS_FREE(m_foundation->getAllocator(), test);
- test = 0;
- QVERIFY(success);
- cleanup();
-}
-
-void tst_qt3dsruntime::testNVRenderTestDrawIndirectBuffer()
-{
- init();
- NVRenderTestDrawIndirectBuffer *test =
- QT3DS_NEW(m_foundation->getAllocator(), NVRenderTestDrawIndirectBuffer);
- if (!test->isSupported(m_renderContext)) {
- QT3DS_FREE(m_foundation->getAllocator(), test);
- QSKIP("not supported");
- }
- // TODO: Fix BOUL-332 to re-enable this pixel test
- bool success = executeTest(test, "NVRenderTestDrawIndirectBuffer", false);
- QT3DS_FREE(m_foundation->getAllocator(), test);
- test = 0;
- QVERIFY(success);
- cleanup();
-}
-
-void tst_qt3dsruntime::testNVRenderTestAttribBuffers()
-{
- init();
- NVRenderTestAttribBuffers *test =
- QT3DS_NEW(m_foundation->getAllocator(), NVRenderTestAttribBuffers);
- if (!test->isSupported(m_renderContext)) {
- QT3DS_FREE(m_foundation->getAllocator(), test);
- QSKIP("not supported");
- }
- // TODO: Fix BOUL-332 to re-enable this pixel test
- bool success = executeTest(test, "NVRenderTestAttribBuffers", false);
- QT3DS_FREE(m_foundation->getAllocator(), test);
- test = 0;
- QVERIFY(success);
- cleanup();
-}
-
-void tst_qt3dsruntime::testNVRenderTestProgramPipeline()
-{
- init();
- NVRenderTestProgramPipeline *test =
- QT3DS_NEW(m_foundation->getAllocator(), NVRenderTestProgramPipeline);
- if (!test->isSupported(m_renderContext)) {
- QT3DS_FREE(m_foundation->getAllocator(), test);
- QSKIP("not supported");
- }
- // TODO: Fix BOUL-332 to re-enable this pixel test
- bool success = executeTest(test, "NVRenderTestProgramPipeline", false);
- QT3DS_FREE(m_foundation->getAllocator(), test);
- test = 0;
- QVERIFY(success);
- cleanup();
-}
-
-#if defined(QT_OPENGL_ES_2)
-void tst_qt3dsruntime::testRenderDefaultShaderGenerator_200es()
-{
- if (init(makeFormat(2, 0, true, false))) {
- runDefaultShaderGeneratorTest();
- cleanup();
- }
-}
-void tst_qt3dsruntime::testRenderCustomShaderGenerator_200es()
-{
- runCustomShaderGeneratorTest(makeFormat(2, 0, true, false));
- cleanup();
-}
-#endif
-
-#if defined(QT_OPENGL_ES_3)
-void tst_qt3dsruntime::testRenderDefaultShaderGenerator_300es()
-{
- if (init(makeFormat(3, 0, true, false))) {
- runDefaultShaderGeneratorTest();
- cleanup();
- }
-}
-void tst_qt3dsruntime::testRenderCustomShaderGenerator_300es()
-{
- runCustomShaderGeneratorTest(makeFormat(3, 0, true, false));
- cleanup();
-}
-
-#if defined(QT_FEATURE_opengles31)
-void tst_qt3dsruntime::testRenderDefaultShaderGenerator_310es()
-{
- if (init(makeFormat(3, 1, true, false))) {
- runDefaultShaderGeneratorTest();
- cleanup();
- }
-}
-void tst_qt3dsruntime::testRenderCustomShaderGenerator_310es()
-{
- runCustomShaderGeneratorTest(makeFormat(3, 1, true, false));
- cleanup();
-}
-#endif
-#if defined(QT_FEATURE_opengles32)
-void tst_qt3dsruntime::testRenderDefaultShaderGenerator_320es()
-{
- if (init(makeFormat(3, 1, true, false))) {
- runDefaultShaderGeneratorTest();
- cleanup();
- }
-}
-void tst_qt3dsruntime::testRenderCustomShaderGenerator_320es()
-{
- runCustomShaderGeneratorTest(makeFormat(3, 1, true, false));
- cleanup();
-}
-
-#endif
-#endif
-
-#if defined(QT_OPENGL_DYNAMIC)
-void tst_qt3dsruntime::testRenderDefaultShaderGenerator_300()
-{
- QSKIP("OpenGL 3.0 is not supported");
- if (init(makeFormat(3, 0))) {
- runDefaultShaderGeneratorTest();
- cleanup();
- }
-}
-
-void tst_qt3dsruntime::testRenderDefaultShaderGenerator_310()
-{
- if (init(makeFormat(3, 1))) {
- runDefaultShaderGeneratorTest();
- cleanup();
- }
-}
-
-void tst_qt3dsruntime::testRenderDefaultShaderGenerator_320()
-{
- if (init(makeFormat(3, 2))) {
- runDefaultShaderGeneratorTest();
- cleanup();
- }
-}
-
-void tst_qt3dsruntime::testRenderDefaultShaderGenerator_330()
-{
- if (init(makeFormat(3, 3))) {
- runDefaultShaderGeneratorTest();
- cleanup();
- }
-}
-
-void tst_qt3dsruntime::testRenderDefaultShaderGenerator_400()
-{
- if (init(makeFormat(4, 0))) {
- runDefaultShaderGeneratorTest();
- cleanup();
- }
-}
-
-void tst_qt3dsruntime::testRenderDefaultShaderGenerator_410()
-{
- if (init(makeFormat(4, 1))) {
- runDefaultShaderGeneratorTest();
- cleanup();
- }
-}
-
-void tst_qt3dsruntime::testRenderDefaultShaderGenerator_420()
-{
- if (init(makeFormat(4, 2))) {
- runDefaultShaderGeneratorTest();
- cleanup();
- }
-}
-
-void tst_qt3dsruntime::testRenderDefaultShaderGenerator_430()
-{
- if (init(makeFormat(4, 3))) {
- runDefaultShaderGeneratorTest();
- cleanup();
- }
-}
-
-void tst_qt3dsruntime::testRenderCustomShaderGenerator_300()
-{
- QSKIP("OpenGL 3.0 is not supported");
- runCustomShaderGeneratorTest(makeFormat(3, 0));
-}
-
-void tst_qt3dsruntime::testRenderCustomShaderGenerator_310()
-{
- runCustomShaderGeneratorTest(makeFormat(3, 1));
-}
-
-void tst_qt3dsruntime::testRenderCustomShaderGenerator_320()
-{
- runCustomShaderGeneratorTest(makeFormat(3, 2));
-}
-
-void tst_qt3dsruntime::testRenderCustomShaderGenerator_330()
-{
- runCustomShaderGeneratorTest(makeFormat(3, 3));
-}
-
-void tst_qt3dsruntime::testRenderCustomShaderGenerator_400()
-{
- runCustomShaderGeneratorTest(makeFormat(4, 0));
-}
-
-void tst_qt3dsruntime::testRenderCustomShaderGenerator_410()
-{
- runCustomShaderGeneratorTest(makeFormat(4, 1));
-}
-
-void tst_qt3dsruntime::testRenderCustomShaderGenerator_420()
-{
- runCustomShaderGeneratorTest(makeFormat(4, 2));
-}
-
-void tst_qt3dsruntime::testRenderCustomShaderGenerator_430()
-{
- runCustomShaderGeneratorTest(makeFormat(4, 3));
-}
-
-#endif
-
-void tst_qt3dsruntime::runDefaultShaderGeneratorTest()
-{
- Qt3DSRenderTestDefaultMaterialGenerator *test =
- QT3DS_NEW(m_foundation->getAllocator(), Qt3DSRenderTestDefaultMaterialGenerator);
- if (!test->isSupported(m_renderContext))
- QSKIP("not supported");
- bool success = executeTest(test, "Qt3DSRenderTestDefaultMaterialGenerator");
- QT3DS_FREE(m_foundation->getAllocator(), test);
- test = 0;
- QVERIFY(success);
-}
-
-void tst_qt3dsruntime::runCustomShaderGeneratorTest(QSurfaceFormat format)
-{
- m_glContext = new QT_PREPEND_NAMESPACE(QOpenGLContext)(this);
- m_glContext->setFormat(format);
- bool success = m_glContext->create();
- if (!success)
- return;
-
- m_glSurface = new QOffscreenSurface;
- m_glSurface->setFormat(format);
- m_glSurface->create();
- m_glContext->makeCurrent(m_glSurface);
-
- m_allocator = new CAllocator;
- m_foundation = NVCreateFoundation(QT3DS_FOUNDATION_VERSION, *m_allocator);
-
- Qt3DSRenderTestCustomMaterialGenerator *test =
- QT3DS_NEW(m_foundation->getAllocator(), Qt3DSRenderTestCustomMaterialGenerator);
-
- test->initializeQt3DSRenderer(format);
- m_renderContext = &NVRenderContext::CreateGL(*m_foundation, test->qt3dsRenderer()->GetContext()
- .GetStringTable(), format);
-
- if (!test->isSupported(m_renderContext))
- QSKIP("not supported");
- success = executeTest(test, "Qt3DSRenderTestCusromMaterialGenerator");
- QT3DS_FREE(m_foundation->getAllocator(), test);
- test = 0;
- QVERIFY(success);
- cleanup();
-}
-
-void tst_qt3dsruntime::testRenderEffectGenerator()
-{
- QSurfaceFormat format = makeFormat(4, 3);
- m_glContext = new QT_PREPEND_NAMESPACE(QOpenGLContext)(this);
- m_glContext->setFormat(format);
- bool success = m_glContext->create();
- if (!success)
- return;
-
- m_glSurface = new QOffscreenSurface;
- m_glSurface->setFormat(format);
- m_glSurface->create();
- m_glContext->makeCurrent(m_glSurface);
-
- m_allocator = new CAllocator;
- m_foundation = NVCreateFoundation(QT3DS_FOUNDATION_VERSION, *m_allocator);
-
- Qt3DSRenderTestEffectGenerator *test =
- QT3DS_NEW(m_foundation->getAllocator(), Qt3DSRenderTestEffectGenerator);
-
- test->initializeQt3DSRenderer(format);
- m_renderContext = &NVRenderContext::CreateGL(*m_foundation, test->qt3dsRenderer()->GetContext()
- .GetStringTable(), format);
-
- if (!test->isSupported(m_renderContext))
- QSKIP("not supported");
- success = executeTest(test, "Qt3DSRenderTestEffectGenerator");
- QT3DS_FREE(m_foundation->getAllocator(), test);
- test = 0;
- QVERIFY(success);
- cleanup();
-}
-
-void tst_qt3dsruntime::cleanup()
-{
- if (m_renderContext)
- m_renderContext->release();
- if (m_foundation)
- m_foundation->release();
-
- m_renderContext = 0;
- m_stringTable = 0;
- m_foundation = 0;
-
- delete m_allocator;
- m_allocator = 0;
-
- m_glSurface->destroy();
- delete m_glSurface;
- m_glSurface = 0;
-
- delete m_glContext;
- m_glContext = 0;
-}
-
-QTEST_MAIN(tst_qt3dsruntime)
diff --git a/tests/auto/runtime/tst_qt3dsruntime.h b/tests/auto/runtime/tst_qt3dsruntime.h
deleted file mode 100644
index 1f5b943e..00000000
--- a/tests/auto/runtime/tst_qt3dsruntime.h
+++ /dev/null
@@ -1,144 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-
-#ifndef TST_QT3DSRUNTIME
-#define TST_QT3DSRUNTIME
-
-#include <QtTest/QtTest>
-#include <QtTest/QSignalSpy>
-
-namespace qt3ds {
-class NVFoundation;
-namespace foundation {
-class CAllocator;
-class IStringTable;
-}
-namespace render {
-class NVRenderContext;
-class NVRenderTestBase;
-}
-}
-
-QT_BEGIN_NAMESPACE
-class QOpenGLContext;
-class QOffscreenSurface;
-QT_END_NAMESPACE
-
-class tst_qt3dsruntime : public QObject
-{
- Q_OBJECT
-public:
- tst_qt3dsruntime()
- : m_allocator(0)
- , m_foundation(0)
- , m_stringTable(0)
- , m_renderContext(0)
- , m_glContext(0)
- , m_glSurface(0)
- {
- }
-
-private Q_SLOTS:
- void initTestCase();
-
- void testNVRenderTestClear();
- void testNVRenderTestPrimitives();
- void testNVRenderTestConstantBuffer();
- void testNVRenderTestBackendQuery();
- void testNVRenderTestTimerQuery();
- void testNVRenderTestFboMsaa();
- void testNVRenderTestTessellation();
- void testNVRenderTestGeometryShader();
- void testNVRenderTestComputeShader();
- void testNVRenderTestOcclusionQuery();
- void testNVRenderTestTexture2D();
- void testNVRenderTestAtomicCounterBuffer();
- void testNVRenderTestDrawIndirectBuffer();
- void testNVRenderTestAttribBuffers();
- void testNVRenderTestProgramPipeline();
-
- void testRenderEffectGenerator();
-
-#if defined(QT_OPENGL_ES_2)
- void testRenderDefaultShaderGenerator_200es();
- void testRenderCustomShaderGenerator_200es();
-#endif
-#if defined(QT_OPENGL_ES_3)
- void testRenderDefaultShaderGenerator_300es();
- void testRenderCustomShaderGenerator_300es();
-#if defined(QT_FEATURE_opengles31)
- void testRenderDefaultShaderGenerator_310es();
- void testRenderCustomShaderGenerator_310es();
-#endif
-#if defined(QT_FEATURE_opengles32)
- void testRenderDefaultShaderGenerator_320es();
- void testRenderCustomShaderGenerator_320es();
-#endif
-#endif
-
-#if defined(QT_OPENGL_DYNAMIC)
- void testRenderDefaultShaderGenerator_300();
- void testRenderDefaultShaderGenerator_310();
- void testRenderDefaultShaderGenerator_320();
- void testRenderDefaultShaderGenerator_330();
- void testRenderDefaultShaderGenerator_400();
- void testRenderDefaultShaderGenerator_410();
- void testRenderDefaultShaderGenerator_420();
- void testRenderDefaultShaderGenerator_430();
-
- void testRenderCustomShaderGenerator_300();
- void testRenderCustomShaderGenerator_310();
- void testRenderCustomShaderGenerator_320();
- void testRenderCustomShaderGenerator_330();
- void testRenderCustomShaderGenerator_400();
- void testRenderCustomShaderGenerator_410();
- void testRenderCustomShaderGenerator_420();
- void testRenderCustomShaderGenerator_430();
-#endif
-
-
-
-private:
- bool executeTest(qt3ds::render::NVRenderTestBase *curTest,
- const QString &testName, bool peformPixelTest = true);
- bool init(QSurfaceFormat format);
- bool init();
- void runDefaultShaderGeneratorTest();
- void runCustomShaderGeneratorTest(QSurfaceFormat format);
- void cleanup();
-
- qt3ds::foundation::CAllocator *m_allocator;
- qt3ds::NVFoundation *m_foundation;
- qt3ds::foundation::IStringTable *m_stringTable;
- qt3ds::render::NVRenderContext *m_renderContext;
- QOpenGLContext *m_glContext;
- QOffscreenSurface *m_glSurface;
-};
-
-#endif // TST_QT3DSRUNTIME
diff --git a/tests/auto/studio3d/q3dssurfaceviewer/q3dssurfaceviewer.pro b/tests/auto/studio3d/q3dssurfaceviewer/q3dssurfaceviewer.pro
deleted file mode 100644
index 7da6bf77..00000000
--- a/tests/auto/studio3d/q3dssurfaceviewer/q3dssurfaceviewer.pro
+++ /dev/null
@@ -1,10 +0,0 @@
-TEMPLATE = app
-CONFIG += testcase
-
-TARGET = tst_q3dssurfaceviewer
-
-QT += testlib studio3d
-
-SOURCES += tst_q3dssurfaceviewer.cpp
-
-RESOURCES += ../shared/shared_presentations.qrc
diff --git a/tests/auto/studio3d/q3dssurfaceviewer/tst_q3dssurfaceviewer.cpp b/tests/auto/studio3d/q3dssurfaceviewer/tst_q3dssurfaceviewer.cpp
deleted file mode 100644
index 786ef3a3..00000000
--- a/tests/auto/studio3d/q3dssurfaceviewer/tst_q3dssurfaceviewer.cpp
+++ /dev/null
@@ -1,1516 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 <QtTest/QtTest>
-#include <QtStudio3D/q3dssurfaceviewer.h>
-#include <QtStudio3D/q3dsviewersettings.h>
-#include <QtStudio3D/q3dspresentation.h>
-#include <QtStudio3D/q3dssceneelement.h>
-#include <QtStudio3D/q3dselement.h>
-#include <QtStudio3D/q3dsdatainput.h>
-#include <QtGui/qwindow.h>
-#include <QtGui/qopenglcontext.h>
-#include <QtGui/qoffscreensurface.h>
-#include <QtGui/qpixmap.h>
-#include <QtGui/qimage.h>
-#include <QtGui/qscreen.h>
-#include <QtGui/qopenglframebufferobject.h>
-#include <QtGui/qevent.h>
-#include <QtCore/qurl.h>
-#include <QtCore/qfile.h>
-#include "../shared/shared_presentations.h"
-
-class tst_Q3DSSurfaceViewer : public QObject
-{
- Q_OBJECT
-public:
- tst_Q3DSSurfaceViewer();
- ~tst_Q3DSSurfaceViewer() {}
-
-private slots:
- void initTestCase();
- void init();
- void cleanup();
-
- void testBasics_data();
- void testBasics();
- void testSourceChange_data();
- void testSourceChange();
- void testSizeChange_data();
- void testSizeChange();
- void testUpdateInterval_data();
- void testUpdateInterval();
- void testMultiple_data();
- void testMultiple();
- void testGrab_data();
- void testGrab();
- void testReset_data();
- void testReset();
- void testSettings_data();
- void testSettings();
- void testPresentation_data();
- void testPresentation();
- void testPresentationActivation_data();
- void testPresentationActivation();
- void testSceneElement_data();
- void testSceneElement();
- void testElement_data();
- void testElement();
- void testMouseInput_data();
- void testMouseInput();
- void testDataInput_data();
- void testDataInput();
-
-private:
- QWindow *createWindow(const QSize &size);
- QOffscreenSurface *createOffscreen();
- QOpenGLFramebufferObject *createFbo(const QSize &size);
-
- // Created viewers are returned via *&viewer parameter rather than return value, so that we can
- // use QCOMPARE and QVERIFY inside these functions (they require void return value).
- void createViewer(Q3DSSurfaceViewer *&viewer, QSurface *surface, const QUrl &url,
- bool autoSize, const QSize &size, int updateInterval, int fboId);
- void createWindowAndViewer(Q3DSSurfaceViewer *&viewer, const QUrl &url = RED,
- bool autoSize = true, const QSize &size = QSize(),
- int updateInterval = 0);
- void createOffscreenAndViewer(Q3DSSurfaceViewer *&viewer, const QUrl &url = RED,
- const QSize &size = QSize(), int updateInterval = 0);
- void checkPixel(Q3DSSurfaceViewer *viewer, const QColor &color,
- const QPoint &pixel = QPoint(50, 50));
-
- QWindow *m_window;
- QOffscreenSurface *m_surface;
- Q3DSSurfaceViewer *m_viewer;
- QSurfaceFormat m_format;
- QOpenGLContext *m_context;
- QOpenGLFramebufferObject *m_fbo;
-};
-
-tst_Q3DSSurfaceViewer::tst_Q3DSSurfaceViewer()
- : m_window(nullptr)
- , m_surface(nullptr)
- , m_viewer(nullptr)
- , m_context(nullptr)
- , m_fbo(nullptr)
-{
-}
-
-//#define DUMP_LOGFILE // Uncomment log Qt 3D Studio internal messages to log.txt file
-void messageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
-{
- Q_UNUSED(context);
- switch (type) {
- // case QtDebugMsg:
- case QtInfoMsg:
- case QtWarningMsg:
- case QtCriticalMsg: {
-#ifdef DUMP_LOGFILE
- QFile file("log.txt");
- if (file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) {
- QTextStream stream(&file);
- stream << msg << "\n";
- }
- file.close();
-#endif
- } break; // swallow
- case QtFatalMsg:
- QFAIL(msg.toLocal8Bit().constData());
- }
-}
-
-void tst_Q3DSSurfaceViewer::initTestCase()
-{
- qInstallMessageHandler(messageOutput);
-#ifdef DUMP_LOGFILE
- QFile file("log.txt");
- if (file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate)) {
- QTextStream stream(&file);
- stream << "Log file: " << QTime::currentTime().toString() << "\n";
- }
- file.close();
-#endif
-
- QWindow *dummy = createWindow(QSize(100, 100));
- m_format = dummy->format();
- qDebug() << m_format;
- delete dummy;
-}
-
-void tst_Q3DSSurfaceViewer::init()
-{
- m_context = new QOpenGLContext();
- m_context->setFormat(m_format);
- m_context->create();
-}
-
-void tst_Q3DSSurfaceViewer::cleanup()
-{
- if (m_window)
- m_window->close();
-
- delete m_viewer;
- m_viewer = nullptr;
-
- delete m_window;
- m_window = nullptr;
-
- delete m_surface;
- m_surface = nullptr;
-
- delete m_fbo;
- m_fbo = nullptr;
-
- delete m_context;
- m_context = nullptr;
-}
-
-QWindow *tst_Q3DSSurfaceViewer::createWindow(const QSize &size)
-{
- QWindow *window = new QWindow();
-
- window->resize(size);
- window->setSurfaceType(QSurface::OpenGLSurface);
- window->setFormat(m_format);
- window->setTitle(QStringLiteral("Q3DSSurfaceViewer test window"));
- window->create();
-
- return window;
-}
-
-QOffscreenSurface *tst_Q3DSSurfaceViewer::createOffscreen()
-{
- QOffscreenSurface *surface = new QOffscreenSurface();
- surface->setFormat(m_format);
- surface->create();
-
- return surface;
-}
-
-QOpenGLFramebufferObject *tst_Q3DSSurfaceViewer::createFbo(const QSize &size)
-{
- QOpenGLFramebufferObjectFormat fboFormat;
- fboFormat.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil);
- return new QOpenGLFramebufferObject(size, fboFormat);
-}
-
-void tst_Q3DSSurfaceViewer::createViewer(Q3DSSurfaceViewer *&viewer, QSurface *surface,
- const QUrl &url, bool autoSize, const QSize &size,
- int updateInterval, int fboId)
-{
- viewer = new Q3DSSurfaceViewer();
- QSignalSpy spy(viewer, &Q3DSSurfaceViewer::runningChanged);
-
- viewer->presentation()->setSource(url);
- QCOMPARE(viewer->presentation()->source(), url);
-
- QVERIFY(spy.isValid());
- QCOMPARE(spy.count(), 0);
-
- viewer->setAutoSize(autoSize);
- if (!autoSize)
- viewer->setSize(size);
- viewer->setUpdateInterval(updateInterval);
-
- QVERIFY(viewer->create(surface, m_context, fboId));
-
- QCOMPARE(spy.count(), 1);
- QVERIFY(viewer->isRunning());
-
- QVERIFY(viewer->fboId() == fboId);
- QVERIFY(viewer->surface() == surface);
- QVERIFY(viewer->context() == m_context);
-}
-
-void tst_Q3DSSurfaceViewer::createWindowAndViewer(Q3DSSurfaceViewer *&viewer,
- const QUrl &url, bool autoSize,
- const QSize &size, int updateInterval)
-{
- QSize actualSize = size;
- if (actualSize.isEmpty())
- actualSize = QSize(300, 200);
-
- m_window = createWindow(actualSize);
-
- createViewer(viewer, m_window, url, autoSize, actualSize, updateInterval, 0);
-
- m_window->show();
- QGuiApplication::processEvents();
-}
-
-void tst_Q3DSSurfaceViewer::createOffscreenAndViewer(Q3DSSurfaceViewer *&viewer,
- const QUrl &url, const QSize &size,
- int updateInterval)
-{
- QSize actualSize = size;
- if (actualSize.isEmpty())
- actualSize = QSize(300, 200);
-
- m_surface = createOffscreen();
- m_context->makeCurrent(m_surface);
- m_fbo = createFbo(actualSize);
-
- createViewer(viewer, m_surface, url, false, actualSize, updateInterval, m_fbo->handle());
-}
-
-void tst_Q3DSSurfaceViewer::checkPixel(Q3DSSurfaceViewer *viewer, const QColor &color,
- const QPoint &pixel)
-{
- // Grab operation is potentially costly, so retry only every second instead of using
- // QTRY_COMPARE which would try it every 50ms. We also want to wait first as it takes some time
- // for the presentation to be displayed.
- QColor grabColor;
- for (int i = 0; i < 20; i++) {
- // Note: If checkpixel is ever changed to not have this wait, some
- // QGuiApplication::processEvents() calls may be necessary in various test cases to
- // ensure expected signaling order.
- QTest::qWait(1000);
- QImage image = viewer->grab(QRect(pixel, QSize(1, 1)));
- grabColor = QColor(image.pixel(0, 0));
- if (grabColor == color)
- break;
- }
- QCOMPARE(grabColor, color);
-}
-
-void tst_Q3DSSurfaceViewer::testBasics_data()
-{
- QTest::addColumn<bool>("isWindow");
- QTest::newRow("window") << true;
- QTest::newRow("offscreen") << false;
-}
-
-void tst_Q3DSSurfaceViewer::testBasics()
-{
- QFETCH(bool, isWindow);
-
- if (isWindow)
- createWindowAndViewer(m_viewer, RED);
- else
- createOffscreenAndViewer(m_viewer, RED);
-
- QSignalSpy spy(m_viewer, &Q3DSSurfaceViewer::runningChanged);
- QVERIFY(spy.isValid());
-
- checkPixel(m_viewer, Qt::red);
-
- m_viewer->destroy();
-
- QCOMPARE(spy.count(), 1);
- QVERIFY(!m_viewer->isRunning());
-}
-
-void tst_Q3DSSurfaceViewer::testSourceChange_data()
-{
- testBasics_data();
-}
-
-void tst_Q3DSSurfaceViewer::testSourceChange()
-{
- QFETCH(bool, isWindow);
-
- if (isWindow)
- createWindowAndViewer(m_viewer, RED);
- else
- createOffscreenAndViewer(m_viewer, RED);
-
- QSignalSpy spy(m_viewer->presentation(), &Q3DSPresentation::sourceChanged);
- QVERIFY(spy.isValid());
- QVERIFY(m_viewer->presentation()->source() == RED);
-
- checkPixel(m_viewer, Qt::red);
-
- // Different source
- m_viewer->presentation()->setSource(BLUE);
- QCOMPARE(spy.count(), 1);
- QVERIFY(m_viewer->presentation()->source() == BLUE);
-
- checkPixel(m_viewer, Qt::blue);
-
- // Reset same source
- m_viewer->presentation()->setSource(BLUE);
- QCOMPARE(spy.count(), 1);
- QVERIFY(m_viewer->presentation()->source() == BLUE);
-
- checkPixel(m_viewer, Qt::blue);
-
- // Different source again
- m_viewer->presentation()->setSource(RED);
- QCOMPARE(spy.count(), 2);
- QVERIFY(m_viewer->presentation()->source() == RED);
-
- checkPixel(m_viewer, Qt::red);
-}
-
-void tst_Q3DSSurfaceViewer::testSizeChange_data()
-{
- testBasics_data();
-}
-
-void tst_Q3DSSurfaceViewer::testSizeChange()
-{
- QFETCH(bool, isWindow);
-
- if (isWindow) {
- createWindowAndViewer(m_viewer, MIXED, true, QSize(600, 600));
- } else {
- // Changing size for offscreen surface means recreating the fbo. There's no guarantee
- // we can get the same fbo id if we do that, so we would have to reinitialize anyway
- QSKIP("Skipping size change testing for offscreen surfaces");
- }
-
- m_viewer->settings()->setScaleMode(Q3DSViewerSettings::ScaleModeFill);
-
- QSignalSpy spy1(m_viewer, &Q3DSSurfaceViewer::sizeChanged);
- QVERIFY(spy1.isValid());
- QSignalSpy spy2(m_viewer, &Q3DSSurfaceViewer::autoSizeChanged);
- QVERIFY(spy2.isValid());
-
- QPoint leftPoint(m_viewer->size().width() * 11 / 24, m_viewer->size().height() / 2);
- QPoint rightPoint(m_viewer->size().width() * 13 / 24, m_viewer->size().height() / 2);
-
- // MIXED presentation has left side blue, right side red
- checkPixel(m_viewer, Qt::blue, leftPoint);
- checkPixel(m_viewer, Qt::red, rightPoint);
-
- m_window->resize(QSize(800, 800));
- QGuiApplication::processEvents();
- QCOMPARE(spy1.count(), 1);
-
- checkPixel(m_viewer, Qt::blue, leftPoint);
- checkPixel(m_viewer, Qt::blue, rightPoint);
-
- m_window->resize(QSize(400, 400));
- QGuiApplication::processEvents();
- QCOMPARE(spy1.count(), 2);
-
- checkPixel(m_viewer, Qt::red, leftPoint);
- checkPixel(m_viewer, Qt::red, rightPoint);
-
- m_viewer->setAutoSize(false);
- QCOMPARE(spy2.count(), 1);
-
- // Size should not change since autosize is no longer on
- m_window->resize(QSize(600, 600));
- QGuiApplication::processEvents();
- QCOMPARE(spy1.count(), 2);
-
- checkPixel(m_viewer, Qt::red, leftPoint);
- checkPixel(m_viewer, Qt::red, rightPoint);
-
- m_viewer->setSize(QSize(700, 700));
- QCOMPARE(spy1.count(), 3);
-
- checkPixel(m_viewer, Qt::blue, leftPoint);
- checkPixel(m_viewer, Qt::blue, rightPoint);
-}
-
-void tst_Q3DSSurfaceViewer::testUpdateInterval_data()
-{
- testBasics_data();
-}
-
-void tst_Q3DSSurfaceViewer::testUpdateInterval()
-{
- QFETCH(bool, isWindow);
-
- if (isWindow)
- createWindowAndViewer(m_viewer, ANIMATION);
- else
- createOffscreenAndViewer(m_viewer, ANIMATION);
-
- m_viewer->settings()->setScaleMode(Q3DSViewerSettings::ScaleModeFill);
-
- QSignalSpy spy(m_viewer, &Q3DSSurfaceViewer::updateIntervalChanged);
- QVERIFY(spy.isValid());
- QVERIFY(m_viewer->updateInterval() == 0);
-
- checkPixel(m_viewer, Qt::black);
- {
- // Grab two images two seconds apart to verify animation is happening
- QImage image1 = m_viewer->grab();
- QTest::qWait(2000);
- QImage image2 = m_viewer->grab();
- QVERIFY(image1 != image2);
-
- }
- {
- m_viewer->setUpdateInterval(100000);
- QVERIFY(m_viewer->updateInterval() == 100000);
- QCOMPARE(spy.count(), 1);
- // Can't test if animation actually stopped, as grabbing the viewer forces update on it
- }
- {
- m_viewer->setUpdateInterval(20);
- QCOMPARE(spy.count(), 2);
- QVERIFY(m_viewer->updateInterval() == 20);
-
- // Non-zero interval short enough to see animation
- QImage image1 = m_viewer->grab();
- QTest::qWait(2000);
- QImage image2 = m_viewer->grab();
- QVERIFY(image1 != image2);
- }
- {
- m_viewer->setUpdateInterval(-1);
- QCOMPARE(spy.count(), 3);
- QVERIFY(m_viewer->updateInterval() == -1);
- // Can't test if animation actually stopped, as grabbing the viewer forces update on it
- }
-}
-
-void tst_Q3DSSurfaceViewer::testMultiple_data()
-{
- QTest::addColumn<int>("windowCount");
- QTest::addColumn<int>("offscreenCount");
- QTest::newRow("windows") << 2 << 0;
- QTest::newRow("offscreens") << 0 << 2;
- QTest::newRow("mixed") << 1 << 1;
-}
-
-void tst_Q3DSSurfaceViewer::testMultiple()
-{
- QFETCH(int, windowCount);
- QFETCH(int, offscreenCount);
-
- QVector<QWindow *> windows;
- QVector<QOffscreenSurface *> surfaces;
- QVector<Q3DSSurfaceViewer *> viewers;
- QVector<QOpenGLFramebufferObject *> fbos;
-
- int viewerCount = windowCount + offscreenCount;
- windows.resize(windowCount);
- surfaces.resize(offscreenCount);
- fbos.resize(offscreenCount);
- viewers.resize(viewerCount);
-
- QSize size(200, 150);
- QUrl url;
- for (int i = 0; i < windowCount; i++) {
- windows[i] = createWindow(size);
- if (i % 2)
- url = RED;
- else
- url = BLUE;
- createViewer(viewers[i], windows[i], url, true, size, 0, 0);
- windows[i]->setPosition(10 + i * 50, 10 + i * 50);
- windows[i]->show();
- QGuiApplication::processEvents();
- }
- for (int i = 0; i < offscreenCount; i++) {
- surfaces[i] = createOffscreen();
- m_context->makeCurrent(surfaces[i]);
- fbos[i] = createFbo(size);
- if ((i + windowCount) % 2)
- url = RED;
- else
- url = BLUE;
- createViewer(viewers[i + windowCount], surfaces[i], url, false, size, 0,
- fbos[i]->handle());
- }
-
- for (int i = 0; i < viewerCount; i++) {
- if (i % 2)
- checkPixel(viewers[i], Qt::red);
- else
- checkPixel(viewers[i], Qt::blue);
- }
-
- for (QWindow *w : windows) {
- w->close();
- delete w;
- }
- windows.clear();
-
- for (QOffscreenSurface *s : surfaces)
- delete s;
- surfaces.clear();
-
- for (Q3DSSurfaceViewer *v : viewers)
- delete v;
- viewers.clear();
-
- for (QOpenGLFramebufferObject *f : fbos)
- delete f;
- fbos.clear();
-}
-
-void tst_Q3DSSurfaceViewer::testGrab_data()
-{
- testBasics_data();
-}
-
-void tst_Q3DSSurfaceViewer::testGrab()
-{
- QFETCH(bool, isWindow);
-
- if (isWindow)
- createWindowAndViewer(m_viewer, MIXED_VERTICAL);
- else
- createOffscreenAndViewer(m_viewer, MIXED_VERTICAL);
-
- // Single pixels
- int w = m_viewer->size().width();
- int h = m_viewer->size().height();
-
- checkPixel(m_viewer, Qt::blue, QPoint(w / 2, h / 4));
- checkPixel(m_viewer, Qt::red, QPoint(w / 2, 3 * h / 4));
-
- checkPixel(m_viewer, Qt::blue, QPoint(0, 0));
- checkPixel(m_viewer, Qt::blue, QPoint(w - 1, 0));
- checkPixel(m_viewer, Qt::red, QPoint(0, h - 1));
- checkPixel(m_viewer, Qt::red, QPoint(w - 1, h - 1));
-
- // Full buffer
- QImage img = m_viewer->grab();
- QColor grabColor1 = img.pixel(w / 2, h / 4);
- QColor grabColor2 = img.pixel(w / 2, 3 * h / 4);
- QCOMPARE(grabColor1, QColor(Qt::blue));
- QCOMPARE(grabColor2, QColor(Qt::red));
-
- // Partial buffer
- img = m_viewer->grab(QRect(w / 3, h / 3, w / 2, h / 2));
- grabColor1 = img.pixel(0, 0);
- grabColor2 = img.pixel(w / 2 - 1, h / 2 - 1);
- QCOMPARE(grabColor1, QColor(Qt::blue));
- QCOMPARE(grabColor2, QColor(Qt::red));
-}
-
-void tst_Q3DSSurfaceViewer::testReset_data()
-{
- testBasics_data();
-}
-
-void tst_Q3DSSurfaceViewer::testReset()
-{
- QFETCH(bool, isWindow);
-
- if (isWindow)
- createWindowAndViewer(m_viewer, RED);
- else
- createOffscreenAndViewer(m_viewer, RED);
-
- checkPixel(m_viewer, Qt::red);
-
- m_viewer->presentation()->setAttribute(QStringLiteral("Scene.Layer.Rectangle.Material"),
- QStringLiteral("diffuse.r"), QVariant(0.0));
- m_viewer->presentation()->setAttribute(QStringLiteral("Scene.Layer.Rectangle.Material"),
- QStringLiteral("diffuse.b"), QVariant(1.0));
- checkPixel(m_viewer, Qt::blue);
-
- // Note: reset() is private method now, instead can reload presentation by switching sources
- // m_viewer->reset();
- m_viewer->presentation()->setSource(ANIMATION);
- m_viewer->presentation()->setSource(RED);
-
- checkPixel(m_viewer, Qt::red);
-}
-
-void tst_Q3DSSurfaceViewer::testSettings_data()
-{
- testBasics_data();
-}
-
-void tst_Q3DSSurfaceViewer::testSettings()
-{
- QFETCH(bool, isWindow);
-
- int width = 500;
- int height = 500;
-
- if (isWindow)
- createWindowAndViewer(m_viewer, SETTINGS, false, QSize(width, height));
- else
- createOffscreenAndViewer(m_viewer, SETTINGS, QSize(width, height));
-
- Q3DSViewerSettings *s = m_viewer->settings();
-
- QSignalSpy spy1(s, &Q3DSViewerSettings::matteColorChanged);
- QSignalSpy spy2(s, &Q3DSViewerSettings::showRenderStatsChanged);
- QSignalSpy spy4(s, &Q3DSViewerSettings::scaleModeChanged);
- QVERIFY(spy1.isValid());
- QVERIFY(spy2.isValid());
- QVERIFY(spy4.isValid());
-
- // Check defaults
- QCOMPARE(s->matteColor(), QColor(Qt::black));
- QCOMPARE(s->isShowRenderStats(), false);
- QCOMPARE(s->scaleMode(), Q3DSViewerSettings::ScaleModeCenter);
-
- // Matte
- checkPixel(m_viewer, Qt::black);
-
- s->setMatteColor(Qt::cyan);
- QCOMPARE(s->matteColor(), QColor(Qt::cyan));
-
- QCOMPARE(spy1.count(), 1);
- QCOMPARE(spy2.count(), 0);
- QCOMPARE(spy4.count(), 0);
-
- checkPixel(m_viewer, Qt::cyan);
-
- // Render stats
- QImage image1 = m_viewer->grab();
-
- s->setShowRenderStats(true);
- QCOMPARE(s->isShowRenderStats(), true);
-
- QCOMPARE(spy1.count(), 1);
- QCOMPARE(spy2.count(), 1);
- QCOMPARE(spy4.count(), 0);
-
- QImage image2 = m_viewer->grab();
- QVERIFY(image1 != image2);
-
- s->setShowRenderStats(false);
- QCOMPARE(spy1.count(), 1);
- QCOMPARE(spy2.count(), 2);
- QCOMPARE(spy4.count(), 0);
-
- // ScaleMode
- checkPixel(m_viewer, Qt::cyan);
- checkPixel(m_viewer, Qt::cyan, QPoint(50, height / 2));
- s->setScaleMode(Q3DSViewerSettings::ScaleModeFit);
- QCOMPARE(s->scaleMode(), Q3DSViewerSettings::ScaleModeFit);
-
- QCOMPARE(spy1.count(), 1);
- QCOMPARE(spy2.count(), 2);
- QCOMPARE(spy4.count(), 1);
-
- checkPixel(m_viewer, Qt::cyan);
- checkPixel(m_viewer, Qt::red, QPoint(50, height / 2));
-
- s->setScaleMode(Q3DSViewerSettings::ScaleModeFill);
- QCOMPARE(s->scaleMode(), Q3DSViewerSettings::ScaleModeFill);
-
- QCOMPARE(spy1.count(), 1);
- QCOMPARE(spy2.count(), 2);
- QCOMPARE(spy4.count(), 2);
-
- checkPixel(m_viewer, Qt::blue);
- checkPixel(m_viewer, Qt::red, QPoint(50, height / 2));
-
- // Saving & loading settings
- s->save(QStringLiteral("testViewer"), QStringLiteral("The Qt Company"),
- QStringLiteral("tst_q3dsurfaceviewer"));
-
- image1 = m_viewer->grab();
-
- s->setMatteColor(Qt::yellow);
- s->setShowRenderStats(true);
- s->setScaleMode(Q3DSViewerSettings::ScaleModeFit);
-
- QCOMPARE(s->matteColor(), QColor(Qt::yellow));
- QCOMPARE(s->isShowRenderStats(), true);
- QCOMPARE(s->scaleMode(), Q3DSViewerSettings::ScaleModeFit);
-
- QCOMPARE(spy1.count(), 2);
- QCOMPARE(spy2.count(), 3);
- QCOMPARE(spy4.count(), 3);
-
- image2 = m_viewer->grab();
-
- s->load(QStringLiteral("testViewer"), QStringLiteral("The Qt Company"),
- QStringLiteral("tst_q3dsurfaceviewer"));
-
- QCOMPARE(s->matteColor(), QColor(Qt::cyan));
- QCOMPARE(s->isShowRenderStats(), false);
- QCOMPARE(s->scaleMode(), Q3DSViewerSettings::ScaleModeFill);
-
- QCOMPARE(spy1.count(), 3);
- QCOMPARE(spy2.count(), 4);
- QCOMPARE(spy4.count(), 4);
-
- QImage image3 = m_viewer->grab();
- QVERIFY(image1 != image2);
- QVERIFY(image3 != image2);
- QVERIFY(image1 == image3);
-
- // Clean up the settings so they don't pollute the system (and we have clean slate next time)
- QSettings(QStringLiteral("The Qt Company"), QStringLiteral("tst_q3dsurfaceviewer")).clear();
-}
-
-void tst_Q3DSSurfaceViewer::testPresentation_data()
-{
- testBasics_data();
-}
-
-void tst_Q3DSSurfaceViewer::testPresentation()
-{
- QFETCH(bool, isWindow);
-
- if (isWindow)
- createWindowAndViewer(m_viewer, MULTISLIDE);
- else
- createOffscreenAndViewer(m_viewer, MULTISLIDE);
-
- m_viewer->settings()->setScaleMode(Q3DSViewerSettings::ScaleModeFill);
-
- QList<QVariant> args;
- Q3DSPresentation *p = m_viewer->presentation();
- QSignalSpy spy1(p, &Q3DSPresentation::slideEntered);
- QSignalSpy spy2(p, &Q3DSPresentation::slideExited);
- QVERIFY(spy1.isValid());
- QVERIFY(spy2.isValid());
-
- // There are three different "scenes":
- // The main Scene, three slides: S1, S2, S3
- // Two components on Scene.Layer:
- // Scene.Layer.Component1, two slides: C1S1, C1S2
- // Scene.Layer.Component2, two slides: C2S1, C2S2
- // The component slides also get enter when parent slide is entered, but they do not get
- // the corresponding exit if parent slide is exited.
- QString path = QStringLiteral("Scene");
- QString pathC1 = QStringLiteral("Scene.Layer.Component1");
- QString pathC2 = QStringLiteral("Scene.Layer.Component2");
- QPoint mainPoint(m_viewer->size().width() * 2 / 8, m_viewer->size().height() / 2);
- QPoint bgPoint(m_viewer->size().width() * 2 / 8, m_viewer->size().height() / 32);
- QPoint c1Point(m_viewer->size().width() * 5 / 8, m_viewer->size().height() / 2);
- QPoint c2Point(m_viewer->size().width() * 7 / 8, m_viewer->size().height() / 2);
-
- checkPixel(m_viewer, Qt::red, mainPoint);
- checkPixel(m_viewer, Qt::green, c1Point);
- checkPixel(m_viewer, Qt::yellow, c2Point);
-
- QCOMPARE(spy1.count(), 3);
- QCOMPARE(spy2.count(), 0);
-
- // String Attribute
- QImage image1 = m_viewer->grab();
- p->setAttribute(QStringLiteral("Scene.Layer.Text"),
- QStringLiteral("textstring"), QStringLiteral("Test!"));
- QImage image2 = m_viewer->grab();
- QTRY_VERIFY(image1 != image2);
-
- // Float Attribute
- p->setAttribute(QStringLiteral("Scene.Layer.Rect.Material"),
- QStringLiteral("diffuse.r"), 0.0);
- p->setAttribute(QStringLiteral("Scene.Layer.Rect.Material"),
- QStringLiteral("diffuse.g"), 1.0);
- p->setAttribute(QStringLiteral("Scene.Layer.Rect.Material"),
- QStringLiteral("diffuse.b"), 1.0);
-
- checkPixel(m_viewer, Qt::cyan, mainPoint);
- checkPixel(m_viewer, Qt::green, c1Point);
- checkPixel(m_viewer, Qt::yellow, c2Point);
-
- p->setAttribute(QStringLiteral("Scene.Layer.Rect.Material"),
- QStringLiteral("diffuse.r"), 1.0);
- p->setAttribute(QStringLiteral("Scene.Layer.Rect.Material"),
- QStringLiteral("diffuse.g"), 0.0);
- p->setAttribute(QStringLiteral("Scene.Layer.Rect.Material"),
- QStringLiteral("diffuse.b"), 0.0);
-
- checkPixel(m_viewer, Qt::red, mainPoint);
- checkPixel(m_viewer, Qt::green, c1Point);
- checkPixel(m_viewer, Qt::yellow, c2Point);
-
- // Bool Attribute
- checkPixel(m_viewer, Qt::yellow, bgPoint);
- p->setAttribute(QStringLiteral("Scene"), QStringLiteral("bgcolorenable"), false);
- checkPixel(m_viewer, Qt::black, bgPoint);
-
- // Slide changes
- p->goToSlide(path, 2);
- checkPixel(m_viewer, Qt::blue, mainPoint);
- checkPixel(m_viewer, Qt::blue, c1Point);
- checkPixel(m_viewer, Qt::blue, c2Point);
-
- QCOMPARE(spy1.count(), 4);
- QCOMPARE(spy2.count(), 1);
- args = spy1.last();
- QCOMPARE(args.at(0).toString(), path);
- QCOMPARE(args.at(1).toInt(), 2);
- QCOMPARE(args.at(2).toString(), QStringLiteral("S2"));
- args = spy2.last();
- QCOMPARE(args.at(0).toString(), path);
- QCOMPARE(args.at(1).toInt(), 1);
- QCOMPARE(args.at(2).toString(), QStringLiteral("S1"));
-
- // Time change
- p->goToTime(path, 7.0f);
- checkPixel(m_viewer, Qt::black, mainPoint);
- QCOMPARE(spy1.count(), 4);
- QCOMPARE(spy2.count(), 1);
-
- // More complex slide changes
- // Changing slide that is not visible should not trigger enter signals
- // The slides should still change, though, and become visible later when we switch back to S1
- p->goToSlide(pathC1, QStringLiteral("C1S2"));
- p->goToSlide(pathC2, QStringLiteral("C2S2"));
- QCOMPARE(spy1.count(), 4);
- QCOMPARE(spy2.count(), 1);
-
- p->goToSlide(path, QStringLiteral("S1"));
- checkPixel(m_viewer, Qt::red, mainPoint);
- checkPixel(m_viewer, Qt::cyan, c1Point);
- checkPixel(m_viewer, Qt::magenta, c2Point);
- QCOMPARE(spy1.count(), 7);
- QCOMPARE(spy2.count(), 2);
-
- p->goToSlide(pathC1, QStringLiteral("C1S1"));
- checkPixel(m_viewer, Qt::red, mainPoint);
- checkPixel(m_viewer, Qt::green, c1Point);
- checkPixel(m_viewer, Qt::magenta, c2Point);
- QCOMPARE(spy1.count(), 8);
- QCOMPARE(spy2.count(), 3);
-
- args = spy1.last();
- QCOMPARE(args.at(0).toString(), pathC1);
- QCOMPARE(args.at(1).toInt(), 1);
- QCOMPARE(args.at(2).toString(), QStringLiteral("C1S1"));
- args = spy2.last();
- QCOMPARE(args.at(0).toString(), pathC1);
- QCOMPARE(args.at(1).toInt(), 2);
- QCOMPARE(args.at(2).toString(), QStringLiteral("C1S2"));
-
- p->goToSlide(pathC2, QStringLiteral("C2S1"));
- checkPixel(m_viewer, Qt::red, mainPoint);
- checkPixel(m_viewer, Qt::green, c1Point);
- checkPixel(m_viewer, Qt::yellow, c2Point);
- QCOMPARE(spy1.count(), 9);
- QCOMPARE(spy2.count(), 4);
-
- args = spy1.last();
- QCOMPARE(args.at(0).toString(), pathC2);
- QCOMPARE(args.at(1).toInt(), 1);
- QCOMPARE(args.at(2).toString(), QStringLiteral("C2S1"));
- args = spy2.last();
- QCOMPARE(args.at(0).toString(), pathC2);
- QCOMPARE(args.at(1).toInt(), 2);
- QCOMPARE(args.at(2).toString(), QStringLiteral("C2S2"));
-
- p->goToSlide(path, true, true);
- checkPixel(m_viewer, Qt::blue, mainPoint);
- checkPixel(m_viewer, Qt::blue, c1Point);
- checkPixel(m_viewer, Qt::blue, c2Point);
- QCOMPARE(spy1.count(), 10);
- QCOMPARE(spy2.count(), 5);
-
- args = spy1.last();
- QCOMPARE(args.at(0).toString(), path);
- QCOMPARE(args.at(1).toInt(), 2);
- QCOMPARE(args.at(2).toString(), QStringLiteral("S2"));
- args = spy2.last();
- QCOMPARE(args.at(0).toString(), path);
- QCOMPARE(args.at(1).toInt(), 1);
- QCOMPARE(args.at(2).toString(), QStringLiteral("S1"));
-
- p->goToSlide(path, false, true);
- checkPixel(m_viewer, Qt::red, mainPoint);
- checkPixel(m_viewer, Qt::green, c1Point);
- checkPixel(m_viewer, Qt::yellow, c2Point);
- QCOMPARE(spy1.count(), 13);
- QCOMPARE(spy2.count(), 6);
-
- // No wrap, should not change
- p->goToSlide(path, false, false);
- checkPixel(m_viewer, Qt::red, mainPoint);
- checkPixel(m_viewer, Qt::green, c1Point);
- checkPixel(m_viewer, Qt::yellow, c2Point);
- QCOMPARE(spy1.count(), 13);
- QCOMPARE(spy2.count(), 6);
-
- // Should wrap
- p->goToSlide(path, false, true);
- checkPixel(m_viewer, Qt::green, mainPoint);
- checkPixel(m_viewer, Qt::green, c1Point);
- checkPixel(m_viewer, Qt::green, c2Point);
- QCOMPARE(spy1.count(), 14);
- QCOMPARE(spy2.count(), 7);
-
- // No wrap, should not change
- p->goToSlide(path, true, false);
- checkPixel(m_viewer, Qt::green, mainPoint);
- checkPixel(m_viewer, Qt::green, c1Point);
- checkPixel(m_viewer, Qt::green, c2Point);
- QCOMPARE(spy1.count(), 14);
- QCOMPARE(spy2.count(), 7);
-
- // Should wrap
- p->goToSlide(path, true, true);
- checkPixel(m_viewer, Qt::red, mainPoint);
- checkPixel(m_viewer, Qt::green, c1Point);
- checkPixel(m_viewer, Qt::yellow, c2Point);
- QCOMPARE(spy1.count(), 17);
- QCOMPARE(spy2.count(), 8);
-}
-
-void tst_Q3DSSurfaceViewer::testPresentationActivation_data()
-{
- testBasics_data();
-}
-
-void tst_Q3DSSurfaceViewer::testPresentationActivation()
-{
- QFETCH(bool, isWindow);
-
- if (isWindow)
- createWindowAndViewer(m_viewer, ANIMATION);
- else
- createOffscreenAndViewer(m_viewer, ANIMATION);
-
- // Note: Presentation filename isn't default ID anymore, need to set manually.
- m_viewer->setPresentationId(QStringLiteral("animation"));
- m_viewer->settings()->setScaleMode(Q3DSViewerSettings::ScaleModeFill);
-
- {
- // Grab two images two seconds apart to verify animation is happening
- QImage image1 = m_viewer->grab();
- QTest::qWait(2000);
- QImage image2 = m_viewer->grab();
- QVERIFY(image1 != image2);
- }
-
- m_viewer->presentation()->setPresentationActive(QStringLiteral("animation"), false);
-
- {
- // Grab two images two seconds apart to verify animation has stopped
- QImage image1 = m_viewer->grab();
- QTest::qWait(2000);
- QImage image2 = m_viewer->grab();
- QVERIFY(image1 == image2);
- }
-
- m_viewer->presentation()->setPresentationActive(QStringLiteral("animation"), true);
-
- {
- // Grab two images two seconds apart to verify animation is happening
- QImage image1 = m_viewer->grab();
- QTest::qWait(2000);
- QImage image2 = m_viewer->grab();
- QVERIFY(image1 != image2);
- }
-}
-
-void tst_Q3DSSurfaceViewer::testSceneElement_data()
-{
- testBasics_data();
-}
-
-void tst_Q3DSSurfaceViewer::testSceneElement()
-{
- QFETCH(bool, isWindow);
-
- if (isWindow)
- createWindowAndViewer(m_viewer, MULTISLIDE);
- else
- createOffscreenAndViewer(m_viewer, MULTISLIDE);
-
- m_viewer->settings()->setScaleMode(Q3DSViewerSettings::ScaleModeFill);
-
- QString path = QStringLiteral("Scene");
- QString pathC1 = QStringLiteral("Scene.Layer.Component1");
- QString pathC2 = QStringLiteral("Scene.Layer.Component2");
-
- Q3DSPresentation *p = m_viewer->presentation();
- Q3DSSceneElement *scene = new Q3DSSceneElement(path);
- Q3DSSceneElement *sceneC1 = new Q3DSSceneElement(pathC1);
- Q3DSSceneElement *sceneC2 = new Q3DSSceneElement(pathC2);
- QSignalSpy spy1(scene, &Q3DSSceneElement::currentSlideIndexChanged);
- QSignalSpy spy2(scene, &Q3DSSceneElement::previousSlideIndexChanged);
- QSignalSpy spy3(scene, &Q3DSSceneElement::currentSlideNameChanged);
- QSignalSpy spy4(scene, &Q3DSSceneElement::previousSlideNameChanged);
- QSignalSpy spy5(scene, &Q3DSSceneElement::elementPathChanged);
- QSignalSpy spy6(sceneC1, &Q3DSSceneElement::currentSlideIndexChanged);
- QSignalSpy spy7(sceneC1, &Q3DSSceneElement::previousSlideIndexChanged);
- QSignalSpy spy8(sceneC1, &Q3DSSceneElement::currentSlideNameChanged);
- QSignalSpy spy9(sceneC1, &Q3DSSceneElement::previousSlideNameChanged);
- QSignalSpy spy10(sceneC1, &Q3DSSceneElement::elementPathChanged);
- QSignalSpy spy11(sceneC2, &Q3DSSceneElement::currentSlideIndexChanged);
- QSignalSpy spy12(sceneC2, &Q3DSSceneElement::previousSlideIndexChanged);
- QSignalSpy spy13(sceneC2, &Q3DSSceneElement::currentSlideNameChanged);
- QSignalSpy spy14(sceneC2, &Q3DSSceneElement::previousSlideNameChanged);
- QSignalSpy spy15(sceneC2, &Q3DSSceneElement::elementPathChanged);
- QVERIFY(spy1.isValid());
- QVERIFY(spy2.isValid());
- QVERIFY(spy3.isValid());
- QVERIFY(spy4.isValid());
- QVERIFY(spy5.isValid());
- QVERIFY(spy6.isValid());
- QVERIFY(spy7.isValid());
- QVERIFY(spy8.isValid());
- QVERIFY(spy9.isValid());
- QVERIFY(spy10.isValid());
- QVERIFY(spy11.isValid());
- QVERIFY(spy12.isValid());
- QVERIFY(spy13.isValid());
- QVERIFY(spy14.isValid());
- QVERIFY(spy15.isValid());
-
- // Defaults
- QCOMPARE(scene->currentSlideIndex(), 0);
- QCOMPARE(scene->previousSlideIndex(), 0);
- QCOMPARE(scene->currentSlideName(), QStringLiteral(""));
- QCOMPARE(scene->previousSlideName(), QStringLiteral(""));
- QCOMPARE(scene->elementPath(), path);
-
- checkPixel(m_viewer, Qt::red);
-
- // Ensure we have no pending events to confuse spy counts
- QGuiApplication::processEvents();
-
- p->registerElement(scene);
- p->registerElement(sceneC1);
- p->registerElement(sceneC2);
-
- QCOMPARE(scene->currentSlideIndex(), 1);
- QCOMPARE(scene->previousSlideIndex(), 0);
- QCOMPARE(scene->currentSlideName(), QStringLiteral("S1"));
- QCOMPARE(scene->previousSlideName(), QStringLiteral(""));
- QCOMPARE(scene->elementPath(), path);
-
- p->goToSlide(path, QStringLiteral("S2"));
- checkPixel(m_viewer, Qt::blue);
-
- QCOMPARE(spy1.count(), 1);
- QCOMPARE(spy2.count(), 1);
- QCOMPARE(spy3.count(), 1);
- QCOMPARE(spy4.count(), 1);
- QCOMPARE(spy5.count(), 0);
- QCOMPARE(spy6.count(), 0);
- QCOMPARE(spy7.count(), 0);
- QCOMPARE(spy8.count(), 0);
- QCOMPARE(spy9.count(), 0);
- QCOMPARE(spy10.count(), 0);
- QCOMPARE(spy11.count(), 0);
- QCOMPARE(spy12.count(), 0);
- QCOMPARE(spy13.count(), 0);
- QCOMPARE(spy14.count(), 0);
- QCOMPARE(spy15.count(), 0);
-
- p->goToSlide(path, QStringLiteral("S1"));
- checkPixel(m_viewer, Qt::red);
-
- QCOMPARE(spy1.count(), 2);
- QCOMPARE(spy2.count(), 2);
- QCOMPARE(spy3.count(), 2);
- QCOMPARE(spy4.count(), 2);
- QCOMPARE(spy5.count(), 0);
- QCOMPARE(spy6.count(), 0);
- // Getting previous slide change without getting current slide change seems illogical here,
- // but that's how the internal viewer logic for previous slide works. It makes sense when
- // you consider the fact that we always get enter events for child slides when parent slide
- // is entered.
- QCOMPARE(spy7.count(), 1);
- QCOMPARE(spy8.count(), 0);
- QCOMPARE(spy9.count(), 1);
- QCOMPARE(spy10.count(), 0);
- QCOMPARE(spy11.count(), 0);
- QCOMPARE(spy12.count(), 1);
- QCOMPARE(spy13.count(), 0);
- QCOMPARE(spy14.count(), 1);
- QCOMPARE(spy15.count(), 0);
-
- p->goToSlide(pathC1, QStringLiteral("C1S2"));
- checkPixel(m_viewer, Qt::red);
-
- QCOMPARE(spy1.count(), 2);
- QCOMPARE(spy2.count(), 2);
- QCOMPARE(spy3.count(), 2);
- QCOMPARE(spy4.count(), 2);
- QCOMPARE(spy5.count(), 0);
- QCOMPARE(spy6.count(), 1);
- QCOMPARE(spy7.count(), 1);
- QCOMPARE(spy8.count(), 1);
- QCOMPARE(spy9.count(), 1);
- QCOMPARE(spy10.count(), 0);
- QCOMPARE(spy11.count(), 0);
- QCOMPARE(spy12.count(), 1);
- QCOMPARE(spy13.count(), 0);
- QCOMPARE(spy14.count(), 1);
- QCOMPARE(spy15.count(), 0);
-
- p->goToSlide(pathC2, QStringLiteral("C2S2"));
- checkPixel(m_viewer, Qt::red);
-
- QCOMPARE(spy1.count(), 2);
- QCOMPARE(spy2.count(), 2);
- QCOMPARE(spy3.count(), 2);
- QCOMPARE(spy4.count(), 2);
- QCOMPARE(spy5.count(), 0);
- QCOMPARE(spy6.count(), 1);
- QCOMPARE(spy7.count(), 1);
- QCOMPARE(spy8.count(), 1);
- QCOMPARE(spy9.count(), 1);
- QCOMPARE(spy10.count(), 0);
- QCOMPARE(spy11.count(), 1);
- QCOMPARE(spy12.count(), 1);
- QCOMPARE(spy13.count(), 1);
- QCOMPARE(spy14.count(), 1);
- QCOMPARE(spy15.count(), 0);
-
- // Subscenes revert to original slides when parent is re-entered
- p->goToSlide(path, QStringLiteral("S2"));
- checkPixel(m_viewer, Qt::blue);
-
- QCOMPARE(spy1.count(), 3);
- QCOMPARE(spy2.count(), 3);
- QCOMPARE(spy3.count(), 3);
- QCOMPARE(spy4.count(), 3);
- QCOMPARE(spy5.count(), 0);
- QCOMPARE(spy6.count(), 1);
- QCOMPARE(spy7.count(), 1);
- QCOMPARE(spy8.count(), 1);
- QCOMPARE(spy9.count(), 1);
- QCOMPARE(spy10.count(), 0);
- QCOMPARE(spy11.count(), 1);
- QCOMPARE(spy12.count(), 1);
- QCOMPARE(spy13.count(), 1);
- QCOMPARE(spy14.count(), 1);
- QCOMPARE(spy15.count(), 0);
-
- p->goToSlide(path, QStringLiteral("S1"));
- checkPixel(m_viewer, Qt::red);
-
- QCOMPARE(spy1.count(), 4);
- QCOMPARE(spy2.count(), 4);
- QCOMPARE(spy3.count(), 4);
- QCOMPARE(spy4.count(), 4);
- QCOMPARE(spy5.count(), 0);
- QCOMPARE(spy6.count(), 2);
- QCOMPARE(spy7.count(), 2);
- QCOMPARE(spy8.count(), 2);
- QCOMPARE(spy9.count(), 2);
- QCOMPARE(spy10.count(), 0);
- QCOMPARE(spy11.count(), 2);
- QCOMPARE(spy12.count(), 2);
- QCOMPARE(spy13.count(), 2);
- QCOMPARE(spy14.count(), 2);
- QCOMPARE(spy15.count(), 0);
-
- p->unregisterElement(scene);
- p->unregisterElement(sceneC1);
- p->unregisterElement(sceneC2);
-
- // No more signals after unregistering
- p->goToSlide(path, QStringLiteral("S2"));
- checkPixel(m_viewer, Qt::blue);
-
- QCOMPARE(spy1.count(), 4);
- QCOMPARE(spy2.count(), 4);
- QCOMPARE(spy3.count(), 4);
- QCOMPARE(spy4.count(), 4);
- QCOMPARE(spy5.count(), 0);
- QCOMPARE(spy6.count(), 2);
- QCOMPARE(spy7.count(), 2);
- QCOMPARE(spy8.count(), 2);
- QCOMPARE(spy9.count(), 2);
- QCOMPARE(spy10.count(), 0);
- QCOMPARE(spy11.count(), 2);
- QCOMPARE(spy12.count(), 2);
- QCOMPARE(spy13.count(), 2);
- QCOMPARE(spy14.count(), 2);
- QCOMPARE(spy15.count(), 0);
-
- // Reregister
- p->registerElement(scene);
- p->goToSlide(path, QStringLiteral("S1"));
- checkPixel(m_viewer, Qt::red);
-
- QCOMPARE(spy1.count(), 5);
- QCOMPARE(spy2.count(), 5);
- QCOMPARE(spy3.count(), 5);
- QCOMPARE(spy4.count(), 5);
- QCOMPARE(spy5.count(), 0);
-
- QCOMPARE(scene->currentSlideIndex(), 1);
- QCOMPARE(scene->previousSlideIndex(), 2);
- QCOMPARE(scene->currentSlideName(), QStringLiteral("S1"));
- QCOMPARE(scene->previousSlideName(), QStringLiteral("S2"));
- QCOMPARE(scene->elementPath(), path);
-
- scene->setCurrentSlideName(QStringLiteral("S2"));
- checkPixel(m_viewer, Qt::blue);
-
- QCOMPARE(spy1.count(), 6);
- QCOMPARE(spy2.count(), 6);
-
- scene->setCurrentSlideIndex(0);
- checkPixel(m_viewer, Qt::red);
-
- QCOMPARE(spy1.count(), 7);
- QCOMPARE(spy2.count(), 7);
-
- // Go to next slide, wrap parameter doesn't matter
- scene->goToSlide(true, true);
- checkPixel(m_viewer, Qt::blue);
-
- QCOMPARE(spy1.count(), 8);
- QCOMPARE(spy2.count(), 8);
-
- // Go to next slide, wrap parameter doesn't matter
- scene->goToSlide(true, false);
- checkPixel(m_viewer, Qt::green);
-
- QCOMPARE(spy1.count(), 9);
- QCOMPARE(spy2.count(), 9);
-
- // No wrap, should not change
- scene->goToSlide(true, false);
- checkPixel(m_viewer, Qt::green);
-
- QCOMPARE(spy1.count(), 9);
- QCOMPARE(spy2.count(), 9);
-
- // Should wrap
- scene->goToSlide(true, true);
- checkPixel(m_viewer, Qt::red);
-
- QCOMPARE(spy1.count(), 10);
- QCOMPARE(spy2.count(), 10);
-
- // No wrap, should not change
- scene->goToSlide(false, false);
- checkPixel(m_viewer, Qt::red);
-
- QCOMPARE(spy1.count(), 10);
- QCOMPARE(spy2.count(), 10);
-
- // Should wrap
- scene->goToSlide(false, true);
- checkPixel(m_viewer, Qt::green);
-
- QCOMPARE(spy1.count(), 11);
- QCOMPARE(spy2.count(), 11);
-
- // Time change
- scene->goToTime(7.0f);
- checkPixel(m_viewer, Qt::yellow);
-
- QCOMPARE(spy1.count(), 11);
- QCOMPARE(spy2.count(), 11);
-
- // Back to first slide for further tests
- scene->setCurrentSlideIndex(0);
- checkPixel(m_viewer, Qt::red);
-
- QCOMPARE(spy1.count(), 12);
- QCOMPARE(spy2.count(), 12);
-
- // Change element path
- scene->setElementPath(pathC1);
- checkPixel(m_viewer, Qt::red);
-
- QCOMPARE(spy1.count(), 12);
- QCOMPARE(spy2.count(), 12);
- QCOMPARE(spy3.count(), 12);
- QCOMPARE(spy4.count(), 12);
- QCOMPARE(spy5.count(), 1);
-
- QCOMPARE(scene->currentSlideIndex(), 1);
- QCOMPARE(scene->previousSlideIndex(), 1);
- // Having current and previous slides the same seems weird, but that's how the slide
- // logic works internally.
- QCOMPARE(scene->currentSlideName(), QStringLiteral("C1S1"));
- QCOMPARE(scene->previousSlideName(), QStringLiteral("C1S1"));
- QCOMPARE(scene->elementPath(), pathC1);
-
- p->goToSlide(pathC1, QStringLiteral("C1S2"));
- checkPixel(m_viewer, Qt::red);
-
- QCOMPARE(spy1.count(), 13);
- QCOMPARE(spy2.count(), 12);
- QCOMPARE(spy3.count(), 13);
- QCOMPARE(spy4.count(), 12);
- QCOMPARE(spy5.count(), 1);
-}
-
-void tst_Q3DSSurfaceViewer::testElement_data()
-{
- testBasics_data();
-}
-
-void tst_Q3DSSurfaceViewer::testElement()
-{
- QFETCH(bool, isWindow);
-
- if (isWindow)
- createWindowAndViewer(m_viewer, MULTISLIDE);
- else
- createOffscreenAndViewer(m_viewer, MULTISLIDE);
-
- m_viewer->settings()->setScaleMode(Q3DSViewerSettings::ScaleModeFill);
-
- QString path1 = QStringLiteral("Scene.Layer.Rect.Material"); // Red
- QString path2 = QStringLiteral("Scene.Layer.Component1.Rectangle4.Material"); // Green
- QString path3 = QStringLiteral("Scene.Layer.Component2.Rectangle6.Material"); // Yellow
-
- QPoint mainPoint(m_viewer->size().width() * 2 / 8, m_viewer->size().height() / 2);
- QPoint c1Point(m_viewer->size().width() * 5 / 8, m_viewer->size().height() / 2);
- QPoint c2Point(m_viewer->size().width() * 7 / 8, m_viewer->size().height() / 2);
-
- Q3DSPresentation *p = m_viewer->presentation();
- Q3DSElement *element1 = new Q3DSElement(p, path1);
- Q3DSElement *element2 = new Q3DSElement(p, path2);
- QSignalSpy spy2(element2, &Q3DSSceneElement::elementPathChanged);
- QVERIFY(spy2.isValid());
-
- checkPixel(m_viewer, Qt::red, mainPoint);
- checkPixel(m_viewer, Qt::green, c1Point);
- checkPixel(m_viewer, Qt::yellow, c2Point);
-
- element1->setAttribute(QStringLiteral("diffuse.r"), 0.0);
- element1->setAttribute(QStringLiteral("diffuse.g"), 0.0);
- element1->setAttribute(QStringLiteral("diffuse.b"), 1.0);
- checkPixel(m_viewer, Qt::blue, mainPoint);
- checkPixel(m_viewer, Qt::green, c1Point);
- checkPixel(m_viewer, Qt::yellow, c2Point);
-
- element2->setAttribute(QStringLiteral("diffuse.r"), 1.0);
- element2->setAttribute(QStringLiteral("diffuse.g"), 0.0);
- element2->setAttribute(QStringLiteral("diffuse.b"), 1.0);
- checkPixel(m_viewer, Qt::blue, mainPoint);
- checkPixel(m_viewer, Qt::magenta, c1Point);
- checkPixel(m_viewer, Qt::yellow, c2Point);
-
- // Change elementpath, nothing changes visually
- element2->setElementPath(path3);
- checkPixel(m_viewer, Qt::blue, mainPoint);
- checkPixel(m_viewer, Qt::magenta, c1Point);
- checkPixel(m_viewer, Qt::yellow, c2Point);
- QCOMPARE(spy2.count(), 1);
-
- element2->setAttribute(QStringLiteral("diffuse.r"), 0.0);
- element2->setAttribute(QStringLiteral("diffuse.g"), 1.0);
- element2->setAttribute(QStringLiteral("diffuse.b"), 1.0);
- checkPixel(m_viewer, Qt::blue, mainPoint);
- checkPixel(m_viewer, Qt::magenta, c1Point);
- checkPixel(m_viewer, Qt::cyan, c2Point);
-}
-
-void tst_Q3DSSurfaceViewer::testMouseInput_data()
-{
- testBasics_data();
-}
-
-void tst_Q3DSSurfaceViewer::testMouseInput()
-{
- QFETCH(bool, isWindow);
-
- if (isWindow)
- createWindowAndViewer(m_viewer, MOUSE);
- else
- createOffscreenAndViewer(m_viewer, MOUSE);
-
- m_viewer->settings()->setScaleMode(Q3DSViewerSettings::ScaleModeFill);
-
- QPoint point1(m_viewer->size().width() * 1 / 4, m_viewer->size().height() / 2);
- QPoint point2(m_viewer->size().width() * 3 / 4, m_viewer->size().height() / 2);
-
- checkPixel(m_viewer, Qt::blue, point1);
- checkPixel(m_viewer, Qt::red, point2);
-
- QMouseEvent e1(QEvent::MouseButtonPress, point1, Qt::LeftButton, Qt::LeftButton,
- Qt::NoModifier);
- m_viewer->presentation()->mousePressEvent(&e1);
-
- checkPixel(m_viewer, Qt::green, point1);
- checkPixel(m_viewer, Qt::red, point2);
-
- QMouseEvent e2(QEvent::MouseButtonRelease, point1, Qt::LeftButton, Qt::LeftButton,
- Qt::NoModifier);
- m_viewer->presentation()->mouseReleaseEvent(&e2);
-
- checkPixel(m_viewer, Qt::blue, point1);
- checkPixel(m_viewer, Qt::red, point2);
-
- QMouseEvent e3(QEvent::MouseButtonPress, point2, Qt::LeftButton, Qt::LeftButton,
- Qt::NoModifier);
- m_viewer->presentation()->mousePressEvent(&e3);
-
- checkPixel(m_viewer, Qt::blue, point1);
- checkPixel(m_viewer, Qt::blue, point2);
-
- QMouseEvent e4(QEvent::MouseButtonRelease, point2, Qt::LeftButton, Qt::LeftButton,
- Qt::NoModifier);
- m_viewer->presentation()->mouseReleaseEvent(&e4);
-
- checkPixel(m_viewer, Qt::blue, point1);
- checkPixel(m_viewer, Qt::red, point2);
-
- // Note: No way yet to hook mouse move into anything in the presentation
-}
-
-void tst_Q3DSSurfaceViewer::testDataInput_data()
-{
- testBasics_data();
-}
-
-void tst_Q3DSSurfaceViewer::testDataInput()
-{
- QFETCH(bool, isWindow);
-
- if (isWindow)
- createWindowAndViewer(m_viewer, DATAINPUT);
- else
- createOffscreenAndViewer(m_viewer, DATAINPUT);
-
- m_viewer->settings()->setScaleMode(Q3DSViewerSettings::ScaleModeFill);
-
- QPoint point1(m_viewer->size().width() / 4, m_viewer->size().height() / 4);
-
- const QString animationName = QStringLiteral("animationInput");
- const QString slideName = QStringLiteral("slideInput");
-
- checkPixel(m_viewer, Qt::red, point1);
- m_viewer->presentation()->setDataInputValue(animationName, 90);
- checkPixel(m_viewer, Qt::blue, point1);
- m_viewer->presentation()->setDataInputValue(animationName, 10);
- checkPixel(m_viewer, Qt::red, point1);
-
- Q3DSDataInput *animationInput = new Q3DSDataInput();
- animationInput->setName(animationName);
-
- m_viewer->presentation()->registerDataInput(animationInput);
- QVERIFY(m_viewer->presentation()->registeredDataInput(animationInput->name()));
-
- Q3DSDataInput *slideInput = new Q3DSDataInput(m_viewer->presentation(), slideName);
- QVERIFY(m_viewer->presentation()->registeredDataInput(slideInput->name()));
-
- animationInput->setValue(90);
- checkPixel(m_viewer, Qt::blue, point1);
- animationInput->setValue(10);
- checkPixel(m_viewer, Qt::red, point1);
-
- slideInput->setValue(QStringLiteral("Slide2"));
- checkPixel(m_viewer, Qt::green, point1);
- slideInput->setValue(QStringLiteral("Slide1"));
- checkPixel(m_viewer, Qt::red, point1);
-
- m_viewer->presentation()->unregisterDataInput(animationInput);
- m_viewer->presentation()->unregisterDataInput(slideInput);
- QVERIFY(!m_viewer->presentation()->registeredDataInput(animationInput->name()));
- QVERIFY(!m_viewer->presentation()->registeredDataInput(slideInput->name()));
- delete animationInput;
- delete slideInput;
-}
-
-
-QTEST_MAIN(tst_Q3DSSurfaceViewer)
-
-#include "tst_q3dssurfaceviewer.moc"
diff --git a/tests/auto/studio3d/shared/presentation/animation.uip b/tests/auto/studio3d/shared/presentation/animation.uip
deleted file mode 100644
index bd78b515..00000000
--- a/tests/auto/studio3d/shared/presentation/animation.uip
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<UIP version="3" >
- <Project >
- <ProjectSettings author="" company="" presentationWidth="800" presentationHeight="480" maintainAspect="False" />
- <Graph >
- <Scene id="Scene" >
- <Layer id="Layer" >
- <Camera id="Camera" />
- <Light id="Light" />
- <Model id="Cube" >
- <Material id="Material" />
- </Model>
- </Layer>
- </Scene>
- </Graph>
- <Logic >
- <State name="Master Slide" component="#Scene" >
- <Add ref="#Layer" />
- <Add ref="#Camera" />
- <Add ref="#Light" lighttype="Directional" position="0 0 -500" rotation="0 0 0" />
- <State id="Scene-Slide1" name="Slide1" playmode="Looping" >
- <Set ref="#Layer" endtime="29690" />
- <Set ref="#Camera" endtime="29690" />
- <Set ref="#Light" endtime="29690" />
- <Add ref="#Cube" name="Cube" endtime="29690" position="5.7735 -14.4338 0" sourcepath="#Cube" >
- <AnimationTrack property="position.x" type="EaseInOut" >0 -457.55 100 100 4.832 -8.66028 100 100 11.174 440.23 100 100 20.037 -64.9519 100 100 29.69 -401.258 100 100</AnimationTrack>
- <AnimationTrack property="position.y" type="EaseInOut" >0 -1.52588e-05 100 100 4.832 -220.837 100 100 11.174 -18.7639 100 100 20.037 225.167 100 100 29.69 -14.4337 100 100</AnimationTrack>
- <AnimationTrack property="position.z" type="EaseInOut" >0 0 100 100 4.832 0 100 100 11.174 0 100 100 20.037 0 100 100 29.69 0 100 100</AnimationTrack>
- </Add>
- <Add ref="#Material" />
- </State>
- </State>
- </Logic>
- </Project>
-</UIP>
diff --git a/tests/auto/studio3d/shared/presentation/blue.uip b/tests/auto/studio3d/shared/presentation/blue.uip
deleted file mode 100644
index a6eefa7e..00000000
--- a/tests/auto/studio3d/shared/presentation/blue.uip
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<UIP version="3" >
- <Project >
- <ProjectSettings author="" company="" presentationWidth="800" presentationHeight="480" maintainAspect="False" />
- <Graph >
- <Scene id="Scene" >
- <Layer id="Layer" >
- <Camera id="Camera" />
- <Light id="Light" />
- <Model id="Rectangle" >
- <Material id="Material" />
- </Model>
- </Layer>
- </Scene>
- </Graph>
- <Logic >
- <State name="Master Slide" component="#Scene" >
- <Add ref="#Layer" />
- <Add ref="#Camera" />
- <Add ref="#Light" lighttype="Directional" position="0 0 -500" rotation="0 0 0" />
- <State id="Scene-Slide1" name="Slide1" playmode="Looping" >
- <Set ref="#Layer" endtime="8000" />
- <Set ref="#Camera" endtime="8000" />
- <Set ref="#Light" endtime="8000" />
- <Add ref="#Rectangle" name="Rectangle" endtime="8000" position="0 -15.8771 0" scale="13.3333 9.5252 1" sourcepath="#Rectangle" />
- <Add ref="#Material" diffuse="0 0 1" emissivecolor="1 1 1" emissivepower="1" />
- </State>
- </State>
- </Logic>
- </Project>
-</UIP>
diff --git a/tests/auto/studio3d/shared/presentation/datainput.uia b/tests/auto/studio3d/shared/presentation/datainput.uia
deleted file mode 100644
index fbfa55b6..00000000
--- a/tests/auto/studio3d/shared/presentation/datainput.uia
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<application>
- <assets initial="datainput">
- <dataInput name="animationInput" type="Ranged Number" min="0" max="100"/>
- <dataInput name="slideInput" type="String" />
- <presentation id="datainput" src="datainput.uip"/>
- <presentation id="subpres" src="datainput_sub.uip"/>
- </assets>
- <statemachine ref="#logic">
- <visual-states>
- <state ref="Initial">
- <enter>
- <goto-slide element="main:Scene" rel="next"/>
- </enter>
- </state>
- </visual-states>
- </statemachine>
-</application>
diff --git a/tests/auto/studio3d/shared/presentation/datainput.uip b/tests/auto/studio3d/shared/presentation/datainput.uip
deleted file mode 100644
index 3807cec2..00000000
--- a/tests/auto/studio3d/shared/presentation/datainput.uip
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<UIP version="3" >
- <Project >
- <ProjectSettings author="" company="" presentationWidth="800" presentationHeight="600" maintainAspect="False" >
- <CustomColors count="16" >#ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff</CustomColors>
- </ProjectSettings>
- <Graph >
- <Scene id="Scene" backgroundcolor="0 1 0" controlledproperty="$animationInput @timeline $slideInput @slide" >
- <Layer id="Layer" >
- <Camera id="Camera" />
- <Light id="Light" />
- <Component id="Component" >
- <Text id="Text" />
- </Component>
- <Model id="Rectangle" >
- <Material id="Default" name="Default" >
- <Image id="Default_diffusemap" />
- </Material>
- </Model>
- <Text id="Text_001" />
- <Model id="Rectangle2" >
- <Material id="Default_001" name="Default" />
- </Model>
- </Layer>
- </Scene>
- </Graph>
- <Logic >
- <State name="Master Slide" component="#Scene" >
- <Add ref="#Layer" background="Transparent" sourcepath="" />
- <Add ref="#Camera" />
- <Add ref="#Light" />
- <Add ref="#Rectangle" name="Rectangle" sourcepath="#Rectangle" >
- <AnimationTrack property="position.x" type="EaseInOut" >0 -327.165 100 100 10 351.542 100 100</AnimationTrack>
- <AnimationTrack property="position.y" type="EaseInOut" >0 -6.41502 100 100 10 -17.962 100 100</AnimationTrack>
- <AnimationTrack property="position.z" type="EaseInOut" >0 0 100 100 10 0 100 100</AnimationTrack>
- </Add>
- <Add ref="#Default" diffusemap="#Default_diffusemap" />
- <Add ref="#Default_diffusemap" sourcepath="maps/QT-symbol.png" subpresentation="subpres" />
- <State id="Scene-Slide1" name="Slide1" initialplaystate="Pause" >
- <Add ref="#Component" name="Component" controlledproperty="$animationInput @timeline" />
- <Add ref="#Rectangle2" name="Rectangle2" position="0 0 100" scale="9999 9999 99999" sourcepath="#Rectangle" />
- <Add ref="#Default_001" >
- <AnimationTrack property="diffuse.x" type="EaseInOut" >0 1 100 100 4.487 1 100 100 5.5 0 100 100 10 0 100 100</AnimationTrack>
- <AnimationTrack property="diffuse.y" type="EaseInOut" >0 0 100 100 4.487 0 100 100 5.5 0 100 100 10 0 100 100</AnimationTrack>
- <AnimationTrack property="diffuse.z" type="EaseInOut" >0 0 100 100 4.487 0 100 100 5.5 1 100 100 10 1 100 100</AnimationTrack>
- </Add>
- </State>
- <State id="Scene-Slide2" name="Slide2" initialplaystate="Play" playmode="Stop at end" playthroughto="Previous" >
- <Add ref="#Text_001" name="Text" font="TitilliumWeb-Regular" position="-442.635 -193.733 0" textstring="Second slide" />
- </State>
- </State>
- <State name="Master Slide" component="#Component" >
- <State id="Component-Slide1" name="Slide1" initialplaystate="Pause" >
- <Add ref="#Text" name="Text" controlledproperty="$animationInput textstring" font="TitilliumWeb-Regular" position="-5.132 137.281 0" >
- <AnimationTrack property="rotation.x" type="EaseInOut" >0 0 100 100 10 0 100 100</AnimationTrack>
- <AnimationTrack property="rotation.y" type="EaseInOut" >0 0 100 100 10 0 100 100</AnimationTrack>
- <AnimationTrack property="rotation.z" type="EaseInOut" >0 0 100 100 10 -360 100 100</AnimationTrack>
- </Add>
- </State>
- </State>
- </Logic>
- </Project>
-</UIP>
diff --git a/tests/auto/studio3d/shared/presentation/datainput_sub.uip b/tests/auto/studio3d/shared/presentation/datainput_sub.uip
deleted file mode 100644
index c007eaba..00000000
--- a/tests/auto/studio3d/shared/presentation/datainput_sub.uip
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<UIP version="3" >
- <Project >
- <ProjectSettings author="" company="" presentationWidth="400" presentationHeight="200" maintainAspect="False" >
- <CustomColors count="16" >#ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff</CustomColors>
- </ProjectSettings>
- <Graph >
- <Scene id="Scene" controlledproperty="$animationInput @timeline" >
- <Layer id="Layer" >
- <Camera id="Camera" />
- <Light id="Light" />
- <Text id="Text" controlledproperty="$slideInput textstring" />
- </Layer>
- </Scene>
- </Graph>
- <Logic >
- <State name="Master Slide" component="#Scene" >
- <Add ref="#Layer" />
- <Add ref="#Camera" />
- <Add ref="#Light" />
- <State id="Scene-Slide1" name="Slide1" initialplaystate="Pause" >
- <Add ref="#Text" name="Text" font="TitilliumWeb-Regular" opacity="99" size="96" >
- <AnimationTrack property="rotation.x" type="EaseInOut" >0 0 100 100 10 0 100 100</AnimationTrack>
- <AnimationTrack property="rotation.y" type="EaseInOut" >0 0 100 100 10 0 100 100</AnimationTrack>
- <AnimationTrack property="rotation.z" type="EaseInOut" >0 0 100 100 10 -360 100 100</AnimationTrack>
- </Add>
- </State>
- </State>
- </Logic>
- </Project>
-</UIP>
diff --git a/tests/auto/studio3d/shared/presentation/fonts/TitilliumWeb-Regular.ttf b/tests/auto/studio3d/shared/presentation/fonts/TitilliumWeb-Regular.ttf
deleted file mode 100644
index 6da82193..00000000
--- a/tests/auto/studio3d/shared/presentation/fonts/TitilliumWeb-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/tests/auto/studio3d/shared/presentation/mixed.uip b/tests/auto/studio3d/shared/presentation/mixed.uip
deleted file mode 100644
index 16fea006..00000000
--- a/tests/auto/studio3d/shared/presentation/mixed.uip
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<UIP version="3" >
- <Project >
- <ProjectSettings author="" company="" presentationWidth="800" presentationHeight="480" maintainAspect="False" />
- <Graph >
- <Scene id="Scene" >
- <Layer id="Layer" >
- <Camera id="Camera" />
- <Light id="Light" />
- <Model id="Rectangle" >
- <Material id="Material" />
- </Model>
- <Model id="Rectangle2" >
- <Material id="Material_001" />
- </Model>
- </Layer>
- </Scene>
- </Graph>
- <Logic >
- <State name="Master Slide" component="#Scene" >
- <Add ref="#Layer" />
- <Add ref="#Camera" />
- <Add ref="#Light" lighttype="Directional" position="0 0 -500" rotation="0 0 0" />
- <State id="Scene-Slide1" name="Slide1" playmode="Looping" >
- <Set ref="#Layer" endtime="8000" />
- <Set ref="#Camera" endtime="8000" />
- <Set ref="#Light" endtime="8000" />
- <Add ref="#Rectangle" name="Rectangle" endtime="8000" position="401.651 25 0" scale="8 16 1" sourcepath="#Rectangle" />
- <Add ref="#Material" diffuse="1 0 0" emissivecolor="1 1 1" emissivepower="1" />
- <Add ref="#Rectangle2" name="Rectangle2" endtime="8000" position="-378.164 25 0" scale="8 16 1" sourcepath="#Rectangle" />
- <Add ref="#Material_001" diffuse="0 0 1" emissivecolor="1 1 1" emissivepower="1" />
- </State>
- </State>
- </Logic>
- </Project>
-</UIP>
diff --git a/tests/auto/studio3d/shared/presentation/mixed_vertical.uip b/tests/auto/studio3d/shared/presentation/mixed_vertical.uip
deleted file mode 100644
index 7914b119..00000000
--- a/tests/auto/studio3d/shared/presentation/mixed_vertical.uip
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<UIP version="3" >
- <Project >
- <ProjectSettings author="" company="" presentationWidth="800" presentationHeight="480" maintainAspect="False" />
- <Graph >
- <Scene id="Scene" >
- <Layer id="Layer" >
- <Camera id="Camera" />
- <Light id="Light" />
- <Model id="Rectangle" >
- <Material id="Material" />
- </Model>
- <Model id="Rectangle2" >
- <Material id="Material_001" />
- </Model>
- </Layer>
- </Scene>
- </Graph>
- <Logic >
- <State name="Master Slide" component="#Scene" >
- <Add ref="#Layer" />
- <Add ref="#Camera" />
- <Add ref="#Light" lighttype="Directional" position="0 0 -500" rotation="0 0 0" />
- <State id="Scene-Slide1" name="Slide1" playmode="Looping" >
- <Set ref="#Layer" endtime="8000" />
- <Set ref="#Camera" endtime="8000" />
- <Set ref="#Light" endtime="8000" />
- <Add ref="#Rectangle" name="Rectangle" endtime="8000" position="0 -400 0" scale="16 8 1" sourcepath="#Rectangle" />
- <Add ref="#Material" diffuse="1 0 0" emissivecolor="1 1 1" emissivepower="1" />
- <Add ref="#Rectangle2" name="Rectangle2" endtime="8000" position="0 400 0" scale="16 8 1" sourcepath="#Rectangle" />
- <Add ref="#Material_001" diffuse="0 0 1" emissivecolor="1 1 1" emissivepower="1" />
- </State>
- </State>
- </Logic>
- </Project>
-</UIP>
diff --git a/tests/auto/studio3d/shared/presentation/mouse.uip b/tests/auto/studio3d/shared/presentation/mouse.uip
deleted file mode 100644
index edd9f95f..00000000
--- a/tests/auto/studio3d/shared/presentation/mouse.uip
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<UIP version="3" >
- <Project >
- <ProjectSettings author="" company="" presentationWidth="800" presentationHeight="480" maintainAspect="False" />
- <Graph >
- <Scene id="Scene" >
- <Layer id="Layer" >
- <Camera id="Camera" />
- <Light id="Light" />
- <Model id="Rectangle" >
- <Material id="Material" />
- </Model>
- <Model id="Rectangle2" >
- <Material id="Material_001" />
- </Model>
- </Layer>
- </Scene>
- </Graph>
- <Logic >
- <State name="Master Slide" component="#Scene" >
- <Add ref="#Layer" />
- <Add ref="#Camera" />
- <Add ref="#Light" lighttype="Directional" position="0 0 -500" rotation="0 0 0" />
- <State id="Scene-Slide1" name="Slide1" playmode="Looping" >
- <Set ref="#Layer" endtime="8000" />
- <Set ref="#Camera" endtime="8000" />
- <Set ref="#Light" endtime="8000" />
- <Add ref="#Rectangle" name="Rectangle" endtime="8000" position="668.283 7.21691 0" scale="13.3333 9.5252 1" sourcepath="#Rectangle" >
- <Action id="Rectangle-Action" eyeball="True" triggerObject="#Rectangle" event="onPressureDown" targetObject="#Material" handler="Set Property" >
- <HandlerArgument name="Property Name" type="String" argtype="Property" value="diffuse" />
- <HandlerArgument name="Property Value" type="Float3" argtype="Dependent" value="0 0 1" />
- </Action>
- <Action id="Rectangle-Action_001" eyeball="True" triggerObject="#Rectangle" event="onPressureUp" targetObject="#Material" handler="Set Property" >
- <HandlerArgument name="Property Name" type="String" argtype="Property" value="diffuse" />
- <HandlerArgument name="Property Value" type="Float3" argtype="Dependent" value="1 0 0" />
- </Action>
- </Add>
- <Add ref="#Material" diffuse="1 0 0" emissivecolor="1 1 1" emissivepower="1" />
- <Add ref="#Rectangle2" name="Rectangle2" endtime="8000" position="-528.276 -19.6247 0" scale="10.6053 8.67004 1" sourcepath="#Rectangle" >
- <Action id="Rectangle2-Action" eyeball="True" triggerObject="#Rectangle2" event="onPressureDown" targetObject="#Material_001" handler="Set Property" >
- <HandlerArgument name="Property Name" type="String" argtype="Property" value="diffuse" />
- <HandlerArgument name="Property Value" type="Float3" argtype="Dependent" value="0 1 0" />
- </Action>
- <Action id="Rectangle2-Action_001" eyeball="True" triggerObject="#Rectangle2" event="onPressureUp" targetObject="#Material_001" handler="Set Property" >
- <HandlerArgument name="Property Name" type="String" argtype="Property" value="diffuse" />
- <HandlerArgument name="Property Value" type="Float3" argtype="Dependent" value="0 0 1" />
- </Action>
- </Add>
- <Add ref="#Material_001" diffuse="0 0 1" />
- </State>
- </State>
- </Logic>
- </Project>
-</UIP>
diff --git a/tests/auto/studio3d/shared/presentation/multislide.uip b/tests/auto/studio3d/shared/presentation/multislide.uip
deleted file mode 100644
index e17db1db..00000000
--- a/tests/auto/studio3d/shared/presentation/multislide.uip
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<UIP version="3" >
- <Project >
- <ProjectSettings author="" company="" presentationWidth="800" presentationHeight="480" maintainAspect="False" />
- <Graph >
- <Scene id="Scene" backgroundcolor="1 1 0" >
- <Layer id="Layer" >
- <Camera id="Camera" />
- <Light id="Light" />
- <Model id="Rectangle1" >
- <Material id="Material" />
- </Model>
- <Model id="Rectangle2" >
- <Material id="Material_001" />
- </Model>
- <Model id="Rectangle2_003" >
- <Material id="Material_006" />
- </Model>
- <Component id="Component" >
- <Model id="Rectangle" >
- <Material id="Material_002" />
- </Model>
- <Model id="Rectangle2_001" >
- <Material id="Material_003" />
- </Model>
- </Component>
- <Component id="Component2" >
- <Model id="Rectangle_001" >
- <Material id="Material_004" />
- </Model>
- <Model id="Rectangle2_002" >
- <Material id="Material_005" />
- </Model>
- </Component>
- <Text id="Text" />
- </Layer>
- </Scene>
- </Graph>
- <Logic >
- <State name="Master Slide" component="#Scene" >
- <Add ref="#Layer" />
- <Add ref="#Camera" />
- <Add ref="#Light" lighttype="Directional" position="0 0 -500" rotation="0 0 0" />
- <State id="Scene-S1" name="S1" playmode="Looping" >
- <Set ref="#Layer" endtime="8000" />
- <Set ref="#Camera" endtime="8000" />
- <Set ref="#Light" endtime="8000" />
- <Add ref="#Rectangle1" name="Rect" position="0 0 0" scale="13.3333 5 1" sourcepath="#Rectangle" />
- <Add ref="#Material" diffuse="1 0 0" emissivecolor="1 1 1" emissivepower="1" opacity="100" />
- <Add ref="#Component" name="Component1" endtime="8000" position="400 0 -1" scale="4 3 1" />
- <Add ref="#Component2" name="Component2" endtime="8000" position="461.548 -5.72538 -5" />
- <Add ref="#Text" name="Text" endtime="8000" font="TitilliumWeb-Regular" position="-304.552 -193.631 0" size="36" />
- </State>
- <State id="Scene-S2" name="S2" initialplaystate="Pause" playmode="Looping" playthroughto="Previous" >
- <Set ref="#Layer" endtime="8000" />
- <Set ref="#Camera" endtime="8000" />
- <Set ref="#Light" endtime="8000" />
- <Add ref="#Rectangle2" name="Rectangle2" position="0 -15.8771 0" scale="13.3333 9.5252 1" sourcepath="#Rectangle" >
- <AnimationTrack property="scale.x" type="EaseInOut" >0 11.6 100 100 8 1 100 100</AnimationTrack>
- <AnimationTrack property="scale.y" type="EaseInOut" >0 9.5252 100 100 8 1 100 100</AnimationTrack>
- <AnimationTrack property="scale.z" type="EaseInOut" >0 1 100 100 8 1 100 100</AnimationTrack>
- </Add>
- <Add ref="#Material_001" diffuse="0 0 1" emissivecolor="1 1 1" emissivepower="1" />
- </State>
- <State id="Scene-S3" name="S3" initialplaystate="Pause" playmode="Looping" playthroughto="Previous" >
- <Set ref="#Layer" endtime="8000" />
- <Set ref="#Camera" endtime="8000" />
- <Set ref="#Light" endtime="8000" />
- <Add ref="#Rectangle2_003" name="Rectangle3" position="0 -15.8771 0" scale="13.3333 9.5252 1" sourcepath="#Rectangle" >
- <AnimationTrack property="scale.x" type="EaseInOut" >0 11.6 100 100 8 1 100 100</AnimationTrack>
- <AnimationTrack property="scale.y" type="EaseInOut" >0 9.5252 100 100 8 1 100 100</AnimationTrack>
- <AnimationTrack property="scale.z" type="EaseInOut" >0 1 100 100 8 1 100 100</AnimationTrack>
- </Add>
- <Add ref="#Material_006" diffuse="0 1 0" emissivecolor="1 1 1" emissivepower="1" />
- </State>
- </State>
- <State name="Master Slide" component="#Component" >
- <State id="Component1-C1S1" name="C1S1" >
- <Add ref="#Rectangle" name="Rectangle4" position="0 0 -1" scale="2 3 1" sourcepath="#Rectangle" />
- <Add ref="#Material_002" diffuse="0 1 0" />
- </State>
- <State id="Component1-C1S2" name="C1S2" playthroughto="Previous" >
- <Add ref="#Rectangle2_001" name="Rectangle5" position="0 0 -1" scale="2 3 1" sourcepath="#Rectangle" />
- <Add ref="#Material_003" diffuse="0 1 1" />
- </State>
- </State>
- <State name="Master Slide" component="#Component2" >
- <State id="Component2-C2S1" name="C2S1" >
- <Add ref="#Rectangle_001" name="Rectangle6" scale="3.5 7 3.03591" sourcepath="#Rectangle" />
- <Add ref="#Material_004" diffuse="1 1 0" />
- </State>
- <State id="Component2-C2S2" name="C2S2" playthroughto="Previous" >
- <Add ref="#Rectangle2_002" name="Rectangle7" scale="3.5 7 3.03591" sourcepath="#Rectangle" />
- <Add ref="#Material_005" diffuse="1 0 1" />
- </State>
- </State>
- </Logic>
- </Project>
-</UIP>
diff --git a/tests/auto/studio3d/shared/presentation/red.uip b/tests/auto/studio3d/shared/presentation/red.uip
deleted file mode 100644
index a04d2f8a..00000000
--- a/tests/auto/studio3d/shared/presentation/red.uip
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<UIP version="3" >
- <Project >
- <ProjectSettings author="" company="" presentationWidth="800" presentationHeight="480" maintainAspect="False" />
- <Graph >
- <Scene id="Scene" >
- <Layer id="Layer" >
- <Camera id="Camera" />
- <Light id="Light" />
- <Model id="Rectangle" >
- <Material id="Material" />
- </Model>
- </Layer>
- </Scene>
- </Graph>
- <Logic >
- <State name="Master Slide" component="#Scene" >
- <Add ref="#Layer" />
- <Add ref="#Camera" />
- <Add ref="#Light" lighttype="Directional" position="0 0 -500" rotation="0 0 0" />
- <State id="Scene-Slide1" name="Slide1" playmode="Looping" >
- <Set ref="#Layer" endtime="8000" />
- <Set ref="#Camera" endtime="8000" />
- <Set ref="#Light" endtime="8000" />
- <Add ref="#Rectangle" name="Rectangle" endtime="8000" position="0 -15.8771 0" scale="13.3333 9.5252 1" sourcepath="#Rectangle" />
- <Add ref="#Material" diffuse="1 0 0" emissivecolor="1 1 1" emissivepower="1" />
- </State>
- </State>
- </Logic>
- </Project>
-</UIP>
diff --git a/tests/auto/studio3d/shared/presentation/settings.uip b/tests/auto/studio3d/shared/presentation/settings.uip
deleted file mode 100644
index acd580ab..00000000
--- a/tests/auto/studio3d/shared/presentation/settings.uip
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<UIP version="3" >
- <Project >
- <ProjectSettings author="" company="" presentationWidth="300" presentationHeight="200" maintainAspect="False" />
- <Graph >
- <Scene id="Scene" backgroundcolor="0 0 1" >
- <Layer id="Layer" >
- <Camera id="Camera" />
- <Light id="Light" />
- <Model id="Rectangle" >
- <Material id="Material" />
- </Model>
- </Layer>
- </Scene>
- </Graph>
- <Logic >
- <State name="Master Slide" component="#Scene" >
- <Add ref="#Layer" />
- <Add ref="#Camera" />
- <Add ref="#Light" lighttype="Directional" position="0 0 -500" rotation="0 0 0" />
- <State id="Scene-Slide1" name="Slide1" playmode="Looping" >
- <Set ref="#Layer" endtime="8000" />
- <Set ref="#Camera" endtime="8000" />
- <Set ref="#Light" endtime="8000" />
- <Add ref="#Rectangle" name="Rectangle" edgetess="1" endtime="8000" innertess="1" position="0 -15.8771 0" scale="11 2.375 1" sourcepath="#Rectangle" tessellation="Linear" />
- <Add ref="#Material" diffuse="1 0 0" emissivecolor="1 1 1" emissivepower="1" />
- </State>
- </State>
- </Logic>
- </Project>
-</UIP>
diff --git a/tests/auto/studio3d/shared/shared_presentations.h b/tests/auto/studio3d/shared/shared_presentations.h
deleted file mode 100644
index 6d382738..00000000
--- a/tests/auto/studio3d/shared/shared_presentations.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 <QtCore/qurl.h>
-
-const QUrl RED = QUrl(QStringLiteral("qrc:/red.uip"));
-const QUrl BLUE = QUrl(QStringLiteral("qrc:/blue.uip"));
-const QUrl MIXED = QUrl(QStringLiteral("qrc:/mixed.uip"));
-const QUrl MIXED_VERTICAL = QUrl(QStringLiteral("qrc:/mixed_vertical.uip"));
-const QUrl ANIMATION = QUrl(QStringLiteral("qrc:/animation.uip"));
-const QUrl SETTINGS = QUrl(QStringLiteral("qrc:/settings.uip"));
-const QUrl MULTISLIDE = QUrl(QStringLiteral("qrc:/multislide.uip"));
-const QUrl MOUSE = QUrl(QStringLiteral("qrc:/mouse.uip"));
-const QUrl DATAINPUT = QUrl(QStringLiteral("qrc:/datainput.uia"));
diff --git a/tests/auto/studio3d/shared/shared_presentations.qrc b/tests/auto/studio3d/shared/shared_presentations.qrc
deleted file mode 100644
index d4bb668f..00000000
--- a/tests/auto/studio3d/shared/shared_presentations.qrc
+++ /dev/null
@@ -1,15 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file alias="blue.uip">presentation/blue.uip</file>
- <file alias="red.uip">presentation/red.uip</file>
- <file alias="mixed.uip">presentation/mixed.uip</file>
- <file alias="animation.uip">presentation/animation.uip</file>
- <file alias="mixed_vertical.uip">presentation/mixed_vertical.uip</file>
- <file alias="settings.uip">presentation/settings.uip</file>
- <file alias="multislide.uip">presentation/multislide.uip</file>
- <file alias="mouse.uip">presentation/mouse.uip</file>
- <file alias="datainput.uip">presentation/datainput.uip</file>
- <file alias="datainput.uia">presentation/datainput.uia</file>
- <file alias="datainput_sub.uip">presentation/datainput_sub.uip</file>
- </qresource>
-</RCC>
diff --git a/tests/auto/studio3d/studio3d.pro b/tests/auto/studio3d/studio3d.pro
deleted file mode 100644
index e92019f0..00000000
--- a/tests/auto/studio3d/studio3d.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-TEMPLATE = subdirs
-
-SUBDIRS += \
- q3dssurfaceviewer
diff --git a/tests/auto/viewer/tst_qt3dsviewer.cpp b/tests/auto/viewer/tst_qt3dsviewer.cpp
deleted file mode 100644
index c9787fdb..00000000
--- a/tests/auto/viewer/tst_qt3dsviewer.cpp
+++ /dev/null
@@ -1,762 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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 "tst_qt3dsviewer.h"
-
-#include <QtQuick/QQuickItem>
-#include <QtGui/QSurfaceFormat>
-#include <QtStudio3D/Q3DSPresentation>
-#include <QtStudio3D/Q3DSElement>
-#include <QtStudio3D/Q3DSViewerSettings>
-#include <QtStudio3D/Q3DSGeometry>
-#include <QtCore/QRandomGenerator>
-#include <QtCore/QFile>
-#include <QtCore/QTextStream>
-#include <QtCore/QRegularExpression>
-
-void messageOutput(QtMsgType type, const QMessageLogContext &context,
- const QString &msg)
-{
- Q_UNUSED(context);
- switch (type) {
- case QtDebugMsg:
- case QtInfoMsg:
- case QtWarningMsg:
- case QtCriticalMsg:
- break; // swallow
- case QtFatalMsg:
- QFAIL(msg.toLocal8Bit().constData());
- }
-}
-
-void tst_qt3dsviewer::initTestCase()
-{
- qInstallMessageHandler(messageOutput);
-}
-
-void tst_qt3dsviewer::cleanupTestCase()
-{
-}
-
-void tst_qt3dsviewer::init()
-{
-#if defined(Q_OS_ANDROID)
- QSurfaceFormat format;
- format.setDepthBufferSize(32);
- format.setVersion(3, 2);
- format.setProfile(QSurfaceFormat::CompatibilityProfile);
- format.setRenderableType(QSurfaceFormat::OpenGLES);
-#else
- QSurfaceFormat format;
- format.setDepthBufferSize(32);
- format.setVersion(4, 3);
- format.setProfile(QSurfaceFormat::CoreProfile);
- QSurfaceFormat::setDefaultFormat(format);
-#endif
-
- m_viewer = new QQuickView;
- m_viewer->setTitle(QStringLiteral("tst_qt3dsviewer"));
- m_viewer->setSource(QUrl("qrc:/tst_qt3dsviewer.qml"));
- m_studio3DItem = m_viewer->rootObject();
- m_presentation = nullptr;
- m_settings = nullptr;
- m_ignoreError = false;
-
- QVERIFY(m_studio3DItem);
-
- const auto children = m_studio3DItem->children();
- for (auto &child : children) {
- if (!m_presentation)
- m_presentation = qobject_cast<Q3DSPresentation *>(child);
- if (!m_settings)
- m_settings = qobject_cast<Q3DSViewerSettings *>(child);
- }
-
- QVERIFY(m_presentation);
- QVERIFY(m_settings);
-}
-
-void tst_qt3dsviewer::cleanup()
-{
- deleteCreated();
- if (!m_ignoreError)
- QCOMPARE(m_studio3DItem->property("error").toString(), {});
- m_studio3DItem = nullptr;
- m_viewer->hide();
- m_viewer->deleteLater();
- m_viewer = nullptr;
-}
-
-void tst_qt3dsviewer::testEmpty()
-{
- m_presentation->setProperty("source", QUrl());
- m_viewer->show();
- QTest::qWait(1000);
- QCOMPARE(m_studio3DItem->property("running").toBool(), false);
- QVERIFY(!m_studio3DItem->property("error").toString().isEmpty());
- m_ignoreError = true; // To avoid triggering cleanup() fail as we are expecting an error
-}
-
-void tst_qt3dsviewer::testLoading()
-{
- QCOMPARE(m_studio3DItem->property("running").toBool(), false);
- m_viewer->show();
- QTest::qWait(1000);
- QCOMPARE(m_studio3DItem->property("running").toBool(), true);
-}
-
-
-void tst_qt3dsviewer::testSlides()
-{
- QSignalSpy spyEntered(m_presentation,
- SIGNAL(slideEntered(const QString &, unsigned int, const QString &)));
- QSignalSpy spyExited(m_presentation,
- SIGNAL(slideExited(const QString &, unsigned int, const QString &)));
- QCOMPARE(spyEntered.count(), 0);
- QCOMPARE(spyExited.count(), 0);
-
- m_viewer->show();
- QTest::qWait(1000);
-
- QCOMPARE(spyEntered.count(), 1);
- QCOMPARE(spyExited.count(), 0);
-
- QVERIFY(spyExited.wait(12000));
- QCOMPARE(spyEntered.count(), 2);
- QCOMPARE(spyExited.count(), 1);
-}
-
-void tst_qt3dsviewer::testFrameUpdates()
-{
- QSignalSpy spyFrames(m_studio3DItem, SIGNAL(frameUpdate()));
- QSignalSpy spyExited(m_presentation,
- SIGNAL(slideExited(const QString &, unsigned int, const QString &)));
- m_viewer->show();
- QVERIFY(spyExited.wait(12000));
- // Just ensure we get some frames, exact count will vary a lot due to external factors
- QVERIFY(spyFrames.count() > 10);
-}
-
-void tst_qt3dsviewer::testSettings()
-{
- m_viewer->show();
- m_settings->setMatteColor(QColor("#0000ff"));
- QVERIFY(m_settings->matteColor() == QColor("#0000ff"));
-
- // Save and change matte color
- m_settings->save("", "tst_qt3dsviewer", "tst_qt3dsviewer");
- m_settings->setMatteColor(QColor("#00ff00"));
- QVERIFY(m_settings->matteColor() == QColor("#00ff00"));
- // Load and previous matte color should be back
- m_settings->load("", "tst_qt3dsviewer", "tst_qt3dsviewer");
- QVERIFY(m_settings->matteColor() == QColor("#0000ff"));
-}
-
-void tst_qt3dsviewer::testCreateElement()
-{
- m_viewer->show();
-
- m_settings->setShowRenderStats(true);
- m_settings->setScaleMode(Q3DSViewerSettings::ScaleModeFill);
-
- QSignalSpy spyExited(m_presentation,
- SIGNAL(slideExited(const QString &, unsigned int, const QString &)));
- QSignalSpy spyElemCreated(m_presentation, SIGNAL(elementsCreated(const QStringList &,
- const QString &)));
-
- QObject::connect(m_presentation, &Q3DSPresentation::elementsCreated,
- [this](const QStringList &elementNames, const QString &error) {
- QCOMPARE(error, QString());
- for (const auto &elementName : elementNames)
- QVERIFY(m_createdElements.contains(elementName));
- });
-
- auto loadMatDefFile = [&](const QString &fileName) -> QString {
- QFile matDefFile(fileName);
- if (!matDefFile.open(QIODevice::ReadOnly | QIODevice::Text))
- return {};
-
- QTextStream in(&matDefFile);
- return in.readAll();
- };
-
- int animValue = 0;
-
- QString md = loadMatDefFile(QStringLiteral(
- ":/scenes/simple_cube_animation/materials/Basic Red.materialdef"));
- m_presentation->createMaterial(md);
- m_createdMaterials << QStringLiteral("materials/Basic Red");
- md = loadMatDefFile(QStringLiteral(
- ":/scenes/simple_cube_animation/materials/Basic Green.materialdef"));
- m_presentation->createMaterial(md);
- m_createdMaterials << QStringLiteral("materials/Basic Green");
-
-
- QHash<QString, QVariant> data;
- data.insert(QStringLiteral("name"), QStringLiteral("New Cylinder"));
- data.insert(QStringLiteral("sourcepath"), QStringLiteral("#Cylinder"));
- data.insert(QStringLiteral("material"), QString());
- data.insert(QStringLiteral("starttime"), 0);
- data.insert(QStringLiteral("endtime"), 4500);
- data.insert(QStringLiteral("position"),
- QVariant::fromValue<QVector3D>(QVector3D(200, 300, 200)));
- data.insert(QStringLiteral("opacity"), 20.0);
- data.insert(QStringLiteral("controlledproperty"), QStringLiteral("@newDataInput opacity"));
-
- createElement(QStringLiteral("Scene.Layer"), QStringLiteral("Slide1"), data);
-
- // Elements can be registered before they are created
- Q3DSElement newCylinder(m_presentation, QStringLiteral("Scene.Layer.New Cylinder"));
- Q3DSElement newCylinder2(m_presentation,
- QStringLiteral("Scene.Layer.New Cylinder.New Cylinder 2"));
- Q3DSElement newGroup(m_presentation, QStringLiteral("Scene.Layer.New Group"));
- Q3DSElement newSphere(m_presentation, QStringLiteral("Scene.Layer.Cube2.New Sphere"));
-
- QTimer animationTimer;
- animationTimer.setInterval(10);
- int animDir = 1;
- QObject::connect(&animationTimer, &QTimer::timeout, [&]() {
- if (qAbs(animValue) > 100)
- animDir = -animDir;
- animValue += animDir;
- newCylinder.setAttribute(QStringLiteral("rotation.x"), animValue * 4);
- newCylinder2.setAttribute(QStringLiteral("position.y"), animValue * 3);
- newSphere.setAttribute(QStringLiteral("position.x"), 50 + animValue * 2);
- newGroup.setAttribute(QStringLiteral("opacity"), qAbs(animValue));
- m_presentation->setDataInputValue(QStringLiteral("newDataInput"), qAbs(animValue / 2));
- });
-
- // Create objects to slides 1 & 2 while slide 1 is executing
- QTimer::singleShot(1000, [&]() {
- data.clear();
- data.insert(QStringLiteral("name"), QStringLiteral("New Cylinder 2"));
- data.insert(QStringLiteral("sourcepath"), QStringLiteral("#Cylinder"));
- data.insert(QStringLiteral("material"), QStringLiteral("Basic Red"));
- data.insert(QStringLiteral("starttime"), 500);
- data.insert(QStringLiteral("endtime"), 5000);
- data.insert(QStringLiteral("position"),
- QVariant::fromValue<QVector3D>(QVector3D(50, animValue, 50)));
-
- createElement(QStringLiteral("Scene.Layer.New Cylinder"),
- QStringLiteral("Slide1"), data);
-
- data.clear();
- data.insert(QStringLiteral("name"), QStringLiteral("New Sphere"));
- data.insert(QStringLiteral("sourcepath"), QStringLiteral("#Sphere"));
- data.insert(QStringLiteral("material"), QStringLiteral("Basic Green"));
- data.insert(QStringLiteral("starttime"), 1000);
- data.insert(QStringLiteral("endtime"), 4000);
- data.insert(QStringLiteral("position"),
- QVariant::fromValue<QVector3D>(QVector3D(animValue, 75, 0)));
-
- createElement(QStringLiteral("Scene.Layer.Cube2"), QStringLiteral("Slide2"), data);
-
- data.clear();
- data.insert(QStringLiteral("name"), QStringLiteral("Sphere To Delete"));
- data.insert(QStringLiteral("sourcepath"), QStringLiteral("#Sphere"));
- data.insert(QStringLiteral("material"), QStringLiteral("Basic Red"));
- data.insert(QStringLiteral("starttime"), 0);
- data.insert(QStringLiteral("endtime"), 10000);
- data.insert(QStringLiteral("position"),
- QVariant::fromValue<QVector3D>(QVector3D(-100, -100, 0)));
-
- createElement(QStringLiteral("Scene.Layer"), QStringLiteral("Slide2"), data);
-
- data.clear();
- data.insert(QStringLiteral("name"), QStringLiteral("New Group"));
- data.insert(QStringLiteral("type"), QStringLiteral("group"));
- data.insert(QStringLiteral("starttime"), 0);
- data.insert(QStringLiteral("endtime"), 10000);
- data.insert(QStringLiteral("position"),
- QVariant::fromValue<QVector3D>(QVector3D(50, -100, 0)));
-
- createElement(QStringLiteral("Scene.Layer"), QStringLiteral("Slide1"), data);
-
- QVector<QHash<QString, QVariant>> groupElemProps;
- data.clear();
- data.insert(QStringLiteral("name"), QStringLiteral("Child 1 of Group"));
- data.insert(QStringLiteral("type"), QStringLiteral("model"));
- data.insert(QStringLiteral("sourcepath"), QStringLiteral("#Cylinder"));
- data.insert(QStringLiteral("material"), QStringLiteral("Basic Green"));
- data.insert(QStringLiteral("starttime"), 1000);
- data.insert(QStringLiteral("endtime"), 4000);
- data.insert(QStringLiteral("position"),
- QVariant::fromValue<QVector3D>(QVector3D(0, 0, 0)));
- groupElemProps << data;
- data.clear();
- data.insert(QStringLiteral("name"), QStringLiteral("Child 2 of Group"));
- data.insert(QStringLiteral("type"), QStringLiteral("model"));
- data.insert(QStringLiteral("sourcepath"), QStringLiteral("#Cylinder"));
- data.insert(QStringLiteral("material"), QStringLiteral("Basic Green"));
- data.insert(QStringLiteral("starttime"), 2000);
- data.insert(QStringLiteral("endtime"), 4000);
- data.insert(QStringLiteral("position"),
- QVariant::fromValue<QVector3D>(QVector3D(100, 0, 0)));
- groupElemProps << data;
-
- m_createdElements << QStringLiteral("Scene.Layer.New Group.Child 1 of Group")
- << QStringLiteral("Scene.Layer.New Group.Child 2 of Group");
-
- m_presentation->createElements(QStringLiteral("Scene.Layer.New Group"),
- QStringLiteral("Slide1"), groupElemProps);
-
- animationTimer.start();
- });
-
- // Switch to slide 2
- QVERIFY(spyExited.wait(20000));
-
- // Remove dynamically added object
- QTimer::singleShot(3000, [&]() {
- m_presentation->deleteElement(QStringLiteral("Scene.Layer.Sphere To Delete"));
- m_createdElements.removeOne(QStringLiteral("Scene.Layer.Sphere To Delete"));
- });
-
- // Create objects to slides 1 and 2 while slide 2 is executing
- QTimer::singleShot(2000, [&]() {
- data.clear();
- data.insert(QStringLiteral("name"), QStringLiteral("New Cylinder 3"));
- data.insert(QStringLiteral("sourcepath"), QStringLiteral("#Cylinder"));
- data.insert(QStringLiteral("material"), QStringLiteral("Basic Green"));
- data.insert(QStringLiteral("starttime"), 0);
- data.insert(QStringLiteral("endtime"), 3000);
- data.insert(QStringLiteral("position"),
- QVariant::fromValue<QVector3D>(QVector3D(-100, -100, 0)));
-
- createElement(QStringLiteral("Scene.Layer"), QStringLiteral("Slide1"), data);
-
- data.clear();
- data.insert(QStringLiteral("name"), QStringLiteral("New Sphere 2"));
- data.insert(QStringLiteral("sourcepath"), QStringLiteral("#Sphere"));
- data.insert(QStringLiteral("material"), QStringLiteral("Basic Green"));
- data.insert(QStringLiteral("starttime"), 0);
- data.insert(QStringLiteral("endtime"), 5000);
- data.insert(QStringLiteral("position"),
- QVariant::fromValue<QVector3D>(QVector3D(-100, 100, 0)));
-
- createElement(QStringLiteral("Scene.Layer"), QStringLiteral("Slide2"), data);
- });
-
- // Switch to slide 1
- QVERIFY(spyExited.wait(20000));
-
- QRandomGenerator rnd;
- QVector<QHash<QString, QVariant>> massProps;
- for (int i = 0; i < 1000; ++i) {
- data.clear();
- QString elementName = QStringLiteral("MassElement_%1").arg(i);
- data.insert(QStringLiteral("name"), elementName);
- data.insert(QStringLiteral("sourcepath"),
- i % 2 ? QStringLiteral("#Cube") : QStringLiteral("#Cone"));
- data.insert(QStringLiteral("material"),
- i % 2 ? QStringLiteral("Basic Green") : QStringLiteral("Basic Red"));
- data.insert(QStringLiteral("position"),
- QVariant::fromValue<QVector3D>(QVector3D(rnd.bounded(-600, 600),
- rnd.bounded(-600, 600),
- rnd.bounded(800, 1200))));
- massProps << data;
- m_createdElements << QStringLiteral("Scene.Layer.") + elementName;
- }
- m_presentation->createElements(QStringLiteral("Scene.Layer"), QStringLiteral("Slide2"),
- massProps);
-
- // Switch to slide 2
- QVERIFY(spyExited.wait(20000));
-
- QTest::qWait(500);
- QCOMPARE(spyElemCreated.count(), 9);
- const QStringList createdElements = m_presentation->createdElements();
- QCOMPARE(createdElements.size(), m_createdElements.size());
- for (const auto &elementName : createdElements)
- QVERIFY(m_createdElements.contains(elementName));
- deleteCreated();
-
- // Switch to slide 1
- QVERIFY(spyExited.wait(20000));
- QTest::qWait(1000);
-}
-
-void tst_qt3dsviewer::testCreateMaterial()
-{
- m_viewer->show();
-
- m_settings->setShowRenderStats(true);
- m_settings->setScaleMode(Q3DSViewerSettings::ScaleModeFill);
-
- QSignalSpy spyExited(m_presentation,
- SIGNAL(slideExited(const QString &, unsigned int, const QString &)));
- QSignalSpy spyMatCreated(m_presentation, SIGNAL(materialsCreated(const QStringList &,
- const QString &)));
- QSignalSpy spyElemCreated(m_presentation, SIGNAL(elementsCreated(const QStringList &,
- const QString &)));
-
- QStringList materialDefinitions;
- // Create material via .materialdef file in resources
- materialDefinitions
- << QStringLiteral(":/scenes/simple_cube_animation/materials/Basic Blue.materialdef")
- << QStringLiteral(":/scenes/simple_cube_animation/materials/Basic Texture.materialdef");
-
- // Create material directly from materialdef content
- auto loadMatDefFile = [&](const QString &fileName) -> QString {
- QFile matDefFile(fileName);
- if (!matDefFile.open(QIODevice::ReadOnly | QIODevice::Text))
- return {};
-
- QTextStream in(&matDefFile);
- return in.readAll();
- };
- QString matDef = loadMatDefFile(
- QStringLiteral(":/scenes/simple_cube_animation/materials/Copper.materialdef"));
- QVERIFY(!matDef.isEmpty());
- materialDefinitions << matDef;
-
- m_presentation->createMaterials(materialDefinitions);
- m_createdMaterials << QStringLiteral("materials/Basic Blue")
- << QStringLiteral("materials/Basic Texture")
- << QStringLiteral("materials/Copper");
-
- QObject::connect(m_presentation, &Q3DSPresentation::materialsCreated,
- [this](const QStringList &materialNames, const QString &error) {
- QCOMPARE(error, QString());
- for (auto &name : materialNames) {
- QVERIFY(m_createdMaterials.contains(name));
- QHash<QString, QVariant> data;
- if (name == QLatin1String("materials/Basic Blue")) {
- data.insert(QStringLiteral("name"), QStringLiteral("Blue Cylinder"));
- data.insert(QStringLiteral("sourcepath"), QStringLiteral("#Cylinder"));
- data.insert(QStringLiteral("material"), name);
- data.insert(QStringLiteral("position"),
- QVariant::fromValue<QVector3D>(QVector3D(200, 300, 200)));
- createElement(QStringLiteral("Scene.Layer"), QStringLiteral("Slide1"), data);
- } else if (name == QLatin1String("materials/Basic Texture")) {
- data.insert(QStringLiteral("name"), QStringLiteral("Textured Cone"));
- data.insert(QStringLiteral("sourcepath"), QStringLiteral("#Cone"));
- data.insert(QStringLiteral("material"), name);
- data.insert(QStringLiteral("position"),
- QVariant::fromValue<QVector3D>(QVector3D(-200, -300, 200)));
- createElement(QStringLiteral("Scene.Layer"), QStringLiteral("Slide1"), data);
- } else if (name == QLatin1String("materials/Copper")) {
- data.insert(QStringLiteral("name"), QStringLiteral("Copper Sphere"));
- data.insert(QStringLiteral("sourcepath"), QStringLiteral("#Sphere"));
- data.insert(QStringLiteral("material"), name);
- data.insert(QStringLiteral("position"),
- QVariant::fromValue<QVector3D>(QVector3D(-200, 300, 200)));
- createElement(QStringLiteral("Scene.Layer"), QStringLiteral("Slide1"), data);
- } else if (name == QLatin1String("materials/Just Yellow")) {
- QHash<QString, QVariant> data;
- data.insert(QStringLiteral("name"), QStringLiteral("Yellow Cube"));
- data.insert(QStringLiteral("sourcepath"), QStringLiteral("#Cube"));
- data.insert(QStringLiteral("material"), name);
- data.insert(QStringLiteral("position"),
- QVariant::fromValue<QVector3D>(QVector3D(200, -300, 200)));
- createElement(QStringLiteral("Scene.Layer"), QStringLiteral("Slide1"), data);
- } else {
- QVERIFY(false);
- }
- }
- });
-
- // Create material after start
- QTimer::singleShot(1000, [&]() {
- QString md = loadMatDefFile(QStringLiteral(
- ":/scenes/simple_cube_animation/materials/Basic Blue.materialdef"));
- // Modify the diffuse color and material name so that we can be sure it is a new one
- md.replace(QStringLiteral("Basic Blue"), QStringLiteral("Just Yellow"));
- md.replace(QRegularExpression(QStringLiteral("\"diffuse\">.*<")),
- QStringLiteral("\"diffuse\">1 1 0 1<"));
- m_presentation->createMaterial(md);
- m_createdMaterials << QStringLiteral("materials/Just Yellow");
- });
-
- // Delete material
- QTimer::singleShot(2500, [&]() {
- m_presentation->deleteElement(QStringLiteral("Scene.Layer.Textured Cone"));
- m_presentation->deleteMaterial("materials/Basic Texture");
- m_createdMaterials.removeOne(QStringLiteral("materials/Basic Texture"));
-
- // Try to use the deleted material - should find a fallback material
- QHash<QString, QVariant> data;
- data.insert(QStringLiteral("name"), QStringLiteral("Textured Cone 2"));
- data.insert(QStringLiteral("sourcepath"), QStringLiteral("#Cone"));
- data.insert(QStringLiteral("material"), QStringLiteral("materials/Basic Texture"));
- data.insert(QStringLiteral("position"),
- QVariant::fromValue<QVector3D>(QVector3D(-100, -300, 200)));
- createElement(QStringLiteral("Scene.Layer"), QStringLiteral("Slide1"), data);
- });
-
- QVERIFY(spyExited.wait(20000));
- QCOMPARE(spyMatCreated.count(), 2);
- QCOMPARE(spyElemCreated.count(), 5);
- const QStringList createdMaterials = m_presentation->createdMaterials();
- QCOMPARE(createdMaterials.size(), m_createdMaterials.size());
- for (const auto &name : createdMaterials)
- QVERIFY(m_createdMaterials.contains(name));
- deleteCreated();
- QTest::qWait(200); // Extra wait to verify slide change visually
-}
-
-void tst_qt3dsviewer::testCreateMesh()
-{
- m_viewer->show();
-
- m_settings->setShowRenderStats(true);
- m_settings->setScaleMode(Q3DSViewerSettings::ScaleModeFill);
-
- QSignalSpy spyExited(m_presentation,
- SIGNAL(slideExited(const QString &, unsigned int, const QString &)));
- QSignalSpy spyMeshCreated(m_presentation, SIGNAL(meshesCreated(const QStringList &,
- const QString &)));
- QSignalSpy spyElemCreated(m_presentation, SIGNAL(elementsCreated(const QStringList &,
- const QString &)));
- Q3DSGeometry pyramid;
- Q3DSGeometry star;
- createGeometries(pyramid, star);
-
- Q3DSElement pyramidElem(m_presentation, QStringLiteral("Scene.Layer.Pyramid"));
- Q3DSElement starElem(m_presentation, QStringLiteral("Scene.Layer.Star"));
-
- int animValue = 0;
- QTimer animationTimer;
- animationTimer.setInterval(10);
- QObject::connect(&animationTimer, &QTimer::timeout, [&]() {
- animValue++;
- pyramidElem.setAttribute(QStringLiteral("rotation.x"), animValue * 2);
- pyramidElem.setAttribute(QStringLiteral("rotation.y"), animValue);
- starElem.setAttribute(QStringLiteral("rotation.x"), -animValue * 2);
- starElem.setAttribute(QStringLiteral("rotation.y"), -animValue);
- });
-
- m_presentation->createMaterial(
- QStringLiteral(":/scenes/simple_cube_animation/materials/Basic Texture.materialdef"));
- m_createdMaterials << QStringLiteral("materials/Basic Texture");
- m_presentation->createMesh(QStringLiteral("Pyramid"), pyramid);
- m_createdMeshes << QStringLiteral("Pyramid");
-
- QObject::connect(m_presentation, &Q3DSPresentation::meshesCreated,
- [&](const QStringList &meshNames, const QString &error) {
- QCOMPARE(error, QString());
- for (auto &name : meshNames) {
- QVERIFY(m_createdMeshes.contains(name));
- QHash<QString, QVariant> data;
- if (name == QLatin1String("Pyramid")) {
- data.insert(QStringLiteral("name"), QStringLiteral("Pyramid"));
- data.insert(QStringLiteral("sourcepath"), QStringLiteral("Pyramid"));
- data.insert(QStringLiteral("material"), QStringLiteral("Basic Texture"));
- data.insert(QStringLiteral("position"),
- QVariant::fromValue<QVector3D>(QVector3D(100, 150, 500)));
- createElement(QStringLiteral("Scene.Layer"), QStringLiteral("Slide1"), data);
- animationTimer.start();
- } else if (name == QLatin1String("Star")) {
- data.insert(QStringLiteral("name"), QStringLiteral("Star"));
- data.insert(QStringLiteral("sourcepath"), QStringLiteral("Star"));
- data.insert(QStringLiteral("material"), QStringLiteral("Basic Texture"));
- data.insert(QStringLiteral("position"),
- QVariant::fromValue<QVector3D>(QVector3D(100, -150, 500)));
- createElement(QStringLiteral("Scene.Layer"), QStringLiteral("Slide1"), data);
- } else {
- QVERIFY(false);
- }
- }
- });
-
- // Create mesh after start
- QTimer::singleShot(1000, [&]() {
- m_presentation->createMesh(QStringLiteral("Star"), star);
- m_createdMeshes << QStringLiteral("Star");
- });
-
- QTimer::singleShot(3000, [&]() {
- m_presentation->deleteElement(QStringLiteral("Scene.Layer.Star"));
- m_presentation->deleteMesh(QStringLiteral("Star"));
- m_createdMeshes.removeOne(QStringLiteral("Star"));
- });
-
- QVERIFY(spyExited.wait(20000));
- QCOMPARE(spyMeshCreated.count(), 2);
- QCOMPARE(spyElemCreated.count(), 2);
- const QStringList createdMeshes = m_presentation->createdMeshes();
- QCOMPARE(createdMeshes.size(), m_createdMeshes.size());
- for (const auto &name : createdMeshes)
- QVERIFY(m_createdMeshes.contains(name));
- deleteCreated();
- QTest::qWait(200); // Extra wait to verify slide change visually
-}
-
-void tst_qt3dsviewer::testMouseEvents()
-{
- m_viewer->show();
- QTest::qWait(1000);
-
- QSignalSpy spyEvents(m_studio3DItem,
- SIGNAL(ignoredEventsChanged()));
- QSignalSpy spyExited(m_presentation,
- SIGNAL(slideExited(const QString &, unsigned int, const QString &)));
-
- QCOMPARE(spyEvents.count(), 0);
- QCOMPARE(spyExited.count(), 0);
-
- // Ignore mouse, so slide doesn't change
- m_studio3DItem->setProperty("ignoredEvents", 1);
- QTest::mousePress(m_viewer, Qt::LeftButton);
- QTest::qWait(1000);
- QTest::mouseRelease(m_viewer, Qt::LeftButton);
- QCOMPARE(spyEvents.count(), 1);
- QCOMPARE(spyExited.count(), 0);
-
- // Enable mouse, clicking switches slide
- m_studio3DItem->setProperty("ignoredEvents", 0);
- QTest::mousePress(m_viewer, Qt::LeftButton);
- QTest::qWait(1000);
- QTest::mouseRelease(m_viewer, Qt::LeftButton);
- QCOMPARE(spyEvents.count(), 2);
- QCOMPARE(spyExited.count(), 1);
-}
-
-void tst_qt3dsviewer::deleteCreated()
-{
- m_presentation->deleteElements(m_createdElements);
- m_presentation->deleteMaterials(m_createdMaterials);
- m_presentation->deleteMeshes(m_createdMeshes);
- m_createdElements.clear();
- m_createdMaterials.clear();
- m_createdMeshes.clear();
- QVERIFY(m_presentation->createdElements().size() == 0);
- QVERIFY(m_presentation->createdMaterials().size() == 0);
- QVERIFY(m_presentation->createdMeshes().size() == 0);
-}
-
-void tst_qt3dsviewer::createElement(const QString &parentElementPath, const QString &slideName,
- const QHash<QString, QVariant> &properties)
-{
- m_createdElements << parentElementPath + QLatin1Char('.')
- + properties[QStringLiteral("name")].toString();
- m_presentation->createElement(parentElementPath, slideName, properties);
-}
-
-void tst_qt3dsviewer::createGeometries(Q3DSGeometry &pyramid, Q3DSGeometry &star)
-{
- struct Vertex {
- QVector3D position;
- QVector3D normal;
- QVector2D uv;
- };
-
- QVector<Vertex> vertices;
-
- auto createVertex = [&](const QVector3D &xyz, const QVector3D &n, const QVector2D &uv) {
- Vertex newVertex;
- newVertex.position = xyz;
- if (n.isNull())
- newVertex.normal = xyz; // This is almost never the correct normal
- else
- newVertex.normal = n.normalized();
- newVertex.uv = uv;
- vertices.append(newVertex);
- };
-
- auto createTriangle = [&](const QVector3D &xyz1, const QVector2D &uv1,
- const QVector3D &xyz2, const QVector2D &uv2,
- const QVector3D &xyz3, const QVector2D &uv3) {
- QVector3D n;
- n = QVector3D::crossProduct(xyz2 - xyz1, xyz3 - xyz1).normalized();
-
- createVertex(xyz1, n, uv1);
- createVertex(xyz2, n, uv2);
- createVertex(xyz3, n, uv3);
- };
-
- // Pyramid (no index buffer)
- {
- QVector3D xyz[5] = {{0, 0, 50}, {50, 50, -50}, {50, -50, -50}, {-50, -50, -50},
- {-50, 50, -50}};
- QVector2D uv[4] = {{1, 1}, {1, 0}, {0, 0}, {0, 1}};
- createTriangle(xyz[0], uv[0], xyz[1], uv[1], xyz[2], uv[2]);
- createTriangle(xyz[0], uv[0], xyz[2], uv[1], xyz[3], uv[2]);
- createTriangle(xyz[0], uv[0], xyz[3], uv[1], xyz[4], uv[2]);
- createTriangle(xyz[0], uv[0], xyz[4], uv[1], xyz[1], uv[2]);
- createTriangle(xyz[1], uv[0], xyz[4], uv[2], xyz[3], uv[1]);
- createTriangle(xyz[1], uv[0], xyz[3], uv[3], xyz[2], uv[2]);
-
- QByteArray vertexBuffer(reinterpret_cast<const char *>(vertices.constData()),
- vertices.size() * int(sizeof(Vertex)));
-
- pyramid.clear();
- pyramid.setVertexData(vertexBuffer);
- pyramid.addAttribute(Q3DSGeometry::Attribute::PositionSemantic);
- pyramid.addAttribute(Q3DSGeometry::Attribute::NormalSemantic);
- pyramid.addAttribute(Q3DSGeometry::Attribute::TexCoordSemantic);
- }
-
- vertices.clear();
-
- // Star (using index buffer)
- {
- // Note: Since faces share vertices, the normals on the vertices are not correct
- // for any face, leading to weird lighting behavior
- createVertex({0, 150, 0}, {}, {0.5f, 1});
- createVertex({50, 50, -50}, {}, {0.66f, 0.66f});
- createVertex({150, 0, 0}, {}, {1, 0.5f});
- createVertex({50, -50, -50}, {}, {0.66f, 0.33f});
- createVertex({0, -150, 0}, {}, {0.5f, 0});
- createVertex({-50, -50, -50}, {}, {0.33f, 0.33f});
- createVertex({-150, 0, 0}, {}, {0, 0.5f});
- createVertex({-50, 50, -50}, {}, {0.33f, 0.66f});
- createVertex({50, 50, 50}, {}, {0.66f, 0.66f});
- createVertex({50, -50, 50}, {}, {0.66f, 0.33f});
- createVertex({-50, -50, 50}, {}, {0.33f, 0.33f});
- createVertex({-50, 50, 50}, {}, {0.33f, 0.66f});
-
- QVector<quint16> indices = {
- 0, 1, 8, 0, 7, 1, 0, 11, 7, 0, 8, 11, // Top pyramid
- 2, 1, 3, 2, 3, 9, 2, 9, 8, 2, 8, 1, // Right pyramid
- 4, 3, 5, 4, 5, 10, 4, 10, 9, 4, 9, 3, // Bottom pyramid
- 6, 5, 7, 6, 7, 11, 6, 11, 10, 6, 10, 5, // Left pyramid
- 1, 7, 5, 1, 5, 3, // Front center rect
- 8, 10, 11, 8, 9, 10 // Back center rect
- };
-
- QByteArray vertexBuffer(reinterpret_cast<const char *>(vertices.constData()),
- vertices.size() * int(sizeof(Vertex)));
- QByteArray indexBuffer(reinterpret_cast<const char *>(indices.constData()),
- indices.size() * int(sizeof(quint16)));
-
- Q3DSGeometry::Attribute indexAtt;
- indexAtt.semantic = Q3DSGeometry::Attribute::IndexSemantic;
- indexAtt.componentType = Q3DSGeometry::Attribute::ComponentType::U16Type;
-
- star.clear();
- star.setVertexData(vertexBuffer);
- star.setIndexData(indexBuffer);
- star.addAttribute(Q3DSGeometry::Attribute::PositionSemantic);
- star.addAttribute(Q3DSGeometry::Attribute::NormalSemantic);
- star.addAttribute(Q3DSGeometry::Attribute::TexCoordSemantic);
- star.addAttribute(indexAtt);
- }
-}
-
-QTEST_MAIN(tst_qt3dsviewer)
diff --git a/tests/auto/viewer/tst_qt3dsviewer.h b/tests/auto/viewer/tst_qt3dsviewer.h
deleted file mode 100644
index 3d1f9473..00000000
--- a/tests/auto/viewer/tst_qt3dsviewer.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/****************************************************************************
-**
-** 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-
-#ifndef TST_QT3DSVIEWER
-#define TST_QT3DSVIEWER
-
-#include <QtTest/QtTest>
-#include <QtTest/QSignalSpy>
-#include <QtQuick/QQuickView>
-#include <QtStudio3D/q3dspresentation.h>
-#include <QtStudio3D/q3dsviewersettings.h>
-
-class tst_qt3dsviewer : public QObject
-{
- Q_OBJECT
-public:
- tst_qt3dsviewer()
- {
- }
-
-private Q_SLOTS:
- void initTestCase();
- void cleanupTestCase();
- void init();
- void cleanup();
-
- void testEmpty();
- void testLoading();
- void testSlides();
- void testFrameUpdates();
- void testSettings();
- void testCreateElement();
- void testCreateMaterial();
- void testCreateMesh();
- void testMouseEvents();
-
-private:
- void deleteCreated();
- void createElement(const QString &parentElementPath, const QString &slideName,
- const QHash<QString, QVariant> &properties);
- void createGeometries(Q3DSGeometry &pyramid, Q3DSGeometry &star);
-
- QQuickView *m_viewer = nullptr;
- QObject *m_studio3DItem = nullptr;
- Q3DSPresentation *m_presentation = nullptr;
- Q3DSViewerSettings *m_settings = nullptr;
- QStringList m_createdElements;
- QStringList m_createdMaterials;
- QStringList m_createdMeshes;
- bool m_ignoreError = false;
-
-};
-
-#endif // TST_QT3DSVIEWER
diff --git a/tests/auto/viewer/tst_qt3dsviewer.qml b/tests/auto/viewer/tst_qt3dsviewer.qml
deleted file mode 100644
index e65a49db..00000000
--- a/tests/auto/viewer/tst_qt3dsviewer.qml
+++ /dev/null
@@ -1,62 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** 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.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtStudio3D.OpenGL 2.4
-
-Studio3D {
- id: studio3D
- width: 800
- height: 800
- Presentation {
- source: "qrc:/scenes/simple_cube_animation/simple_cube_animation.uia"
- }
- ViewerSettings {
- }
-}
diff --git a/tests/auto/viewer/viewer.pro b/tests/auto/viewer/viewer.pro
deleted file mode 100644
index 9e06c2ca..00000000
--- a/tests/auto/viewer/viewer.pro
+++ /dev/null
@@ -1,21 +0,0 @@
-TEMPLATE = app
-CONFIG += testcase
-include($$PWD/../../../src/Runtime/ogl-runtime/commoninclude.pri)
-
-TARGET = tst_qt3dsviewer
-QT += testlib gui quick studio3d
-RESOURCES += viewer.qrc
-
-HEADERS += \
- tst_qt3dsviewer.h
-
-SOURCES += \
- tst_qt3dsviewer.cpp
-
-LIBS += \
- -lqt3dsopengl$$qtPlatformTargetSuffix() \
- -lqt3dsqmlstreamer$$qtPlatformTargetSuffix()
-
-ANDROID_EXTRA_LIBS = \
- libqt3dsopengl.so \
- libqt3dsqmlstreamer.so
diff --git a/tests/auto/viewer/viewer.qrc b/tests/auto/viewer/viewer.qrc
deleted file mode 100644
index dcdddbea..00000000
--- a/tests/auto/viewer/viewer.qrc
+++ /dev/null
@@ -1,16 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file>../../scenes/simple_cube_animation/simple_cube_animation.uia</file>
- <file>../../scenes/simple_cube_animation/presentations/simple_cube_animation.uip</file>
- <file>../../scenes/simple_cube_animation/materials/Basic Green.materialdef</file>
- <file>../../scenes/simple_cube_animation/materials/Basic Red.materialdef</file>
- <file>../../scenes/simple_cube_animation/materials/Basic Blue.materialdef</file>
- <file>../../scenes/simple_cube_animation/materials/Basic Texture.materialdef</file>
- <file>../../scenes/simple_cube_animation/materials/Copper.materialdef</file>
- <file>../../scenes/simple_cube_animation/materials/copper.shader</file>
- <file>../../scenes/simple_cube_animation/maps/materials/shadow.png</file>
- <file>../../scenes/simple_cube_animation/maps/materials/spherical_checker.png</file>
- <file>../../scenes/simple_cube_animation/maps/QT-symbol.png</file>
- <file>tst_qt3dsviewer.qml</file>
- </qresource>
-</RCC>
diff --git a/tests/scenes/customvertex/customvertex.uia b/tests/scenes/customvertex/customvertex.uia
deleted file mode 100644
index 84488102..00000000
--- a/tests/scenes/customvertex/customvertex.uia
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version='1.0' encoding='utf-8'?>
-<application xmlns="http://qt.io/qt3dstudio/uia">
- <assets initial="customvertex">
- <presentation id="customvertex" src="presentations/customvertex.uip"/>
- </assets>
- <statemachine ref="#logic">
- <visual-states>
- <state ref="Initial">
- <enter>
- <goto-slide rel="next" element="main:Scene"/>
- </enter>
- </state>
- </visual-states>
- </statemachine>
-</application>
diff --git a/tests/scenes/customvertex/materials/simple.shader b/tests/scenes/customvertex/materials/simple.shader
deleted file mode 100644
index bdbd21e9..00000000
--- a/tests/scenes/customvertex/materials/simple.shader
+++ /dev/null
@@ -1,29 +0,0 @@
-<Material name="simple" version="1.0">
- <MetaData>
- <Property formalName="Scale" name="scale" type="Vector" default="1 1 1" stage="vertex" category="Material" />
- <Property formalName="Color" name="color" type="Color" default="1 1 1" stage="fragment" category="Material" />
- </MetaData>
- <Shaders type="GLSL" version="330">
- <Shader>
- <VertexShader>
- attribute vec3 attr_pos;
- uniform mat4 modelViewProjection;
-
- void main() {
- gl_Position = modelViewProjection * vec4(attr_pos * scale, 1.0);
- }
- </VertexShader>
- <FragmentShader>
- out vec4 fragColor;
- void main() {
- fragColor = vec4(color.rgb, 1.0);
- }
- </FragmentShader>
- </Shader>
- </Shaders>
-<Passes>
- <Pass>
- </Pass>
-</Passes>
-</Material>
-
diff --git a/tests/scenes/customvertex/presentations/customvertex.uip b/tests/scenes/customvertex/presentations/customvertex.uip
deleted file mode 100644
index eba06daa..00000000
--- a/tests/scenes/customvertex/presentations/customvertex.uip
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<UIP version="5" >
- <Project >
- <ProjectSettings author="" company="" presentationWidth="1920" presentationHeight="1080" maintainAspect="False" preferKtx="False" >
- <CustomColors count="16" >#7391ff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff</CustomColors>
- </ProjectSettings>
- <Classes >
- <CustomMaterial id="simple" name="simple" sourcepath="../materials/simple.shader" />
- </Classes>
- <Graph >
- <Scene id="Scene" >
- <Layer id="Layer" variants="" >
- <Camera id="Camera" />
- <Light id="Light" />
- <Model id="Sphere" >
- <CustomMaterial id="simple_001" class="#simple" />
- </Model>
- </Layer>
- </Scene>
- </Graph>
- <Logic >
- <State name="Master Slide" component="#Scene" >
- <Add ref="#Layer" disabledepthprepass="True" />
- <Add ref="#Camera" />
- <Add ref="#Light" />
- <State id="Scene-Slide1" name="Slide1" >
- <Add ref="#Sphere" name="Sphere" position="0 0 0" sourcepath="#Sphere" />
- <Add ref="#simple_001" name="Material" color="0.333333 0.666667 0" scale="1 2 1" />
- </State>
- </State>
- </Logic>
- </Project>
-</UIP>
diff --git a/tests/scenes/simple_cube_animation/maps/QT-symbol.png b/tests/scenes/simple_cube_animation/maps/QT-symbol.png
deleted file mode 100644
index 752a2e2f..00000000
--- a/tests/scenes/simple_cube_animation/maps/QT-symbol.png
+++ /dev/null
Binary files differ
diff --git a/tests/scenes/simple_cube_animation/maps/materials/shadow.png b/tests/scenes/simple_cube_animation/maps/materials/shadow.png
deleted file mode 100644
index 599b1ccc..00000000
--- a/tests/scenes/simple_cube_animation/maps/materials/shadow.png
+++ /dev/null
Binary files differ
diff --git a/tests/scenes/simple_cube_animation/maps/materials/spherical_checker.png b/tests/scenes/simple_cube_animation/maps/materials/spherical_checker.png
deleted file mode 100644
index e42394dd..00000000
--- a/tests/scenes/simple_cube_animation/maps/materials/spherical_checker.png
+++ /dev/null
Binary files differ
diff --git a/tests/scenes/simple_cube_animation/materials/Basic Blue.materialdef b/tests/scenes/simple_cube_animation/materials/Basic Blue.materialdef
deleted file mode 100644
index c35d47b8..00000000
--- a/tests/scenes/simple_cube_animation/materials/Basic Blue.materialdef
+++ /dev/null
@@ -1,25 +0,0 @@
-<MaterialData version="1.0">
- <Property name="shaderlighting">Pixel</Property>
- <Property name="blendmode">Normal</Property>
- <Property name="diffuse">0 0.482353 1 1</Property>
- <Property name="specularamount">0</Property>
- <Property name="specularroughness">0</Property>
- <Property name="opacity">100</Property>
- <Property name="emissivecolor">1 1 1 1</Property>
- <Property name="emissivepower">0</Property>
- <Property name="bumpamount">0.5</Property>
- <Property name="displaceamount">20</Property>
- <Property name="translucentfalloff">1</Property>
- <Property name="diffuselightwrap">0</Property>
- <Property name="specularmodel">Default</Property>
- <Property name="speculartint">1 1 1 1</Property>
- <Property name="ior">1.5</Property>
- <Property name="fresnelPower">0</Property>
- <Property name="vertexcolors">False</Property>
- <Property name="sourcepath"></Property>
- <Property name="importid"></Property>
- <Property name="importfile"></Property>
- <Property name="type">Material</Property>
- <Property name="name"><![CDATA[materials/Basic Blue]]></Property>
- <Property name="path"><![CDATA[C:/dev/q3dstudio/qt3dstudio/tests/scenes/simple_cube_animation/materials/Basic Blue.materialdef]]></Property>
-</MaterialData> \ No newline at end of file
diff --git a/tests/scenes/simple_cube_animation/materials/Basic Green.materialdef b/tests/scenes/simple_cube_animation/materials/Basic Green.materialdef
deleted file mode 100644
index 273a348c..00000000
--- a/tests/scenes/simple_cube_animation/materials/Basic Green.materialdef
+++ /dev/null
@@ -1,25 +0,0 @@
-<MaterialData version="1.0">
- <Property name="shaderlighting">Pixel</Property>
- <Property name="blendmode">Normal</Property>
- <Property name="diffuse">0.180392 1 0 1</Property>
- <Property name="specularamount">0</Property>
- <Property name="specularroughness">0</Property>
- <Property name="opacity">100</Property>
- <Property name="emissivecolor">1 1 1 1</Property>
- <Property name="emissivepower">0</Property>
- <Property name="bumpamount">0.5</Property>
- <Property name="displaceamount">20</Property>
- <Property name="translucentfalloff">1</Property>
- <Property name="diffuselightwrap">0</Property>
- <Property name="specularmodel">Default</Property>
- <Property name="speculartint">1 1 1 1</Property>
- <Property name="ior">1.5</Property>
- <Property name="fresnelPower">0</Property>
- <Property name="vertexcolors">False</Property>
- <Property name="sourcepath"></Property>
- <Property name="importid"></Property>
- <Property name="importfile"></Property>
- <Property name="type">Material</Property>
- <Property name="name"><![CDATA[materials/Basic Green]]></Property>
- <Property name="path"><![CDATA[C:/dev/q3dstudio/qt3dstudio/tests/scenes/simple_cube_animation/materials/Basic Green.materialdef]]></Property>
-</MaterialData> \ No newline at end of file
diff --git a/tests/scenes/simple_cube_animation/materials/Basic Red.materialdef b/tests/scenes/simple_cube_animation/materials/Basic Red.materialdef
deleted file mode 100644
index 38b8eb7b..00000000
--- a/tests/scenes/simple_cube_animation/materials/Basic Red.materialdef
+++ /dev/null
@@ -1,25 +0,0 @@
-<MaterialData version="1.0">
- <Property name="shaderlighting">Pixel</Property>
- <Property name="blendmode">Normal</Property>
- <Property name="diffuse">1 0 0.0156863 1</Property>
- <Property name="specularamount">0</Property>
- <Property name="specularroughness">0</Property>
- <Property name="opacity">100</Property>
- <Property name="emissivecolor">1 1 1 1</Property>
- <Property name="emissivepower">0</Property>
- <Property name="bumpamount">0.5</Property>
- <Property name="displaceamount">20</Property>
- <Property name="translucentfalloff">1</Property>
- <Property name="diffuselightwrap">0</Property>
- <Property name="specularmodel">Default</Property>
- <Property name="speculartint">1 1 1 1</Property>
- <Property name="ior">1.5</Property>
- <Property name="fresnelPower">0</Property>
- <Property name="vertexcolors">False</Property>
- <Property name="sourcepath"></Property>
- <Property name="importid"></Property>
- <Property name="importfile"></Property>
- <Property name="type">Material</Property>
- <Property name="name"><![CDATA[materials/Basic Red]]></Property>
- <Property name="path"><![CDATA[C:/dev/q3dstudio/qt3dstudio/tests/scenes/simple_cube_animation/materials/Basic Red.materialdef]]></Property>
-</MaterialData> \ No newline at end of file
diff --git a/tests/scenes/simple_cube_animation/materials/Basic Texture.materialdef b/tests/scenes/simple_cube_animation/materials/Basic Texture.materialdef
deleted file mode 100644
index 4defa98f..00000000
--- a/tests/scenes/simple_cube_animation/materials/Basic Texture.materialdef
+++ /dev/null
@@ -1,63 +0,0 @@
-<MaterialData version="1.0">
- <Property name="shaderlighting">Pixel</Property>
- <Property name="blendmode">Normal</Property>
- <Property name="diffuse">0.752941 0.756863 1 1</Property>
- <Property name="diffusemap"><![CDATA[./maps/materials/spherical_checker.png]]></Property>
- <Property name="diffusemap2"><![CDATA[./maps/QT-symbol.png]]></Property>
- <Property name="specularamount">0</Property>
- <Property name="specularroughness">0</Property>
- <Property name="opacity">100</Property>
- <Property name="emissivecolor">1 1 1 1</Property>
- <Property name="emissivepower">0</Property>
- <Property name="bumpamount">0.5</Property>
- <Property name="displaceamount">20</Property>
- <Property name="translucentfalloff">1</Property>
- <Property name="diffuselightwrap">0</Property>
- <Property name="specularmodel">Default</Property>
- <Property name="speculartint">1 1 1 1</Property>
- <Property name="ior">1.5</Property>
- <Property name="fresnelPower">0</Property>
- <Property name="vertexcolors">False</Property>
- <Property name="sourcepath"></Property>
- <Property name="importid"></Property>
- <Property name="importfile"></Property>
- <Property name="type">Material</Property>
- <Property name="name"><![CDATA[materials/Basic Texture]]></Property>
- <Property name="path"><![CDATA[C:/dev/qt/NDD/qt3ds2/tests/scenes/simple_cube_animation/materials/Basic Texture.materialdef]]></Property>
- <TextureData name="diffusemap">
- <Property name="scaleu">1</Property>
- <Property name="scalev">1</Property>
- <Property name="mappingmode">UV Mapping</Property>
- <Property name="tilingmodehorz">Tiled</Property>
- <Property name="tilingmodevert">Tiled</Property>
- <Property name="rotationuv">0</Property>
- <Property name="positionu">0</Property>
- <Property name="positionv">0</Property>
- <Property name="pivotu">0</Property>
- <Property name="pivotv">0</Property>
- <Property name="subpresentation"></Property>
- <Property name="sourcepath"><![CDATA[./maps/materials/spherical_checker.png]]></Property>
- <Property name="importid"></Property>
- <Property name="importfile"></Property>
- <Property name="type">Image</Property>
- <Property name="name"><![CDATA[Image]]></Property>
- </TextureData>
- <TextureData name="diffusemap2">
- <Property name="scaleu">2</Property>
- <Property name="scalev">3</Property>
- <Property name="mappingmode">UV Mapping</Property>
- <Property name="tilingmodehorz">Tiled</Property>
- <Property name="tilingmodevert">Tiled</Property>
- <Property name="rotationuv">0</Property>
- <Property name="positionu">0</Property>
- <Property name="positionv">0</Property>
- <Property name="pivotu">0</Property>
- <Property name="pivotv">0</Property>
- <Property name="subpresentation"></Property>
- <Property name="sourcepath"><![CDATA[./maps/QT-symbol.png]]></Property>
- <Property name="importid"></Property>
- <Property name="importfile"></Property>
- <Property name="type">Image</Property>
- <Property name="name"><![CDATA[Image]]></Property>
- </TextureData>
-</MaterialData> \ No newline at end of file
diff --git a/tests/scenes/simple_cube_animation/materials/Copper.materialdef b/tests/scenes/simple_cube_animation/materials/Copper.materialdef
deleted file mode 100644
index 76880986..00000000
--- a/tests/scenes/simple_cube_animation/materials/Copper.materialdef
+++ /dev/null
@@ -1,14 +0,0 @@
-<MaterialData version="1.0">
- <Property name="uEnvironmentTexture" type="Texture"><![CDATA[./maps/materials/spherical_checker.png]]></Property>
- <Property name="uEnvironmentMappingEnabled">True</Property>
- <Property name="uBakedShadowTexture" type="Texture"><![CDATA[./maps/materials/shadow.png]]></Property>
- <Property name="uShadowMappingEnabled">False</Property>
- <Property name="roughness">0</Property>
- <Property name="metal_color">0.807843 0.45098 0.211765 1</Property>
- <Property name="sourcepath"><![CDATA[./materials/copper.shader]]></Property>
- <Property name="importid"></Property>
- <Property name="importfile"></Property>
- <Property name="type">CustomMaterial</Property>
- <Property name="name"><![CDATA[materials/Copper]]></Property>
- <Property name="path"><![CDATA[C:/dev/qt/NDD/qt3ds2/tests/scenes/simple_cube_animation/materials/Copper.materialdef]]></Property>
-</MaterialData> \ No newline at end of file
diff --git a/tests/scenes/simple_cube_animation/materials/copper.shader b/tests/scenes/simple_cube_animation/materials/copper.shader
deleted file mode 100644
index cf9e1ad4..00000000
--- a/tests/scenes/simple_cube_animation/materials/copper.shader
+++ /dev/null
@@ -1,178 +0,0 @@
-<Material name="copper" version="1.0">
- <MetaData >
- <Property formalName="Environment Map" name="uEnvironmentTexture" description="Environment texture for the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="environment" default="./maps/materials/spherical_checker.png" category="Material"/>
- <Property formalName="Enable Environment" name="uEnvironmentMappingEnabled" description="Enable environment mapping" type="Boolean" default="True" category="Material"/>
- <Property formalName="Baked Shadow Map" name="uBakedShadowTexture" description="Baked shadow texture for the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="shadow" default="./maps/materials/shadow.png" category="Material"/>
- <Property formalName="Shadow Mapping" name="uShadowMappingEnabled" description="Enable shadow mapping" type="Boolean" default="False" category="Material"/>
- <Property formalName="Roughness" name="roughness" type="Float" min="0.000000" max="1.000000" default="0.000000" description="Roughness of the material.\n0 = fully specular\n1 = fully diffuse" category="Material"/>
- <Property formalName="Metal Color" name="metal_color" type="Color" default="0.805 0.395 0.305" description="Color of the material" category="Material"/>
- </MetaData>
- <Shaders type="GLSL" version="330">
- <Shader>
- <Shared> </Shared>
-<VertexShader>
- </VertexShader>
- <FragmentShader>
-
-// add enum defines
-#define scatter_reflect 0
-#define scatter_transmit 1
-#define scatter_reflect_transmit 2
-
-#define QT3DS_ENABLE_UV0 1
-#define QT3DS_ENABLE_WORLD_POSITION 1
-#define QT3DS_ENABLE_TEXTAN 1
-#define QT3DS_ENABLE_BINORMAL 0
-
-#include "vertexFragmentBase.glsllib"
-
-// set shader output
-out vec4 fragColor;
-
-// add structure defines
-struct layer_result
-{
- vec4 base;
- vec4 layer;
- mat3 tanFrame;
-};
-
-
-// temporary declarations
- vec4 tmpShadowTerm;
-
-layer_result layers[1];
-
-#include "SSAOCustomMaterial.glsllib"
-#include "sampleLight.glsllib"
-#include "sampleProbe.glsllib"
-#include "sampleArea.glsllib"
-#include "square.glsllib"
-#include "calculateRoughness.glsllib"
-#include "evalBakedShadowMap.glsllib"
-#include "evalEnvironmentMap.glsllib"
-#include "luminance.glsllib"
-#include "microfacetBSDF.glsllib"
-#include "physGlossyBSDF.glsllib"
-#include "simpleGlossyBSDF.glsllib"
-#include "fresnelLayer.glsllib"
-
-bool evalTwoSided()
-{
- return( false );
-}
-
-vec3 computeFrontMaterialEmissive()
-{
- return( vec3( 0, 0, 0 ) );
-}
-
-void computeFrontLayerColor( in vec3 normal, in vec3 lightDir, in vec3 viewDir, in vec3 lightDiffuse, in vec3 lightSpecular, in float materialIOR, float aoFactor )
-{
-#if QT3DS_ENABLE_CG_LIGHTING
- layers[0].base += tmpShadowTerm * vec4( 0.0, 0.0, 0.0, 1.0 );
- layers[0].layer += tmpShadowTerm * microfacetBSDF( layers[0].tanFrame, lightDir, viewDir, lightSpecular, materialIOR, roughness, roughness, scatter_reflect );
-
-#endif
-}
-
-void computeFrontAreaColor( in int lightIdx, in vec4 lightDiffuse, in vec4 lightSpecular )
-{
-#if QT3DS_ENABLE_CG_LIGHTING
- layers[0].base += tmpShadowTerm * vec4( 0.0, 0.0, 0.0, 1.0 );
- layers[0].layer += tmpShadowTerm * lightSpecular * sampleAreaGlossy( layers[0].tanFrame, varWorldPos, lightIdx, viewDir, roughness, roughness );
-
-#endif
-}
-
-void computeFrontLayerEnvironment( in vec3 normal, in vec3 viewDir, float aoFactor )
-{
-#if !QT3DS_ENABLE_LIGHT_PROBE
- layers[0].base += tmpShadowTerm * vec4( 0.0, 0.0, 0.0, 1.0 );
- layers[0].layer += tmpShadowTerm * microfacetSampledBSDF( layers[0].tanFrame, viewDir, roughness, roughness, scatter_reflect );
-
-#else
- layers[0].base += tmpShadowTerm * vec4( 0.0, 0.0, 0.0, 1.0 );
- layers[0].layer += tmpShadowTerm * sampleGlossyAniso( layers[0].tanFrame, viewDir, roughness, roughness );
-
-#endif
-}
-
-vec3 computeBackMaterialEmissive()
-{
- return( vec3(0, 0, 0) );
-}
-
-void computeBackLayerColor( in vec3 normal, in vec3 lightDir, in vec3 viewDir, in vec3 lightDiffuse, in vec3 lightSpecular, in float materialIOR, float aoFactor )
-{
-#if QT3DS_ENABLE_CG_LIGHTING
- layers[0].base += vec4( 0.0, 0.0, 0.0, 1.0 );
- layers[0].layer += vec4( 0.0, 0.0, 0.0, 1.0 );
-#endif
-}
-
-void computeBackAreaColor( in int lightIdx, in vec4 lightDiffuse, in vec4 lightSpecular )
-{
-#if QT3DS_ENABLE_CG_LIGHTING
- layers[0].base += vec4( 0.0, 0.0, 0.0, 1.0 );
- layers[0].layer += vec4( 0.0, 0.0, 0.0, 1.0 );
-#endif
-}
-
-void computeBackLayerEnvironment( in vec3 normal, in vec3 viewDir, float aoFactor )
-{
-#if !QT3DS_ENABLE_LIGHT_PROBE
- layers[0].base += vec4( 0.0, 0.0, 0.0, 1.0 );
- layers[0].layer += vec4( 0.0, 0.0, 0.0, 1.0 );
-#else
- layers[0].base += vec4( 0.0, 0.0, 0.0, 1.0 );
- layers[0].layer += vec4( 0.0, 0.0, 0.0, 1.0 );
-#endif
-}
-
-float computeIOR()
-{
- return( false ? 1.0 : luminance( vec3( 1, 1, 1 ) ) );
-}
-
-float evalCutout()
-{
- return( 1.000000 );
-}
-
-vec3 computeNormal()
-{
- return( normal );
-}
-
-void computeTemporaries()
-{
- tmpShadowTerm = evalBakedShadowMap( texCoord0 );
-}
-
-vec4 computeLayerWeights( in float alpha )
-{
- vec4 color;
- color = fresnelLayer( normal, vec3( 25.65, 25.65, 25.65 ), 1.000000, metal_color.rgb, layers[0].layer, layers[0].base, alpha );
- return color;
-}
-
-
-void initializeLayerVariables(void)
-{
- // clear layers
- layers[0].base = vec4(0.0, 0.0, 0.0, 1.0);
- layers[0].layer = vec4(0.0, 0.0, 0.0, 1.0);
- layers[0].tanFrame = orthoNormalize( mat3( tangent, cross(normal, tangent), normal ) );
-}
-
- </FragmentShader>
- </Shader>
- </Shaders>
-<Passes >
- <ShaderKey value="4"/>
- <LayerKey count="1"/>
- <Pass >
- </Pass>
-</Passes>
-</Material>
diff --git a/tests/scenes/simple_cube_animation/presentations/simple_cube_animation.uip b/tests/scenes/simple_cube_animation/presentations/simple_cube_animation.uip
deleted file mode 100644
index f8fae907..00000000
--- a/tests/scenes/simple_cube_animation/presentations/simple_cube_animation.uip
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<UIP version="6" >
- <Project >
- <ProjectSettings author="" company="" presentationWidth="600" presentationHeight="600" maintainAspect="False" preferKtx="False" >
- <CustomColors count="16" >#7391ff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff</CustomColors>
- </ProjectSettings>
- <Graph >
- <Scene id="Scene" >
- <Layer id="Layer" variants="" >
- <Camera id="Camera" />
- <Light id="Light" >
- <Model id="Sphere" variants="" >
- <Material id="Default_animatable" />
- </Model>
- </Light>
- <Model id="Cube" variants="" >
- <Material id="Basic Green_animatable" />
- </Model>
- <Model id="Cube2" variants="" >
- <Material id="Basic Red_animatable" />
- </Model>
- </Layer>
- </Scene>
- </Graph>
- <Logic >
- <State name="Master Slide" component="#Scene" >
- <Add ref="#Layer" background="SolidColor" backgroundcolor="0.584314 0.0941176 0.34902 1" />
- <Add ref="#Camera" />
- <Add ref="#Light" brightness="400" lighttype="Point" >
- <AnimationTrack property="position.x" type="EaseInOut" >0 -341.785 100 100 5 269.972 100 100</AnimationTrack>
- <AnimationTrack property="position.y" type="EaseInOut" >0 0 100 100 5 0 100 100</AnimationTrack>
- <AnimationTrack property="position.z" type="EaseInOut" >0 0 100 100 5 0 100 100</AnimationTrack>
- </Add>
- <State id="Scene-Slide1" name="Slide1" playmode="Play Through To..." >
- <Set ref="#Layer" endtime="5000" >
- <Action id="Layer-Action" eyeball="True" triggerObject="#Scene" event="onPressureDown" targetObject="#Scene" handler="Next Slide" />
- </Set>
- <Set ref="#Camera" endtime="5000" />
- <Set ref="#Light" endtime="5000" />
- <Add ref="#Sphere" name="Sphere" endtime="5000" scale="0.1 0.1 0.1" sourcepath="#Sphere" />
- <Add ref="#Default_animatable" name="Default_animatable" blendmode="Normal" bumpamount="0.5" diffuse="1 1 0 1" diffuselightwrap="0" displaceamount="20" emissivecolor="1 1 1 1" emissivepower="0" fresnelPower="0" importfile="" importid="" ior="1.5" opacity="100" shaderlighting="None" sourcepath="" specularamount="0" specularmodel="Default" specularroughness="0" speculartint="1 1 1 1" translucentfalloff="1" type="Material" vertexcolors="False" />
- <Add ref="#Cube" name="Cube" endtime="5000" position="-458.877 -70.3589 600" sourcepath="#Cube" >
- <AnimationTrack property="rotation.x" type="EaseInOut" >0 0 100 100 1 0 100 100 4 0 100 100 5 90 100 100 7 90 100 100 10 0 100 100</AnimationTrack>
- <AnimationTrack property="rotation.y" type="EaseInOut" >0 0 100 100 1 0 100 100 4 90 100 100 5 0 100 100 7 0 100 100 10 0 100 100</AnimationTrack>
- <AnimationTrack property="rotation.z" type="EaseInOut" >0 0 100 100 1 -90 100 100 4 -90 100 100 5 -90 100 100 7 0 100 100 10 0 100 100</AnimationTrack>
- <AnimationTrack property="scale.x" type="EaseInOut" >0 1 100 100 2 1.5 100 100 3 1.5 100 100 6 2 100 100 7 1 100 100 8 1 100 100 9 1 100 100</AnimationTrack>
- <AnimationTrack property="scale.y" type="EaseInOut" >0 1 100 100 2 1.5 100 100 3 1.5 100 100 6 2 100 100 7 2 100 100 8 1 100 100 9 1 100 100</AnimationTrack>
- <AnimationTrack property="scale.z" type="EaseInOut" >0 1 100 100 2 1 100 100 3 1.5 100 100 6 2 100 100 7 2 100 100 8 2 100 100 9 1 100 100</AnimationTrack>
- </Add>
- <Add ref="#Basic Green_animatable" name="Basic Green_animatable" blendmode="Normal" bumpamount="0.5" diffuse="0.180392 1 0 1" diffuselightwrap="0" displaceamount="20" emissivecolor="1 1 1 1" emissivepower="0" fresnelPower="0" importfile="" importid="" ior="1.5" opacity="100" shaderlighting="Pixel" sourcepath="" specularamount="0" specularmodel="Default" specularroughness="0" speculartint="1 1 1 1" translucentfalloff="1" type="Material" vertexcolors="False" />
- </State>
- <State id="Scene-Slide2" name="Slide2" playmode="Play Through To..." playthroughto="Previous" >
- <Set ref="#Layer" endtime="5000" />
- <Set ref="#Camera" endtime="5000" />
- <Set ref="#Light" endtime="5000" />
- <Add ref="#Cube2" name="Cube2" endtime="5000" position="-401.836 -18.4752 600" scale="3 3 3" sourcepath="#Cube" />
- <Add ref="#Basic Red_animatable" name="Basic Red_animatable" blendmode="Normal" bumpamount="0.5" diffuse="1 0 0.0156863 1" diffuselightwrap="0" displaceamount="20" emissivecolor="1 1 1 1" emissivepower="0" fresnelPower="0" importfile="" importid="" ior="1.5" opacity="100" shaderlighting="Pixel" sourcepath="" specularamount="0" specularmodel="Default" specularroughness="0" speculartint="1 1 1 1" translucentfalloff="1" type="Material" vertexcolors="False" />
- </State>
- </State>
- </Logic>
- </Project>
-</UIP>
diff --git a/tests/scenes/simple_cube_animation/simple_cube_animation.uia b/tests/scenes/simple_cube_animation/simple_cube_animation.uia
deleted file mode 100644
index ca2d770f..00000000
--- a/tests/scenes/simple_cube_animation/simple_cube_animation.uia
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version='1.0' encoding='utf-8'?>
-<application xmlns="http://qt.io/qt3dstudio/uia">
- <assets initial="simple_cube_animation">
- <presentation id="simple_cube_animation" src="presentations/simple_cube_animation.uip"/>
- <dataInput metadata="" name="newDataInput" type="Float"/>
- </assets>
- <statemachine ref="#logic">
- <visual-states>
- <state ref="Initial">
- <enter>
- <goto-slide rel="next" element="main:Scene"/>
- </enter>
- </state>
- </visual-states>
- </statemachine>
-</application>
diff --git a/tests/tests.pro b/tests/tests.pro
index c458bbbe..96710850 100644
--- a/tests/tests.pro
+++ b/tests/tests.pro
@@ -1,4 +1 @@
TEMPLATE = subdirs
-
-!package: SUBDIRS += \
- auto