Skip to content

Commit

Permalink
lots of small fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
WinteryFox committed Oct 31, 2023
1 parent 336113f commit cc3f481
Show file tree
Hide file tree
Showing 24 changed files with 234 additions and 109 deletions.
9 changes: 8 additions & 1 deletion editor/shaders/triangle.vert
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,14 @@ layout(location = 1) in vec3 color;

layout(location = 0) out vec3 vertColor;

//layout(binding = 0) uniform ModelViewProjection {
// mat4 model;
// mat4 view;
// mat4 projection;
//} mvp;

void main() {
vertColor = color;
// gl_Position = mvp.projection * mvp.view * mvp.model * vec4(position, 1.0);
gl_Position = vec4(position, 1.0);
vertColor = color;
}
4 changes: 2 additions & 2 deletions engine/Buffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ namespace Vixen::Vk {
* @param dataSize The size of the data.
* @param offset The offset within this buffer to start writing from.
*/
virtual void write(const void *data, size_t dataSize, size_t offset) = 0;
virtual void write(const char *data, size_t dataSize, size_t offset) = 0;

[[nodiscard]] size_t getSize() const;

Expand All @@ -45,7 +45,7 @@ namespace Vixen::Vk {
*/
Buffer(Usage bufferUsage, const std::size_t &size);

virtual void *map() = 0;
virtual char *map() = 0;

virtual void unmap() = 0;
};
Expand Down
6 changes: 4 additions & 2 deletions engine/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ find_library(FreeImage_LIBRARY NAMES FreeImage HINTS ${FreeImage_ROOT})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(FreeImage DEFAULT_MSG FreeImage_INCLUDE_DIR FreeImage_LIBRARY)

set(HEADERS Window.h ShaderModule.h ShaderProgram.h Monitor.h Buffer.h Mesh.h Util.h Renderer.h Vixen.h Framebuffer.h RenderPass.h Material.h Entity.h)
set(SOURCES Window.cpp Buffer.cpp Blending.h)
set(HEADERS Window.h ShaderModule.h ShaderProgram.h Monitor.h Buffer.h Mesh.h Util.h Renderer.h Vixen.h Framebuffer.h RenderPass.h Material.h Entity.h
Camera.h)
set(SOURCES Window.cpp Buffer.cpp Blending.h
Camera.cpp)

link_libraries(
PkgConfig::GLM
Expand Down
59 changes: 59 additions & 0 deletions engine/Camera.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#include "Camera.h"

namespace Vixen {
Camera::Camera(float fieldOfView, float nearPlane, float farPlane, glm::vec3 clearColor)
: position(0, 0, 0),
// rotation(glm::quat{}),
rotation({}),
fieldOfView(fieldOfView),
nearPlane(nearPlane),
farPlane(farPlane),
clearColor(clearColor) {}

glm::mat4 Camera::view() const {
// const auto &reverse = glm::conjugate(rotation);
// glm::mat4 rot = glm::toMat4(reverse);
// glm::mat4 translation = glm::translate({1.0}, -position);
//
// return rot * translation;
return glm::lookAt(
position,
position + rotation,
{0.0f, 1.0f, 0.0f}
);
}

glm::mat4 Camera::perspective(float aspectRatio) const {
return glm::perspective(
glm::radians(fieldOfView),
aspectRatio,
nearPlane,
farPlane
);
}

const glm::vec3 &Camera::getPosition() const {
return position;
}

// const glm::quat &Camera::getRotation() const {
// return rotation;
// }

glm::vec3 Camera::getEulerRotation() const {
// return glm::eulerAngles(rotation);
return rotation;
}

float Camera::getNearPlane() const {
return nearPlane;
}

float Camera::getFarPlane() const {
return farPlane;
}

const glm::vec3 &Camera::getClearColor() const {
return clearColor;
}
}
48 changes: 48 additions & 0 deletions engine/Camera.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#pragma once

#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/quaternion.hpp>
#include <glm/gtx/quaternion.hpp>

namespace Vixen {
class Camera {
explicit Camera(
float fieldOfView = 114.0f,
float nearPlane = 0.01f,
float farPlane = 1000.0f,
glm::vec3 clearColor = {0.0f, 0.0f, 0.0f}
);

[[nodiscard]] glm::mat4 view() const;

[[nodiscard]] glm::mat4 perspective(float aspectRatio) const;

public:
[[nodiscard]] const glm::vec3 &getPosition() const;

// [[nodiscard]] const glm::quat &getRotation() const;

[[nodiscard]] glm::vec3 getEulerRotation() const;

[[nodiscard]] float getNearPlane() const;

[[nodiscard]] float getFarPlane() const;

[[nodiscard]] const glm::vec3 &getClearColor() const;

private:
glm::vec3 position;

//glm::quat rotation;
glm::vec3 rotation;

float fieldOfView;

float nearPlane;

float farPlane;

glm::vec3 clearColor;
};
}
30 changes: 17 additions & 13 deletions engine/ShaderModule.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,31 @@ namespace Vixen {
struct IO {
std::optional<uint32_t> binding;
std::optional<uint32_t> location;
size_t size;
size_t offset;
};

private:
Stage stage;

std::string entrypoint;

std::vector<Binding> bindings;

std::vector<IO> inputs;

std::vector<IO> uniformBuffers;

public:
ShaderModule(
Stage stage,
std::string entrypoint,
const std::vector<Binding> &bindings,
const std::vector<IO> &inputs,
std::string entrypoint
const std::vector<IO> &inputs
) : stage(stage),
entrypoint(std::move(entrypoint)),
bindings(bindings),
inputs(inputs),
entrypoint(std::move(entrypoint)) {}
inputs(inputs) {}

[[nodiscard]] Stage getStage() const {
return stage;
Expand All @@ -54,14 +67,5 @@ namespace Vixen {
[[nodiscard]] const std::vector<IO> &getInputs() const {
return inputs;
}

protected:
Stage stage;

std::string entrypoint;

std::vector<Binding> bindings;

std::vector<IO> inputs;
};
}
3 changes: 1 addition & 2 deletions engine/ShaderProgram.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@
#include "ShaderModule.h"

namespace Vixen {
template<class T, class = std::enable_if<std::is_base_of<ShaderModule, T>::value>>
template<class T> requires std::is_base_of_v<ShaderModule, T>
class ShaderProgram {
protected:
std::shared_ptr<T> vertex;

std::shared_ptr<T> fragment;
Expand Down
20 changes: 13 additions & 7 deletions engine/Window.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ namespace Vixen {
if (framebufferSizeChanged) {
framebufferSizeChanged = false;

int width, height;
int width;
int height;
glfwGetFramebufferSize(window, &width, &height);

spdlog::trace("Framebuffer resized to {}x{}", width, height);
Expand Down Expand Up @@ -102,11 +103,14 @@ namespace Vixen {
}

void Window::center() const {
uint32_t w, h;
uint32_t w;
uint32_t h;
glfwGetWindowSize(window, reinterpret_cast<int *>(&w), reinterpret_cast<int *>(&h));

const auto mode = glfwGetVideoMode(monitor);
uint32_t x, y;

uint32_t x;
uint32_t y;
glfwGetMonitorPos(monitor, reinterpret_cast<int *>(&x), reinterpret_cast<int *>(&y));
glfwSetWindowPos(
window,
Expand Down Expand Up @@ -139,10 +143,12 @@ namespace Vixen {
}

void Window::setWindowedMode(Mode mode) const {
int w, h = 0;
int x, y = 0;
int refreshRate = 0;
GLFWmonitor *m = nullptr;
int w;
int h;
int x;
int y;
int refreshRate;
GLFWmonitor *m;

if (mode == Mode::FULLSCREEN) {
auto videoMode = glfwGetVideoMode(monitor);
Expand Down
18 changes: 10 additions & 8 deletions engine/vk/GraphicsCard.h
Original file line number Diff line number Diff line change
Expand Up @@ -112,10 +112,11 @@ namespace Vixen::Vk {
}

[[nodiscard]] bool isExtensionSupported(const std::string &extension) const {
return std::find_if(
extensions.begin(),
extensions.end(),
[extension](VkExtensionProperties props) { return extension == props.extensionName; }
return std::ranges::find_if(
extensions,
[extension](VkExtensionProperties props) {
return extension == props.extensionName;
}
) != std::end(extensions);
}

Expand All @@ -137,10 +138,11 @@ namespace Vixen::Vk {
}

[[nodiscard]] bool isLayerSupported(const std::string &layer) const {
return std::find_if(
layers.begin(),
layers.end(),
[layer](VkLayerProperties props) { return layer == props.layerName; }
return std::ranges::find_if(
layers,
[layer](VkLayerProperties props) {
return layer == props.layerName;
}
) != std::end(layers);
}

Expand Down
10 changes: 4 additions & 6 deletions engine/vk/Instance.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -155,9 +155,8 @@ namespace Vixen::Vk {
bool Instance::isExtensionSupported(const std::string &extension) {
const auto extensions = getSupportedExtensions();

return std::find_if(
extensions.begin(),
extensions.end(),
return std::ranges::find_if(
extensions,
[extension](VkExtensionProperties props) { return extension == props.extensionName; }
) != std::end(extensions);
}
Expand All @@ -175,9 +174,8 @@ namespace Vixen::Vk {
bool Instance::isLayerSupported(const std::string &layer) {
const auto layers = getSupportedLayers();

return std::find_if(
layers.begin(),
layers.end(),
return std::ranges::find_if(
layers,
[layer](VkLayerProperties props) { return layer == props.layerName; }
) != std::end(layers);
}
Expand Down
1 change: 0 additions & 1 deletion engine/vk/Instance.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
#include "Vulkan.h"
#include "GraphicsCard.h"
#include "VkWindow.h"
#include "../Util.h"

namespace Vixen::Vk {
class Instance {
Expand Down
15 changes: 9 additions & 6 deletions engine/vk/Swapchain.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,17 @@ namespace Vixen::Vk {
currentFrame = (currentFrame + 1) % imageCount;

switch (result) {
using
enum State;

case VK_SUCCESS:
return State::OK;
return OK;
case VK_SUBOPTIMAL_KHR:
spdlog::warn("Suboptimal swapchain state");
return State::SUBOPTIMAL;
return SUBOPTIMAL;
default:
checkVulkanResult(result, "Failed to acquire swapchain image");
return State::OUT_OF_DATE;
return OUT_OF_DATE;
}
}

Expand All @@ -73,20 +76,20 @@ namespace Vixen::Vk {
void invalidate();

private:
std::shared_ptr<Device> device;

uint32_t currentFrame;

uint32_t imageCount;

std::shared_ptr<Device> device;
VkSurfaceFormatKHR format;

VkSwapchainKHR swapchain;

std::vector<::VkImage> images;

std::vector<::VkImageView> imageViews;

VkSurfaceFormatKHR format{};

VkExtent2D extent{};

std::vector<VkSemaphore> imageAvailableSemaphores;
Expand Down
Loading

0 comments on commit cc3f481

Please sign in to comment.