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();
|
||||
|
||||
// called every frame, don't call manually
|
||||
void updateCam(glm::mat4 transform);
|
||||
void updateCam(glm::mat4 transform, glm::mat4* viewMatrix);
|
||||
|
||||
void makeActive();
|
||||
bool isActive();
|
||||
|
@ -21,7 +21,7 @@ public:
|
||||
~Renderer() override;
|
||||
|
||||
// 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 setTexture(const std::string& name);
|
||||
|
@ -23,7 +23,7 @@ namespace engine {
|
||||
|
||||
// adds a draw call to the queue
|
||||
// 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.
|
||||
void renderFrame();
|
||||
|
@ -25,7 +25,7 @@ Camera::~Camera()
|
||||
parent.root.deactivateCam(getID());
|
||||
}
|
||||
|
||||
void Camera::updateCam(glm::mat4 transform)
|
||||
void Camera::updateCam(glm::mat4 transform, glm::mat4* viewMatOut)
|
||||
{
|
||||
|
||||
if (parent.win.getWindowResized()) {
|
||||
@ -57,6 +57,8 @@ void Camera::updateCam(glm::mat4 transform)
|
||||
gfxdev->updateUniformBuffer(shader->getPipeline(), &uniformData);
|
||||
}
|
||||
|
||||
*viewMatOut = viewMatrix;
|
||||
|
||||
}
|
||||
|
||||
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)
|
||||
|
@ -258,7 +258,7 @@ namespace engine {
|
||||
ERROR
|
||||
};
|
||||
|
||||
constexpr MessageSeverity MESSAGE_LEVEL = MessageSeverity::WARNING;
|
||||
constexpr MessageSeverity MESSAGE_LEVEL = MessageSeverity::INFO;
|
||||
switch (MESSAGE_LEVEL) {
|
||||
case MessageSeverity::VERBOSE:
|
||||
debugMessengerInfo.messageSeverity |= VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT;
|
||||
@ -419,7 +419,7 @@ namespace engine {
|
||||
|
||||
for (const auto& presMode : presentModes) {
|
||||
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;
|
||||
}
|
||||
|
||||
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 != nullptr);
|
||||
assert(indexBuffer == nullptr || indexBuffer->type == gfx::BufferType::INDEX);
|
||||
assert(pushConstantSize <= PUSH_CONSTANT_MAX_SIZE);
|
||||
|
||||
DrawCall call{
|
||||
.vertexBuffer = vertexBuffer,
|
||||
@ -1191,7 +1192,7 @@ namespace engine {
|
||||
.count = count,
|
||||
};
|
||||
|
||||
memcpy(call.pushConstantData, pushConstantData, PUSH_CONSTANT_MAX_SIZE);
|
||||
memcpy(call.pushConstantData, pushConstantData, pushConstantSize);
|
||||
|
||||
pimpl->drawQueues[pipeline].push(call);
|
||||
|
||||
@ -1275,9 +1276,10 @@ namespace engine {
|
||||
vkCmdBindVertexBuffers(pimpl->commandBuffers[frameIndex], 0, 1, &call.vertexBuffer->buffer, offsets);
|
||||
|
||||
if (call.indexBuffer == nullptr) {
|
||||
// do a simple draw call
|
||||
// no index buffer
|
||||
vkCmdDraw(pimpl->commandBuffers[frameIndex], call.count, 1, 0, 0);
|
||||
} else {
|
||||
// use index buffer
|
||||
vkCmdBindIndexBuffer(pimpl->commandBuffers[frameIndex], call.indexBuffer->buffer, 0, VK_INDEX_TYPE_UINT32);
|
||||
vkCmdDrawIndexed(pimpl->commandBuffers[frameIndex], call.count, 1, 0, 0, 0);
|
||||
}
|
||||
|
@ -35,8 +35,6 @@ namespace engine {
|
||||
if (std::filesystem::is_directory(m_resourcesPath) == false) {
|
||||
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()
|
||||
|
@ -40,20 +40,6 @@ void Mesh::initMesh()
|
||||
{
|
||||
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());
|
||||
|
||||
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")
|
||||
|
@ -51,9 +51,10 @@ namespace engine {
|
||||
for (const auto& [c, camt] : compList.cameras) {
|
||||
for (int id : m_activeCameras) {
|
||||
if (c->getID() == id) {
|
||||
c->updateCam(camt);
|
||||
glm::mat4 view{};
|
||||
c->updateCam(camt, &view);
|
||||
for (const auto& [ren, ren_t] : compList.renderers) {
|
||||
ren->render(ren_t);
|
||||
ren->render(ren_t, view);
|
||||
}
|
||||
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user