Browse Source

Trade: initial redesign of the SceneData class.

No backwards compatibility in place yet, will get added back in the
followup commits, together with proper documentation.
pull/525/head
Vladimír Vondruš 5 years ago
parent
commit
b54a60fddd
  1. 3
      doc/changelog.dox
  2. 6
      doc/vulkan-mapping.dox
  3. 2
      src/Magnum/Trade/CMakeLists.txt
  4. 1125
      src/Magnum/Trade/SceneData.cpp
  5. 1892
      src/Magnum/Trade/SceneData.h
  6. 5
      src/Magnum/Trade/Test/AbstractImporterTest.cpp
  7. 3
      src/Magnum/Trade/Test/CMakeLists.txt
  8. 2999
      src/Magnum/Trade/Test/SceneDataTest.cpp
  9. 5
      src/Magnum/Trade/Trade.h

3
doc/changelog.dox

@ -219,6 +219,9 @@ See also:
@ref Trade::PhongMaterialData::normalTextureScale() and
@ref Trade::PhongMaterialData::normalTextureSwizzle() to make new features
added for PBR materials recognizable also in classic Phong workflows.
- A completely redesigned @ref Trade::SceneData class that stores data of
the whole scene in a data-oriented way, allowing for storing custom fields
as well. See [mosra/magnum#525](https://github.com/mosra/magnum/pull/525).
- New @ref Trade::SkinData class and @ref Trade::AbstractImporter::skin2D() /
@ref Trade::AbstractImporter::skin3D() family of APIs for skin import, as
well as support in @ref Trade::AnySceneImporter "AnySceneImporter"

6
doc/vulkan-mapping.dox

@ -429,7 +429,7 @@ Vulkan structure | Matching API
@type_vk{ClearColorValue} | convertible from/to @ref Magnum::Vector3 "Vector3", @ref Magnum::Color3 "Color3", @ref Magnum::Vector4 "Vector4", @ref Magnum::Color4 "Color4", @ref Magnum::Vector4i "Vector4i", @ref Magnum::Vector4ui "Vector4ui" using @ref Magnum/Vk/Integration.h; only exposed through @ref RenderPassBeginInfo::clearColor() and @ref CommandBuffer::clearColorImage() overloads
@type_vk{ClearDepthStencilValue} | only exposed through @ref RenderPassBeginInfo::clearDepthStencil(), @ref CommandBuffer::clearDepthStencilImage() and friends
@type_vk{ClearValue} | only exposed through @ref RenderPassBeginInfo::clearColor() and @relativeref{RenderPassBeginInfo,clearDepthStencil()} overloads
@type_vk{ClearRect} | convertible from/to @ref Range3Di using @ref Magnum/Vk/Integration.h
@type_vk{ClearRect} | convertible from/to @relativeref{Magnum,Range3Di} using @ref Magnum/Vk/Integration.h
@type_vk{CommandBufferAllocateInfo} | not exposed, internal to @ref CommandPool::allocate()
@type_vk{CommandBufferBeginInfo} | @ref CommandBufferBeginInfo
@type_vk{CommandBufferInheritanceInfo} | |
@ -692,7 +692,7 @@ Vulkan structure | Matching API
@type_vk{RayTracingPipelineCreateInfoKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{RayTracingPipelineInterfaceCreateInfoKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{RayTracingShaderGroupCreateInfoKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{Rect2D} | convertible from/to @ref Range2Di using @ref Magnum/Vk/Integration.h
@type_vk{Rect2D} | convertible from/to @relativeref{Magnum,Range2Di} using @ref Magnum/Vk/Integration.h
@type_vk{RenderPassBeginInfo} | @ref RenderPassBeginInfo
@type_vk{RenderPassAttachmentBeginInfo} @m_class{m-label m-flat m-success} **KHR, 1.2** | |
@type_vk{RenderPassCreateInfo}, \n @type_vk{RenderPassCreateInfo2} @m_class{m-label m-flat m-success} **KHR, 1.2** | @ref RenderPassCreateInfo
@ -755,7 +755,7 @@ Vulkan structure | Matching API
@type_vk{VertexInputBindingDescription} | @ref MeshLayout
@type_vk{VertexInputBindingDivisorDescriptionEXT} @m_class{m-label m-flat m-warning} **EXT** | @ref MeshLayout
@type_vk{VertexInputAttributeDescription} | @ref MeshLayout
@type_vk{Viewport} | convertible from/to @ref Range3D using @ref Magnum/Vk/Integration.h
@type_vk{Viewport} | convertible from/to @relativeref{Magnum,Range3D} using @ref Magnum/Vk/Integration.h
@subsection vulkan-mapping-structures-w W

2
src/Magnum/Trade/CMakeLists.txt

@ -30,7 +30,6 @@ set(MagnumTrade_SRCS
Data.cpp
MeshObjectData2D.cpp
MeshObjectData3D.cpp
SceneData.cpp
TextureData.cpp)
set(MagnumTrade_GracefulAssert_SRCS
@ -50,6 +49,7 @@ set(MagnumTrade_GracefulAssert_SRCS
PbrMetallicRoughnessMaterialData.cpp
PbrSpecularGlossinessMaterialData.cpp
PhongMaterialData.cpp
SceneData.cpp
SkinData.cpp)
set(MagnumTrade_HEADERS

1125
src/Magnum/Trade/SceneData.cpp

File diff suppressed because it is too large Load Diff

1892
src/Magnum/Trade/SceneData.h

File diff suppressed because it is too large Load Diff

5
src/Magnum/Trade/Test/AbstractImporterTest.cpp

@ -1644,8 +1644,9 @@ void AbstractImporterTest::scene() {
return {};
}
Containers::Optional<SceneData> doScene(UnsignedInt id) override {
if(id == 7) return SceneData{{}, {}, &state};
return SceneData{{}, {}};
if(id == 7)
return SceneData{SceneObjectType::UnsignedByte, 0, nullptr, {}, &state};
return SceneData{SceneObjectType::UnsignedByte, 0, nullptr, {}};
}
} importer;

3
src/Magnum/Trade/Test/CMakeLists.txt

@ -60,7 +60,7 @@ corrade_add_test(TradePbrClearCoatMaterialDataTest PbrClearCoatMaterialDataTest.
corrade_add_test(TradePbrMetallicRoughnessMate___Test PbrMetallicRoughnessMaterialDataTest.cpp LIBRARIES MagnumTradeTestLib)
corrade_add_test(TradePbrSpecularGlossinessMat___Test PbrSpecularGlossinessMaterialDataTest.cpp LIBRARIES MagnumTradeTestLib)
corrade_add_test(TradePhongMaterialDataTest PhongMaterialDataTest.cpp LIBRARIES MagnumTradeTestLib)
corrade_add_test(TradeSceneDataTest SceneDataTest.cpp LIBRARIES MagnumTrade)
corrade_add_test(TradeSceneDataTest SceneDataTest.cpp LIBRARIES MagnumTradeTestLib)
corrade_add_test(TradeSkinDataTest SkinDataTest.cpp LIBRARIES MagnumTradeTestLib)
corrade_add_test(TradeTextureDataTest TextureDataTest.cpp LIBRARIES MagnumTrade)
@ -68,6 +68,7 @@ set_property(TARGET
TradeAnimationDataTest
TradeMaterialDataTest
TradeMeshDataTest
TradeSceneDataTest
APPEND PROPERTY COMPILE_DEFINITIONS "CORRADE_GRACEFUL_ASSERT")
set_target_properties(

2999
src/Magnum/Trade/Test/SceneDataTest.cpp

File diff suppressed because it is too large Load Diff

5
src/Magnum/Trade/Trade.h

@ -99,6 +99,11 @@ class PbrMetallicRoughnessMaterialData;
class PbrSpecularGlossinessMaterialData;
class PhongMaterialData;
class TextureData;
enum class SceneObjectType: UnsignedByte;
enum class SceneField: UnsignedInt;
enum class SceneFieldType: UnsignedShort;
class SceneFieldData;
class SceneData;
template<UnsignedInt> class SkinData;

Loading…
Cancel
Save