frog
This commit is contained in:
@@ -48,7 +48,8 @@ void MaterialLoader::import(MaterialImportArgs args, PMaterialAsset asset)
|
||||
Gfx::ODescriptorLayout layout = graphics->createDescriptorLayout(materialName + "Layout");
|
||||
//Shader file needs to conform to the slang standard, which prohibits _
|
||||
materialName.erase(std::remove(materialName.begin(), materialName.end(), '_'), materialName.end());
|
||||
|
||||
materialName.erase(std::remove(materialName.begin(), materialName.end(), '-'), materialName.end());
|
||||
|
||||
uint32 uniformBufferOffset = 0;
|
||||
uint32 bindingCounter = 0; // Uniform buffers are always binding 0
|
||||
int32 uniformBinding = -1;
|
||||
|
||||
@@ -46,6 +46,9 @@ int main()
|
||||
//AssetImporter::importMesh(MeshImportArgs{
|
||||
// .filePath = sourcePath / "old_resources/models/arena.fbx",
|
||||
// });
|
||||
AssetImporter::importMesh(MeshImportArgs{
|
||||
.filePath = sourcePath / "old_resources/models/frog.fbx",
|
||||
});
|
||||
AssetImporter::importMesh(MeshImportArgs{
|
||||
.filePath = sourcePath / "old_resources/models/train.fbx",
|
||||
});
|
||||
|
||||
@@ -57,7 +57,7 @@ struct ShaderPermutation
|
||||
char vertexMeshFile[32];
|
||||
char fragmentFile[32];
|
||||
char vertexDataName[32];
|
||||
char materialName[32];
|
||||
char materialName[64];
|
||||
uint8 hasFragment : 1;
|
||||
uint8 useMeshShading : 1;
|
||||
uint8 hasTaskShader : 1;
|
||||
|
||||
@@ -102,10 +102,10 @@ void VertexData::loadMesh(MeshId id, Array<uint32> loadedIndices, Array<Meshlet>
|
||||
Meshlet& m = loadedMeshlets[currentMesh + i];
|
||||
uint32 vertexOffset = vertexIndices.size();
|
||||
vertexIndices.resize(vertexOffset + m.numVertices);
|
||||
std::memcpy(vertexIndices.data() + vertexOffset, m.uniqueVertices.data(), m.numVertices * sizeof(uint32));
|
||||
std::memcpy(vertexIndices.data() + vertexOffset, m.uniqueVertices, m.numVertices * sizeof(uint32));
|
||||
uint32 primitiveOffset = primitiveIndices.size();
|
||||
primitiveIndices.resize(primitiveOffset + (m.numPrimitives * 3));
|
||||
std::memcpy(primitiveIndices.data() + primitiveOffset, m.primitiveLayout.data(), m.numPrimitives * 3 * sizeof(uint8));
|
||||
std::memcpy(primitiveIndices.data() + primitiveOffset, m.primitiveLayout, m.numPrimitives * 3 * sizeof(uint8));
|
||||
meshlets.add(MeshletDescription{
|
||||
.boundingBox = MeshletAABB(),
|
||||
.vertexCount = m.numVertices,
|
||||
@@ -230,22 +230,6 @@ VertexData::VertexData()
|
||||
{
|
||||
}
|
||||
|
||||
void Meshlet::save(ArchiveBuffer& buffer) const
|
||||
{
|
||||
Serialization::save(buffer, uniqueVertices);
|
||||
Serialization::save(buffer, primitiveLayout);
|
||||
Serialization::save(buffer, numVertices);
|
||||
Serialization::save(buffer, numPrimitives);
|
||||
}
|
||||
|
||||
void Meshlet::load(ArchiveBuffer& buffer)
|
||||
{
|
||||
Serialization::load(buffer, uniqueVertices);
|
||||
Serialization::load(buffer, primitiveLayout);
|
||||
Serialization::load(buffer, numVertices);
|
||||
Serialization::load(buffer, numPrimitives);
|
||||
}
|
||||
|
||||
void Seele::Meshlet::buildFromIndexBuffer(const Array<uint32>& indices, Array<Meshlet>& meshlets)
|
||||
{
|
||||
std::set<uint32> uniqueVertices;
|
||||
|
||||
@@ -24,12 +24,10 @@ struct MeshId
|
||||
};
|
||||
struct Meshlet
|
||||
{
|
||||
StaticArray<uint32, Gfx::numVerticesPerMeshlet> uniqueVertices; // unique vertiex indices in the vertex data
|
||||
StaticArray<uint8, Gfx::numPrimitivesPerMeshlet * 3> primitiveLayout; // indices into the uniqueVertices array, only uint8 needed
|
||||
uint32 uniqueVertices[Gfx::numVerticesPerMeshlet]; // unique vertiex indices in the vertex data
|
||||
uint8 primitiveLayout[Gfx::numPrimitivesPerMeshlet * 3]; // indices into the uniqueVertices array, only uint8 needed
|
||||
uint32 numVertices;
|
||||
uint32 numPrimitives;
|
||||
void save(ArchiveBuffer& buffer) const;
|
||||
void load(ArchiveBuffer& buffer);
|
||||
static void buildFromIndexBuffer(const Array<uint32>& indices, Array<Meshlet>& meshlets);
|
||||
};
|
||||
class VertexData
|
||||
|
||||
@@ -399,7 +399,7 @@ void Graphics::pickPhysicalDevice()
|
||||
{
|
||||
if (std::strcmp(VK_EXT_MESH_SHADER_EXTENSION_NAME, extensionProps[i].extensionName) == 0)
|
||||
{
|
||||
meshShadingEnabled = true;
|
||||
//meshShadingEnabled = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,14 +96,14 @@ namespace Serialization
|
||||
buffer.readBytes(type.data(), length * sizeof(char));
|
||||
}
|
||||
template<typename T>
|
||||
static void save(ArchiveBuffer& buffer, const Array<T>& type) requires (std::is_integral_v<T> || std::is_floating_point_v<T>)
|
||||
static void save(ArchiveBuffer& buffer, const Array<T>& type) requires (std::is_trivially_copyable_v<T>)
|
||||
{
|
||||
uint64 length = type.size();
|
||||
buffer.writeBytes(&length, sizeof(uint64));
|
||||
buffer.writeBytes(type.data(), sizeof(T) * type.size());
|
||||
}
|
||||
template<typename T>
|
||||
static void load(ArchiveBuffer& buffer, Array<T>& type) requires (std::is_integral_v<T> || std::is_floating_point_v<T>)
|
||||
static void load(ArchiveBuffer& buffer, Array<T>& type) requires (std::is_trivially_copyable_v<T>)
|
||||
{
|
||||
uint64 length = 0;
|
||||
buffer.readBytes(&length, sizeof(uint64));
|
||||
@@ -111,12 +111,12 @@ namespace Serialization
|
||||
buffer.readBytes(type.data(), sizeof(T) * type.size());
|
||||
}
|
||||
template<typename T, size_t N>
|
||||
static void save(ArchiveBuffer& buffer, const StaticArray<T, N>& type) requires (std::is_integral_v<T> || std::is_floating_point_v<T>)
|
||||
static void save(ArchiveBuffer& buffer, const StaticArray<T, N>& type) requires (std::is_trivially_copyable_v<T>)
|
||||
{
|
||||
buffer.writeBytes(type.data(), sizeof(T) * N);
|
||||
}
|
||||
template<typename T, size_t N>
|
||||
static void load(ArchiveBuffer& buffer, StaticArray<T, N>& type) requires (std::is_integral_v<T> || std::is_floating_point_v<T>)
|
||||
static void load(ArchiveBuffer& buffer, StaticArray<T, N>& type) requires (std::is_trivially_copyable_v<T>)
|
||||
{
|
||||
buffer.readBytes(type.data(), sizeof(T) * N);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user