mirror of
https://github.com/redstrate/Novus.git
synced 2025-04-20 11:47:45 +00:00
This was only useful for testing, the new renderer loads the parameters the material stores now.
50 lines
No EOL
1.1 KiB
C++
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;
|
|
}; |