mirror of
https://github.com/redstrate/Novus.git
synced 2025-04-24 13:07:44 +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_DecalColor;
|
||||
Buffer g_AmbientParam;
|
||||
Buffer g_ShaderTypeParameter;
|
||||
|
||||
Buffer m_planeVertexBuffer;
|
||||
|
||||
|
|
|
@ -16,10 +16,14 @@ struct CameraParameter {
|
|||
glm::vec4 m_LookAtVector;
|
||||
};
|
||||
|
||||
struct JointMatrixArray {
|
||||
struct JointMatrixArrayARR {
|
||||
glm::mat3x4 g_JointMatrixArray[64];
|
||||
};
|
||||
|
||||
struct JointMatrixArrayDawntrail {
|
||||
glm::mat3x4 g_JointMatrixArray[768];
|
||||
};
|
||||
|
||||
struct CameraLight {
|
||||
glm::vec4 m_DiffuseSpecular;
|
||||
glm::vec4 m_Rim;
|
||||
|
@ -95,4 +99,11 @@ struct MaterialParameterDynamic {
|
|||
|
||||
struct AmbientParameters {
|
||||
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++) {
|
||||
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 = {};
|
||||
|
@ -1192,7 +1204,7 @@ GameRenderer::createDescriptorFor(const DrawObject *object, const CachedPipeline
|
|||
auto info = &imageInfo.emplace_back();
|
||||
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;
|
||||
qInfo() << "Requesting image" << name << "at" << j;
|
||||
if (strcmp(name, "g_SamplerGBuffer") == 0) {
|
||||
|
@ -1280,6 +1292,8 @@ GameRenderer::createDescriptorFor(const DrawObject *object, const CachedPipeline
|
|||
useUniformBuffer(g_DecalColor);
|
||||
} else if (strcmp(name, "g_AmbientParam") == 0) {
|
||||
useUniformBuffer(g_AmbientParam);
|
||||
} else if (strcmp(name, "g_ShaderTypeParameter") == 0) {
|
||||
useUniformBuffer(g_ShaderTypeParameter);
|
||||
} else {
|
||||
qInfo() << "Unknown resource:" << name;
|
||||
info->buffer = m_dummyBuffer.buffer;
|
||||
|
|
Loading…
Add table
Reference in a new issue