Browse Source

Some renaming

Panagiotis Christopoulos Charitos 9 years ago
parent
commit
80c89587d2
83 changed files with 258 additions and 432 deletions
  1. 1 1
      include/anki/Util.h
  2. 2 1
      include/anki/gr/Texture.h
  3. 2 2
      include/anki/gr/gl/GlState.h
  4. 1 1
      include/anki/gr/gl/RenderingThread.h
  5. 2 2
      include/anki/gr/gl/ResourceGroupImpl.h
  6. 2 2
      include/anki/gr/gl/TextureImpl.h
  7. 2 2
      include/anki/misc/Xml.h
  8. 8 8
      include/anki/renderer/Clusterer.h
  9. 2 2
      include/anki/renderer/DebugDrawer.h
  10. 1 1
      include/anki/renderer/Ir.h
  11. 1 1
      include/anki/renderer/Ms.h
  12. 6 6
      include/anki/renderer/Renderer.h
  13. 2 2
      include/anki/renderer/Sm.h
  14. 1 1
      include/anki/renderer/Tiler.h
  15. 6 6
      include/anki/resource/Animation.h
  16. 1 1
      include/anki/resource/Common.h
  17. 2 2
      include/anki/resource/GenericResource.h
  18. 2 2
      include/anki/resource/ImageLoader.h
  19. 5 5
      include/anki/resource/Material.h
  20. 1 1
      include/anki/resource/Mesh.h
  21. 4 4
      include/anki/resource/MeshLoader.h
  22. 5 5
      include/anki/resource/Model.h
  23. 2 2
      include/anki/resource/Skeleton.h
  24. 1 1
      include/anki/scene/BodyNode.h
  25. 5 5
      include/anki/scene/Camera.h
  26. 4 3
      include/anki/scene/FrustumComponent.h
  27. 1 1
      include/anki/scene/LensFlareComponent.h
  28. 4 4
      include/anki/scene/Light.h
  29. 3 3
      include/anki/scene/ModelNode.h
  30. 2 2
      include/anki/scene/ParticleEmitter.h
  31. 1 1
      include/anki/scene/PlayerNode.h
  32. 0 44
      include/anki/scene/Rasterizer.h
  33. 1 1
      include/anki/scene/ReflectionProbe.h
  34. 2 2
      include/anki/scene/ReflectionProxy.h
  35. 2 2
      include/anki/scene/ReflectionProxyComponent.h
  36. 2 2
      include/anki/scene/RenderComponent.h
  37. 1 0
      include/anki/scene/SceneComponent.h
  38. 1 1
      include/anki/scene/SceneGraph.h
  39. 2 2
      include/anki/scene/SceneNode.h
  40. 9 9
      include/anki/scene/Sector.h
  41. 1 1
      include/anki/scene/SoftwareRasterizer.h
  42. 1 1
      include/anki/scene/StaticCollisionNode.h
  43. 2 2
      include/anki/scene/StaticGeometryNode.h
  44. 2 2
      include/anki/scene/Visibility.h
  45. 1 1
      include/anki/scene/VisibilityInternal.h
  46. 3 3
      include/anki/ui/UiInterface.h
  47. 3 3
      include/anki/ui/UiInterfaceImpl.h
  48. 28 88
      include/anki/util/DynamicArray.h
  49. 2 2
      include/anki/util/String.h
  50. 4 4
      include/anki/util/ThreadHive.h
  51. 1 1
      src/gr/gl/PipelineImpl.cpp
  52. 2 2
      src/gr/gl/TextureImpl.cpp
  53. 5 5
      src/misc/Xml.cpp
  54. 4 4
      src/renderer/Clusterer.cpp
  55. 1 1
      src/renderer/DebugDrawer.cpp
  56. 6 6
      src/renderer/Drawer.cpp
  57. 17 17
      src/renderer/Is.cpp
  58. 1 1
      src/renderer/Lf.cpp
  59. 4 4
      src/resource/ImageLoader.cpp
  60. 1 1
      src/resource/Material.cpp
  61. 3 3
      src/resource/Model.cpp
  62. 1 1
      src/scene/BodyNode.cpp
  63. 2 2
      src/scene/Camera.cpp
  64. 1 1
      src/scene/LensFlareComponent.cpp
  65. 7 7
      src/scene/Light.cpp
  66. 6 6
      src/scene/ModelNode.cpp
  67. 3 3
      src/scene/ParticleEmitter.cpp
  68. 2 2
      src/scene/PlayerNode.cpp
  69. 0 74
      src/scene/Rasterizer.cpp
  70. 2 2
      src/scene/ReflectionProbe.cpp
  71. 3 3
      src/scene/ReflectionProxy.cpp
  72. 1 1
      src/scene/RenderComponent.cpp
  73. 1 1
      src/scene/SceneNode.cpp
  74. 8 8
      src/scene/Sector.cpp
  75. 1 1
      src/scene/StaticCollisionNode.cpp
  76. 5 5
      src/scene/StaticGeometryNode.cpp
  77. 6 6
      src/scene/Visibility.cpp
  78. 1 1
      src/ui/Canvas.cpp
  79. 4 4
      src/ui/Font.cpp
  80. 4 3
      src/ui/UiInterfaceImpl.cpp
  81. 1 1
      src/util/String.cpp
  82. 2 2
      tests/util/HashMap.cpp
  83. 3 3
      tests/util/ThreadHive.cpp

+ 1 - 1
include/anki/Util.h

@@ -46,7 +46,7 @@
 #include <anki/util/Atomic.h>
 #include <anki/util/BitSet.h>
 #include <anki/util/BitMask.h>
-#include <anki/util/DArray.h>
+#include <anki/util/DynamicArray.h>
 #include <anki/util/Dictionary.h>
 #include <anki/util/Enum.h>
 #include <anki/util/File.h>

+ 2 - 1
include/anki/gr/Texture.h

@@ -33,7 +33,8 @@ public:
 	TextureType m_type = TextureType::_2D;
 	U32 m_width = 0;
 	U32 m_height = 0;
-	U32 m_depth = 0; ///< Relevant only for 3D, 2DArray and CubeArray textures
+	U32 m_depth =
+		0; ///< Relevant only for 3D, 2DynamicArray and CubeArray textures
 	PixelFormat m_format;
 	U8 m_mipmapsCount = 0;
 	U8 m_samples = 1;

+ 2 - 2
include/anki/gr/gl/GlState.h

@@ -6,7 +6,7 @@
 #pragma once
 
 #include <anki/gr/gl/Common.h>
-#include <anki/util/DArray.h>
+#include <anki/util/DynamicArray.h>
 
 namespace anki
 {
@@ -130,7 +130,7 @@ private:
 		U8 _m_val[16];
 	};
 
-	DArray<Aligned16Type> m_transferBuffer;
+	DynamicArray<Aligned16Type> m_transferBuffer;
 
 	void initDynamicBuffer(
 		GLenum target, U32 aligment, U32 maxAllocationSize, BufferUsage usage);

+ 1 - 1
include/anki/gr/gl/RenderingThread.h

@@ -66,7 +66,7 @@ private:
 	WeakPtr<GrManager> m_manager;
 
 	static const U QUEUE_SIZE = 1024 * 2;
-	DArray<CommandBufferPtr> m_queue; ///< Command queue
+	DynamicArray<CommandBufferPtr> m_queue; ///< Command queue
 	U64 m_tail; ///< Tail of queue
 	U64 m_head; ///< Head of queue. Points to the end
 	U8 m_renderingThreadSignal; ///< Signal to the thread

+ 2 - 2
include/anki/gr/gl/ResourceGroupImpl.h

@@ -7,7 +7,7 @@
 
 #include <anki/gr/gl/GlObject.h>
 #include <anki/gr/ResourceGroup.h>
-#include <anki/util/DArray.h>
+#include <anki/util/DynamicArray.h>
 
 namespace anki
 {
@@ -67,7 +67,7 @@ private:
 
 	/// Holds the references to the resources. Used to release the references
 	/// gracefully
-	DArray<GrObjectPtr<GrObject>> m_refs;
+	DynamicArray<GrObjectPtr<GrObject>> m_refs;
 
 	template<typename InBindings, typename OutBindings>
 	void initBuffers(const InBindings& in,

+ 2 - 2
include/anki/gr/gl/TextureImpl.h

@@ -6,7 +6,7 @@
 #pragma once
 
 #include <anki/gr/gl/GlObject.h>
-#include <anki/util/DArray.h>
+#include <anki/util/DynamicArray.h>
 
 namespace anki
 {
@@ -29,7 +29,7 @@ public:
 	U8 m_mipsCount = 0;
 	U8 m_faceCount = 0; ///< 6 for cubes and 1 for the rest
 	Bool8 m_compressed = false;
-	DArray<GLuint> m_texViews; ///< Temp views for gen mips.
+	DynamicArray<GLuint> m_texViews; ///< Temp views for gen mips.
 
 	TextureImpl(GrManager* manager)
 		: GlObject(manager)

+ 2 - 2
include/anki/misc/Xml.h

@@ -6,7 +6,7 @@
 #pragma once
 
 #include <anki/util/String.h>
-#include <anki/util/DArray.h>
+#include <anki/util/DynamicArray.h>
 #include <anki/Math.h>
 #include <tinyxml2.h>
 #if !ANKI_TINYXML2
@@ -67,7 +67,7 @@ public:
 	ANKI_USE_RESULT Error getF64(F64& out) const;
 
 	/// Get a number of floats
-	ANKI_USE_RESULT Error getFloats(DArrayAuto<F64>& out) const;
+	ANKI_USE_RESULT Error getFloats(DynamicArrayAuto<F64>& out) const;
 
 	/// Return the text inside as a Mat4
 	ANKI_USE_RESULT Error getMat4(Mat4& out) const;

+ 8 - 8
include/anki/renderer/Clusterer.h

@@ -36,12 +36,12 @@ public:
 		m_clusterIds.destroy(m_alloc);
 	}
 
-	DArray<Array<U8, 3>>::ConstIterator getClustersBegin() const
+	DynamicArray<Array<U8, 3>>::ConstIterator getClustersBegin() const
 	{
 		return m_clusterIds.getBegin();
 	}
 
-	DArray<Array<U8, 3>>::ConstIterator getClustersEnd() const
+	DynamicArray<Array<U8, 3>>::ConstIterator getClustersEnd() const
 	{
 		return m_clusterIds.getBegin() + m_count;
 	}
@@ -52,7 +52,7 @@ public:
 	}
 
 private:
-	DArray<Array<U8, 3>> m_clusterIds;
+	DynamicArray<Array<U8, 3>> m_clusterIds;
 	U32 m_count = 0;
 	GenericMemoryPoolAllocator<U8> m_alloc;
 
@@ -126,11 +126,11 @@ private:
 	Array<U8, 3> m_counts;
 
 	/// Tile planes.
-	DArray<Plane> m_allPlanes; ///< Do one allocation.
-	SArray<Plane> m_planesY; ///< Local space.
-	SArray<Plane> m_planesX; ///< Local space.
-	SArray<Plane> m_planesYW;
-	SArray<Plane> m_planesXW;
+	DynamicArray<Plane> m_allPlanes; ///< Do one allocation.
+	WeakArray<Plane> m_planesY; ///< Local space.
+	WeakArray<Plane> m_planesX; ///< Local space.
+	WeakArray<Plane> m_planesYW;
+	WeakArray<Plane> m_planesXW;
 	Plane* m_nearPlane; ///< In world space
 	Plane* m_farPlane; ///< In world space
 

+ 2 - 2
include/anki/renderer/DebugDrawer.h

@@ -95,7 +95,7 @@ private:
 	Array<BufferPtr, MAX_FRAMES_IN_FLIGHT> m_vertBuff;
 
 	CommandBufferPtr m_cmdb;
-	WArray<Vertex> m_clientVerts;
+	WeakArray<Vertex> m_clientVerts;
 
 	Mat4 m_mMat;
 	Mat4 m_vpMat;
@@ -105,7 +105,7 @@ private:
 	U32 m_frameVertCount = 0;
 	U32 m_crntDrawVertCount = 0;
 
-	DArray<Vec3> m_sphereVerts;
+	DynamicArray<Vec3> m_sphereVerts;
 
 	Bool8 m_depthTestEnabled = true;
 

+ 1 - 1
include/anki/renderer/Ir.h

@@ -78,7 +78,7 @@ private:
 	U16 m_cubemapArrMipCount = 0;
 	U16 m_cubemapArrSize = 0;
 	U16 m_fbSize = 0;
-	DArray<CacheEntry> m_cacheEntries;
+	DynamicArray<CacheEntry> m_cacheEntries;
 
 	// Irradiance
 	TexturePtr m_irradianceCubemapArr;

+ 1 - 1
include/anki/renderer/Ms.h

@@ -80,7 +80,7 @@ private:
 	/// Depth stencil
 	TexturePtr m_depthRt;
 
-	DArray<CommandBufferPtr> m_secondLevelCmdbs;
+	DynamicArray<CommandBufferPtr> m_secondLevelCmdbs;
 
 	ANKI_USE_RESULT Error initInternal(const ConfigSet& initializer);
 

+ 6 - 6
include/anki/renderer/Renderer.h

@@ -51,16 +51,16 @@ public:
 	class Sm
 	{
 	public:
-		DArrayAuto<FramebufferPtr> m_spotFramebuffers;
-		DArrayAuto<Array<FramebufferPtr, 6>> m_omniFramebuffers;
+		DynamicArrayAuto<FramebufferPtr> m_spotFramebuffers;
+		DynamicArrayAuto<Array<FramebufferPtr, 6>> m_omniFramebuffers;
 
 		/// [casterIdx][threadIdx]
-		DArrayAuto<CommandBufferPtr> m_spotCommandBuffers;
+		DynamicArrayAuto<CommandBufferPtr> m_spotCommandBuffers;
 		/// [casterIdx][threadIdx][faceIdx]
-		DArrayAuto<CommandBufferPtr> m_omniCommandBuffers;
+		DynamicArrayAuto<CommandBufferPtr> m_omniCommandBuffers;
 
-		DArrayAuto<SceneNode*> m_spots;
-		DArrayAuto<SceneNode*> m_omnis;
+		DynamicArrayAuto<SceneNode*> m_spots;
+		DynamicArrayAuto<SceneNode*> m_omnis;
 
 		Sm(const StackAllocator<U8>& alloc)
 			: m_spotFramebuffers(alloc)

+ 2 - 2
include/anki/renderer/Sm.h

@@ -84,8 +84,8 @@ private:
 		Array<FramebufferPtr, 6> m_fb;
 	};
 
-	DArray<ShadowmapSpot> m_spots;
-	DArray<ShadowmapOmni> m_omnis;
+	DynamicArray<ShadowmapSpot> m_spots;
+	DynamicArray<ShadowmapOmni> m_omnis;
 
 	/// Enable Poisson for all the levels
 	Bool8 m_poissonEnabled = false;

+ 1 - 1
include/anki/renderer/Tiler.h

@@ -45,7 +45,7 @@ private:
 	PipelinePtr m_ppline;
 
 	// Other
-	DArray<Vec2> m_currentMinMax;
+	DynamicArray<Vec2> m_currentMinMax;
 	Mat4 m_viewProjMat;
 	F32 m_near;
 	Plane m_nearPlaneWspace;

+ 6 - 6
include/anki/resource/Animation.h

@@ -48,10 +48,10 @@ public:
 
 	I32 m_boneIndex = -1; ///< For skeletal animations
 
-	DArray<Key<Vec3>> m_positions;
-	DArray<Key<Quat>> m_rotations;
-	DArray<Key<F32>> m_scales;
-	DArray<Key<F32>> m_cameraFovs;
+	DynamicArray<Key<Vec3>> m_positions;
+	DynamicArray<Key<Quat>> m_rotations;
+	DynamicArray<Key<F32>> m_scales;
+	DynamicArray<Key<F32>> m_cameraFovs;
 
 	void destroy(ResourceAllocator<U8> alloc)
 	{
@@ -74,7 +74,7 @@ public:
 	ANKI_USE_RESULT Error load(const ResourceFilename& filename);
 
 	/// Get a vector of all animation channels
-	const DArray<AnimationChannel>& getChannels() const
+	const DynamicArray<AnimationChannel>& getChannels() const
 	{
 		return m_channels;
 	}
@@ -105,7 +105,7 @@ public:
 		F32& scale) const;
 
 private:
-	DArray<AnimationChannel> m_channels;
+	DynamicArray<AnimationChannel> m_channels;
 	F32 m_duration;
 	F32 m_startTime;
 	Bool8 m_repeat;

+ 1 - 1
include/anki/resource/Common.h

@@ -6,7 +6,7 @@
 #pragma once
 
 #include <anki/util/Allocator.h>
-#include <anki/util/DArray.h>
+#include <anki/util/DynamicArray.h>
 #include <anki/util/String.h>
 #include <anki/util/Ptr.h>
 #include <anki/gr/Enums.h>

+ 2 - 2
include/anki/resource/GenericResource.h

@@ -24,13 +24,13 @@ public:
 	/// Load a texture
 	ANKI_USE_RESULT Error load(const ResourceFilename& filename);
 
-	const DArray<U8>& getData() const
+	const DynamicArray<U8>& getData() const
 	{
 		return m_data;
 	}
 
 private:
-	DArray<U8> m_data;
+	DynamicArray<U8> m_data;
 };
 /// @}
 

+ 2 - 2
include/anki/resource/ImageLoader.h

@@ -54,7 +54,7 @@ public:
 		U32 m_width;
 		U32 m_height;
 		U32 m_mipLevel;
-		DArray<U8> m_data;
+		DynamicArray<U8> m_data;
 	};
 
 	ImageLoader(GenericMemoryPoolAllocator<U8> alloc)
@@ -118,7 +118,7 @@ private:
 	GenericMemoryPoolAllocator<U8> m_alloc;
 	Atomic<I32> m_refcount = {0};
 	/// [mip][depthFace]
-	DArray<Surface> m_surfaces;
+	DynamicArray<Surface> m_surfaces;
 	U8 m_mipLevels = 0;
 	U8 m_depth = 0;
 	DataCompression m_compression = DataCompression::NONE;

+ 5 - 5
include/anki/resource/Material.h

@@ -194,8 +194,8 @@ private:
 	/// All shaders except compute and geometry.
 	Array<ShaderResourcePtr, 5> m_shaders;
 	U32 m_shaderBlockSize = 0;
-	DArray<ShaderVariableBlockInfo> m_blockInfo;
-	DArray<Bool8> m_varActive;
+	DynamicArray<ShaderVariableBlockInfo> m_blockInfo;
+	DynamicArray<Bool8> m_varActive;
 
 	ANKI_USE_RESULT Error init(
 		const RenderingKey& key, Material& mtl, MaterialLoader& loader);
@@ -314,7 +314,7 @@ public:
 
 	const MaterialVariant& getVariant(const RenderingKey& key) const;
 
-	const DArray<MaterialVariable*>& getVariables() const
+	const DynamicArray<MaterialVariable*>& getVariables() const
 	{
 		return m_vars;
 	}
@@ -333,14 +333,14 @@ private:
 	U8 m_lodCount = 1;
 	Bool8 m_instanced = false;
 
-	DArray<MaterialVariant> m_variants;
+	DynamicArray<MaterialVariant> m_variants;
 
 	/// This is a matrix of variants. It holds indices to m_variants. If the
 	/// idx is MAX_U16 then the variant is not present
 	Array4d<U16, U(Pass::COUNT), MAX_LODS, 2, MAX_INSTANCE_GROUPS>
 		m_variantMatrix;
 
-	DArray<MaterialVariable*> m_vars;
+	DynamicArray<MaterialVariable*> m_vars;
 
 	/// Populate the m_varNames.
 	ANKI_USE_RESULT Error createVars(const MaterialLoader& loader);

+ 1 - 1
include/anki/resource/Mesh.h

@@ -98,7 +98,7 @@ protected:
 		Obb m_obb;
 	};
 
-	DArray<SubMesh> m_subMeshes;
+	DynamicArray<SubMesh> m_subMeshes;
 	U32 m_indicesCount;
 	U32 m_vertsCount;
 	Obb m_obb;

+ 4 - 4
include/anki/resource/MeshLoader.h

@@ -158,14 +158,14 @@ public:
 
 private:
 	template<typename T>
-	using MDArray = DArray<T>;
+	using MDynamicArray = DynamicArray<T>;
 
 	ResourceManager* m_manager;
 	Header m_header;
 
-	MDArray<U8> m_verts;
-	MDArray<U8> m_indices;
-	MDArray<SubMesh> m_subMeshes;
+	MDynamicArray<U8> m_verts;
+	MDynamicArray<U8> m_indices;
+	MDynamicArray<SubMesh> m_subMeshes;
 	U8 m_vertSize = 0;
 
 	Bool isLoaded() const

+ 5 - 5
include/anki/resource/Model.h

@@ -63,7 +63,7 @@ public:
 		return m_meshes[0]->getSubMeshesCount();
 	}
 
-	ANKI_USE_RESULT Error create(SArray<CString> meshFNames,
+	ANKI_USE_RESULT Error create(WeakArray<CString> meshFNames,
 		const CString& mtlFName,
 		ResourceManager* resources);
 
@@ -71,7 +71,7 @@ public:
 	/// Given an array of submeshes that are visible return the correct indices
 	/// offsets and counts.
 	void getRenderingDataSub(const RenderingKey& key,
-		SArray<U8> subMeshIndicesArray,
+		WeakArray<U8> subMeshIndicesArray,
 		ResourceGroupPtr& resourceGroup,
 		PipelinePtr& ppline,
 		Array<U32, ANKI_GL_MAX_SUB_DRAWCALLS>& indicesCountArray,
@@ -139,7 +139,7 @@ public:
 
 	~Model();
 
-	const DArray<ModelPatch*>& getModelPatches() const
+	const DynamicArray<ModelPatch*>& getModelPatches() const
 	{
 		return m_modelPatches;
 	}
@@ -152,10 +152,10 @@ public:
 	ANKI_USE_RESULT Error load(const ResourceFilename& filename);
 
 private:
-	DArray<ModelPatch*> m_modelPatches;
+	DynamicArray<ModelPatch*> m_modelPatches;
 	Obb m_visibilityShape;
 	SkeletonResourcePtr m_skeleton;
-	DArray<AnimationResourcePtr> m_animations;
+	DynamicArray<AnimationResourcePtr> m_animations;
 };
 /// @}
 

+ 2 - 2
include/anki/resource/Skeleton.h

@@ -78,13 +78,13 @@ public:
 	/// Load file
 	ANKI_USE_RESULT Error load(const ResourceFilename& filename);
 
-	const DArray<Bone>& getBones() const
+	const DynamicArray<Bone>& getBones() const
 	{
 		return m_bones;
 	}
 
 private:
-	DArray<Bone> m_bones;
+	DynamicArray<Bone> m_bones;
 };
 /// @}
 

+ 1 - 1
include/anki/scene/BodyNode.h

@@ -22,7 +22,7 @@ public:
 
 	~BodyNode();
 
-	ANKI_USE_RESULT Error create(
+	ANKI_USE_RESULT Error init(
 		const CString& name, const CString& resourceFname);
 
 private:

+ 5 - 5
include/anki/scene/Camera.h

@@ -35,7 +35,7 @@ public:
 
 	virtual ~Camera();
 
-	ANKI_USE_RESULT Error create(const CString& name, Frustum* frustum);
+	ANKI_USE_RESULT Error init(const CString& name, Frustum* frustum);
 
 	Type getCameraType() const
 	{
@@ -62,9 +62,9 @@ public:
 
 	~PerspectiveCamera();
 
-	ANKI_USE_RESULT Error create(const CString& name)
+	ANKI_USE_RESULT Error init(const CString& name)
 	{
-		return Camera::create(name, &m_frustum);
+		return Camera::init(name, &m_frustum);
 	}
 
 	void setAll(F32 fovX, F32 fovY, F32 near, F32 far);
@@ -81,9 +81,9 @@ public:
 
 	~OrthographicCamera();
 
-	ANKI_USE_RESULT Error create(const CString& name)
+	ANKI_USE_RESULT Error init(const CString& name)
 	{
-		return Camera::create(name, &m_frustum);
+		return Camera::init(name, &m_frustum);
 	}
 
 private:

+ 4 - 3
include/anki/scene/FrustumComponent.h

@@ -30,6 +30,7 @@ enum class FrustumComponentVisibilityTestFlag : U8
 	SHADOW_CASTERS = 1 << 3,
 	REFLECTION_PROBES = 1 << 4,
 	REFLECTION_PROXIES = 1 << 5,
+	OCCLUDERS = 1 << 6,
 
 	ALL_TESTS = RENDER_COMPONENTS | LIGHT_COMPONENTS | LENS_FLARE_COMPONENTS
 		| SHADOW_CASTERS
@@ -187,8 +188,8 @@ public:
 private:
 	enum Flags
 	{
-		SHAPE_MARKED_FOR_UPDATE = 1 << 6,
-		TRANSFORM_MARKED_FOR_UPDATE = 1 << 7,
+		SHAPE_MARKED_FOR_UPDATE = 1 << 7,
+		TRANSFORM_MARKED_FOR_UPDATE = 1 << 8,
 	};
 	ANKI_ENUM_ALLOW_NUMERIC_OPERATIONS(Flags, friend)
 
@@ -204,7 +205,7 @@ private:
 	VisibilityTestResults* m_visible = nullptr;
 	VisibilityStats m_stats;
 
-	BitMask<U8> m_flags;
+	BitMask<U16> m_flags;
 
 	void computeProjectionParams();
 };

+ 1 - 1
include/anki/scene/LensFlareComponent.h

@@ -23,7 +23,7 @@ public:
 
 	~LensFlareComponent();
 
-	ANKI_USE_RESULT Error create(const CString& textureFilename);
+	ANKI_USE_RESULT Error init(const CString& textureFilename);
 
 	void setWorldPosition(const Vec4& worldPosition)
 	{

+ 4 - 4
include/anki/scene/Light.h

@@ -27,7 +27,7 @@ public:
 
 	~Light();
 
-	ANKI_USE_RESULT Error create(const CString& name,
+	ANKI_USE_RESULT Error init(const CString& name,
 		LightComponent::LightType type,
 		CollisionShape* shape);
 
@@ -58,7 +58,7 @@ public:
 	PointLight(SceneGraph* scene);
 	~PointLight();
 
-	ANKI_USE_RESULT Error create(const CString& name);
+	ANKI_USE_RESULT Error init(const CString& name);
 
 	ANKI_USE_RESULT Error frameUpdate(
 		F32 prevUpdateTime, F32 crntTime) override;
@@ -72,7 +72,7 @@ public:
 	};
 
 	Sphere m_sphereW = Sphere(Vec4(0.0), 1.0);
-	DArray<ShadowCombo> m_shadowData;
+	DynamicArray<ShadowCombo> m_shadowData;
 
 	void onMoveUpdate(MoveComponent& move) override;
 	void onShapeUpdate(LightComponent& light) override;
@@ -84,7 +84,7 @@ class SpotLight : public Light
 public:
 	SpotLight(SceneGraph* scene);
 
-	ANKI_USE_RESULT Error create(const CString& name);
+	ANKI_USE_RESULT Error init(const CString& name);
 
 	ANKI_USE_RESULT Error frameUpdate(
 		F32 prevUpdateTime, F32 crntTime) override;

+ 3 - 3
include/anki/scene/ModelNode.h

@@ -33,7 +33,7 @@ public:
 
 	~ModelPatchNode();
 
-	ANKI_USE_RESULT Error create(
+	ANKI_USE_RESULT Error init(
 		const CString& name, const ModelPatch* modelPatch);
 
 private:
@@ -54,7 +54,7 @@ public:
 
 	~ModelNode();
 
-	ANKI_USE_RESULT Error create(
+	ANKI_USE_RESULT Error init(
 		const CString& name, const CString& modelFname);
 
 	const Model& getModel() const
@@ -64,7 +64,7 @@ public:
 
 private:
 	ModelResourcePtr m_model; ///< The resource
-	DArray<ModelPatchNode*> m_modelPatches;
+	DynamicArray<ModelPatchNode*> m_modelPatches;
 
 	void onMoveComponentUpdate(MoveComponent& move);
 };

+ 2 - 2
include/anki/scene/ParticleEmitter.h

@@ -167,7 +167,7 @@ public:
 
 	~ParticleEmitter();
 
-	ANKI_USE_RESULT Error create(const CString& name, const CString& filename);
+	ANKI_USE_RESULT Error init(const CString& name, const CString& filename);
 
 	/// @name SceneNode virtuals
 	/// @{
@@ -184,7 +184,7 @@ private:
 	};
 
 	ParticleEmitterResourcePtr m_particleEmitterResource;
-	DArray<ParticleBase*> m_particles;
+	DynamicArray<ParticleBase*> m_particles;
 	F32 m_timeLeftForNextEmission = 0.0;
 	Obb m_obb;
 

+ 1 - 1
include/anki/scene/PlayerNode.h

@@ -25,7 +25,7 @@ public:
 
 	~PlayerNode();
 
-	ANKI_USE_RESULT Error create(const CString& name, const Vec4& position);
+	ANKI_USE_RESULT Error init(const CString& name, const Vec4& position);
 
 private:
 	PhysicsPlayerControllerPtr m_player;

+ 0 - 44
include/anki/scene/Rasterizer.h

@@ -1,44 +0,0 @@
-// Copyright (C) 2009-2016, Panagiotis Christopoulos Charitos and contributors.
-// All rights reserved.
-// Code licensed under the BSD License.
-// http://www.anki3d.org/LICENSE
-
-#pragma once
-
-#include <anki/scene/Common.h>
-#include <anki/Math.h>
-#include <anki/collision/Aabb.h>
-
-namespace anki
-{
-
-/// @addtogroup scene
-/// @{
-
-/// Software rasterizer for visibility tests.
-class Rasterizer
-{
-public:
-	~Rasterizer();
-
-	void init(U width, U height, SceneAllocator<U8> alloc);
-
-	/// Prepare for rastarization.
-	void prepare(const Mat4& mvp);
-
-	/// Rasterize a triangle. It's thread safe. The triangle should be CCW.
-	void rasterizeTriangle(const Vec4& a, const Vec4& b, const Vec4& c);
-
-	/// Do a z-test on a specific collision shape.
-	Bool test(const Aabb& box) const;
-
-private:
-	U32 m_width = 0;
-	U32 m_height = 0;
-	DArray<Atomic<U32>> m_depthBuff;
-	Mat4 m_mvp = Mat4::getIdentity();
-	SceneAllocator<U8> m_alloc;
-};
-/// @}
-
-} // end namespace anki

+ 1 - 1
include/anki/scene/ReflectionProbe.h

@@ -31,7 +31,7 @@ public:
 
 	~ReflectionProbe();
 
-	ANKI_USE_RESULT Error create(const CString& name, F32 radius);
+	ANKI_USE_RESULT Error init(const CString& name, F32 radius);
 
 	U getCubemapArrayIndex() const
 	{

+ 2 - 2
include/anki/scene/ReflectionProxy.h

@@ -33,10 +33,10 @@ public:
 
 	/// Create the proxy. The points form a quad and they should be in local
 	/// space.
-	ANKI_USE_RESULT Error create(const CString& name, const CString& proxyMesh);
+	ANKI_USE_RESULT Error init(const CString& name, const CString& proxyMesh);
 
 private:
-	DArray<Array<Vec4, 4>> m_quadsLSpace; ///< Quads in local space.
+	DynamicArray<Array<Vec4, 4>> m_quadsLSpace; ///< Quads in local space.
 	Obb m_boxLSpace;
 	Obb m_boxWSpace;
 

+ 2 - 2
include/anki/scene/ReflectionProxyComponent.h

@@ -46,7 +46,7 @@ public:
 	void setQuad(
 		U index, const Vec4& a, const Vec4& b, const Vec4& c, const Vec4& d);
 
-	const DArray<Face>& getFaces() const
+	const DynamicArray<Face>& getFaces() const
 	{
 		ANKI_ASSERT(m_faces.getSize() > 0);
 		return m_faces;
@@ -56,7 +56,7 @@ public:
 		SceneNode& node, F32 prevTime, F32 crntTime, Bool& updated) final;
 
 private:
-	DArray<Face> m_faces; ///< Quads.
+	DynamicArray<Face> m_faces; ///< Quads.
 	Bool8 m_dirty = true;
 };
 /// @}

+ 2 - 2
include/anki/scene/RenderComponent.h

@@ -121,7 +121,7 @@ public:
 class RenderComponent : public SceneComponent
 {
 public:
-	using Variables = DArray<RenderComponentVariable*>;
+	using Variables = DynamicArray<RenderComponentVariable*>;
 
 	static Bool classof(const SceneComponent& c)
 	{
@@ -132,7 +132,7 @@ public:
 
 	~RenderComponent();
 
-	ANKI_USE_RESULT Error create();
+	ANKI_USE_RESULT Error init();
 
 	Variables::Iterator getVariablesBegin()
 	{

+ 1 - 0
include/anki/scene/SceneComponent.h

@@ -34,6 +34,7 @@ public:
 		SECTOR_PORTAL,
 		REFLECTION_PROBE,
 		REFLECTION_PROXY,
+		OCCLUDER,
 		PLAYER_CONTROLLER,
 		LAST_COMPONENT_ID = PLAYER_CONTROLLER
 	};

+ 1 - 1
include/anki/scene/SceneGraph.h

@@ -244,7 +244,7 @@ inline Error SceneGraph::newSceneNode(
 	node = al.template newInstance<Node>(this);
 	if(node)
 	{
-		err = node->create(name, std::forward<Args>(args)...);
+		err = node->init(name, std::forward<Args>(args)...);
 	}
 	else
 	{

+ 2 - 2
include/anki/scene/SceneNode.h

@@ -38,7 +38,7 @@ public:
 
 	/// @param name The unique name of the node. If it's nullptr the the node
 	///             is not searchable.
-	ANKI_USE_RESULT Error create(const CString& name);
+	ANKI_USE_RESULT Error init(const CString& name);
 
 	SceneGraph& getSceneGraph()
 	{
@@ -210,7 +210,7 @@ private:
 
 	SceneGraph* m_scene = nullptr;
 
-	DArray<SceneComponent*> m_components;
+	DynamicArray<SceneComponent*> m_components;
 	U8 m_componentsCount = 0;
 
 	String m_name; ///< A unique name

+ 9 - 9
include/anki/scene/Sector.h

@@ -51,7 +51,7 @@ public:
 
 	~PortalSectorBase();
 
-	ANKI_USE_RESULT Error create(
+	ANKI_USE_RESULT Error init(
 		const CString& name, const CString& modelFname);
 
 	const CollisionShape& getBoundingShape() const
@@ -61,22 +61,22 @@ public:
 
 	SectorGroup& getSectorGroup();
 
-	const DArray<Vec4>& getVertices() const
+	const DynamicArray<Vec4>& getVertices() const
 	{
 		return m_shapeStorageLSpace;
 	}
 
-	const DArray<U16>& getVertexIndices() const
+	const DynamicArray<U16>& getVertexIndices() const
 	{
 		return m_vertIndices;
 	}
 
 protected:
-	DArray<Vec4> m_shapeStorageLSpace;
-	DArray<Vec4> m_shapeStorageWSpace;
+	DynamicArray<Vec4> m_shapeStorageLSpace;
+	DynamicArray<Vec4> m_shapeStorageWSpace;
 	CollisionShape* m_shape = nullptr;
 	Aabb m_aabb;
-	DArray<U16> m_vertIndices; ///< Used in debug draw
+	DynamicArray<U16> m_vertIndices; ///< Used in debug draw
 	SpinLock m_mtx;
 
 	void updateTransform(const Transform& trf);
@@ -97,7 +97,7 @@ public:
 
 	~Portal();
 
-	ANKI_USE_RESULT Error create(
+	ANKI_USE_RESULT Error init(
 		const CString& name, const CString& modelFname);
 
 	ANKI_USE_RESULT Error frameUpdate(
@@ -130,7 +130,7 @@ public:
 
 	~Sector();
 
-	ANKI_USE_RESULT Error create(
+	ANKI_USE_RESULT Error init(
 		const CString& name, const CString& modelFname);
 
 	void tryAddPortal(Portal* portal);
@@ -174,7 +174,7 @@ public:
 	}
 
 private:
-	SArray<SceneNode*> m_visibleNodes;
+	WeakArray<SceneNode*> m_visibleNodes;
 };
 
 /// Sector group. This is supposed to represent the whole scene

+ 1 - 1
include/anki/scene/SoftwareRasterizer.h

@@ -58,7 +58,7 @@ public: // XXX
 	Array<Plane, 6> m_planesW; ///< In world space.
 	U32 m_width;
 	U32 m_height;
-	DArray<Atomic<U32>> m_zbuffer;
+	DynamicArray<Atomic<U32>> m_zbuffer;
 
 	/// @param tri In clip space.
 	void rasterizeTriangle(const Vec4* tri);

+ 1 - 1
include/anki/scene/StaticCollisionNode.h

@@ -23,7 +23,7 @@ public:
 
 	~StaticCollisionNode();
 
-	ANKI_USE_RESULT Error create(const CString& name,
+	ANKI_USE_RESULT Error init(const CString& name,
 		const CString& resourceFname,
 		const Transform& transform);
 

+ 2 - 2
include/anki/scene/StaticGeometryNode.h

@@ -26,7 +26,7 @@ public:
 
 	~StaticGeometryPatchNode();
 
-	ANKI_USE_RESULT Error create(
+	ANKI_USE_RESULT Error init(
 		const CString& name, const ModelPatch* modelPatch);
 
 private:
@@ -43,7 +43,7 @@ public:
 
 	~StaticGeometryNode();
 
-	ANKI_USE_RESULT Error create(const CString& name, const CString& filename);
+	ANKI_USE_RESULT Error init(const CString& name, const CString& filename);
 
 private:
 	ModelResourcePtr m_model;

+ 2 - 2
include/anki/scene/Visibility.h

@@ -134,10 +134,10 @@ public:
 	}
 
 	void combineWith(
-		SceneFrameAllocator<U8> alloc, SArray<VisibilityTestResults*>& results);
+		SceneFrameAllocator<U8> alloc, WeakArray<VisibilityTestResults*>& results);
 
 private:
-	using Container = DArray<VisibleNode>;
+	using Container = DynamicArray<VisibleNode>;
 
 	class Group
 	{

+ 1 - 1
include/anki/scene/VisibilityInternal.h

@@ -116,7 +116,7 @@ class CombineResultsTask
 public:
 	WeakPtr<VisibilityContext> m_visCtx;
 	WeakPtr<FrustumComponent> m_frc;
-	WArray<VisibilityTestTask> m_tests;
+	WeakArray<VisibilityTestTask> m_tests;
 
 	/// Thread hive task.
 	static void callback(void* ud, U32 threadId, ThreadHive& hive)

+ 3 - 3
include/anki/ui/UiInterface.h

@@ -38,13 +38,13 @@ public:
 
 	/// Create a 8bit image. Used for fonts.
 	virtual ANKI_USE_RESULT Error createR8Image(
-		const SArray<U8>& data, const UVec2& size, UiImagePtr& img) = 0;
+		const WeakArray<U8>& data, const UVec2& size, UiImagePtr& img) = 0;
 	/// @}
 
 	/// @name Misc methods.
 	/// @{
 	virtual ANKI_USE_RESULT Error readFile(
-		const CString& filename, DArrayAuto<U8>& data) = 0;
+		const CString& filename, DynamicArrayAuto<U8>& data) = 0;
 	/// @}
 
 	/// @name Painting related methods.
@@ -54,7 +54,7 @@ public:
 		const Rect& drawingRect,
 		const UVec2& canvasSize) = 0;
 
-	virtual void drawLines(const SArray<UVec2>& lines,
+	virtual void drawLines(const WeakArray<UVec2>& lines,
 		const Color& color,
 		const UVec2& canvasSize) = 0;
 	/// @}

+ 3 - 3
include/anki/ui/UiInterfaceImpl.h

@@ -46,19 +46,19 @@ public:
 	ANKI_USE_RESULT Error loadImage(
 		const CString& filename, IntrusivePtr<UiImage>& img) override;
 
-	ANKI_USE_RESULT Error createR8Image(const SArray<U8>& data,
+	ANKI_USE_RESULT Error createR8Image(const WeakArray<U8>& data,
 		const UVec2& size,
 		IntrusivePtr<UiImage>& img) override;
 
 	ANKI_USE_RESULT Error readFile(
-		const CString& filename, DArrayAuto<U8>& data) override;
+		const CString& filename, DynamicArrayAuto<U8>& data) override;
 
 	void drawImage(UiImagePtr image,
 		const Rect& uvs,
 		const Rect& drawingRect,
 		const UVec2& canvasSize) override;
 
-	void drawLines(const SArray<UVec2>& positions,
+	void drawLines(const WeakArray<UVec2>& positions,
 		const Color& color,
 		const UVec2& canvasSize) override;
 

+ 28 - 88
include/anki/util/DArray.h → include/anki/util/DynamicArray.h

@@ -19,7 +19,7 @@ namespace anki
 /// that makes it compact. At the same time that requires manual destruction.
 /// Used in permanent classes.
 template<typename T>
-class DArray : public NonCopyable
+class DynamicArray : public NonCopyable
 {
 public:
 	using Value = T;
@@ -28,27 +28,27 @@ public:
 	using Reference = Value&;
 	using ConstReference = const Value&;
 
-	DArray()
+	DynamicArray()
 		: m_data(nullptr)
 		, m_size(0)
 	{
 	}
 
 	/// Move.
-	DArray(DArray&& b)
-		: DArray()
+	DynamicArray(DynamicArray&& b)
+		: DynamicArray()
 	{
 		move(b);
 	}
 
-	~DArray()
+	~DynamicArray()
 	{
 		ANKI_ASSERT(
 			m_data == nullptr && m_size == 0 && "Requires manual destruction");
 	}
 
 	/// Move.
-	DArray& operator=(DArray&& b)
+	DynamicArray& operator=(DynamicArray&& b)
 	{
 		move(b);
 		return *this;
@@ -196,7 +196,7 @@ public:
 	void resize(TAllocator alloc, PtrSize size)
 	{
 		ANKI_ASSERT(size > 0);
-		DArray newArr;
+		DynamicArray newArr;
 		newArr.create(alloc, size);
 
 		PtrSize minSize = min<PtrSize>(size, m_size);
@@ -229,7 +229,7 @@ protected:
 	Value* m_data;
 	U32 m_size;
 
-	void move(DArray& b)
+	void move(DynamicArray& b)
 	{
 		ANKI_ASSERT(m_data == nullptr && m_size == 0
 			&& "Cannot move before destroying");
@@ -240,37 +240,37 @@ protected:
 	}
 };
 
-/// Dynamic array with automatic destruction. It's the same as DArray but it
-/// holds the allocator in order to perform automatic destruction. Use it for
+/// Dynamic array with automatic destruction. It's the same as DynamicArray but
+/// it holds the allocator in order to perform automatic destruction. Use it for
 /// temp operations and on transient classes.
 template<typename T>
-class DArrayAuto : public DArray<T>
+class DynamicArrayAuto : public DynamicArray<T>
 {
 public:
-	using Base = DArray<T>;
+	using Base = DynamicArray<T>;
 	using Value = T;
 
 	template<typename TAllocator>
-	DArrayAuto(TAllocator alloc)
+	DynamicArrayAuto(TAllocator alloc)
 		: Base()
 		, m_alloc(alloc)
 	{
 	}
 
 	/// Move.
-	DArrayAuto(DArrayAuto&& b)
-		: DArrayAuto()
+	DynamicArrayAuto(DynamicArrayAuto&& b)
+		: DynamicArrayAuto()
 	{
 		move(b);
 	}
 
-	~DArrayAuto()
+	~DynamicArrayAuto()
 	{
 		Base::destroy(m_alloc);
 	}
 
 	/// Move.
-	DArrayAuto& operator=(DArrayAuto&& b)
+	DynamicArrayAuto& operator=(DynamicArrayAuto&& b)
 	{
 		move(b);
 		return *this;
@@ -297,7 +297,7 @@ public:
 private:
 	GenericMemoryPoolAllocator<T> m_alloc;
 
-	void move(DArrayAuto& b)
+	void move(DynamicArrayAuto& b)
 	{
 		Base::move(b);
 		m_alloc = b.m_alloc;
@@ -306,75 +306,18 @@ private:
 
 /// Array with preallocated memory.
 template<typename T>
-class SArray : public DArray<T>
+class WeakArray : public DynamicArray<T>
 {
 public:
-	using Base = DArray<T>;
+	using Base = DynamicArray<T>;
 	using Value = T;
 
-	SArray()
+	WeakArray()
 		: Base()
 	{
 	}
 
-	SArray(T* mem, PtrSize size)
-		: Base()
-	{
-		if(size)
-		{
-			ANKI_ASSERT(mem);
-		}
-
-		Base::m_data = mem;
-		Base::m_size = size;
-	}
-
-	/// Move.
-	SArray(SArray&& b)
-		: SArray()
-	{
-		move(b);
-	}
-
-	~SArray()
-	{
-#if ANKI_ASSERTIONS
-		Base::m_data = nullptr;
-		Base::m_size = 0;
-#endif
-	}
-
-	/// Move.
-	SArray& operator=(SArray&& b)
-	{
-		move(b);
-		return *this;
-	}
-
-private:
-	void move(SArray& b)
-	{
-		Base::m_data = b.m_data;
-		b.m_data = nullptr;
-		Base::m_size = b.m_size;
-		b.m_size = 0;
-	}
-};
-
-/// Same as SArray but copyable.
-template<typename T>
-class WArray : public DArray<T>
-{
-public:
-	using Base = DArray<T>;
-	using Value = T;
-
-	WArray()
-		: Base()
-	{
-	}
-
-	WArray(T* mem, PtrSize size)
+	WeakArray(T* mem, PtrSize size)
 		: Base()
 	{
 		if(size)
@@ -387,22 +330,19 @@ public:
 	}
 
 	/// Copy.
-	WArray(const WArray& b)
+	WeakArray(const WeakArray& b)
 		: Base::m_data(b.m_data)
 		, Base::m_size(b.m_size)
 	{
 	}
 
 	/// Move.
-	WArray(WArray&& b)
-		: Base::m_data(b.m_data)
-		, Base::m_size(b.m_size)
+	WeakArray(WeakArray&& b)
 	{
-		b.m_data = nullptr;
-		b.m_size = 0;
+		*this = std::move(b);
 	}
 
-	~WArray()
+	~WeakArray()
 	{
 #if ANKI_ASSERTIONS
 		Base::m_data = nullptr;
@@ -411,7 +351,7 @@ public:
 	}
 
 	/// Copy.
-	WArray& operator=(const WArray& b)
+	WeakArray& operator=(const WeakArray& b)
 	{
 		Base::m_data = b.m_data;
 		Base::m_size = b.m_size;
@@ -419,7 +359,7 @@ public:
 	}
 
 	/// Move.
-	WArray& operator=(WArray&& b)
+	WeakArray& operator=(WeakArray&& b)
 	{
 		Base::m_data = b.m_data;
 		b.m_data = nullptr;

+ 2 - 2
include/anki/util/String.h

@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <anki/util/DArray.h>
+#include <anki/util/DynamicArray.h>
 #include <anki/util/Array.h>
 #include <anki/util/NonCopyable.h>
 #include <anki/util/Hash.h>
@@ -508,7 +508,7 @@ public:
 	}
 
 protected:
-	DArray<Char> m_data;
+	DynamicArray<Char> m_data;
 
 	void checkInit() const
 	{

+ 4 - 4
include/anki/util/ThreadHive.h

@@ -6,7 +6,7 @@
 #pragma once
 
 #include <anki/util/Thread.h>
-#include <anki/util/DArray.h>
+#include <anki/util/DynamicArray.h>
 #include <anki/util/Allocator.h>
 
 namespace anki
@@ -38,7 +38,7 @@ public:
 	void* m_argument ANKI_DBG_NULLIFY_PTR;
 
 	/// The tasks that this task will depend on.
-	WArray<ThreadHiveDependencyHandle> m_inDependencies;
+	WeakArray<ThreadHiveDependencyHandle> m_inDependencies;
 
 	/// Will be filled after the submission of the task. Can be used to set
 	/// dependencies to future tasks.
@@ -89,8 +89,8 @@ private:
 	Thread* m_threads = nullptr;
 	U32 m_threadCount = 0;
 
-	DArray<Task> m_storage; ///< Task storage.
-	DArray<ThreadHiveDependencyHandle> m_deps; ///< Dependencies storage.
+	DynamicArray<Task> m_storage; ///< Task storage.
+	DynamicArray<ThreadHiveDependencyHandle> m_deps; ///< Dependencies storage.
 	Task* m_head = nullptr; ///< Head of the task list.
 	Task* m_tail = nullptr; ///< Tail of the task list.
 	Bool m_quit = false;

+ 1 - 1
src/gr/gl/PipelineImpl.cpp

@@ -200,7 +200,7 @@ Error PipelineImpl::createGlPipeline()
 	{
 		GLint infoLen = 0;
 		GLint charsWritten = 0;
-		DArrayAuto<char> infoLogTxt(getAllocator());
+		DynamicArrayAuto<char> infoLogTxt(getAllocator());
 
 		glGetProgramiv(m_glName, GL_INFO_LOG_LENGTH, &infoLen);
 

+ 2 - 2
src/gr/gl/TextureImpl.cpp

@@ -202,11 +202,11 @@ class DeleteTextureCommand final : public GlCommand
 {
 public:
 	GLuint m_tex;
-	DArray<GLuint> m_views;
+	DynamicArray<GLuint> m_views;
 	GrAllocator<U8> m_alloc;
 
 	DeleteTextureCommand(
-		GLuint tex, DArray<GLuint>& views, GrAllocator<U8> alloc)
+		GLuint tex, DynamicArray<GLuint>& views, GrAllocator<U8> alloc)
 		: m_tex(tex)
 		, m_views(std::move(views))
 		, m_alloc(alloc)

+ 5 - 5
src/misc/Xml.cpp

@@ -88,7 +88,7 @@ Error XmlElement::getF64(F64& out) const
 }
 
 //==============================================================================
-Error XmlElement::getFloats(DArrayAuto<F64>& out) const
+Error XmlElement::getFloats(DynamicArrayAuto<F64>& out) const
 {
 	Error err = check();
 
@@ -108,7 +108,7 @@ Error XmlElement::getFloats(DArrayAuto<F64>& out) const
 		list.splitString(m_alloc, txt, ' ');
 	}
 
-	out = DArrayAuto<F64>(m_alloc);
+	out = DynamicArrayAuto<F64>(m_alloc);
 
 	if(!err)
 	{
@@ -135,7 +135,7 @@ Error XmlElement::getFloats(DArrayAuto<F64>& out) const
 //==============================================================================
 Error XmlElement::getMat4(Mat4& out) const
 {
-	DArrayAuto<F64> arr(m_alloc);
+	DynamicArrayAuto<F64> arr(m_alloc);
 	Error err = getFloats(arr);
 
 	if(!err && arr.getSize() != 16)
@@ -163,7 +163,7 @@ Error XmlElement::getMat4(Mat4& out) const
 //==============================================================================
 Error XmlElement::getVec3(Vec3& out) const
 {
-	DArrayAuto<F64> arr(m_alloc);
+	DynamicArrayAuto<F64> arr(m_alloc);
 	Error err = getFloats(arr);
 
 	if(!err && arr.getSize() != 3)
@@ -190,7 +190,7 @@ Error XmlElement::getVec3(Vec3& out) const
 //==============================================================================
 Error XmlElement::getVec4(Vec4& out) const
 {
-	DArrayAuto<F64> arr(m_alloc);
+	DynamicArrayAuto<F64> arr(m_alloc);
 	Error err = getFloats(arr);
 
 	if(!err && arr.getSize() != 4)

+ 4 - 4
src/renderer/Clusterer.cpp

@@ -135,16 +135,16 @@ void Clusterer::init(const GenericMemoryPoolAllocator<U8>& alloc,
 	Plane* base = &m_allPlanes[0];
 	U count = 0;
 
-	m_planesX = SArray<Plane>(base + count, m_counts[0] - 1);
+	m_planesX = WeakArray<Plane>(base + count, m_counts[0] - 1);
 	count += m_planesX.getSize();
 
-	m_planesY = SArray<Plane>(base + count, m_counts[1] - 1);
+	m_planesY = WeakArray<Plane>(base + count, m_counts[1] - 1);
 	count += m_planesY.getSize();
 
-	m_planesXW = SArray<Plane>(base + count, m_counts[0] - 1);
+	m_planesXW = WeakArray<Plane>(base + count, m_counts[0] - 1);
 	count += m_planesXW.getSize();
 
-	m_planesYW = SArray<Plane>(base + count, m_counts[1] - 1);
+	m_planesYW = WeakArray<Plane>(base + count, m_counts[1] - 1);
 	count += m_planesYW.getSize();
 
 	m_nearPlane = base + count;

+ 1 - 1
src/renderer/DebugDrawer.cpp

@@ -111,7 +111,7 @@ void DebugDrawer::prepareFrame(CommandBufferPtr& jobs)
 		MAX_VERTS_PER_FRAME * sizeof(Vertex),
 		BufferAccessBit::CLIENT_MAP_WRITE);
 	m_clientVerts =
-		WArray<Vertex>(static_cast<Vertex*>(mapped), MAX_VERTS_PER_FRAME);
+		WeakArray<Vertex>(static_cast<Vertex*>(mapped), MAX_VERTS_PER_FRAME);
 
 	m_cmdb->bindResourceGroup(m_rcGroup[frame], 0, nullptr);
 

+ 6 - 6
src/renderer/Drawer.cpp

@@ -46,7 +46,7 @@ class SetupRenderableVariableVisitor
 public:
 	DrawContext* m_ctx ANKI_DBG_NULLIFY_PTR;
 	const RenderableDrawer* m_drawer ANKI_DBG_NULLIFY_PTR;
-	SArray<U8> m_uniformBuffer;
+	WeakArray<U8> m_uniformBuffer;
 
 	/// Set a uniform in a client block
 	template<typename T>
@@ -89,7 +89,7 @@ Error SetupRenderableVariableVisitor::visit(
 	{
 		ANKI_ASSERT(cachedTrfs > 0);
 
-		DArrayAuto<Mat4> mvp(m_drawer->m_r->getFrameAllocator());
+		DynamicArrayAuto<Mat4> mvp(m_drawer->m_r->getFrameAllocator());
 		mvp.create(cachedTrfs);
 
 		for(U i = 0; i < cachedTrfs; i++)
@@ -104,7 +104,7 @@ Error SetupRenderableVariableVisitor::visit(
 	{
 		ANKI_ASSERT(cachedTrfs > 0);
 
-		DArrayAuto<Mat4> mv(m_drawer->m_r->getFrameAllocator());
+		DynamicArrayAuto<Mat4> mv(m_drawer->m_r->getFrameAllocator());
 		mv.create(cachedTrfs);
 
 		for(U i = 0; i < cachedTrfs; i++)
@@ -123,7 +123,7 @@ Error SetupRenderableVariableVisitor::visit(
 	{
 		ANKI_ASSERT(cachedTrfs > 0);
 
-		DArrayAuto<Mat3> normMats(m_drawer->m_r->getFrameAllocator());
+		DynamicArrayAuto<Mat3> normMats(m_drawer->m_r->getFrameAllocator());
 		normMats.create(cachedTrfs);
 
 		for(U i = 0; i < cachedTrfs; i++)
@@ -141,7 +141,7 @@ Error SetupRenderableVariableVisitor::visit(
 		// Calc the billboard rotation matrix
 		Mat3 rot = v.getRotationPart().getTransposed();
 
-		DArrayAuto<Mat4> bmvp(m_drawer->m_r->getFrameAllocator());
+		DynamicArrayAuto<Mat4> bmvp(m_drawer->m_r->getFrameAllocator());
 		bmvp.create(cachedTrfs);
 
 		for(U i = 0; i < cachedTrfs; i++)
@@ -224,7 +224,7 @@ void RenderableDrawer::setupUniforms(DrawContext& ctx,
 	visitor.m_ctx = &ctx;
 	visitor.m_drawer = this;
 	visitor.m_uniformBuffer =
-		SArray<U8>(uniforms, variant.getDefaultBlockSize());
+		WeakArray<U8>(uniforms, variant.getDefaultBlockSize());
 
 	for(auto it = renderable.getVariablesBegin();
 		it != renderable.getVariablesEnd();

+ 17 - 17
src/renderer/Is.cpp

@@ -275,27 +275,27 @@ public:
 	}
 
 	// To fill the light buffers
-	SArray<ShaderPointLight> m_pointLights;
-	SArray<ShaderSpotLight> m_spotLights;
-	SArray<ShaderProbe> m_probes;
+	WeakArray<ShaderPointLight> m_pointLights;
+	WeakArray<ShaderSpotLight> m_spotLights;
+	WeakArray<ShaderProbe> m_probes;
 
-	SArray<U32> m_lightIds;
-	SArray<ShaderCluster> m_clusters;
+	WeakArray<U32> m_lightIds;
+	WeakArray<ShaderCluster> m_clusters;
 
 	Atomic<U32> m_pointLightsCount = {0};
 	Atomic<U32> m_spotLightsCount = {0};
 	Atomic<U32> m_probeCount = {0};
 
 	// To fill the tile buffers
-	DArrayAuto<ClusterData> m_tempClusters;
+	DynamicArrayAuto<ClusterData> m_tempClusters;
 
 	// To fill the light index buffer
 	Atomic<U32> m_lightIdsCount = {0};
 
 	// Misc
-	SArray<VisibleNode> m_vPointLights;
-	SArray<VisibleNode> m_vSpotLights;
-	SArray<VisibleNode> m_vProbes;
+	WeakArray<VisibleNode> m_vPointLights;
+	WeakArray<VisibleNode> m_vSpotLights;
+	WeakArray<VisibleNode> m_vProbes;
 
 	Atomic<U32> m_count = {0};
 	Atomic<U32> m_count2 = {0};
@@ -512,10 +512,10 @@ Error Is::populateBuffers(RenderingContext& ctx)
 				m_pLightsToken));
 
 		taskData.m_pointLights =
-			SArray<ShaderPointLight>(data, visiblePointLightsCount);
+			WeakArray<ShaderPointLight>(data, visiblePointLightsCount);
 
 		taskData.m_vPointLights =
-			SArray<VisibleNode>(vi.getBegin(VisibilityGroupType::LIGHTS_POINT),
+			WeakArray<VisibleNode>(vi.getBegin(VisibilityGroupType::LIGHTS_POINT),
 				visiblePointLightsCount);
 	}
 	else
@@ -532,10 +532,10 @@ Error Is::populateBuffers(RenderingContext& ctx)
 				m_sLightsToken));
 
 		taskData.m_spotLights =
-			SArray<ShaderSpotLight>(data, visibleSpotLightsCount);
+			WeakArray<ShaderSpotLight>(data, visibleSpotLightsCount);
 
 		taskData.m_vSpotLights =
-			SArray<VisibleNode>(vi.getBegin(VisibilityGroupType::LIGHTS_SPOT),
+			WeakArray<VisibleNode>(vi.getBegin(VisibilityGroupType::LIGHTS_SPOT),
 				visibleSpotLightsCount);
 	}
 	else
@@ -551,9 +551,9 @@ Error Is::populateBuffers(RenderingContext& ctx)
 				BufferUsage::UNIFORM,
 				m_probesToken));
 
-		taskData.m_probes = SArray<ShaderProbe>(data, visibleProbeCount);
+		taskData.m_probes = WeakArray<ShaderProbe>(data, visibleProbeCount);
 
-		taskData.m_vProbes = SArray<VisibleNode>(
+		taskData.m_vProbes = WeakArray<VisibleNode>(
 			vi.getBegin(VisibilityGroupType::REFLECTION_PROBES),
 			visibleProbeCount);
 	}
@@ -571,7 +571,7 @@ Error Is::populateBuffers(RenderingContext& ctx)
 			BufferUsage::STORAGE,
 			m_clustersToken));
 
-	taskData.m_clusters = SArray<ShaderCluster>(data, clusterCount);
+	taskData.m_clusters = WeakArray<ShaderCluster>(data, clusterCount);
 
 	// Allocate light IDs
 	U32* data2 =
@@ -580,7 +580,7 @@ Error Is::populateBuffers(RenderingContext& ctx)
 			BufferUsage::STORAGE,
 			m_lightIdsToken));
 
-	taskData.m_lightIds = SArray<U32>(data2, m_maxLightIds);
+	taskData.m_lightIds = WeakArray<U32>(data2, m_maxLightIds);
 
 	for(U i = 0; i < threadPool.getThreadsCount(); i++)
 	{

+ 1 - 1
src/renderer/Lf.cpp

@@ -261,7 +261,7 @@ void Lf::run(RenderingContext& ctx)
 					spritesCount * sizeof(Sprite),
 					BufferUsage::UNIFORM,
 					token));
-			SArray<Sprite> sprites(tmpSprites, spritesCount);
+			WeakArray<Sprite> sprites(tmpSprites, spritesCount);
 
 			// misc
 			Vec2 posNdc = posClip.xy() / posClip.w();

+ 4 - 4
src/resource/ImageLoader.cpp

@@ -25,7 +25,7 @@ static ANKI_USE_RESULT Error loadUncompressedTga(ResourceFilePtr fs,
 	U32& width,
 	U32& height,
 	U32& bpp,
-	DArray<U8>& data,
+	DynamicArray<U8>& data,
 	GenericMemoryPoolAllocator<U8>& alloc)
 {
 	Array<U8, 6> header6;
@@ -66,7 +66,7 @@ static ANKI_USE_RESULT Error loadCompressedTga(ResourceFilePtr fs,
 	U32& width,
 	U32& height,
 	U32& bpp,
-	DArray<U8>& data,
+	DynamicArray<U8>& data,
 	GenericMemoryPoolAllocator<U8>& alloc)
 {
 	Array<U8, 6> header6;
@@ -160,7 +160,7 @@ static ANKI_USE_RESULT Error loadTga(ResourceFilePtr fs,
 	U32& width,
 	U32& height,
 	U32& bpp,
-	DArray<U8>& data,
+	DynamicArray<U8>& data,
 	GenericMemoryPoolAllocator<U8>& alloc)
 {
 	char myTgaHeader[12];
@@ -293,7 +293,7 @@ static PtrSize calcSizeOfSegment(
 static ANKI_USE_RESULT Error loadAnkiTexture(ResourceFilePtr file,
 	U32 maxTextureSize,
 	ImageLoader::DataCompression& preferredCompression,
-	DArray<ImageLoader::Surface>& surfaces,
+	DynamicArray<ImageLoader::Surface>& surfaces,
 	GenericMemoryPoolAllocator<U8>& alloc,
 	U8& depth,
 	U8& mipLevels,

+ 1 - 1
src/resource/Material.cpp

@@ -72,7 +72,7 @@ Error MaterialVariableTemplate<T>::init(
 		ANKI_ASSERT(m_builtin == BuiltinMaterialVariableId::NONE);
 
 		// Has values
-		DArrayAuto<F32> floats(mtl.getTempAllocator());
+		DynamicArrayAuto<F32> floats(mtl.getTempAllocator());
 
 		U floatsNeeded = sizeof(T) / sizeof(F32);
 

+ 3 - 3
src/resource/Model.cpp

@@ -35,7 +35,7 @@ ModelPatch::~ModelPatch()
 
 //==============================================================================
 void ModelPatch::getRenderingDataSub(const RenderingKey& key,
-	SArray<U8> subMeshIndicesArray,
+	WeakArray<U8> subMeshIndicesArray,
 	ResourceGroupPtr& resourceGroup,
 	PipelinePtr& ppline,
 	Array<U32, ANKI_GL_MAX_SUB_DRAWCALLS>& indicesCountArray,
@@ -73,7 +73,7 @@ U ModelPatch::getLodCount() const
 }
 
 //==============================================================================
-Error ModelPatch::create(SArray<CString> meshFNames,
+Error ModelPatch::create(WeakArray<CString> meshFNames,
 	const CString& mtlFName,
 	ResourceManager* manager)
 {
@@ -364,7 +364,7 @@ Error Model::load(const ResourceFilename& filename)
 		}
 
 		ANKI_CHECK(
-			mpatch->create(SArray<CString>(&meshesFnames[0], meshesCount),
+			mpatch->create(WeakArray<CString>(&meshesFnames[0], meshesCount),
 				cstr,
 				&getManager()));
 

+ 1 - 1
src/scene/BodyNode.cpp

@@ -58,7 +58,7 @@ BodyNode::~BodyNode()
 }
 
 //==============================================================================
-Error BodyNode::create(const CString& name, const CString& resourceFname)
+Error BodyNode::init(const CString& name, const CString& resourceFname)
 {
 	SceneComponent* comp;
 

+ 2 - 2
src/scene/Camera.cpp

@@ -76,9 +76,9 @@ Camera::Camera(SceneGraph* scene, Type type)
 }
 
 //==============================================================================
-Error Camera::create(const CString& name, Frustum* frustum)
+Error Camera::init(const CString& name, Frustum* frustum)
 {
-	ANKI_CHECK(SceneNode::create(name));
+	ANKI_CHECK(SceneNode::init(name));
 
 	SceneComponent* comp;
 

+ 1 - 1
src/scene/LensFlareComponent.cpp

@@ -23,7 +23,7 @@ LensFlareComponent::~LensFlareComponent()
 }
 
 //==============================================================================
-Error LensFlareComponent::create(const CString& textureFilename)
+Error LensFlareComponent::init(const CString& textureFilename)
 {
 	// Texture
 	ANKI_CHECK(getSceneGraph()._getResourceManager().loadResource(

+ 7 - 7
src/scene/Light.cpp

@@ -64,10 +64,10 @@ Light::~Light()
 }
 
 //==============================================================================
-Error Light::create(
+Error Light::init(
 	const CString& name, LightComponent::LightType type, CollisionShape* shape)
 {
-	ANKI_CHECK(SceneNode::create(name));
+	ANKI_CHECK(SceneNode::init(name));
 
 	SceneComponent* comp;
 
@@ -156,7 +156,7 @@ Error Light::loadLensFlare(const CString& filename)
 	LensFlareComponent* flareComp =
 		getSceneAllocator().newInstance<LensFlareComponent>(this);
 
-	Error err = flareComp->create(filename);
+	Error err = flareComp->init(filename);
 	if(err)
 	{
 		getSceneAllocator().deleteInstance(flareComp);
@@ -185,9 +185,9 @@ PointLight::~PointLight()
 }
 
 //==============================================================================
-Error PointLight::create(const CString& name)
+Error PointLight::init(const CString& name)
 {
-	return Light::create(name, LightComponent::LightType::POINT, &m_sphereW);
+	return Light::init(name, LightComponent::LightType::POINT, &m_sphereW);
 }
 
 //==============================================================================
@@ -289,10 +289,10 @@ SpotLight::SpotLight(SceneGraph* scene)
 }
 
 //==============================================================================
-Error SpotLight::create(const CString& name)
+Error SpotLight::init(const CString& name)
 {
 	ANKI_CHECK(
-		Light::create(name, LightComponent::LightType::SPOT, &m_frustum));
+		Light::init(name, LightComponent::LightType::SPOT, &m_frustum));
 
 	FrustumComponent* fr =
 		getSceneAllocator().newInstance<FrustumComponent>(this, &m_frustum);

+ 6 - 6
src/scene/ModelNode.cpp

@@ -67,10 +67,10 @@ ModelPatchNode::~ModelPatchNode()
 }
 
 //==============================================================================
-Error ModelPatchNode::create(const CString& name, const ModelPatch* modelPatch)
+Error ModelPatchNode::init(const CString& name, const ModelPatch* modelPatch)
 {
 	ANKI_ASSERT(modelPatch);
-	ANKI_CHECK(SceneNode::create(name));
+	ANKI_CHECK(SceneNode::init(name));
 
 	m_modelPatch = modelPatch;
 
@@ -86,7 +86,7 @@ Error ModelPatchNode::create(const CString& name, const ModelPatch* modelPatch)
 	comp = rcomp;
 
 	addComponent(comp, true);
-	ANKI_CHECK(rcomp->create());
+	ANKI_CHECK(rcomp->init());
 
 	return ErrorCode::NONE;
 }
@@ -106,7 +106,7 @@ Error ModelPatchNode::buildRendering(RenderingBuildInfo& data) const
 	ResourceGroupPtr grResources;
 
 	m_modelPatch->getRenderingDataSub(data.m_key,
-		SArray<U8>(),
+		WeakArray<U8>(),
 		grResources,
 		ppline,
 		indicesCountArray,
@@ -173,9 +173,9 @@ ModelNode::~ModelNode()
 }
 
 //==============================================================================
-Error ModelNode::create(const CString& name, const CString& modelFname)
+Error ModelNode::init(const CString& name, const CString& modelFname)
 {
-	ANKI_CHECK(SceneNode::create(name));
+	ANKI_CHECK(SceneNode::init(name));
 
 	SceneComponent* comp;
 

+ 3 - 3
src/scene/ParticleEmitter.cpp

@@ -281,9 +281,9 @@ ParticleEmitter::~ParticleEmitter()
 }
 
 //==============================================================================
-Error ParticleEmitter::create(const CString& name, const CString& filename)
+Error ParticleEmitter::init(const CString& name, const CString& filename)
 {
-	ANKI_CHECK(SceneNode::create(name));
+	ANKI_CHECK(SceneNode::init(name));
 	SceneComponent* comp;
 
 	// Load resource
@@ -306,7 +306,7 @@ Error ParticleEmitter::create(const CString& name, const CString& filename)
 	ParticleEmitterRenderComponent* rcomp =
 		getSceneAllocator().newInstance<ParticleEmitterRenderComponent>(this);
 
-	ANKI_CHECK(rcomp->create());
+	ANKI_CHECK(rcomp->init());
 	comp = rcomp;
 	addComponent(comp, true);
 

+ 2 - 2
src/scene/PlayerNode.cpp

@@ -137,9 +137,9 @@ PlayerNode::~PlayerNode()
 }
 
 //==============================================================================
-Error PlayerNode::create(const CString& name, const Vec4& position)
+Error PlayerNode::init(const CString& name, const Vec4& position)
 {
-	ANKI_CHECK(SceneNode::create(name));
+	ANKI_CHECK(SceneNode::init(name));
 
 	// Create physics object
 	PhysicsPlayerControllerInitInfo init;

+ 0 - 74
src/scene/Rasterizer.cpp

@@ -1,74 +0,0 @@
-// Copyright (C) 2009-2016, Panagiotis Christopoulos Charitos and contributors.
-// All rights reserved.
-// Code licensed under the BSD License.
-// http://www.anki3d.org/LICENSE
-
-#include <anki/scene/Rasterizer.h>
-
-namespace anki
-{
-
-//==============================================================================
-Rasterizer::~Rasterizer()
-{
-	m_depthBuff.destroy(m_alloc);
-}
-
-//==============================================================================
-void Rasterizer::init(U width, U height, SceneAllocator<U8> alloc)
-{
-	ANKI_ASSERT(width > 1 && height > 1);
-	m_width = width;
-	m_height = height;
-	m_alloc = alloc;
-	m_depthBuff.create(m_alloc, width * height);
-}
-
-//==============================================================================
-void Rasterizer::prepare(const Mat4& mvp)
-{
-	m_mvp = mvp;
-	memset(&m_depthBuff[0], 0, m_depthBuff.getSize() * sizeof(U32));
-}
-
-//==============================================================================
-void Rasterizer::rasterizeTriangle(const Vec4& a, const Vec4& b, const Vec4& c)
-{
-	ANKI_ASSERT(a.w() == 1.0 && b.w() == 1.0 && c.w() == 1.0);
-
-	// Project
-	Array<Vec4, 3> positions;
-	positions[0] = m_mvp * a;
-	positions[1] = m_mvp * b;
-	positions[2] = m_mvp * c;
-
-	// - Viewport transform
-	// - Perspective divide
-	// - Box calculation
-	Vec4 vpScale = Vec4(m_width, m_height, 1.0, 0.0) * 0.5;
-	Vec4 vpTransl = vpScale; // In this case
-	Vec2 boxMin(MAX_F32);
-	Vec2 boxMax(MIN_F32);
-	for(Vec4& v : positions)
-	{
-		v = (v * vpScale).perspectiveDivide() + vpTransl;
-
-		boxMin.x() = min(boxMin.x(), v.x());
-		boxMin.y() = min(boxMin.y(), v.y());
-		boxMax.x() = max(boxMax.x(), v.x());
-		boxMax.y() = max(boxMax.y(), v.y());
-	}
-
-	// Cull
-	if(boxMin.x() > m_width || boxMin.y() > m_height || boxMax.x() < 0
-		|| boxMax.y() < 0)
-	{
-		return;
-	}
-
-	// Backface culling
-	// Vec4 n = (positions[1].xyz0() - positions[0].xyz0()).cross(
-	//	positions[2].xyz0() - positions[1].xyz0());
-}
-
-} // end namespace anki

+ 2 - 2
src/scene/ReflectionProbe.cpp

@@ -57,11 +57,11 @@ ReflectionProbe::~ReflectionProbe()
 }
 
 //==============================================================================
-Error ReflectionProbe::create(const CString& name, F32 radius)
+Error ReflectionProbe::init(const CString& name, F32 radius)
 {
 	SceneComponent* comp;
 
-	ANKI_CHECK(SceneNode::create(name));
+	ANKI_CHECK(SceneNode::init(name));
 
 	// Move component first
 	comp = getSceneAllocator().newInstance<MoveComponent>(this);

+ 3 - 3
src/scene/ReflectionProxy.cpp

@@ -46,9 +46,9 @@ public:
 //==============================================================================
 
 //==============================================================================
-Error ReflectionProxy::create(const CString& name, const CString& proxyMesh)
+Error ReflectionProxy::init(const CString& name, const CString& proxyMesh)
 {
-	ANKI_CHECK(SceneNode::create(name));
+	ANKI_CHECK(SceneNode::init(name));
 
 	// Move component first
 	SceneComponent* comp = getSceneAllocator().newInstance<MoveComponent>(this);
@@ -77,7 +77,7 @@ Error ReflectionProxy::create(const CString& name, const CString& proxyMesh)
 
 	const U8* buff = loader.getVertexData();
 	const U8* buffEnd = loader.getVertexData() + loader.getVertexDataSize();
-	SArray<const U16> indices(
+	WeakArray<const U16> indices(
 		reinterpret_cast<const U16*>(loader.getIndexData()), indexCount);
 	for(U i = 0; i < quadCount; ++i)
 	{

+ 1 - 1
src/scene/RenderComponent.cpp

@@ -83,7 +83,7 @@ RenderComponent::~RenderComponent()
 }
 
 //==============================================================================
-Error RenderComponent::create()
+Error RenderComponent::init()
 {
 	const Material& mtl = getMaterial();
 	auto alloc = m_node->getSceneAllocator();

+ 1 - 1
src/scene/SceneNode.cpp

@@ -38,7 +38,7 @@ SceneNode::~SceneNode()
 }
 
 //==============================================================================
-Error SceneNode::create(const CString& name)
+Error SceneNode::init(const CString& name)
 {
 	m_name.create(getSceneAllocator(), name);
 	return ErrorCode::NONE;

+ 8 - 8
src/scene/Sector.cpp

@@ -37,9 +37,9 @@ PortalSectorBase::~PortalSectorBase()
 }
 
 //==============================================================================
-Error PortalSectorBase::create(const CString& name, const CString& meshFname)
+Error PortalSectorBase::init(const CString& name, const CString& meshFname)
 {
-	ANKI_CHECK(SceneNode::create(name));
+	ANKI_CHECK(SceneNode::init(name));
 
 	// Create move component
 	SceneComponent* comp = getSceneAllocator().newInstance<MoveComponent>(this);
@@ -139,9 +139,9 @@ Portal::~Portal()
 }
 
 //==============================================================================
-Error Portal::create(const CString& name, const CString& meshFname)
+Error Portal::init(const CString& name, const CString& meshFname)
 {
-	ANKI_CHECK(Base::create(name, meshFname));
+	ANKI_CHECK(Base::init(name, meshFname));
 	getSectorGroup().m_portals.pushBack(getSceneAllocator(), this);
 	return ErrorCode::NONE;
 }
@@ -264,9 +264,9 @@ Sector::~Sector()
 }
 
 //==============================================================================
-Error Sector::create(const CString& name, const CString& meshFname)
+Error Sector::init(const CString& name, const CString& meshFname)
 {
-	ANKI_CHECK(PortalSectorBase::create(name, meshFname));
+	ANKI_CHECK(PortalSectorBase::init(name, meshFname));
 	getSectorGroup().m_sectors.pushBack(getSceneAllocator(), this);
 	return ErrorCode::NONE;
 }
@@ -660,7 +660,7 @@ void SectorGroup::findVisibleNodes(const FrustumComponent& frc,
 	SceneNode** visibleNodesMem = reinterpret_cast<SceneNode**>(
 		alloc.allocate(spatialsCount * sizeof(void*)));
 
-	SArray<SceneNode*> visibleNodes(visibleNodesMem, spatialsCount);
+	WeakArray<SceneNode*> visibleNodes(visibleNodesMem, spatialsCount);
 
 	// Iterate visible sectors and get the scene nodes. The array will contain
 	// duplicates
@@ -684,7 +684,7 @@ void SectorGroup::findVisibleNodes(const FrustumComponent& frc,
 	}
 
 	// Update the context
-	ctx.m_visibleNodes = SArray<SceneNode*>(visibleNodesMem, nodesCount);
+	ctx.m_visibleNodes = WeakArray<SceneNode*>(visibleNodesMem, nodesCount);
 }
 
 } // end namespace anki

+ 1 - 1
src/scene/StaticCollisionNode.cpp

@@ -25,7 +25,7 @@ StaticCollisionNode::~StaticCollisionNode()
 }
 
 //==============================================================================
-Error StaticCollisionNode::create(const CString& name,
+Error StaticCollisionNode::init(const CString& name,
 	const CString& resourceFname,
 	const Transform& transform)
 {

+ 5 - 5
src/scene/StaticGeometryNode.cpp

@@ -48,13 +48,13 @@ StaticGeometryPatchNode::~StaticGeometryPatchNode()
 }
 
 //==============================================================================
-Error StaticGeometryPatchNode::create(
+Error StaticGeometryPatchNode::init(
 	const CString& name, const ModelPatch* modelPatch)
 {
 	ANKI_ASSERT(modelPatch);
 
 	m_modelPatch = modelPatch;
-	ANKI_CHECK(SceneNode::create(name));
+	ANKI_CHECK(SceneNode::init(name));
 
 	// Create spatial components
 	for(U i = 1; i < m_modelPatch->getSubMeshesCount(); i++)
@@ -88,7 +88,7 @@ Error StaticGeometryPatchNode::buildRendering(RenderingBuildInfo& data) const
 	PipelinePtr ppline;
 
 	m_modelPatch->getRenderingDataSub(data.m_key,
-		SArray<U8>(const_cast<U8*>(data.m_subMeshIndicesArray),
+		WeakArray<U8>(const_cast<U8*>(data.m_subMeshIndicesArray),
 										  data.m_subMeshIndicesCount),
 		grResources,
 		ppline,
@@ -135,9 +135,9 @@ StaticGeometryNode::~StaticGeometryNode()
 }
 
 //==============================================================================
-Error StaticGeometryNode::create(const CString& name, const CString& filename)
+Error StaticGeometryNode::init(const CString& name, const CString& filename)
 {
-	ANKI_CHECK(SceneNode::create(name));
+	ANKI_CHECK(SceneNode::init(name));
 
 	ANKI_CHECK(getResourceManager().loadResource(filename, m_model));
 

+ 6 - 6
src/scene/Visibility.cpp

@@ -71,9 +71,9 @@ void VisibilityContext::submitNewWork(FrustumComponent& frc, ThreadHive& hive)
 
 	// Test tasks
 	U testCount = hive.getThreadCount();
-	WArray<VisibilityTestTask> tests(
+	WeakArray<VisibilityTestTask> tests(
 		alloc.newArray<VisibilityTestTask>(testCount), testCount);
-	WArray<ThreadHiveTask> testTasks(
+	WeakArray<ThreadHiveTask> testTasks(
 		alloc.newArray<ThreadHiveTask>(testCount), testCount);
 
 	for(U i = 0; i < testCount; ++i)
@@ -89,7 +89,7 @@ void VisibilityContext::submitNewWork(FrustumComponent& frc, ThreadHive& hive)
 		task.m_callback = VisibilityTestTask::callback;
 		task.m_argument = &test;
 		task.m_inDependencies =
-			WArray<ThreadHiveDependencyHandle>(&gatherTask.m_outDependency, 1);
+			WeakArray<ThreadHiveDependencyHandle>(&gatherTask.m_outDependency, 1);
 	}
 
 	hive.submitTasks(&testTasks[0], testCount);
@@ -103,7 +103,7 @@ void VisibilityContext::submitNewWork(FrustumComponent& frc, ThreadHive& hive)
 	ThreadHiveTask combineTask;
 	combineTask.m_callback = CombineResultsTask::callback;
 	combineTask.m_argument = combine;
-	combineTask.m_inDependencies = WArray<ThreadHiveDependencyHandle>(
+	combineTask.m_inDependencies = WeakArray<ThreadHiveDependencyHandle>(
 		alloc.newArray<ThreadHiveDependencyHandle>(testCount), testCount);
 	for(U i = 0; i < testCount; ++i)
 	{
@@ -389,7 +389,7 @@ void CombineResultsTask::combine()
 		timestamp = max(timestamp, m_tests[i].m_timestamp);
 	}
 
-	SArray<VisibilityTestResults*> rez(&rezArr[0], m_tests.getSize());
+	WeakArray<VisibilityTestResults*> rez(&rezArr[0], m_tests.getSize());
 
 	// Create the new combined results
 	VisibilityTestResults* visible = alloc.newInstance<VisibilityTestResults>();
@@ -448,7 +448,7 @@ void VisibilityTestResults::moveBack(
 
 //==============================================================================
 void VisibilityTestResults::combineWith(
-	SceneFrameAllocator<U8> alloc, SArray<VisibilityTestResults*>& results)
+	SceneFrameAllocator<U8> alloc, WeakArray<VisibilityTestResults*>& results)
 {
 	ANKI_ASSERT(results.getSize() > 0);
 

+ 1 - 1
src/ui/Canvas.cpp

@@ -59,7 +59,7 @@ void Canvas::paint()
 			positions[c++] = lb;
 
 			m_interface->drawLines(
-				SArray<UVec2>(&positions[0], positions.getSize()),
+				WeakArray<UVec2>(&positions[0], positions.getSize()),
 				Vec4(1.0, 0.0, 0.0, 1.0),
 				m_size);
 		}

+ 4 - 4
src/ui/Font.cpp

@@ -47,7 +47,7 @@ Font::~Font()
 Error Font::init(const CString& filename, U32 fontHeight)
 {
 	// Load font
-	DArrayAuto<U8> fontData(getAllocator());
+	DynamicArrayAuto<U8> fontData(getAllocator());
 	ANKI_CHECK(m_interface->readFile(filename, fontData));
 
 	// Create impl
@@ -96,7 +96,7 @@ Error Font::init(const CString& filename, U32 fontHeight)
 	}
 
 	// Allocate bitmap for rasterization
-	DArrayAuto<U8> bitmap(getAllocator());
+	DynamicArrayAuto<U8> bitmap(getAllocator());
 	bitmap.create(imgSize.x() * imgSize.y());
 	memset(&bitmap[0], 0, bitmap.getSize());
 
@@ -114,7 +114,7 @@ Error Font::init(const CString& filename, U32 fontHeight)
 
 			const U w = ft.m_face->glyph->bitmap.width;
 			const U h = ft.m_face->glyph->bitmap.rows;
-			SArray<U8> srcBitmap(ft.m_face->glyph->bitmap.buffer, w * h);
+			WeakArray<U8> srcBitmap(ft.m_face->glyph->bitmap.buffer, w * h);
 
 			// Copy
 			for(U y = 0; y < h; ++y)
@@ -143,7 +143,7 @@ Error Font::init(const CString& filename, U32 fontHeight)
 
 	// Create image
 	ANKI_CHECK(m_interface->createR8Image(
-		SArray<U8>(&bitmap[0], bitmap.getSize()), imgSize, m_img));
+		WeakArray<U8>(&bitmap[0], bitmap.getSize()), imgSize, m_img));
 
 	return ErrorCode::NONE;
 }

+ 4 - 3
src/ui/UiInterfaceImpl.cpp

@@ -137,7 +137,7 @@ void UiInterfaceImpl::endRendering()
 
 //==============================================================================
 void UiInterfaceImpl::drawLines(
-	const SArray<UVec2>& positions, const Color& color, const UVec2& canvasSize)
+	const WeakArray<UVec2>& positions, const Color& color, const UVec2& canvasSize)
 {
 	StageId stageId = StageId::LINES;
 
@@ -192,7 +192,7 @@ Error UiInterfaceImpl::loadImage(
 
 //==============================================================================
 Error UiInterfaceImpl::createR8Image(
-	const SArray<U8>& data, const UVec2& size, IntrusivePtr<UiImage>& img)
+	const WeakArray<U8>& data, const UVec2& size, IntrusivePtr<UiImage>& img)
 {
 	ANKI_ASSERT(data.getSize() == size.x() * size.y());
 
@@ -238,7 +238,8 @@ Error UiInterfaceImpl::createR8Image(
 }
 
 //==============================================================================
-Error UiInterfaceImpl::readFile(const CString& filename, DArrayAuto<U8>& data)
+Error UiInterfaceImpl::readFile(
+	const CString& filename, DynamicArrayAuto<U8>& data)
 {
 	GenericResourcePtr rsrc;
 	ANKI_CHECK(m_rc->loadResource(filename, rsrc));

+ 1 - 1
src/util/String.cpp

@@ -112,7 +112,7 @@ void String::appendInternal(Allocator alloc, const Char* str, PtrSize strSize)
 		size = 1;
 	}
 
-	DArray<Char> newData;
+	DynamicArray<Char> newData;
 	newData.create(alloc, size + strSize - 1);
 
 	if(!m_data.isEmpty())

+ 2 - 2
tests/util/HashMap.cpp

@@ -6,7 +6,7 @@
 #include "tests/framework/Framework.h"
 #include "tests/util/Foo.h"
 #include "anki/util/HashMap.h"
-#include "anki/util/DArray.h"
+#include "anki/util/DynamicArray.h"
 #include "anki/util/HighRezTimer.h"
 #include <unordered_map>
 
@@ -121,7 +121,7 @@ ANKI_TEST(Util, HashMap)
 
 		// Create a huge set
 		const U COUNT = 1024 * 100;
-		DArrayAuto<int> vals(alloc);
+		DynamicArrayAuto<int> vals(alloc);
 		vals.create(COUNT);
 
 		for(U i = 0; i < COUNT; ++i)

+ 3 - 3
tests/util/ThreadHive.cpp

@@ -106,7 +106,7 @@ ANKI_TEST(Util, ThreadHive)
 			dtasks[i].m_callback = taskToWait;
 			dtasks[i].m_argument = &ctx;
 			dtasks[i].m_inDependencies =
-				WArray<ThreadHiveDependencyHandle>(&task.m_outDependency, 1);
+				WeakArray<ThreadHiveDependencyHandle>(&task.m_outDependency, 1);
 		}
 
 		hive.submitTasks(&dtasks[0], DEP_TASKS);
@@ -117,7 +117,7 @@ ANKI_TEST(Util, ThreadHive)
 		{
 			dtasks2[i].m_callback = taskToWait;
 			dtasks2[i].m_argument = &ctx;
-			dtasks2[i].m_inDependencies = WArray<ThreadHiveDependencyHandle>(
+			dtasks2[i].m_inDependencies = WeakArray<ThreadHiveDependencyHandle>(
 				&dtasks[i].m_outDependency, 1);
 		}
 
@@ -154,7 +154,7 @@ ANKI_TEST(Util, ThreadHive)
 				if((rand() % 3) == 0 && j > 0)
 				{
 					task.m_inDependencies =
-						WArray<ThreadHiveDependencyHandle>(&dep, 1);
+						WeakArray<ThreadHiveDependencyHandle>(&dep, 1);
 				}
 
 				hive.submitTasks(&task, 1);