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