Skip to content

Commit 2a8fcf6

Browse files
committed
build 20180905
1 parent a28baae commit 2a8fcf6

22 files changed

Lines changed: 938 additions & 43 deletions

engine/engine.vcxproj

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8"?>
22
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<ItemGroup Label="ProjectConfigurations">
44
<ProjectConfiguration Include="Debug|Win32">
@@ -76,7 +76,7 @@
7676
<Optimization>Disabled</Optimization>
7777
<SDLCheck>true</SDLCheck>
7878
<ConformanceMode>true</ConformanceMode>
79-
<AdditionalIncludeDirectories>$(SolutionDir)vulkan\src;$(SolutionDir)engine\src;C:\VulkanSDK\1.1.70.1\Include;$(SolutionDir)external\glfw-3.2.1.bin.WIN64\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
79+
<AdditionalIncludeDirectories>$(SolutionDir)external\glfw-3.2.1.bin.WIN64\include;$(SolutionDir)vulkan\src;$(SolutionDir)engine\src;C:\VulkanSDK\1.1.82.1\Include</AdditionalIncludeDirectories>
8080
</ClCompile>
8181
<Link>
8282
<AdditionalLibraryDirectories>C:\VulkanSDK\1.1.70.1\Lib;C:\Users\Fynn\git\OREONENGINE-Cpp\external\glfw-3.2.1.bin.WIN64\lib-vc2015;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@@ -89,7 +89,7 @@
8989
<Optimization>Disabled</Optimization>
9090
<SDLCheck>true</SDLCheck>
9191
<ConformanceMode>true</ConformanceMode>
92-
<AdditionalIncludeDirectories>$(SolutionDir)vulkan\src;$(SolutionDir)engine\src;C:\VulkanSDK\1.1.73.0\Include;$(SolutionDir)external\glfw-3.2.1.bin.WIN64\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
92+
<AdditionalIncludeDirectories>$(SolutionDir)external\glfw-3.2.1.bin.WIN64\include;$(SolutionDir)vulkan\src;$(SolutionDir)engine\src;C:\VulkanSDK\1.1.82.1\Include</AdditionalIncludeDirectories>
9393
</ClCompile>
9494
<Link>
9595
<AdditionalLibraryDirectories>C:\VulkanSDK\1.1.70.1\Lib;C:\Users\Fynn\git\OREONENGINE-Cpp\external\glfw-3.2.1.bin.WIN64\lib-vc2015;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@@ -104,7 +104,7 @@
104104
<IntrinsicFunctions>true</IntrinsicFunctions>
105105
<SDLCheck>true</SDLCheck>
106106
<ConformanceMode>true</ConformanceMode>
107-
<AdditionalIncludeDirectories>$(SolutionDir)vulkan\src;$(SolutionDir)engine\src;C:\VulkanSDK\1.1.70.1\Include;$(SolutionDir)external\glfw-3.2.1.bin.WIN64\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
107+
<AdditionalIncludeDirectories>$(SolutionDir)external\glfw-3.2.1.bin.WIN64\include;$(SolutionDir)vulkan\src;$(SolutionDir)engine\src;C:\VulkanSDK\1.1.82.1\Include</AdditionalIncludeDirectories>
108108
</ClCompile>
109109
<Link>
110110
<EnableCOMDATFolding>true</EnableCOMDATFolding>
@@ -121,7 +121,7 @@
121121
<IntrinsicFunctions>true</IntrinsicFunctions>
122122
<SDLCheck>true</SDLCheck>
123123
<ConformanceMode>true</ConformanceMode>
124-
<AdditionalIncludeDirectories>$(SolutionDir)vulkan\src;$(SolutionDir)engine\src;C:\VulkanSDK\1.1.70.1\Include;$(SolutionDir)external\glfw-3.2.1.bin.WIN64\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
124+
<AdditionalIncludeDirectories>$(SolutionDir)external\glfw-3.2.1.bin.WIN64\include;$(SolutionDir)vulkan\src;$(SolutionDir)engine\src;C:\VulkanSDK\1.1.82.1\Include</AdditionalIncludeDirectories>
125125
</ClCompile>
126126
<Link>
127127
<EnableCOMDATFolding>true</EnableCOMDATFolding>
@@ -131,16 +131,28 @@
131131
</Link>
132132
</ItemDefinitionGroup>
133133
<ItemGroup>
134-
<ClInclude Include="src\context\oe_context.h" />
135134
<ClInclude Include="src\core\core_engine.h" />
135+
<ClInclude Include="src\core\oe_context.h" />
136136
<ClInclude Include="src\core\render_engine.h" />
137+
<ClInclude Include="src\math\matrix4f.h" />
138+
<ClInclude Include="src\math\vec2f.h" />
139+
<ClInclude Include="src\math\vec3f.h" />
140+
<ClInclude Include="src\math\vec4f.h" />
137141
<ClInclude Include="src\platform\window.h" />
142+
<ClInclude Include="src\scene\camera.h" />
143+
<ClInclude Include="src\scene\vertex.h" />
138144
</ItemGroup>
139145
<ItemGroup>
140-
<ClCompile Include="src\context\oe_context.cpp" />
141146
<ClCompile Include="src\core\core_engine.cpp" />
147+
<ClCompile Include="src\core\oe_context.cpp" />
142148
<ClCompile Include="src\core\render_engine.cpp" />
149+
<ClCompile Include="src\math\matrix4f.cpp" />
150+
<ClCompile Include="src\math\vec2f.cpp" />
151+
<ClCompile Include="src\math\vec3f.cpp" />
152+
<ClCompile Include="src\math\vec4f.cpp" />
143153
<ClCompile Include="src\platform\window.cpp" />
154+
<ClCompile Include="src\scene\camera.cpp" />
155+
<ClCompile Include="src\scene\vertex.cpp" />
144156
</ItemGroup>
145157
<ItemGroup>
146158
<ProjectReference Include="..\vulkan\vulkan.vcxproj">

engine/engine.vcxproj.filters

Lines changed: 57 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@
55
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
66
<Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions>
77
</Filter>
8-
<Filter Include="Header Files\platform">
9-
<UniqueIdentifier>{048ca4fd-674d-400c-b70e-04b1e19722c9}</UniqueIdentifier>
10-
</Filter>
118
<Filter Include="Header Files\core">
129
<UniqueIdentifier>{2599f8c6-7c22-43c4-bb30-f7dff7f1a4dd}</UniqueIdentifier>
1310
</Filter>
@@ -31,33 +28,84 @@
3128
<Filter Include="Source Files\context">
3229
<UniqueIdentifier>{273cdf58-d00c-4d43-97e9-9557abc39e6c}</UniqueIdentifier>
3330
</Filter>
31+
<Filter Include="Header Files\math">
32+
<UniqueIdentifier>{d9ee0765-3cb4-43c1-b933-e34e22892eb6}</UniqueIdentifier>
33+
</Filter>
34+
<Filter Include="Source Files\math">
35+
<UniqueIdentifier>{b8dc707c-e401-4837-afb5-8eacb20c742d}</UniqueIdentifier>
36+
</Filter>
37+
<Filter Include="Header Files\scene">
38+
<UniqueIdentifier>{4deb69cc-9c7b-4679-bfb1-b623453ee400}</UniqueIdentifier>
39+
</Filter>
40+
<Filter Include="Source Files\scene">
41+
<UniqueIdentifier>{0939c503-c58e-462d-9fb0-11579ab20c82}</UniqueIdentifier>
42+
</Filter>
43+
<Filter Include="Header Files\platform">
44+
<UniqueIdentifier>{048ca4fd-674d-400c-b70e-04b1e19722c9}</UniqueIdentifier>
45+
</Filter>
3446
</ItemGroup>
3547
<ItemGroup>
3648
<ClInclude Include="src\platform\window.h">
3749
<Filter>Header Files\platform</Filter>
3850
</ClInclude>
39-
<ClInclude Include="src\context\oe_context.h">
40-
<Filter>Header Files\context</Filter>
41-
</ClInclude>
4251
<ClInclude Include="src\core\core_engine.h">
4352
<Filter>Header Files\core</Filter>
4453
</ClInclude>
4554
<ClInclude Include="src\core\render_engine.h">
4655
<Filter>Header Files\core</Filter>
4756
</ClInclude>
57+
<ClInclude Include="src\scene\camera.h">
58+
<Filter>Header Files\scene</Filter>
59+
</ClInclude>
60+
<ClInclude Include="src\math\matrix4f.h">
61+
<Filter>Header Files\math</Filter>
62+
</ClInclude>
63+
<ClInclude Include="src\math\vec2f.h">
64+
<Filter>Header Files\math</Filter>
65+
</ClInclude>
66+
<ClInclude Include="src\math\vec3f.h">
67+
<Filter>Header Files\math</Filter>
68+
</ClInclude>
69+
<ClInclude Include="src\math\vec4f.h">
70+
<Filter>Header Files\math</Filter>
71+
</ClInclude>
72+
<ClInclude Include="src\scene\vertex.h">
73+
<Filter>Header Files\scene</Filter>
74+
</ClInclude>
75+
<ClInclude Include="src\core\oe_context.h">
76+
<Filter>Header Files\context</Filter>
77+
</ClInclude>
4878
</ItemGroup>
4979
<ItemGroup>
5080
<ClCompile Include="src\platform\window.cpp">
5181
<Filter>Source Files\platform</Filter>
5282
</ClCompile>
53-
<ClCompile Include="src\context\oe_context.cpp">
54-
<Filter>Source Files\context</Filter>
55-
</ClCompile>
5683
<ClCompile Include="src\core\core_engine.cpp">
5784
<Filter>Source Files\core</Filter>
5885
</ClCompile>
5986
<ClCompile Include="src\core\render_engine.cpp">
6087
<Filter>Source Files\core</Filter>
6188
</ClCompile>
89+
<ClCompile Include="src\scene\camera.cpp">
90+
<Filter>Source Files\scene</Filter>
91+
</ClCompile>
92+
<ClCompile Include="src\math\matrix4f.cpp">
93+
<Filter>Source Files\math</Filter>
94+
</ClCompile>
95+
<ClCompile Include="src\math\vec2f.cpp">
96+
<Filter>Source Files\math</Filter>
97+
</ClCompile>
98+
<ClCompile Include="src\math\vec3f.cpp">
99+
<Filter>Source Files\math</Filter>
100+
</ClCompile>
101+
<ClCompile Include="src\math\vec4f.cpp">
102+
<Filter>Source Files\math</Filter>
103+
</ClCompile>
104+
<ClCompile Include="src\core\oe_context.cpp">
105+
<Filter>Source Files\context</Filter>
106+
</ClCompile>
107+
<ClCompile Include="src\scene\vertex.cpp">
108+
<Filter>Source Files\scene</Filter>
109+
</ClCompile>
62110
</ItemGroup>
63111
</Project>

engine/src/core/core_engine.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#include <iostream>
55
#include "platform\window.h"
66
#include "vk_context.h"
7-
#include "context\oe_context.h"
7+
#include "oe_context.h"
88
#include "render_engine.h"
99

1010
class CoreEngine {

engine/src/core/render_engine.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#include <iostream>
55
#include <GLFW/glfw3.h>
66
#include "vk_context.h"
7-
#include "context/oe_context.h"
7+
#include "oe_context.h"
88

99
class RenderEngine {
1010

engine/src/math/matrix4f.cpp

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
#include "matrix4f.h"
2+
#include <scene\camera.h>
3+
4+
constexpr auto PI = 3.14159265358979323846f;
5+
6+
Matrix4f::Matrix4f()
7+
{
8+
}
9+
10+
Matrix4f Matrix4f::Identity()
11+
{
12+
m[0][0] = 1; m[0][1] = 0; m[0][2] = 0; m[0][3] = 0;
13+
m[1][0] = 0; m[1][1] = 1; m[1][2] = 0; m[1][3] = 0;
14+
m[2][0] = 0; m[2][1] = 0; m[2][2] = 1; m[2][3] = 0;
15+
m[3][0] = 0; m[3][1] = 0; m[3][2] = 0; m[3][3] = 1;
16+
17+
return *this;
18+
}
19+
20+
Matrix4f Matrix4f::Orthographic()
21+
{
22+
m[0][0] = 2/Camera::getInstance().getWidth(); m[0][1] = 0; m[0][2] = 0; m[0][3] = -1;
23+
m[1][0] = 0; m[1][1] = 2/Camera::getInstance().getHeight(); m[1][2] = 0; m[1][3] = -1;
24+
m[2][0] = 0; m[2][1] = 0; m[2][2] = 1; m[2][3] = 0;
25+
m[3][0] = 0; m[3][1] = 0; m[3][2] = 0; m[3][3] = 1;
26+
27+
return *this;
28+
}
29+
30+
Matrix4f Matrix4f::Translation(const Vec3f &translation)
31+
{
32+
m[0][0] = 1; m[0][1] = 0; m[0][2] = 0; m[0][3] = translation.getX();
33+
m[1][0] = 0; m[1][1] = 1; m[1][2] = 0; m[1][3] = translation.getY();
34+
m[2][0] = 0; m[2][1] = 0; m[2][2] = 1; m[2][3] = translation.getZ();
35+
m[3][0] = 0; m[3][1] = 0; m[3][2] = 0; m[3][3] = 1;
36+
37+
return *this;
38+
}
39+
40+
Matrix4f Matrix4f::Rotation(const Vec3f &rotation)
41+
{
42+
Matrix4f rx = Matrix4f();
43+
Matrix4f ry = Matrix4f();
44+
Matrix4f rz = Matrix4f();
45+
46+
float x = rotation.getX() * PI / 180.0f;
47+
float y = rotation.getY() * PI / 180.0f;
48+
float z = rotation.getZ() * PI / 180.0f;
49+
50+
rz.m[0][0] = cos(z); rz.m[0][1] = -sin(z); rz.m[0][2] = 0; rz.m[0][3] = 0;
51+
rz.m[1][0] = sin(z); rz.m[1][1] = cos(z); rz.m[1][2] = 0; rz.m[1][3] = 0;
52+
rz.m[2][0] = 0; rz.m[2][1] = 0; rz.m[2][2] = 1; rz.m[2][3] = 0;
53+
rz.m[3][0] = 0; rz.m[3][1] = 0; rz.m[3][2] = 0; rz.m[3][3] = 1;
54+
55+
rx.m[0][0] = 1; rx.m[0][1] = 0; rx.m[0][2] = 0; rx.m[0][3] = 0;
56+
rx.m[1][0] = 0; rx.m[1][1] = cos(x); rx.m[1][2] = -sin(x); rx.m[1][3] = 0;
57+
rx.m[2][0] = 0; rx.m[2][1] = sin(x); rx.m[2][2] = cos(x); rx.m[2][3] = 0;
58+
rx.m[3][0] = 0; rx.m[3][1] = 0; rx.m[3][2] = 0; rx.m[3][3] = 1;
59+
60+
ry.m[0][0] = cos(y); ry.m[0][1] = 0; ry.m[0][2] = sin(y); ry.m[0][3] = 0;
61+
ry.m[1][0] = 0; ry.m[1][1] = 1; ry.m[1][2] = 0; ry.m[1][3] = 0;
62+
ry.m[2][0] = -sin(y); ry.m[2][1] = 0; ry.m[2][2] = cos(y); ry.m[2][3] = 0;
63+
ry.m[3][0] = 0; ry.m[3][1] = 0; ry.m[3][2] = 0; ry.m[3][3] = 1;
64+
65+
66+
Matrix4f temp = rz.mul(ry.mul(rx));
67+
68+
std::memcpy(m,temp.m, 16 * sizeof(float));
69+
70+
return *this;
71+
}
72+
73+
Matrix4f Matrix4f::Scaling(const Vec3f &scaling)
74+
{
75+
m[0][0] = scaling.getX(); m[0][1] = 0; m[0][2] = 0; m[0][3] = 0;
76+
m[1][0] = 0; m[1][1] = scaling.getY(); m[1][2] = 0; m[1][3] = 0;
77+
m[2][0] = 0; m[2][1] = 0; m[2][2] = scaling.getZ(); m[2][3] = 0;
78+
m[3][0] = 0; m[3][1] = 0; m[3][2] = 0; m[3][3] = 1;
79+
80+
return *this;
81+
}
82+
83+
Matrix4f Matrix4f::Projection(float fovy, float width, float height, float zNear, float zFar)
84+
{
85+
float tanFOV = tan((fovy/2) * PI / 180.0f);
86+
87+
m[0][0] = 1.0f / (tanFOV*(width/height)); m[0][1] = 0; m[0][2] = 0; m[0][3] = 0;
88+
m[1][0] = 0; m[1][1] = 1.0f / tanFOV; m[1][2] = 0; m[1][3] = 0;
89+
m[2][0] = 0; m[2][1] = 0; m[2][2] = (-zNear-zFar)/(zNear-zFar); m[2][3] = 2 * zFar * zNear / (zNear-zFar);
90+
m[3][0] = 0; m[3][1] = 0; m[3][2] = 1; m[3][3] = 0;
91+
92+
return *this;
93+
}
94+
95+
Matrix4f Matrix4f::View(Vec3f &forward, Vec3f &up)
96+
{
97+
Vec3f f = forward.normalize();
98+
Vec3f r = up.normalize().cross(f);
99+
Vec3f u = f.cross(r);
100+
101+
m[0][0] = r.getX(); m[0][1] = r.getY(); m[0][2] = r.getZ(); m[0][3] = 0;
102+
m[1][0] = u.getX(); m[1][1] = u.getY(); m[1][2] = u.getZ(); m[1][3] = 0;
103+
m[2][0] = f.getX(); m[2][1] = f.getY(); m[2][2] = f.getZ(); m[2][3] = 0;
104+
m[3][0] = 0; m[3][1] = 0; m[3][2] = 0; m[3][3] = 1;
105+
106+
return *this;
107+
}
108+
109+
Matrix4f Matrix4f::mul(const Matrix4f &r){
110+
111+
Matrix4f res = Matrix4f();
112+
113+
for (int i=0; i<4; i++)
114+
{
115+
for (int j=0; j<4; j++)
116+
{
117+
res.set(i, j, m[i][0] * r.get(0, j) +
118+
m[i][1] * r.get(1, j) +
119+
m[i][2] * r.get(2, j) +
120+
m[i][3] * r.get(3, j));
121+
}
122+
}
123+
124+
return res;
125+
}
126+
127+
Vec4f Matrix4f::mul(const Vec4f &v)
128+
{
129+
Vec4f res = Vec4f(0,0,0,0);
130+
res.setX(m[0][0] * v.getX() + m[0][1] * v.getY() + m[0][2] * v.getZ() + m[0][3] * v.getW());
131+
res.setY(m[1][0] * v.getX() + m[1][1] * v.getY() + m[1][2] * v.getZ() + m[1][3] * v.getW());
132+
res.setZ(m[2][0] * v.getX() + m[2][1] * v.getY() + m[2][2] * v.getZ() + m[2][3] * v.getW());
133+
res.setW(m[3][0] * v.getX() + m[3][1] * v.getY() + m[3][2] * v.getZ() + m[3][3] * v.getW());
134+
135+
return res;
136+
}
137+
138+
float Matrix4f::get(int x, int y) const
139+
{
140+
return m[x][y];
141+
}
142+
143+
void Matrix4f::set(int x, int y, float value)
144+
{
145+
m[x][y] = value;
146+
}
147+
148+
void Matrix4f::toString() const
149+
{
150+
151+
}

engine/src/math/matrix4f.h

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#pragma once
2+
3+
#include "Vec3f.h"
4+
#include "math\Vec4f.h"
5+
#include <iostream>
6+
7+
class Matrix4f {
8+
9+
public:
10+
Matrix4f();
11+
Matrix4f Identity();
12+
Matrix4f Orthographic();
13+
Matrix4f Translation(const Vec3f &translation);
14+
Matrix4f Rotation(const Vec3f &rotation);
15+
Matrix4f Scaling(const Vec3f &scaling);
16+
Matrix4f Projection(float fovY, float width, float height, float zNear, float zFar);
17+
Matrix4f View(Vec3f &forward, Vec3f &up);
18+
Matrix4f mul(const Matrix4f &r);
19+
Vec4f mul(const Vec4f &v);
20+
float get(int x, int y) const;
21+
void set(int x, int y, float value);
22+
void toString() const;
23+
24+
private:
25+
float m[4][4];
26+
};

0 commit comments

Comments
 (0)