mirror of
https://github.com/bailwillharr/engine.git
synced 2024-09-21 04:51:18 +00:00
commit
3c4fb0de10
@ -21,7 +21,7 @@ public:
|
|||||||
~Camera();
|
~Camera();
|
||||||
|
|
||||||
// called every frame, don't call manually
|
// called every frame, don't call manually
|
||||||
void updateCam(glm::mat4 transform);
|
void updateCam(glm::mat4 transform, glm::mat4* viewMatrix);
|
||||||
|
|
||||||
void makeActive();
|
void makeActive();
|
||||||
bool isActive();
|
bool isActive();
|
||||||
|
@ -21,7 +21,7 @@ public:
|
|||||||
~Renderer() override;
|
~Renderer() override;
|
||||||
|
|
||||||
// called every frame, do not call manually
|
// called every frame, do not call manually
|
||||||
void render(glm::mat4 model);
|
void render(glm::mat4 model, glm::mat4 view);
|
||||||
|
|
||||||
void setMesh(const std::string& name);
|
void setMesh(const std::string& name);
|
||||||
void setTexture(const std::string& name);
|
void setTexture(const std::string& name);
|
||||||
|
@ -23,7 +23,7 @@ namespace engine {
|
|||||||
|
|
||||||
// adds a draw call to the queue
|
// adds a draw call to the queue
|
||||||
// vertexBuffer is required, indexBuffer can be NULL, uniformData is required
|
// vertexBuffer is required, indexBuffer can be NULL, uniformData is required
|
||||||
void draw(const gfx::Pipeline* pipeline, const gfx::Buffer* vertexBuffer, const gfx::Buffer* indexBuffer, uint32_t count, const void* pushConstantData);
|
void draw(const gfx::Pipeline* pipeline, const gfx::Buffer* vertexBuffer, const gfx::Buffer* indexBuffer, uint32_t count, const void* pushConstantData, size_t pushConstantSize);
|
||||||
|
|
||||||
// Call once per frame. Executes all queued draw calls and renders to the screen.
|
// Call once per frame. Executes all queued draw calls and renders to the screen.
|
||||||
void renderFrame();
|
void renderFrame();
|
||||||
|
@ -25,7 +25,7 @@ Camera::~Camera()
|
|||||||
parent.root.deactivateCam(getID());
|
parent.root.deactivateCam(getID());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Camera::updateCam(glm::mat4 transform)
|
void Camera::updateCam(glm::mat4 transform, glm::mat4* viewMatOut)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (parent.win.getWindowResized()) {
|
if (parent.win.getWindowResized()) {
|
||||||
@ -57,6 +57,8 @@ void Camera::updateCam(glm::mat4 transform)
|
|||||||
gfxdev->updateUniformBuffer(shader->getPipeline(), &uniformData);
|
gfxdev->updateUniformBuffer(shader->getPipeline(), &uniformData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*viewMatOut = viewMatrix;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static glm::vec2 getViewportSize()
|
static glm::vec2 getViewportSize()
|
||||||
|
@ -23,9 +23,10 @@ Renderer::~Renderer()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::render(glm::mat4 transform)
|
void Renderer::render(glm::mat4 transform, glm::mat4 view)
|
||||||
{
|
{
|
||||||
gfxdev->draw(m_shader->getPipeline(), m_mesh->vb, m_mesh->ib, m_mesh->m_vertices.size(), &transform);
|
glm::mat4 pushConsts[] = { transform, view };
|
||||||
|
gfxdev->draw(m_shader->getPipeline(), m_mesh->vb, m_mesh->ib, m_mesh->m_vertices.size(), pushConsts, sizeof(glm::mat4) * 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::setMesh(const std::string& name)
|
void Renderer::setMesh(const std::string& name)
|
||||||
|
@ -258,7 +258,7 @@ namespace engine {
|
|||||||
ERROR
|
ERROR
|
||||||
};
|
};
|
||||||
|
|
||||||
constexpr MessageSeverity MESSAGE_LEVEL = MessageSeverity::WARNING;
|
constexpr MessageSeverity MESSAGE_LEVEL = MessageSeverity::INFO;
|
||||||
switch (MESSAGE_LEVEL) {
|
switch (MESSAGE_LEVEL) {
|
||||||
case MessageSeverity::VERBOSE:
|
case MessageSeverity::VERBOSE:
|
||||||
debugMessengerInfo.messageSeverity |= VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT;
|
debugMessengerInfo.messageSeverity |= VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT;
|
||||||
@ -419,7 +419,7 @@ namespace engine {
|
|||||||
|
|
||||||
for (const auto& presMode : presentModes) {
|
for (const auto& presMode : presentModes) {
|
||||||
if (presMode == VK_PRESENT_MODE_MAILBOX_KHR) {
|
if (presMode == VK_PRESENT_MODE_MAILBOX_KHR) {
|
||||||
swapchain->presentMode = presMode; // this mode allows uncapped FPS while also avoiding screen tearing
|
// swapchain->presentMode = presMode; // this mode allows uncapped FPS while also avoiding screen tearing
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1179,11 +1179,12 @@ namespace engine {
|
|||||||
*h = pimpl->swapchain.extent.height;
|
*h = pimpl->swapchain.extent.height;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GFXDevice::draw(const gfx::Pipeline* pipeline, const gfx::Buffer* vertexBuffer, const gfx::Buffer* indexBuffer, uint32_t count, const void* pushConstantData)
|
void GFXDevice::draw(const gfx::Pipeline* pipeline, const gfx::Buffer* vertexBuffer, const gfx::Buffer* indexBuffer, uint32_t count, const void* pushConstantData, size_t pushConstantSize)
|
||||||
{
|
{
|
||||||
assert(vertexBuffer->type == gfx::BufferType::VERTEX);
|
assert(vertexBuffer->type == gfx::BufferType::VERTEX);
|
||||||
assert(vertexBuffer != nullptr);
|
assert(vertexBuffer != nullptr);
|
||||||
assert(indexBuffer == nullptr || indexBuffer->type == gfx::BufferType::INDEX);
|
assert(indexBuffer == nullptr || indexBuffer->type == gfx::BufferType::INDEX);
|
||||||
|
assert(pushConstantSize <= PUSH_CONSTANT_MAX_SIZE);
|
||||||
|
|
||||||
DrawCall call{
|
DrawCall call{
|
||||||
.vertexBuffer = vertexBuffer,
|
.vertexBuffer = vertexBuffer,
|
||||||
@ -1191,7 +1192,7 @@ namespace engine {
|
|||||||
.count = count,
|
.count = count,
|
||||||
};
|
};
|
||||||
|
|
||||||
memcpy(call.pushConstantData, pushConstantData, PUSH_CONSTANT_MAX_SIZE);
|
memcpy(call.pushConstantData, pushConstantData, pushConstantSize);
|
||||||
|
|
||||||
pimpl->drawQueues[pipeline].push(call);
|
pimpl->drawQueues[pipeline].push(call);
|
||||||
|
|
||||||
@ -1275,9 +1276,10 @@ namespace engine {
|
|||||||
vkCmdBindVertexBuffers(pimpl->commandBuffers[frameIndex], 0, 1, &call.vertexBuffer->buffer, offsets);
|
vkCmdBindVertexBuffers(pimpl->commandBuffers[frameIndex], 0, 1, &call.vertexBuffer->buffer, offsets);
|
||||||
|
|
||||||
if (call.indexBuffer == nullptr) {
|
if (call.indexBuffer == nullptr) {
|
||||||
// do a simple draw call
|
// no index buffer
|
||||||
vkCmdDraw(pimpl->commandBuffers[frameIndex], call.count, 1, 0, 0);
|
vkCmdDraw(pimpl->commandBuffers[frameIndex], call.count, 1, 0, 0);
|
||||||
} else {
|
} else {
|
||||||
|
// use index buffer
|
||||||
vkCmdBindIndexBuffer(pimpl->commandBuffers[frameIndex], call.indexBuffer->buffer, 0, VK_INDEX_TYPE_UINT32);
|
vkCmdBindIndexBuffer(pimpl->commandBuffers[frameIndex], call.indexBuffer->buffer, 0, VK_INDEX_TYPE_UINT32);
|
||||||
vkCmdDrawIndexed(pimpl->commandBuffers[frameIndex], call.count, 1, 0, 0, 0);
|
vkCmdDrawIndexed(pimpl->commandBuffers[frameIndex], call.count, 1, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
@ -35,8 +35,6 @@ namespace engine {
|
|||||||
if (std::filesystem::is_directory(m_resourcesPath) == false) {
|
if (std::filesystem::is_directory(m_resourcesPath) == false) {
|
||||||
throw std::runtime_error("Unable to determine resources location. CWD: " + cwd.string());
|
throw std::runtime_error("Unable to determine resources location. CWD: " + cwd.string());
|
||||||
}
|
}
|
||||||
|
|
||||||
m_resourcesPath = "C:/Users/Bailey/source/repos/game/res";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<std::string> ResourceManager::getResourcesListString()
|
std::unique_ptr<std::string> ResourceManager::getResourcesListString()
|
||||||
|
@ -40,20 +40,6 @@ void Mesh::initMesh()
|
|||||||
{
|
{
|
||||||
vb = gfxdev->createBuffer(gfx::BufferType::VERTEX, m_vertices.size() * sizeof(Vertex), m_vertices.data());
|
vb = gfxdev->createBuffer(gfx::BufferType::VERTEX, m_vertices.size() * sizeof(Vertex), m_vertices.data());
|
||||||
ib = gfxdev->createBuffer(gfx::BufferType::INDEX, m_indices.size() * sizeof(uint32_t), m_indices.data());
|
ib = gfxdev->createBuffer(gfx::BufferType::INDEX, m_indices.size() * sizeof(uint32_t), m_indices.data());
|
||||||
|
|
||||||
TRACE("VB PTR in mesh: {}", (void*)vb);
|
|
||||||
|
|
||||||
TRACE("Vertices:");
|
|
||||||
|
|
||||||
for (const auto& v : m_vertices) {
|
|
||||||
TRACE("pos: {}, {}, {}", v.pos.x, v.pos.y, v.pos.z);
|
|
||||||
}
|
|
||||||
|
|
||||||
TRACE("Indices:");
|
|
||||||
|
|
||||||
for (const uint32_t i : m_indices) {
|
|
||||||
TRACE("\t{}", i);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Mesh::Mesh(const std::vector<Vertex>& vertices) : Resource("", "mesh")
|
Mesh::Mesh(const std::vector<Vertex>& vertices) : Resource("", "mesh")
|
||||||
|
@ -51,9 +51,10 @@ namespace engine {
|
|||||||
for (const auto& [c, camt] : compList.cameras) {
|
for (const auto& [c, camt] : compList.cameras) {
|
||||||
for (int id : m_activeCameras) {
|
for (int id : m_activeCameras) {
|
||||||
if (c->getID() == id) {
|
if (c->getID() == id) {
|
||||||
c->updateCam(camt);
|
glm::mat4 view{};
|
||||||
|
c->updateCam(camt, &view);
|
||||||
for (const auto& [ren, ren_t] : compList.renderers) {
|
for (const auto& [ren, ren_t] : compList.renderers) {
|
||||||
ren->render(ren_t);
|
ren->render(ren_t, view);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user