1
Fork 0
mirror of https://github.com/redstrate/Novus.git synced 2025-04-20 11:47:45 +00:00
novus/renderer/include/drawobject.h
Joshua Goins 7cd519fac2 Use the parameters defined in the material instead of hardcoding
This was only useful for testing, the new renderer loads the parameters
the material stores now.
2024-04-27 18:44:53 -04:00

50 lines
No EOL
1.1 KiB
C++

// SPDX-FileCopyrightText: 2024 Joshua Goins <josh@redstrate.com>
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
struct RenderPart {
size_t numIndices;
Buffer vertexBuffer, indexBuffer;
int materialIndex = 0;
};
struct RenderTexture {
VkImage handle = VK_NULL_HANDLE;
VkDeviceMemory memory = VK_NULL_HANDLE;
VkImageView view = VK_NULL_HANDLE;
VkSampler sampler = VK_NULL_HANDLE;
};
enum class MaterialType { Object, Skin };
struct RenderMaterial {
physis_Material mat;
MaterialType type = MaterialType::Object;
physis_SHPK shaderPackage;
RenderTexture *diffuseTexture = nullptr;
RenderTexture *normalTexture = nullptr;
RenderTexture *specularTexture = nullptr;
RenderTexture *multiTexture = nullptr;
Buffer materialBuffer;
};
struct DrawObject {
QString name;
physis_MDL model;
std::vector<RenderPart> parts;
std::array<glm::mat4, 128> boneData;
std::vector<RenderMaterial> materials;
glm::vec3 position;
bool skinned = false;
uint16_t from_body_id = 101;
uint16_t to_body_id = 101;
Buffer boneInfoBuffer;
};