Got a bit further

This commit is contained in:
Dynamitos
2023-11-05 11:47:22 +01:00
parent 77eb92838c
commit d35f7acddc
11 changed files with 32 additions and 20 deletions
+15
View File
@@ -0,0 +1,15 @@
{
"name": "TerrainMaterial",
"params": {
},
"code": [
{
"exp": "BRDF",
"profile": "BlinnPhong",
"values": {
"baseColor": "float3(0, 1, 0)",
"normal": "float3(0, 0, 1)"
}
}
]
}
+1 -1
View File
@@ -17,7 +17,7 @@ MaterialLoader::MaterialLoader(Gfx::PGraphics graphics)
{ {
OMaterialAsset placeholderAsset = new MaterialAsset(); OMaterialAsset placeholderAsset = new MaterialAsset();
import(MaterialImportArgs{ import(MaterialImportArgs{
.filePath = std::filesystem::absolute("./shaders/Placeholder.asset"), .filePath = std::filesystem::absolute("./shaders/Placeholder.json"),
.importPath = "", .importPath = "",
}, placeholderAsset); }, placeholderAsset);
AssetRegistry::get().assetRoot->materials[""] = std::move(placeholderAsset); AssetRegistry::get().assetRoot->materials[""] = std::move(placeholderAsset);
+1
View File
@@ -257,6 +257,7 @@ void MeshLoader::loadGlobalMeshes(const aiScene* scene, const Array<PMaterialAss
globalMeshes[meshIndex]->id = id; globalMeshes[meshIndex]->id = id;
globalMeshes[meshIndex]->referencedMaterial = materials[mesh->mMaterialIndex]->getMaterial()->instantiate(); globalMeshes[meshIndex]->referencedMaterial = materials[mesh->mMaterialIndex]->getMaterial()->instantiate();
globalMeshes[meshIndex]->meshlets = std::move(meshlets); globalMeshes[meshIndex]->meshlets = std::move(meshlets);
globalMeshes[meshIndex]->vertexCount = mesh->mNumVertices;
} }
} }
+3
View File
@@ -11,6 +11,7 @@
#include "Asset/MaterialLoader.h" #include "Asset/MaterialLoader.h"
#include "Asset/FontLoader.h" #include "Asset/FontLoader.h"
#include "Asset/AssetImporter.h" #include "Asset/AssetImporter.h"
#include "Graphics/StaticMeshVertexData.h"
using namespace Seele; using namespace Seele;
using namespace Seele::Editor; using namespace Seele::Editor;
@@ -29,6 +30,8 @@ int main()
GraphicsInitializer initializer; GraphicsInitializer initializer;
graphics->init(initializer); graphics->init(initializer);
StaticMeshVertexData* vd = StaticMeshVertexData::getInstance();
vd->init(graphics);
PWindowManager windowManager = new WindowManager(); PWindowManager windowManager = new WindowManager();
AssetRegistry::init(std::string("C:/Users/Dynamitos/TrackClear/Assets"), graphics); AssetRegistry::init(std::string("C:/Users/Dynamitos/TrackClear/Assets"), graphics);
AssetImporter::init(graphics, AssetRegistry::getInstance()); AssetImporter::init(graphics, AssetRegistry::getInstance());
+1 -1
View File
@@ -25,7 +25,7 @@ struct GraphicsInitializer
, engineName("SeeleEngine") , engineName("SeeleEngine")
, windowLayoutFile(nullptr) , windowLayoutFile(nullptr)
, layers{"VK_LAYER_KHRONOS_validation"} , layers{"VK_LAYER_KHRONOS_validation"}
, instanceExtensions{"VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME"} , instanceExtensions{}
, deviceExtensions{"VK_KHR_swapchain"} , deviceExtensions{"VK_KHR_swapchain"}
, windowHandle(nullptr) , windowHandle(nullptr)
{ {
+5 -5
View File
@@ -24,7 +24,7 @@ StaticMeshVertexData* StaticMeshVertexData::getInstance()
void StaticMeshVertexData::loadPositions(MeshId id, const Array<Vector>& data) void StaticMeshVertexData::loadPositions(MeshId id, const Array<Vector>& data)
{ {
uint64 offset = meshOffsets[id]; uint64 offset = meshOffsets[id];
assert(offset + data.size() < head); assert(offset + data.size() <= head);
std::memcpy(positionData.data() + offset, data.data(), data.size() * sizeof(Vector)); std::memcpy(positionData.data() + offset, data.data(), data.size() * sizeof(Vector));
dirty = true; dirty = true;
} }
@@ -32,7 +32,7 @@ void StaticMeshVertexData::loadPositions(MeshId id, const Array<Vector>& data)
void StaticMeshVertexData::loadTexCoords(MeshId id, const Array<Vector2>& data) void StaticMeshVertexData::loadTexCoords(MeshId id, const Array<Vector2>& data)
{ {
uint64 offset = meshOffsets[id]; uint64 offset = meshOffsets[id];
assert(offset + data.size() < head); assert(offset + data.size() <= head);
std::memcpy(texCoordsData.data() + offset, data.data(), data.size() * sizeof(Vector2)); std::memcpy(texCoordsData.data() + offset, data.data(), data.size() * sizeof(Vector2));
dirty = true; dirty = true;
} }
@@ -40,7 +40,7 @@ void StaticMeshVertexData::loadTexCoords(MeshId id, const Array<Vector2>& data)
void StaticMeshVertexData::loadNormals(MeshId id, const Array<Vector>& data) void StaticMeshVertexData::loadNormals(MeshId id, const Array<Vector>& data)
{ {
uint64 offset = meshOffsets[id]; uint64 offset = meshOffsets[id];
assert(offset + data.size() < head); assert(offset + data.size() <= head);
std::memcpy(normalData.data() + offset, data.data(), data.size() * sizeof(Vector)); std::memcpy(normalData.data() + offset, data.data(), data.size() * sizeof(Vector));
dirty = true; dirty = true;
} }
@@ -48,7 +48,7 @@ void StaticMeshVertexData::loadNormals(MeshId id, const Array<Vector>& data)
void StaticMeshVertexData::loadTangents(MeshId id, const Array<Vector>& data) void StaticMeshVertexData::loadTangents(MeshId id, const Array<Vector>& data)
{ {
uint64 offset = meshOffsets[id]; uint64 offset = meshOffsets[id];
assert(offset + data.size() < head); assert(offset + data.size() <= head);
std::memcpy(tangentData.data() + offset, data.data(), data.size() * sizeof(Vector)); std::memcpy(tangentData.data() + offset, data.data(), data.size() * sizeof(Vector));
dirty = true; dirty = true;
} }
@@ -56,7 +56,7 @@ void StaticMeshVertexData::loadTangents(MeshId id, const Array<Vector>& data)
void StaticMeshVertexData::loadBiTangents(MeshId id, const Array<Vector>& data) void StaticMeshVertexData::loadBiTangents(MeshId id, const Array<Vector>& data)
{ {
uint64 offset = meshOffsets[id]; uint64 offset = meshOffsets[id];
assert(offset + data.size() < head); assert(offset + data.size() <= head);
std::memcpy(biTangentData.data() + offset, data.data(), data.size() * sizeof(Vector)); std::memcpy(biTangentData.data() + offset, data.data(), data.size() * sizeof(Vector));
dirty = true; dirty = true;
} }
+1 -1
View File
@@ -392,7 +392,7 @@ void* ShaderBuffer::lock(bool writeOnly)
{ {
return dedicatedStagingBuffer->getMappedPointer(); return dedicatedStagingBuffer->getMappedPointer();
} }
return ShaderBuffer::lock(writeOnly); return Vulkan::Buffer::lock(writeOnly);
} }
void ShaderBuffer::unlock() void ShaderBuffer::unlock()
+3 -5
View File
@@ -445,7 +445,7 @@ void Graphics::pickPhysicalDevice()
{ {
uint32 currentRating = 0; uint32 currentRating = 0;
vkGetPhysicalDeviceProperties(dev, &props); vkGetPhysicalDeviceProperties(dev, &props);
vkGetPhysicalDeviceFeatures2(dev, &features); vkGetPhysicalDeviceFeatures(dev, &features);
if (props.deviceType == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU) if (props.deviceType == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU)
{ {
std::cout << "found dedicated gpu " << props.deviceName << std::endl; std::cout << "found dedicated gpu " << props.deviceName << std::endl;
@@ -465,7 +465,7 @@ void Graphics::pickPhysicalDevice()
} }
physicalDevice = bestDevice; physicalDevice = bestDevice;
vkGetPhysicalDeviceProperties(physicalDevice, &props); vkGetPhysicalDeviceProperties(physicalDevice, &props);
vkGetPhysicalDeviceFeatures2(physicalDevice, &features); vkGetPhysicalDeviceFeatures(physicalDevice, &features);
} }
void Graphics::createDevice(GraphicsInitializer initializer) void Graphics::createDevice(GraphicsInitializer initializer)
@@ -565,7 +565,7 @@ void Graphics::createDevice(GraphicsInitializer initializer)
VkDeviceCreateInfo deviceInfo = init::DeviceCreateInfo( VkDeviceCreateInfo deviceInfo = init::DeviceCreateInfo(
queueInfos.data(), queueInfos.data(),
(uint32)queueInfos.size(), (uint32)queueInfos.size(),
&features); nullptr);
VkPhysicalDeviceDescriptorIndexingFeatures descriptorIndexing = { VkPhysicalDeviceDescriptorIndexingFeatures descriptorIndexing = {
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
@@ -594,8 +594,6 @@ void Graphics::createDevice(GraphicsInitializer initializer)
{ {
descriptorIndexing.pNext = &enabledMeshShaderFeatures; descriptorIndexing.pNext = &enabledMeshShaderFeatures;
initializer.deviceExtensions.add("VK_EXT_mesh_shader"); initializer.deviceExtensions.add("VK_EXT_mesh_shader");
initializer.deviceExtensions.add("VK_KHR_SPIRV_1_4_EXTENSION_NAME");
initializer.deviceExtensions.add("VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME");
} }
deviceInfo.enabledExtensionCount = (uint32)initializer.deviceExtensions.size(); deviceInfo.enabledExtensionCount = (uint32)initializer.deviceExtensions.size();
deviceInfo.ppEnabledExtensionNames = initializer.deviceExtensions.data(); deviceInfo.ppEnabledExtensionNames = initializer.deviceExtensions.data();
+1 -1
View File
@@ -99,7 +99,7 @@ protected:
thread_local static OCommandBufferManager transferCommands; thread_local static OCommandBufferManager transferCommands;
thread_local static OCommandBufferManager dedicatedTransferCommands; thread_local static OCommandBufferManager dedicatedTransferCommands;
VkPhysicalDeviceProperties props; VkPhysicalDeviceProperties props;
VkPhysicalDeviceFeatures2 features; VkPhysicalDeviceFeatures features;
VkDebugReportCallbackEXT callback; VkDebugReportCallbackEXT callback;
std::mutex viewportLock; std::mutex viewportLock;
Array<PViewport> viewports; Array<PViewport> viewports;
-5
View File
@@ -51,11 +51,6 @@ VkDeviceCreateInfo DeviceCreateInfo(
uint32_t queueCount, uint32_t queueCount,
VkPhysicalDeviceFeatures *features); VkPhysicalDeviceFeatures *features);
VkDeviceCreateInfo DeviceCreateInfo(
VkDeviceQueueCreateInfo* queueInfos,
uint32_t queueCount,
VkPhysicalDeviceFeatures2* features);
VkSwapchainCreateInfoKHR SwapchainCreateInfo( VkSwapchainCreateInfoKHR SwapchainCreateInfo(
VkSurfaceKHR surface, VkSurfaceKHR surface,
uint32_t minImageCount, uint32_t minImageCount,
+1 -1
View File
@@ -30,7 +30,7 @@ MaterialInstance::MaterialInstance(uint64 id,
parameters.reserve(params.size()); parameters.reserve(params.size());
for (int i = 0; i < params.size(); ++i) for (int i = 0; i < params.size(); ++i)
{ {
Serialization::save(buffer, params[i]); Serialization::save(buffer, expressions[params[i]]);
buffer.rewind(); buffer.rewind();
OShaderParameter param; OShaderParameter param;
Serialization::load(buffer, param); Serialization::load(buffer, param);