1
Fork 0
mirror of https://github.com/redstrate/Novus.git synced 2025-04-20 03:37:46 +00:00
novus/renderer/include/drawobject.h
Joshua Goins e34daadbcd Split up Renderer's source files and a lot of refactoring
This now splits up the rendering system into sensible parts, and makes
it easier to switch between the simple renderer and the new experimental
one. Lots of refactors I needed to do for a while are now done, too.
2024-04-21 17:35:51 -04:00

46 lines
No EOL
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 {
MaterialType type = MaterialType::Object;
RenderTexture *diffuseTexture = nullptr;
RenderTexture *normalTexture = nullptr;
RenderTexture *specularTexture = nullptr;
RenderTexture *multiTexture = nullptr;
};
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;
};