mirror of
https://github.com/redstrate/Novus.git
synced 2025-04-24 21:07:46 +00:00
Add support for more shader structures as seen in Dawntrail Benchmark
Not sure what these are yet, but stops the renderer from complaining.
This commit is contained in:
parent
7d2b81affd
commit
20b2f0e7b8
3 changed files with 29 additions and 3 deletions
|
@ -92,6 +92,7 @@ private:
|
||||||
Buffer g_MaterialParameterDynamic;
|
Buffer g_MaterialParameterDynamic;
|
||||||
Buffer g_DecalColor;
|
Buffer g_DecalColor;
|
||||||
Buffer g_AmbientParam;
|
Buffer g_AmbientParam;
|
||||||
|
Buffer g_ShaderTypeParameter;
|
||||||
|
|
||||||
Buffer m_planeVertexBuffer;
|
Buffer m_planeVertexBuffer;
|
||||||
|
|
||||||
|
|
|
@ -16,10 +16,14 @@ struct CameraParameter {
|
||||||
glm::vec4 m_LookAtVector;
|
glm::vec4 m_LookAtVector;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct JointMatrixArray {
|
struct JointMatrixArrayARR {
|
||||||
glm::mat3x4 g_JointMatrixArray[64];
|
glm::mat3x4 g_JointMatrixArray[64];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct JointMatrixArrayDawntrail {
|
||||||
|
glm::mat3x4 g_JointMatrixArray[768];
|
||||||
|
};
|
||||||
|
|
||||||
struct CameraLight {
|
struct CameraLight {
|
||||||
glm::vec4 m_DiffuseSpecular;
|
glm::vec4 m_DiffuseSpecular;
|
||||||
glm::vec4 m_Rim;
|
glm::vec4 m_Rim;
|
||||||
|
@ -95,4 +99,11 @@ struct MaterialParameterDynamic {
|
||||||
|
|
||||||
struct AmbientParameters {
|
struct AmbientParameters {
|
||||||
glm::vec4 g_AmbientParam[6];
|
glm::vec4 g_AmbientParam[6];
|
||||||
|
// As seen in Dawntrail characterlegacy.shpk
|
||||||
|
glm::vec4 g_AdditionalAmbientParam[4];
|
||||||
|
};
|
||||||
|
|
||||||
|
// Dawntrail, unknown purpose
|
||||||
|
struct ShaderTypeParameter {
|
||||||
|
glm::vec4 m[2044];
|
||||||
};
|
};
|
|
@ -180,8 +180,20 @@ GameRenderer::GameRenderer(Device &device, GameData *data)
|
||||||
for (int i = 0; i < 6; i++) {
|
for (int i = 0; i < 6; i++) {
|
||||||
ambientParameters.g_AmbientParam[i] = glm::vec4(1.0f);
|
ambientParameters.g_AmbientParam[i] = glm::vec4(1.0f);
|
||||||
}
|
}
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
ambientParameters.g_AdditionalAmbientParam[i] = glm::vec4(1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
m_device.copyToBuffer(g_AmbientParam, &ambientParameters, sizeof(glm::vec4));
|
m_device.copyToBuffer(g_AmbientParam, &ambientParameters, sizeof(AmbientParameters));
|
||||||
|
}
|
||||||
|
|
||||||
|
// shader type parameter
|
||||||
|
if (m_dawntrailMode) {
|
||||||
|
g_ShaderTypeParameter = m_device.createBuffer(sizeof(ShaderTypeParameter), VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT);
|
||||||
|
|
||||||
|
ShaderTypeParameter shaderTypeParameter{};
|
||||||
|
|
||||||
|
m_device.copyToBuffer(g_ShaderTypeParameter, &g_ShaderTypeParameter, sizeof(ShaderTypeParameter));
|
||||||
}
|
}
|
||||||
|
|
||||||
VkSamplerCreateInfo samplerInfo = {};
|
VkSamplerCreateInfo samplerInfo = {};
|
||||||
|
@ -1192,7 +1204,7 @@ GameRenderer::createDescriptorFor(const DrawObject *object, const CachedPipeline
|
||||||
auto info = &imageInfo.emplace_back();
|
auto info = &imageInfo.emplace_back();
|
||||||
descriptorWrite.pImageInfo = info;
|
descriptorWrite.pImageInfo = info;
|
||||||
|
|
||||||
if (binding.stageFlags == VK_SHADER_STAGE_FRAGMENT_BIT && p < pipeline.pixelShader.num_resource_parameters) {
|
if (binding.stageFlags == VK_SHADER_STAGE_FRAGMENT_BIT && p + 1 < pipeline.pixelShader.num_resource_parameters) {
|
||||||
auto name = pipeline.pixelShader.resource_parameters[p].name;
|
auto name = pipeline.pixelShader.resource_parameters[p].name;
|
||||||
qInfo() << "Requesting image" << name << "at" << j;
|
qInfo() << "Requesting image" << name << "at" << j;
|
||||||
if (strcmp(name, "g_SamplerGBuffer") == 0) {
|
if (strcmp(name, "g_SamplerGBuffer") == 0) {
|
||||||
|
@ -1280,6 +1292,8 @@ GameRenderer::createDescriptorFor(const DrawObject *object, const CachedPipeline
|
||||||
useUniformBuffer(g_DecalColor);
|
useUniformBuffer(g_DecalColor);
|
||||||
} else if (strcmp(name, "g_AmbientParam") == 0) {
|
} else if (strcmp(name, "g_AmbientParam") == 0) {
|
||||||
useUniformBuffer(g_AmbientParam);
|
useUniformBuffer(g_AmbientParam);
|
||||||
|
} else if (strcmp(name, "g_ShaderTypeParameter") == 0) {
|
||||||
|
useUniformBuffer(g_ShaderTypeParameter);
|
||||||
} else {
|
} else {
|
||||||
qInfo() << "Unknown resource:" << name;
|
qInfo() << "Unknown resource:" << name;
|
||||||
info->buffer = m_dummyBuffer.buffer;
|
info->buffer = m_dummyBuffer.buffer;
|
||||||
|
|
Loading…
Add table
Reference in a new issue