mirror of
https://github.com/redstrate/Novus.git
synced 2025-04-20 11:47:45 +00:00
Resolve more warnings
This commit is contained in:
parent
a812b37413
commit
f713f5c150
17 changed files with 91 additions and 75 deletions
|
@ -140,11 +140,6 @@ SingleGearView::SingleGearView(GameData *data, FileCache &cache, QWidget *parent
|
|||
importButton->setIcon(QIcon::fromTheme(QStringLiteral("document-import")));
|
||||
connect(importButton, &QPushButton::clicked, this, [this](bool) {
|
||||
if (currentGear.has_value()) {
|
||||
// TODO: deduplicate
|
||||
const auto sanitizeMdlPath = [](const QString &mdlPath) -> QString {
|
||||
return QString(mdlPath).section(QLatin1Char('/'), -1).remove(QStringLiteral(".mdl"));
|
||||
};
|
||||
|
||||
KConfig config(QStringLiteral("novusrc"));
|
||||
KConfigGroup game = config.group(QStringLiteral("Armoury"));
|
||||
QString sourceDirectory = game.readEntry(QStringLiteral("SourcesOutputDirectory"));
|
||||
|
|
2
extern/libphysis
vendored
2
extern/libphysis
vendored
|
@ -1 +1 @@
|
|||
Subproject commit dd9b685b32965501651a9d3e61219857940ab9bf
|
||||
Subproject commit 819501e8a03efab1284c79f4eca7d9229fb4cfa7
|
|
@ -46,7 +46,7 @@ MapListWidget::MapListWidget(GameData *data, QWidget *parent)
|
|||
for (uint32_t i = 0; i < exd.row_count; i++) {
|
||||
const char *id = exd.row_data[i].column_data[6].string._0;
|
||||
|
||||
int territoryTypeKey = exd.row_data[i].column_data[15].u_int16._0;
|
||||
const uint16_t territoryTypeKey = exd.row_data[i].column_data[15].u_int16._0;
|
||||
if (territoryTypeKey > 0 && territoryTypeKey < territoryExd.row_count) {
|
||||
const char *bg = territoryExd.row_data[territoryTypeKey].column_data[1].string._0;
|
||||
|
||||
|
|
|
@ -103,7 +103,7 @@ void MainWindow::setupFileMenu(QMenu *menu)
|
|||
m_detailsLayout->addRow(i18n("LOD #:"), new QLabel(QString::number(mdl.num_lod)));
|
||||
|
||||
uint32_t triangleCount = 0;
|
||||
for (int i = 0; i < mdl.lods[0].num_parts; i++) {
|
||||
for (uint32_t i = 0; i < mdl.lods[0].num_parts; i++) {
|
||||
triangleCount += mdl.lods[0].parts[i].num_indices / 3;
|
||||
}
|
||||
|
||||
|
|
|
@ -131,7 +131,7 @@ void EXDPart::loadSheet(const QString &name, physis_Buffer buffer, const QString
|
|||
}
|
||||
|
||||
// TODO: index could be different
|
||||
if (z >= 0 && z < definitionList.size()) {
|
||||
if (z < definitionList.size()) {
|
||||
columnType = definitionList[z].toObject()[QLatin1String("name")].toString();
|
||||
}
|
||||
|
||||
|
@ -147,7 +147,7 @@ void EXDPart::loadSheet(const QString &name, physis_Buffer buffer, const QString
|
|||
|
||||
auto [columnString, columnRow] = getColumnData(columnData);
|
||||
|
||||
if (z >= 0 && z < definitionList.size()) {
|
||||
if (z < definitionList.size()) {
|
||||
auto definition = definitionList[z].toObject();
|
||||
if (definition.contains(QLatin1String("converter"))
|
||||
&& definition[QLatin1String("converter")].toObject()[QLatin1String("type")].toString() == QLatin1String("link")) {
|
||||
|
|
|
@ -19,7 +19,7 @@ void exportModel(const QString &name, const physis_MDL &model, const physis_Skel
|
|||
// TODO: just write the code better! dummy!!
|
||||
size_t required_nodes = 1;
|
||||
required_nodes += model.num_affected_bones;
|
||||
for (int i = 0; i < lod.num_parts; i++) {
|
||||
for (uint32_t i = 0; i < lod.num_parts; i++) {
|
||||
required_nodes += lod.parts[i].num_submeshes;
|
||||
}
|
||||
|
||||
|
@ -247,7 +247,7 @@ void exportModel(const QString &name, const physis_MDL &model, const physis_Skel
|
|||
vertexBufferView.target = TINYGLTF_TARGET_ARRAY_BUFFER;
|
||||
|
||||
std::vector<Vertex> newVertices;
|
||||
for (int a = 0; a < lod.parts[i].num_vertices; a++) {
|
||||
for (uint32_t a = 0; a < lod.parts[i].num_vertices; a++) {
|
||||
Vertex vertex = lod.parts[i].vertices[a];
|
||||
|
||||
// Account for additional root bone
|
||||
|
|
|
@ -49,8 +49,8 @@ void importModel(physis_MDL &existingModel, const QString &filename)
|
|||
const QStringList lodPartNumber = parts[2].split(QLatin1Char('.'));
|
||||
|
||||
const int lodNumber = 0;
|
||||
const int partNumber = lodPartNumber[0].toInt();
|
||||
const int submeshNumber = lodPartNumber[1].toInt();
|
||||
const uint32_t partNumber = lodPartNumber[0].toInt();
|
||||
const uint32_t submeshNumber = lodPartNumber[1].toInt();
|
||||
|
||||
qInfo() << "- Part:" << partNumber;
|
||||
qInfo() << "- Submesh:" << submeshNumber;
|
||||
|
@ -177,7 +177,7 @@ void importModel(physis_MDL &existingModel, const QString &filename)
|
|||
auto joints = model.skins[0].joints;
|
||||
|
||||
int realBoneId = 0;
|
||||
for (int j = 0; j < existingModel.num_affected_bones; j++) {
|
||||
for (uint32_t j = 0; j < existingModel.num_affected_bones; j++) {
|
||||
if (strcmp(existingModel.affected_bone_names[j], model.nodes[joints[originalBoneId]].name.c_str()) == 0) {
|
||||
realBoneId = j;
|
||||
break;
|
||||
|
@ -227,7 +227,8 @@ void importModel(physis_MDL &existingModel, const QString &filename)
|
|||
}
|
||||
}
|
||||
|
||||
newSubmeshes.push_back({.index_count = static_cast<uint32_t>(submesh.indices.size()), .index_offset = static_cast<uint32_t>(index_offset)});
|
||||
newSubmeshes.push_back(
|
||||
{.submesh_index = 0, .index_count = static_cast<uint32_t>(submesh.indices.size()), .index_offset = static_cast<uint32_t>(index_offset)});
|
||||
|
||||
index_offset += submesh.indices.size();
|
||||
vertex_offset += submesh.vertices.size();
|
||||
|
|
|
@ -141,6 +141,8 @@ bool MDLPart::event(QEvent *event)
|
|||
case QEvent::KeyRelease:
|
||||
vkWindow->event(event);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return QWidget::event(event);
|
||||
}
|
||||
|
@ -229,14 +231,14 @@ RenderMaterial MDLPart::createMaterial(const physis_Material &material)
|
|||
std::vector<float> buffer(newMaterial.shaderPackage.material_parameters_size / sizeof(float));
|
||||
|
||||
// copy the material data
|
||||
for (int i = 0; i < newMaterial.shaderPackage.num_material_parameters; i++) {
|
||||
for (uint32_t i = 0; i < newMaterial.shaderPackage.num_material_parameters; i++) {
|
||||
auto param = newMaterial.shaderPackage.material_parameters[i];
|
||||
|
||||
for (int j = 0; j < newMaterial.mat.num_constants; j++) {
|
||||
for (uint32_t j = 0; j < newMaterial.mat.num_constants; j++) {
|
||||
auto constant = newMaterial.mat.constants[j];
|
||||
|
||||
if (constant.id == param.id) {
|
||||
for (int z = 0; z < constant.num_values; z++) {
|
||||
for (uint32_t z = 0; z < constant.num_values; z++) {
|
||||
buffer[(param.byte_offset / sizeof(float)) + z] = constant.values[z];
|
||||
}
|
||||
}
|
||||
|
@ -383,6 +385,7 @@ void MDLPart::removeModel(const physis_MDL &mdl)
|
|||
|
||||
void MDLPart::setWireframe(bool wireframe)
|
||||
{
|
||||
Q_UNUSED(wireframe)
|
||||
// renderer->wireframe = wireframe;
|
||||
}
|
||||
|
||||
|
|
|
@ -91,7 +91,7 @@ void MtrlPart::rebuild()
|
|||
uint32_t value = 0;
|
||||
|
||||
bool found = false;
|
||||
for (int j = 0; j < m_material.num_shader_keys; j++) {
|
||||
for (uint32_t j = 0; j < m_material.num_shader_keys; j++) {
|
||||
auto shaderKey = m_material.shader_keys[j];
|
||||
|
||||
if (shaderKey.category == materialKey.id) {
|
||||
|
@ -124,7 +124,7 @@ void MtrlPart::rebuild()
|
|||
child->widget()->deleteLater();
|
||||
}
|
||||
|
||||
for (int i = 0; i < m_material.num_samplers; i++) {
|
||||
for (uint32_t i = 0; i < m_material.num_samplers; i++) {
|
||||
const auto sampler = m_material.samplers[i];
|
||||
|
||||
QString name;
|
||||
|
@ -207,7 +207,7 @@ void MtrlPart::rebuild()
|
|||
child->widget()->deleteLater();
|
||||
}
|
||||
|
||||
for (int i = 0; i < m_material.num_constants; i++) {
|
||||
for (uint32_t i = 0; i < m_material.num_constants; i++) {
|
||||
const auto constant = m_material.constants[i];
|
||||
|
||||
QString name = i18n("Unknown %1", QString::number(constant.id));
|
||||
|
|
|
@ -50,8 +50,9 @@ void SHPKPart::load(physis_Buffer buffer)
|
|||
shaderTextEdit->setText(QLatin1String(glsl.compile().c_str()));
|
||||
|
||||
pageTabWidget->addTab(shaderTextEdit, name);
|
||||
} catch (std::exception exception) {
|
||||
} catch (const std::exception &exception) {
|
||||
// TODO: display the error
|
||||
Q_UNUSED(exception)
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ public:
|
|||
virtual void resize() = 0;
|
||||
|
||||
/// Render a frame into @p commandBuffer. @p currentFrame is the same value as SwapChain::currentFrame for convenience.
|
||||
virtual void render(VkCommandBuffer commandBuffer, uint32_t currentFrame, Camera &camera, Scene &scene, const std::vector<DrawObject> &models) = 0;
|
||||
virtual void render(VkCommandBuffer commandBuffer, Camera &camera, Scene &scene, const std::vector<DrawObject> &models) = 0;
|
||||
|
||||
/// The final composite texture that is drawn into with render()
|
||||
virtual Texture &getCompositeTexture() = 0;
|
||||
|
|
|
@ -31,7 +31,7 @@ public:
|
|||
|
||||
void resize() override;
|
||||
|
||||
void render(VkCommandBuffer commandBuffer, uint32_t currentFrame, Camera &camera, Scene &scene, const std::vector<DrawObject> &models) override;
|
||||
void render(VkCommandBuffer commandBuffer, Camera &camera, Scene &scene, const std::vector<DrawObject> &models) override;
|
||||
|
||||
Texture &getCompositeTexture() override;
|
||||
|
||||
|
@ -57,8 +57,8 @@ private:
|
|||
physis_Shader vertexShader, pixelShader;
|
||||
};
|
||||
|
||||
void beginPass(uint32_t imageIndex, VkCommandBuffer commandBuffer, std::string_view passName);
|
||||
void endPass(VkCommandBuffer commandBuffer, std::string_view passName);
|
||||
void beginPass(VkCommandBuffer commandBuffer, std::string_view passName);
|
||||
void endPass(VkCommandBuffer commandBuffer);
|
||||
CachedPipeline &bindPipeline(VkCommandBuffer commandBuffer,
|
||||
std::string_view passName,
|
||||
physis_Shader &vertexShader,
|
||||
|
|
|
@ -30,7 +30,7 @@ public:
|
|||
|
||||
void resize() override;
|
||||
|
||||
void render(VkCommandBuffer commandBuffer, uint32_t currentFrame, Camera &camera, Scene &scene, const std::vector<DrawObject> &models) override;
|
||||
void render(VkCommandBuffer commandBuffer, Camera &camera, Scene &scene, const std::vector<DrawObject> &models) override;
|
||||
|
||||
Texture &getCompositeTexture() override;
|
||||
|
||||
|
|
|
@ -96,13 +96,13 @@ GameRenderer::GameRenderer(Device &device, GameData *data)
|
|||
instanceParameter.g_InstanceParameter.m_MulColor = glm::vec4(1.0f);
|
||||
instanceParameter.g_InstanceParameter.m_EnvParameter = glm::vec4(1.0f);
|
||||
|
||||
const float wetnessMin = 0.0f;
|
||||
/*const float wetnessMin = 0.0f;
|
||||
const float wetnessMax = 1.0f;
|
||||
const float maybeWetness = 0.0f;
|
||||
|
||||
// instanceParameter.g_InstanceParameter.m_Wetness = {maybeWetness, 2.0f, wetnessMin, wetnessMax};
|
||||
// instanceParameter.g_InstanceParameter.m_CameraLight.m_DiffuseSpecular = glm::vec4(1.0f);
|
||||
// instanceParameter.g_InstanceParameter.m_CameraLight.m_Rim = glm::vec4(1.0f);
|
||||
instanceParameter.g_InstanceParameter.m_Wetness = {maybeWetness, 2.0f, wetnessMin, wetnessMax};
|
||||
instanceParameter.g_InstanceParameter.m_CameraLight.m_DiffuseSpecular = glm::vec4(1.0f);
|
||||
instanceParameter.g_InstanceParameter.m_CameraLight.m_Rim = glm::vec4(1.0f);*/
|
||||
|
||||
m_device.copyToBuffer(g_InstanceParameter, &instanceParameter, sizeof(InstanceParameter));
|
||||
}
|
||||
|
@ -222,7 +222,7 @@ GameRenderer::GameRenderer(Device &device, GameData *data)
|
|||
|
||||
ShaderTypeParameter shaderTypeParameter{};
|
||||
|
||||
m_device.copyToBuffer(g_ShaderTypeParameter, &g_ShaderTypeParameter, sizeof(ShaderTypeParameter));
|
||||
m_device.copyToBuffer(g_ShaderTypeParameter, &shaderTypeParameter, sizeof(ShaderTypeParameter));
|
||||
}
|
||||
|
||||
VkSamplerCreateInfo samplerInfo = {};
|
||||
|
@ -249,8 +249,10 @@ GameRenderer::GameRenderer(Device &device, GameData *data)
|
|||
createImageResources();
|
||||
}
|
||||
|
||||
void GameRenderer::render(VkCommandBuffer commandBuffer, uint32_t imageIndex, Camera &camera, Scene &scene, const std::vector<DrawObject> &models)
|
||||
void GameRenderer::render(VkCommandBuffer commandBuffer, Camera &camera, Scene &scene, const std::vector<DrawObject> &models)
|
||||
{
|
||||
Q_UNUSED(scene)
|
||||
|
||||
// TODO: this shouldn't be here
|
||||
CameraParameter cameraParameter{};
|
||||
|
||||
|
@ -272,10 +274,10 @@ void GameRenderer::render(VkCommandBuffer commandBuffer, uint32_t imageIndex, Ca
|
|||
m_device.copyToBuffer(g_CameraParameter, &cameraParameter, sizeof(CameraParameter));
|
||||
|
||||
int i = 0;
|
||||
for (const auto pass : passes) {
|
||||
for (const auto &pass : passes) {
|
||||
// hardcoded to the known pass for now
|
||||
if (pass == "PASS_G_OPAQUE" || pass == "PASS_Z_OPAQUE") {
|
||||
beginPass(imageIndex, commandBuffer, pass);
|
||||
beginPass(commandBuffer, pass);
|
||||
|
||||
for (auto &model : models) {
|
||||
VkDebugUtilsLabelEXT labelExt{};
|
||||
|
@ -308,7 +310,7 @@ void GameRenderer::render(VkCommandBuffer commandBuffer, uint32_t imageIndex, Ca
|
|||
for (const auto &part : model.parts) {
|
||||
RenderMaterial renderMaterial = model.materials[part.materialIndex];
|
||||
|
||||
if (part.materialIndex + 1 > model.materials.size()) {
|
||||
if (static_cast<size_t>(part.materialIndex + 1) > model.materials.size()) {
|
||||
renderMaterial = model.materials[0]; // TODO: better fallback
|
||||
}
|
||||
|
||||
|
@ -354,7 +356,7 @@ void GameRenderer::render(VkCommandBuffer commandBuffer, uint32_t imageIndex, Ca
|
|||
auto id = renderMaterial.shaderPackage.material_keys[j].id;
|
||||
|
||||
bool found = false;
|
||||
for (int z = 0; z < renderMaterial.mat.num_shader_keys; z++) {
|
||||
for (uint32_t z = 0; z < renderMaterial.mat.num_shader_keys; z++) {
|
||||
if (renderMaterial.mat.shader_keys[z].category == id) {
|
||||
materialKeys.push_back(renderMaterial.mat.shader_keys[z].value);
|
||||
found = true;
|
||||
|
@ -363,7 +365,6 @@ void GameRenderer::render(VkCommandBuffer commandBuffer, uint32_t imageIndex, Ca
|
|||
|
||||
// Fall back to default if needed
|
||||
if (!found) {
|
||||
auto value = renderMaterial.shaderPackage.material_keys[j].default_value;
|
||||
materialKeys.push_back(renderMaterial.shaderPackage.material_keys[j].default_value);
|
||||
}
|
||||
}
|
||||
|
@ -409,14 +410,14 @@ void GameRenderer::render(VkCommandBuffer commandBuffer, uint32_t imageIndex, Ca
|
|||
m_device.endDebugMarker(commandBuffer);
|
||||
}
|
||||
|
||||
endPass(commandBuffer, pass);
|
||||
endPass(commandBuffer);
|
||||
|
||||
m_device.transitionTexture(commandBuffer, m_depthBuffer, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
|
||||
} else if (pass == "PASS_LIGHTING_OPAQUE") {
|
||||
m_device.transitionTexture(commandBuffer, m_normalGBuffer, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
|
||||
|
||||
// first we need to generate the view positions with createviewpositions
|
||||
beginPass(imageIndex, commandBuffer, "PASS_LIGHTING_OPAQUE_VIEWPOSITION");
|
||||
beginPass(commandBuffer, "PASS_LIGHTING_OPAQUE_VIEWPOSITION");
|
||||
{
|
||||
std::vector<uint32_t> systemKeys = {};
|
||||
if (!m_dawntrailMode) {
|
||||
|
@ -461,11 +462,11 @@ void GameRenderer::render(VkCommandBuffer commandBuffer, uint32_t imageIndex, Ca
|
|||
vkCmdDraw(commandBuffer, 6, 1, 0, 0);
|
||||
}
|
||||
}
|
||||
endPass(commandBuffer, pass);
|
||||
endPass(commandBuffer);
|
||||
|
||||
m_device.transitionTexture(commandBuffer, m_viewPositionBuffer, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
|
||||
|
||||
beginPass(imageIndex, commandBuffer, pass);
|
||||
beginPass(commandBuffer, pass);
|
||||
// then run the directionallighting shader
|
||||
{
|
||||
std::vector<uint32_t> systemKeys = {};
|
||||
|
@ -516,7 +517,7 @@ void GameRenderer::render(VkCommandBuffer commandBuffer, uint32_t imageIndex, Ca
|
|||
vkCmdDraw(commandBuffer, 6, 1, 0, 0);
|
||||
}
|
||||
}
|
||||
endPass(commandBuffer, pass);
|
||||
endPass(commandBuffer);
|
||||
|
||||
m_device.transitionTexture(commandBuffer, m_lightBuffer, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
|
||||
m_device.transitionTexture(commandBuffer,
|
||||
|
@ -524,13 +525,13 @@ void GameRenderer::render(VkCommandBuffer commandBuffer, uint32_t imageIndex, Ca
|
|||
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
|
||||
VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
|
||||
} else if (pass == "PASS_COMPOSITE_SEMITRANSPARENCY") {
|
||||
beginPass(imageIndex, commandBuffer, pass);
|
||||
beginPass(commandBuffer, pass);
|
||||
|
||||
for (auto &model : models) {
|
||||
for (const auto &part : model.parts) {
|
||||
RenderMaterial renderMaterial = model.materials[part.materialIndex];
|
||||
|
||||
if (part.materialIndex + 1 > model.materials.size()) {
|
||||
if (static_cast<size_t>(part.materialIndex + 1) > model.materials.size()) {
|
||||
renderMaterial = model.materials[0]; // TODO: better fallback
|
||||
}
|
||||
|
||||
|
@ -575,7 +576,7 @@ void GameRenderer::render(VkCommandBuffer commandBuffer, uint32_t imageIndex, Ca
|
|||
auto id = renderMaterial.shaderPackage.material_keys[j].id;
|
||||
|
||||
bool found = false;
|
||||
for (int z = 0; z < renderMaterial.mat.num_shader_keys; z++) {
|
||||
for (uint32_t z = 0; z < renderMaterial.mat.num_shader_keys; z++) {
|
||||
if (renderMaterial.mat.shader_keys[z].category == id) {
|
||||
materialKeys.push_back(renderMaterial.mat.shader_keys[z].value);
|
||||
found = true;
|
||||
|
@ -584,7 +585,6 @@ void GameRenderer::render(VkCommandBuffer commandBuffer, uint32_t imageIndex, Ca
|
|||
|
||||
// Fall back to default if needed
|
||||
if (!found) {
|
||||
auto value = renderMaterial.shaderPackage.material_keys[j].default_value;
|
||||
materialKeys.push_back(renderMaterial.shaderPackage.material_keys[j].default_value);
|
||||
}
|
||||
}
|
||||
|
@ -628,7 +628,7 @@ void GameRenderer::render(VkCommandBuffer commandBuffer, uint32_t imageIndex, Ca
|
|||
}
|
||||
}
|
||||
|
||||
endPass(commandBuffer, pass);
|
||||
endPass(commandBuffer);
|
||||
|
||||
m_device.transitionTexture(commandBuffer, m_compositeBuffer, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
|
||||
}
|
||||
|
@ -647,14 +647,15 @@ void GameRenderer::resize()
|
|||
createImageResources();
|
||||
}
|
||||
|
||||
void GameRenderer::beginPass(uint32_t imageIndex, VkCommandBuffer commandBuffer, const std::string_view passName)
|
||||
void GameRenderer::beginPass(VkCommandBuffer commandBuffer, const std::string_view passName)
|
||||
{
|
||||
VkDebugUtilsLabelEXT labelExt{};
|
||||
labelExt.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT;
|
||||
labelExt.pLabelName = passName.data();
|
||||
m_device.beginDebugMarker(commandBuffer, labelExt);
|
||||
|
||||
VkRenderingInfo renderingInfo{VK_STRUCTURE_TYPE_RENDERING_INFO};
|
||||
VkRenderingInfo renderingInfo{};
|
||||
renderingInfo.sType = VK_STRUCTURE_TYPE_RENDERING_INFO;
|
||||
renderingInfo.renderArea.extent = m_device.swapChain->extent;
|
||||
|
||||
std::vector<VkRenderingAttachmentInfo> colorAttachments;
|
||||
|
@ -665,7 +666,8 @@ void GameRenderer::beginPass(uint32_t imageIndex, VkCommandBuffer commandBuffer,
|
|||
|
||||
// normals, it seems like
|
||||
{
|
||||
VkRenderingAttachmentInfo attachmentInfo{VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO};
|
||||
VkRenderingAttachmentInfo attachmentInfo{};
|
||||
attachmentInfo.sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO;
|
||||
attachmentInfo.imageView = m_normalGBuffer.imageView;
|
||||
attachmentInfo.imageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; // VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
|
||||
attachmentInfo.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
|
||||
|
@ -683,7 +685,8 @@ void GameRenderer::beginPass(uint32_t imageIndex, VkCommandBuffer commandBuffer,
|
|||
|
||||
// depth
|
||||
{
|
||||
VkRenderingAttachmentInfo attachmentInfo{VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO};
|
||||
VkRenderingAttachmentInfo attachmentInfo{};
|
||||
attachmentInfo.sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO;
|
||||
attachmentInfo.imageView = m_depthBuffer.imageView;
|
||||
attachmentInfo.imageLayout = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL;
|
||||
attachmentInfo.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
|
||||
|
@ -697,7 +700,8 @@ void GameRenderer::beginPass(uint32_t imageIndex, VkCommandBuffer commandBuffer,
|
|||
|
||||
// diffuse
|
||||
{
|
||||
VkRenderingAttachmentInfo attachmentInfo{VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO};
|
||||
VkRenderingAttachmentInfo attachmentInfo{};
|
||||
attachmentInfo.sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO;
|
||||
attachmentInfo.imageView = m_lightBuffer.imageView;
|
||||
attachmentInfo.imageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
|
||||
attachmentInfo.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
|
||||
|
@ -711,7 +715,8 @@ void GameRenderer::beginPass(uint32_t imageIndex, VkCommandBuffer commandBuffer,
|
|||
|
||||
// specular?
|
||||
{
|
||||
VkRenderingAttachmentInfo attachmentInfo{VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO};
|
||||
VkRenderingAttachmentInfo attachmentInfo{};
|
||||
attachmentInfo.sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO;
|
||||
attachmentInfo.imageView = m_lightSpecularBuffer.imageView;
|
||||
attachmentInfo.imageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
|
||||
attachmentInfo.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
|
||||
|
@ -725,7 +730,8 @@ void GameRenderer::beginPass(uint32_t imageIndex, VkCommandBuffer commandBuffer,
|
|||
|
||||
// TODO: Hack we should not be using a special pass for this, we should just design our API better
|
||||
{
|
||||
VkRenderingAttachmentInfo attachmentInfo{VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO};
|
||||
VkRenderingAttachmentInfo attachmentInfo{};
|
||||
attachmentInfo.sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO;
|
||||
attachmentInfo.imageView = m_viewPositionBuffer.imageView;
|
||||
attachmentInfo.imageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
|
||||
attachmentInfo.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
|
||||
|
@ -741,7 +747,8 @@ void GameRenderer::beginPass(uint32_t imageIndex, VkCommandBuffer commandBuffer,
|
|||
|
||||
// normals, it seems like
|
||||
{
|
||||
VkRenderingAttachmentInfo attachmentInfo{VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO};
|
||||
VkRenderingAttachmentInfo attachmentInfo{};
|
||||
attachmentInfo.sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO;
|
||||
attachmentInfo.imageView = m_ZBuffer.imageView;
|
||||
attachmentInfo.imageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; // VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
|
||||
attachmentInfo.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
|
||||
|
@ -759,7 +766,8 @@ void GameRenderer::beginPass(uint32_t imageIndex, VkCommandBuffer commandBuffer,
|
|||
|
||||
// composite
|
||||
{
|
||||
VkRenderingAttachmentInfo attachmentInfo{VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO};
|
||||
VkRenderingAttachmentInfo attachmentInfo{};
|
||||
attachmentInfo.sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO;
|
||||
attachmentInfo.imageView = m_compositeBuffer.imageView;
|
||||
attachmentInfo.imageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; // VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
|
||||
attachmentInfo.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
|
||||
|
@ -777,7 +785,8 @@ void GameRenderer::beginPass(uint32_t imageIndex, VkCommandBuffer commandBuffer,
|
|||
|
||||
// depth buffer for depth testing
|
||||
{
|
||||
VkRenderingAttachmentInfo attachmentInfo{VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO};
|
||||
VkRenderingAttachmentInfo attachmentInfo{};
|
||||
attachmentInfo.sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO;
|
||||
attachmentInfo.imageView = m_depthBuffer.imageView;
|
||||
attachmentInfo.imageLayout = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL;
|
||||
attachmentInfo.loadOp = VK_ATTACHMENT_LOAD_OP_LOAD;
|
||||
|
@ -798,7 +807,7 @@ void GameRenderer::beginPass(uint32_t imageIndex, VkCommandBuffer commandBuffer,
|
|||
vkCmdBeginRendering(commandBuffer, &renderingInfo);
|
||||
}
|
||||
|
||||
void GameRenderer::endPass(VkCommandBuffer commandBuffer, std::string_view passName)
|
||||
void GameRenderer::endPass(VkCommandBuffer commandBuffer)
|
||||
{
|
||||
vkCmdEndRendering(commandBuffer);
|
||||
|
||||
|
@ -1109,6 +1118,7 @@ GameRenderer::CachedPipeline &GameRenderer::bindPipeline(VkCommandBuffer command
|
|||
m_cachedPipelines[hash] = CachedPipeline{.pipeline = pipeline,
|
||||
.pipelineLayout = pipelineLayout,
|
||||
.setLayouts = setLayouts,
|
||||
.cachedDescriptors = {},
|
||||
.requestedSets = requestedSets,
|
||||
.vertexShader = vertexShader,
|
||||
.pixelShader = pixelShader};
|
||||
|
@ -1307,6 +1317,8 @@ GameRenderer::createDescriptorFor(const DrawObject *object, const CachedPipeline
|
|||
info->range = 655360;
|
||||
}
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
j++;
|
||||
|
@ -1383,8 +1395,7 @@ void GameRenderer::bindDescriptorSets(VkCommandBuffer commandBuffer,
|
|||
const RenderMaterial *material,
|
||||
std::string_view pass)
|
||||
{
|
||||
int i = 0;
|
||||
for (auto setLayout : pipeline.setLayouts) {
|
||||
for (size_t i = 0; i < pipeline.setLayouts.size(); i++) {
|
||||
if (!pipeline.cachedDescriptors.count(i)) {
|
||||
if (auto descriptor = createDescriptorFor(object, pipeline, i, material, pass); descriptor != VK_NULL_HANDLE) {
|
||||
pipeline.cachedDescriptors[i] = descriptor;
|
||||
|
@ -1395,7 +1406,5 @@ void GameRenderer::bindDescriptorSets(VkCommandBuffer commandBuffer,
|
|||
|
||||
// TODO: we can pass all descriptors in one function call
|
||||
vkCmdBindDescriptorSets(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline.pipelineLayout, i, 1, &pipeline.cachedDescriptors[i], 0, nullptr);
|
||||
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -89,7 +89,8 @@ RenderManager::RenderManager(GameData *data)
|
|||
debugCreateInfo.messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT;
|
||||
debugCreateInfo.pfnUserCallback = DebugCallback;
|
||||
|
||||
VkApplicationInfo applicationInfo = {VK_STRUCTURE_TYPE_APPLICATION_INFO};
|
||||
VkApplicationInfo applicationInfo = {};
|
||||
applicationInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
|
||||
applicationInfo.apiVersion = VK_API_VERSION_1_3;
|
||||
|
||||
const char *layers[] = {"VK_LAYER_KHRONOS_validation"};
|
||||
|
@ -209,23 +210,27 @@ RenderManager::RenderManager(GameData *data)
|
|||
enabledFeatures.shaderCullDistance = VK_TRUE;
|
||||
enabledFeatures.fillModeNonSolid = VK_TRUE;
|
||||
|
||||
VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR localReadFeaturesKhr{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR};
|
||||
VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR localReadFeaturesKhr{};
|
||||
localReadFeaturesKhr.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR;
|
||||
localReadFeaturesKhr.dynamicRenderingLocalRead = VK_TRUE;
|
||||
|
||||
VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT unusedAttachmentsFeaturesExt{
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT};
|
||||
VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT unusedAttachmentsFeaturesExt{};
|
||||
unusedAttachmentsFeaturesExt.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT;
|
||||
unusedAttachmentsFeaturesExt.dynamicRenderingUnusedAttachments = VK_TRUE;
|
||||
unusedAttachmentsFeaturesExt.pNext = &localReadFeaturesKhr;
|
||||
|
||||
VkPhysicalDeviceVulkan11Features enabled11Features{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES};
|
||||
VkPhysicalDeviceVulkan11Features enabled11Features{};
|
||||
enabled11Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES;
|
||||
enabled11Features.shaderDrawParameters = VK_TRUE;
|
||||
enabled11Features.pNext = &unusedAttachmentsFeaturesExt;
|
||||
|
||||
VkPhysicalDeviceVulkan12Features enabled12Features{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES};
|
||||
VkPhysicalDeviceVulkan12Features enabled12Features{};
|
||||
enabled12Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES;
|
||||
enabled12Features.vulkanMemoryModel = VK_TRUE;
|
||||
enabled12Features.pNext = &enabled11Features;
|
||||
|
||||
VkPhysicalDeviceVulkan13Features enabled13Features{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES};
|
||||
VkPhysicalDeviceVulkan13Features enabled13Features{};
|
||||
enabled13Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES;
|
||||
enabled13Features.shaderDemoteToHelperInvocation = VK_TRUE;
|
||||
enabled13Features.dynamicRendering = VK_TRUE;
|
||||
enabled13Features.synchronization2 = VK_TRUE;
|
||||
|
@ -348,7 +353,7 @@ bool RenderManager::initSwapchain(VkSurfaceKHR surface, int width, int height)
|
|||
initBlitPipeline(); // this creates a desc set for the renderer's offscreen texture. need to make sure we regen it
|
||||
|
||||
m_framebuffers.resize(m_device->swapChain->swapchainImages.size());
|
||||
for (int i = 0; i < m_device->swapChain->swapchainImages.size(); i++) {
|
||||
for (size_t i = 0; i < m_device->swapChain->swapchainImages.size(); i++) {
|
||||
VkFramebufferCreateInfo framebufferInfo = {};
|
||||
framebufferInfo.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO;
|
||||
framebufferInfo.renderPass = m_renderPass;
|
||||
|
@ -407,7 +412,7 @@ void RenderManager::render(const std::vector<DrawObject> &models)
|
|||
|
||||
updateCamera(camera);
|
||||
|
||||
m_renderer->render(commandBuffer, m_device->swapChain->currentFrame, camera, scene, models);
|
||||
m_renderer->render(commandBuffer, camera, scene, models);
|
||||
|
||||
VkRenderPassBeginInfo renderPassInfo = {};
|
||||
renderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO;
|
||||
|
|
|
@ -48,8 +48,10 @@ void SimpleRenderer::resize()
|
|||
vkCreateFramebuffer(m_device.device, &framebufferInfo, nullptr, &m_framebuffer);
|
||||
}
|
||||
|
||||
void SimpleRenderer::render(VkCommandBuffer commandBuffer, uint32_t currentFrame, Camera &camera, Scene &scene, const std::vector<DrawObject> &models)
|
||||
void SimpleRenderer::render(VkCommandBuffer commandBuffer, Camera &camera, Scene &scene, const std::vector<DrawObject> &models)
|
||||
{
|
||||
Q_UNUSED(scene)
|
||||
|
||||
VkRenderPassBeginInfo renderPassInfo = {};
|
||||
renderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO;
|
||||
renderPassInfo.renderPass = m_renderPass;
|
||||
|
|
|
@ -12,8 +12,8 @@
|
|||
FileTreeModel::FileTreeModel(HashDatabase &database, bool showUnknown, const QString &gamePath, GameData *data, QObject *parent)
|
||||
: QAbstractItemModel(parent)
|
||||
, gameData(data)
|
||||
, m_showUnknown(showUnknown)
|
||||
, m_database(database)
|
||||
, m_showUnknown(showUnknown)
|
||||
{
|
||||
rootItem = new TreeInformation();
|
||||
rootItem->type = TreeType::Root;
|
||||
|
|
Loading…
Add table
Reference in a new issue