Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 26 additions & 9 deletions Engine/Engine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ Engine::Engine()

mp_renderer = std::make_shared<Renderer>(mp_window->getHandle(), mp_config->width, mp_config->height);


mp_renderer->createNewPipeline(base_pipeline);
mp_renderer->createDepthResources();
mp_renderer->createFramebuffer();

Expand All @@ -25,13 +23,13 @@ Engine::~Engine()
{
vkDeviceWaitIdle(mp_renderer->getDevice());

mp_renderer->cleanSwapchain(std::make_shared<Pipeline>(base_pipeline));
mp_renderer->cleanSwapchain();

for (size_t i = 0; i < mp_scene->getObjects().size(); i++)
{
for (size_t t = 0; t < mp_scene->getObjects()[i]->getMeshesCount(); t++)
{
mp_scene->getObjects()[i]->getMesh(t).getMaterial()->destroyTexture();
mp_scene->getObjects()[i]->getMesh(t).getMaterial()->DestroyTexture();
mp_scene->getObjects()[i]->getMesh(t).destroyMesh();
}

Expand All @@ -58,9 +56,28 @@ void Engine::registerGameObject(std::shared_ptr<GameObject> gameobject)
mp_scene->addGameObject(gameobject);
}

std::shared_ptr<Renderer> Engine::getRenderEngine()
const std::shared_ptr<Material> Engine::CreateMaterial(const TSHADER shader)
{
return std::make_shared<Material>(shader, mp_renderer);
}

const std::shared_ptr<Material> Engine::CreateMaterial(const TSHADER shader, const std::string& texture_file)
{
std::shared_ptr<Material> mat = std::make_shared<Material>(shader, mp_renderer);
mat->LoadTexture(texture_file);
return mat;
}

const std::shared_ptr<GameObject> Engine::CreateGameObject()
{
return std::make_shared<GameObject>(mp_renderer);
}

const std::shared_ptr<GameObject> Engine::CreateGameObject(const std::string& object_file)
{
return mp_renderer;
std::shared_ptr<GameObject> go = std::make_shared<GameObject>(mp_renderer);
go->loadMesh(object_file);
return go;
}

const bool& Engine::shouldClose()
Expand All @@ -83,9 +100,9 @@ void Engine::update()
const int frame = mp_renderer->getFrameIndex();
if (mp_scene->isUpdate(frame))
{
mp_renderer->beginRecordCommandBuffers(mp_renderer->getCommandBuffer(frame), mp_renderer->getFrameBuffer(frame), base_pipeline);
mp_renderer->beginRecordCommandBuffers(mp_renderer->getCommandBuffer(frame), mp_renderer->getFrameBuffer(frame));

mp_scene->render(base_pipeline, mp_renderer->getCommandBuffer(frame), frame);
mp_scene->render(mp_renderer->getCommandBuffer(frame), frame);

mp_renderer->endRecordCommandBuffers(mp_renderer->getCommandBuffer(frame));
}
Expand All @@ -98,5 +115,5 @@ void Engine::update()

void Engine::draw()
{
mp_renderer->draw(base_pipeline);
mp_renderer->draw();
}
11 changes: 8 additions & 3 deletions Engine/Engine.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,13 @@ class Engine
void setScene(std::shared_ptr<Scene> p_scene);
void registerGameObject(std::shared_ptr<GameObject> gameobject);

std::shared_ptr<Renderer> getRenderEngine();
// CREATE MATERIAL
const std::shared_ptr<Material> CreateMaterial(const TSHADER shader);
const std::shared_ptr<Material> CreateMaterial(const TSHADER shader, const std::string& texture_file);

// CREATE GAMEOBJECT
const std::shared_ptr<GameObject> CreateGameObject();
const std::shared_ptr<GameObject> CreateGameObject(const std::string& object_file);

const bool& shouldClose();

Expand All @@ -32,8 +38,7 @@ class Engine
std::shared_ptr<Camera> mp_camera;
std::shared_ptr<Player> mp_player;
std::shared_ptr<Config> mp_config;

Pipeline base_pipeline;

std::chrono::steady_clock::time_point m_last_time;
};

Expand Down
7 changes: 5 additions & 2 deletions Engine/Engine.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@
<ClInclude Include="graphics\Config.h" />
<ClInclude Include="graphics\Graphics.h" />
<ClInclude Include="graphics\Math.h" />
<ClInclude Include="graphics\Shaders.h" />
<ClInclude Include="graphics\Vertex.h" />
<ClInclude Include="Logger.h" />
<ClInclude Include="renderer\Renderer.h" />
Expand All @@ -93,8 +94,10 @@
<ClInclude Include="world\Texture.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\shaders\shader.frag" />
<None Include="..\shaders\shader.vert" />
<None Include="assets\shaders\HLSL\no_texture_shader.frag" />
<None Include="assets\shaders\HLSL\shader.vert" />
<None Include="assets\shaders\HLSL\shader_compiler.bat" />
<None Include="assets\shaders\HLSL\texture_shader.frag" />
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>15.0</VCProjectVersion>
Expand Down
13 changes: 11 additions & 2 deletions Engine/Engine.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -173,12 +173,21 @@
<ClInclude Include="Engine.h">
<Filter>Header</Filter>
</ClInclude>
<ClInclude Include="graphics\Shaders.h">
<Filter>Engine\Graphics</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\shaders\shader.frag">
<None Include="assets\shaders\HLSL\no_texture_shader.frag">
<Filter>Asset</Filter>
</None>
<None Include="assets\shaders\HLSL\shader.vert">
<Filter>Asset</Filter>
</None>
<None Include="assets\shaders\HLSL\shader_compiler.bat">
<Filter>Asset</Filter>
</None>
<None Include="..\shaders\shader.vert">
<None Include="assets\shaders\HLSL\texture_shader.frag">
<Filter>Asset</Filter>
</None>
</ItemGroup>
Expand Down
25 changes: 3 additions & 22 deletions Engine/Source.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,14 @@ int main()
Engine engine;
Logger::init();

std::shared_ptr<Material> room_texture = std::make_shared<Material>();
room_texture->loadTexture("assets/textures/viking_room.png", engine.getRenderEngine());
std::shared_ptr<Material> room_texture = engine.CreateMaterial(TSHADER::TEXTURE);
room_texture->LoadTexture("assets/textures/viking_room.png");

std::shared_ptr<GameObject> room = std::make_shared<GameObject>(engine.getRenderEngine());
std::shared_ptr<GameObject> room = engine.CreateGameObject();
room->loadMesh("assets/models/viking_room.obj");
room->bindMatToMesh(0, room_texture);
room->setPosition({ 3.0f, 0.0f, 0.0f });

std::shared_ptr<Material> room2_texture = std::make_shared<Material>();
room2_texture->loadTexture("assets/textures/viking_room.png", engine.getRenderEngine());

std::shared_ptr<GameObject> room2 = std::make_shared<GameObject>(engine.getRenderEngine());

std::shared_ptr<Scene> scene = std::make_shared<Scene>();
scene->addGameObject(room);

Expand All @@ -29,20 +24,6 @@ int main()
// running loop
do
{
if (init == 30000) {
room2->loadMesh("assets/models/viking_room.obj");
room2->bindMatToMesh(0, room2_texture);
room2->setPosition({ 13.0f, 0.0f, 0.0f });

scene->addGameObject(room2);
}

init++;

if (init == 60000) {
scene->removeGameObject(room2);
}

engine.update();
engine.draw();
} while (!engine.shouldClose());
Expand Down
10 changes: 10 additions & 0 deletions Engine/assets/shaders/HLSL/no_texture_shader.frag
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#version 450
#extension GL_ARB_separate_shader_objects : enable

layout(location = 0) in vec3 fragColor;

layout(location = 0) out vec4 outColor;

void main() {
outColor = vec4(fragColor, 1.0f);
}
7 changes: 7 additions & 0 deletions Engine/assets/shaders/HLSL/shader_compiler.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
F:\Programs\VulkanSDK\1.2.170.0\Bin32\glslangValidator.exe -V shader.vert
F:\Programs\VulkanSDK\1.2.170.0\Bin32\glslangValidator.exe -V texture_shader.frag
F:\Programs\VulkanSDK\1.2.170.0\Bin32\glslangValidator.exe -V no_texture_shader.frag
pause
F:\Programs\VulkanSDK\1.2.170.0\Bin32\glslc.exe shader.vert -o vert.spv
F:\Programs\VulkanSDK\1.2.170.0\Bin32\glslc.exe texture_shader.frag -o texture_shader.spv
F:\Programs\VulkanSDK\1.2.170.0\Bin32\glslc.exe no_texture_shader.frag -o no_texture_shader.spv
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@ layout(location = 1) in vec2 fragTexCoord;
layout(location = 0) out vec4 outColor;

void main() {
outColor = vec4(fragColor, 1.0f);
outColor = texture(texSampler, fragTexCoord);
}
Binary file modified Engine/assets/shaders/frag.spv
Binary file not shown.
Binary file added Engine/assets/shaders/no_texture_shader.spv
Binary file not shown.
3 changes: 0 additions & 3 deletions Engine/assets/shaders/shader_compiler.bat

This file was deleted.

Binary file added Engine/assets/shaders/texture_shader.spv
Binary file not shown.
Binary file modified Engine/assets/shaders/vert.spv
Binary file not shown.
15 changes: 15 additions & 0 deletions Engine/graphics/Shaders.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#ifndef _SHADERS_H
#define _SHADERS_H

#include <array>
#include <string>

struct Shaders {
std::array<const std::string, 3> fragment_shader_files = {
"assets/shaders/frag.spv",
"assets/shaders/no_texture_shader.spv",
"assets/shaders/texture_shader.spv"
};
};

#endif // !_SHADERS_H
Loading