Skip to content

Commit ec58ee4

Browse files
committed
Remove MeshBatcher. Refactor IRenderer types
- Added MaterialDescriptor struct - Removed Model3D, ModelMesh, ModelMeshPart draw methods, as rendering is now entirely managed by the RenderingManager class - RenderingManager replaces MeshBatcher, as it now holds the list of mesh parts - TransparentForwardRenderer stage This doesn't compile, as work isn't finished.
1 parent 207bf23 commit ec58ee4

37 files changed

Lines changed: 602 additions & 576 deletions

3DRadSpace/3DRadSpace_CSharp/Graphics/Model3D.cs

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,6 @@ public class Model3D : NatPtrWrapper
99
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "EDRSP_Model3D_Create")]
1010
extern static IntPtr _create(IntPtr device, string path);
1111

12-
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "EDRSP_Model3D_Draw")]
13-
extern static void _draw(IntPtr model);
14-
15-
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "EDRSP_Model3D_Draw2")]
16-
extern static unsafe void _draw(IntPtr model, Matrix4x4 *mat);
17-
18-
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "EDRSP_Model3D_DrawEffect2")]
19-
extern static void _draw(IntPtr model, IntPtr effect);
20-
21-
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "EDRSP_Model3D_DrawEffect2")]
22-
extern static unsafe void _draw(IntPtr model, IntPtr effect, Matrix4x4 *mat);
23-
2412
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "EDRSP_Model3D_NumMeshes")]
2513
extern static ulong _num(IntPtr model);
2614

@@ -53,26 +41,6 @@ public Model3D(IGraphicsDevice device, string path) : base(_create(device.Handle
5341
{
5442
}
5543

56-
public void Draw()
57-
{
58-
_draw(_handle);
59-
}
60-
61-
public unsafe void Draw(Matrix4x4 mat)
62-
{
63-
_draw(_handle, &mat);
64-
}
65-
66-
public void Draw(Effect effect)
67-
{
68-
_draw(_handle, effect.Handle);
69-
}
70-
71-
public unsafe void Draw(Matrix4x4 mat, Effect effect)
72-
{
73-
_draw(_handle, effect.Handle, &mat);
74-
}
75-
7644
public ulong NumMeshes
7745
{
7846
get => _num(_handle);

3DRadSpace/3DRadSpace_CSharp/Graphics/ModelMesh.cs

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,39 +6,36 @@ namespace Engine3DRadSpace.Graphics;
66
public class ModelMesh : NatPtrWrapper
77
{
88
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_ModelMesh_Create")]
9-
extern static unsafe IntPtr _create(IntPtr *parts, ulong numParts);
9+
extern static unsafe IntPtr _create(IntPtr* parts, ulong numParts);
1010

1111
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_ModelMesh_Destroy")]
1212
extern static void _destroy(IntPtr modelMesh);
1313

14-
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_ModelMesh_AddMeshPart")]
15-
extern static void _addPart(IntPtr modelMesh, IntPtr part);
14+
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_ModelMesh_AddMeshPart")]
15+
extern static void _addPart(IntPtr modelMesh, IntPtr part);
1616

17-
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_ModelMesh_GetMeshPart")]
18-
extern static IntPtr _at(IntPtr modelMesh, uint idx);
17+
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_ModelMesh_GetMeshPart")]
18+
extern static IntPtr _at(IntPtr modelMesh, uint idx);
1919

20-
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_ModelMesh_NumMeshParts")]
21-
extern static ulong _count(IntPtr modelMesh);
20+
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_ModelMesh_NumMeshParts")]
21+
extern static ulong _count(IntPtr modelMesh);
2222

23-
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_ModelMesh_Draw")]
24-
extern static void _draw(IntPtr modelMesh);
23+
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_ModelMesh_GetBoundingBox")]
24+
extern static Math.BoundingBox _bbox(IntPtr modelMesh);
2525

26-
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_ModelMesh_GetBoundingBox")]
27-
extern static Math.BoundingBox _bbox(IntPtr modelMesh);
26+
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_ModelMesh_GetBoundingSphere")]
27+
extern static Math.BoundingSphere _bsph(IntPtr modelMesh);
2828

29-
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_ModelMesh_GetBoundingSphere")]
30-
extern static Math.BoundingSphere _bsph(IntPtr modelMesh);
31-
32-
public ModelMesh(IntPtr handle) : base(handle, _destroy)
29+
public ModelMesh(IntPtr handle) : base(handle, _destroy)
3330
{
3431
}
3532

3633
unsafe static IntPtr _callCreate(ModelMeshPart[] parts)
3734
{
3835
ulong numParts = (ulong)parts.Length;
3936

40-
IntPtr* ppParts = stackalloc IntPtr[(int)numParts];
41-
for(ulong i = 0; i < numParts; i++)
37+
IntPtr* ppParts = stackalloc IntPtr[(int)numParts];
38+
for (ulong i = 0; i < numParts; i++)
4239
{
4340
ppParts[i] = parts[i].Handle;
4441
}

3DRadSpace/3DRadSpace_CSharp/Graphics/ModelMeshPart.cs

Lines changed: 5 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,15 @@ extern static unsafe IntPtr _create1(
1616
ulong numVerts,
1717
ulong structSize,
1818
uint* indices,
19-
ulong numIndices,
20-
IntPtr shaders
19+
ulong numIndices
2120
);
2221

2322
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_ModelMeshPart_Create2")]
2423
extern static IntPtr _create2(
2524
IntPtr vBuffer,
26-
IntPtr iBuffer,
27-
IntPtr shaders
25+
IntPtr iBuffer
2826
);
2927

30-
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_ModelMeshPart_Draw")]
31-
extern static void _draw(IntPtr meshPart);
32-
33-
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_ModelMeshPart_DrawEffect")]
34-
extern static void _drawEffect(IntPtr meshPart, IntPtr effect);
35-
3628
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_ModelMeshPart_GetBoundingBox")]
3729
extern static BoundingBox _bbox(IntPtr meshPart);
3830

@@ -45,12 +37,6 @@ IntPtr shaders
4537
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_ModelMeshPart_GetIndexBuffer")]
4638
extern static IntPtr _ibuff(IntPtr meshPart);
4739

48-
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_ModelMeshPart_GetShaders")]
49-
extern static IntPtr _getEffect(IntPtr meshPart);
50-
51-
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_ModelMeshPart_GetShaders")]
52-
extern static void _setEffect(IntPtr meshPart, IntPtr effect);
53-
5440
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_ModelMeshPart_GetTransform")]
5541
extern static Matrix4x4 _getMatrix(IntPtr meshPart);
5642

@@ -67,24 +53,13 @@ public unsafe ModelMeshPart(
6753
ulong numVerts,
6854
ulong structSize,
6955
uint* indices,
70-
ulong numIndices,
71-
Effect shaders
72-
) : base(_create1(device.Handle, pVertexData, numVerts, structSize, indices, numIndices, shaders.Handle), _destroy)
73-
{
74-
}
75-
76-
public ModelMeshPart(IVertexBuffer vbuff, IIndexBuffer ibuff, Effect effect) : base(_create2(vbuff.Handle, ibuff.Handle, effect.Handle), _destroy)
56+
ulong numIndices
57+
) : base(_create1(device.Handle, pVertexData, numVerts, structSize, indices, numIndices), _destroy)
7758
{
7859
}
7960

80-
public void Draw()
61+
public ModelMeshPart(IVertexBuffer vbuff, IIndexBuffer ibuff, Effect effect) : base(_create2(vbuff.Handle, ibuff.Handle), _destroy)
8162
{
82-
_draw(_handle);
83-
}
84-
85-
public void Draw(Effect effect)
86-
{
87-
_drawEffect(_handle, effect.Handle);
8863
}
8964

9065
public BoundingBox BoundingBox
@@ -107,12 +82,6 @@ public IIndexBuffer IndexBuffer
10782
get => new InstIIndexBuffer(_ibuff(_handle), ownsHandle: false);
10883
}
10984

110-
public Effect Shaders
111-
{
112-
get => new Effect(_getEffect(_handle), ownsHandle: false);
113-
set => _setEffect(_handle, value.Handle);
114-
}
115-
11685
public unsafe Matrix4x4 Transform
11786
{
11887
get => _getMatrix(_handle);

3DRadSpace/Engine3DRadSpace/Audio/AudioBuffer.hpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,42 @@ namespace Engine3DRadSpace::Audio
3535
AudioBuffer& operator=(const AudioBuffer&) = delete;
3636
AudioBuffer& operator=(AudioBuffer&&) noexcept = default;
3737

38+
/// <summary>
39+
/// Type of loading error that could occur when loading a WAV file.
40+
/// </summary>
3841
enum class WAVLoadError
3942
{
43+
/// <summary>
44+
/// No error.
45+
/// </summary>
4046
None,
47+
/// <summary>
48+
/// Cannot open file.
49+
/// </summary>
4150
CannotOpen,
51+
/// <summary>
52+
/// RIFF header not found in the file.
53+
/// </summary>
4254
RIFFNotFound,
55+
/// <summary>
56+
/// Format marker not found in the file.
57+
/// </summary>
4358
NoFormatMarker,
59+
/// <summary>
60+
/// Wrong format length.
61+
/// </summary>
4462
WrongFormatLength,
63+
/// <summary>
64+
/// Not PCM format.
65+
/// </summary>
4566
NotPCM,
67+
/// <summary>
68+
/// Null size.
69+
/// </summary>
4670
NullSize,
71+
/// <summary>
72+
/// Out of memory when allocating the PCM buffer.
73+
/// </summary>
4774
OutOfMemory
4875
};
4976

3DRadSpace/Engine3DRadSpace/Audio/AudioSource.hpp

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,67 @@ namespace Engine3DRadSpace::Audio
88
/// </summary>
99
struct AudioSource
1010
{
11+
/// <summary>
12+
/// Pitch of the sound. Range is [0.5, 2.0]. Default is 1.0.
13+
/// </summary>
1114
float Pitch;
1215

16+
/// <summary>
17+
/// Volume of the sound. Range is [0.0, 1.0]. Default is 1.0.
18+
/// </summary>
1319
float Gain;
20+
/// <summary>
21+
/// Max volume of the sound. Range is [0.0, 1.0]. Default is 1.0.
22+
/// </summary>
1423
float MaxGain;
24+
/// Minimum volume of the sound. Range is [0.0, 1.0]. Default is 0.0.
1525
float MinGain;
1626

27+
/// <summary>
28+
/// Position in space of the sound source.
29+
/// </summary>
1730
Math::Vector3 Position;
31+
/// <summary>
32+
/// Velocity if the object emmiting the sound. Used for doppler effect.
33+
/// </summary>
1834
Math::Vector3 Velocity;
35+
/// <summary>
36+
/// Normalized direction of the sound source. Used for directional sound.
37+
/// </summary>
1938
Math::Vector3 Direction;
2039

40+
/// <summary>
41+
/// Maximum distance at which the sound can be heard.
42+
/// </summary>
2143
float MaxDistance;
44+
/// <summary>
45+
/// Distance at which the sound is at full volume. Beyond this distance, the sound will start to attenuate.
46+
/// </summary>
2247
float ReferenceDistance;
2348

49+
/// <summary>
50+
/// Describes how quick the sound attenuates as it moves away from the listener. Default is 1.0.
51+
/// </summary>
2452
float RolloffFactor;
2553

54+
/// <summary>
55+
///
56+
/// </summary>
2657
float ConeOuterGain;
58+
59+
/// <summary>
60+
///
61+
/// </summary>
2762
float ConeInnerAngle;
63+
64+
/// <summary>
65+
///
66+
/// </summary>
2867
float ConeOuterAngle;
2968

69+
/// <summary>
70+
/// Is the sound looping?
71+
/// </summary>
3072
bool Looping;
3173
};
3274
}

3DRadSpace/Engine3DRadSpace/FFI/Graphics/Model3D.cpp

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,6 @@ E3DRSP_Model3D EDRSP_Model3D_Create(E3DRSP_IGraphicsDevice device, const char* p
1010
return new Model3D(static_cast<IGraphicsDevice*>(device), std::filesystem::path(path));
1111
}
1212

13-
void EDRSP_Model3D_Draw(E3DRSP_Model3D model)
14-
{
15-
static_cast<Model3D*>(model)->Draw();
16-
}
17-
18-
void EDRSP_Model3D_Draw2(E3DRSP_Model3D model, const E3DRSP_Matrix4x4* transform)
19-
{
20-
static_cast<Model3D*>(model)->Draw(*reinterpret_cast<const Math::Matrix4x4*>(transform));
21-
}
22-
23-
void EDRSP_Model3D_DrawEffect(E3DRSP_Model3D model, E3DRSP_Effect effect)
24-
{
25-
static_cast<Model3D*>(model)->DrawEffect(static_cast<Effect*>(effect));
26-
}
27-
28-
void EDRSP_Model3D_DrawEffect2(E3DRSP_Model3D model, E3DRSP_Effect effect, const E3DRSP_Matrix4x4* transform)
29-
{
30-
static_cast<Model3D*>(model)->DrawEffect(static_cast<Effect*>(effect), *reinterpret_cast<const Math::Matrix4x4*>(transform));
31-
}
32-
3313
size_t EDRSP_Model3D_NumMeshes(E3DRSP_Model3D model)
3414
{
3515
return static_cast<Model3D*>(model)->NumMeshes();
@@ -60,23 +40,6 @@ E3DRSP_BoundingSphere EDRSP_Model3D_GetBoundingSphere(E3DRSP_Model3D model)
6040
};
6141
}
6242

63-
void EDRSP_Model3D_SetShader(E3DRSP_Model3D model, E3DRSP_Effect effect)
64-
{
65-
static_cast<Model3D*>(model)->SetShader(static_cast<Effect*>(effect));
66-
}
67-
68-
void EDRSP_Model3D_SetShaders(E3DRSP_Model3D model, E3DRSP_Effect* effects, size_t numEffects)
69-
{
70-
std::vector<Effect*> effectVec;
71-
effectVec.reserve(numEffects);
72-
73-
for(size_t i = 0; i < numEffects; i++)
74-
{
75-
effectVec.push_back(static_cast<Effect*>(effects[i]));
76-
}
77-
static_cast<Model3D*>(model)->SetShaders(effectVec);
78-
}
79-
8043
void EDRSP_Model3D_SetTransform(E3DRSP_Model3D model, const E3DRSP_Matrix4x4* matrix4x4)
8144
{
8245
static_cast<Model3D*>(model)->SetTransform(*reinterpret_cast<const Math::Matrix4x4*>(matrix4x4));

3DRadSpace/Engine3DRadSpace/FFI/Graphics/Model3D.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,6 @@ extern "C"
1313
{
1414
#endif
1515
E3DRSP_FFI_EXPORT E3DRSP_Model3D EDRSP_Model3D_Create(E3DRSP_IGraphicsDevice device, const char* path);
16-
E3DRSP_FFI_EXPORT void EDRSP_Model3D_Draw(E3DRSP_Model3D model);
17-
E3DRSP_FFI_EXPORT void EDRSP_Model3D_Draw2(E3DRSP_Model3D model, const E3DRSP_Matrix4x4* transform);
18-
E3DRSP_FFI_EXPORT void EDRSP_Model3D_DrawEffect(E3DRSP_Model3D model, E3DRSP_Effect effect);
19-
E3DRSP_FFI_EXPORT void EDRSP_Model3D_DrawEffect2(E3DRSP_Model3D model, E3DRSP_Effect effect, const E3DRSP_Matrix4x4* transform);
2016
E3DRSP_FFI_EXPORT size_t EDRSP_Model3D_NumMeshes(E3DRSP_Model3D model);
2117
E3DRSP_FFI_EXPORT E3DRSP_ModelMesh EDRSP_Model3D_GetMesh(E3DRSP_Model3D model, size_t index);
2218
E3DRSP_FFI_EXPORT E3DRSP_BoundingBox EDRSP_Model3D_GetBoundingBox(E3DRSP_Model3D model);

3DRadSpace/Engine3DRadSpace/FFI/Graphics/ModelMesh.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,6 @@ size_t E3DRSP_ModelMesh_NumMeshParts(E3DRSP_ModelMesh mesh)
2525
return reinterpret_cast<ModelMesh*>(mesh)->NumMeshParts();
2626
}
2727

28-
void E3DRSP_ModelMesh_Draw(E3DRSP_ModelMesh mesh)
29-
{
30-
reinterpret_cast<ModelMesh*>(mesh)->Draw();
31-
}
32-
3328
E3DRSP_BoundingBox E3DRSP_ModelMesh_GetBoundingBox(E3DRSP_ModelMesh mesh)
3429
{
3530
BoundingBox box = reinterpret_cast<ModelMesh*>(mesh)->GetBoundingBox();

3DRadSpace/Engine3DRadSpace/FFI/Graphics/ModelMesh.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ extern "C"
1414
E3DRSP_FFI_EXPORT void E3DRSP_ModelMesh_AddMeshPart(E3DRSP_ModelMesh mesh, E3DRSP_ModelMeshPart part);
1515
E3DRSP_FFI_EXPORT E3DRSP_ModelMeshPart E3DRSP_ModelMesh_GetMeshPart(E3DRSP_ModelMesh mesh, unsigned index);
1616
E3DRSP_FFI_EXPORT size_t E3DRSP_ModelMesh_NumMeshParts(E3DRSP_ModelMesh mesh);
17-
E3DRSP_FFI_EXPORT void E3DRSP_ModelMesh_Draw(E3DRSP_ModelMesh mesh);
1817

1918
E3DRSP_FFI_EXPORT E3DRSP_BoundingBox E3DRSP_ModelMesh_GetBoundingBox(E3DRSP_ModelMesh mesh);
2019
E3DRSP_FFI_EXPORT E3DRSP_BoundingSphere E3DRSP_ModelMesh_GetBoundingSphere(E3DRSP_ModelMesh mesh);

0 commit comments

Comments
 (0)