More lighting, Windows builds (WIP)

This commit is contained in:
MrLetsplay 2022-10-12 19:32:56 +02:00
parent c02d34227a
commit d7ea3bb62e
28 changed files with 584 additions and 28 deletions

3
.gitmodules vendored
View File

@ -1,3 +1,6 @@
[submodule "dependencies/microtar"]
path = dependencies/microtar
url = https://github.com/MrLetsplay2003/microtar.git
[submodule "dependencies/openvr"]
path = dependencies/openvr
url = https://github.com/ValveSoftware/openvr

View File

@ -4,11 +4,21 @@ project(KekEngine VERSION 1.0)
option(BUILD_SHARED_LIBS "Build as a shared library" ON)
option(KEKENGINE_DEBUG "Build with debug information" OFF)
option(KEKENGINE_VR "Include VR support" OFF)
option(KEKENGINE_BUILD_KEKGAME "Build kekgame" OFF)
if(UNIX)
set(KEKENGINE_TARGET_PLATFORM Linux)
endif()
if(WIN32)
set(KEKENGINE_TARGET_PLATFORM Windows)
set(BUILD_SHARED_LIBS OFF)
endif()
message("Build shared libs: ${BUILD_SHARED_LIBS}")
message("Debug: ${KEKENGINE_DEBUG}")
message("Build kekgame: ${KEKENGINE_BUILD_KEKGAME}")
message("Target platform: ${KEKENGINE_TARGET_PLATFORM}")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
@ -49,14 +59,39 @@ add_custom_command(TARGET kekengine_res PRE_BUILD
add_library(kekengine ${KEKENGINE_SOURCE_FILES})
add_dependencies(kekengine kekengine_res)
target_link_libraries(kekengine PUBLIC glfw GLEW GL microtar)
target_include_directories(kekengine PRIVATE "src/kekengine/include")
target_compile_definitions(kekengine PUBLIC KEKENGINE_TARGET_LINUX)
target_link_libraries(kekengine PUBLIC microtar)
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
target_link_libraries(kekengine PUBLIC ${GTK3_LIBRARIES})
target_include_directories(kekengine PRIVATE ${GTK3_INCLUDE_DIRS})
if(UNIX)
target_link_libraries(kekengine PUBLIC glfw GLEW GL)
# GTK
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
target_link_libraries(kekengine PUBLIC ${GTK3_LIBRARIES})
target_include_directories(kekengine PRIVATE ${GTK3_INCLUDE_DIRS})
endif()
if(WIN32)
target_link_libraries(kekengine PUBLIC glfw3 glew32s opengl32)
endif()
if(${KEKENGINE_VR})
target_link_directories(kekengine PUBLIC "dependencies/openvr/bin/linux64")
target_link_libraries(kekengine PUBLIC openvr_api)
endif()
target_include_directories(kekengine PRIVATE "src/kekengine/include")
if(UNIX)
target_compile_definitions(kekengine PUBLIC KEKENGINE_TARGET_LINUX)
endif()
if(WIN32)
target_compile_definitions(kekengine PUBLIC KEKENGINE_TARGET_WINDOWS)
endif()
if(${KEKENGINE_VR})
target_compile_definitions(kekengine PUBLIC KEKENGINE_VR)
target_include_directories(kekengine PRIVATE "dependencies/openvr/headers")
endif()
if(${KEKENGINE_BUILD_KEKGAME})
# kekgame resources

View File

@ -2,3 +2,4 @@
- OpenGL, GLEW, GLFW
- stb_image, stb_image_write
- microtar (included)
- openvr (SteamVR), if compiling with KEKENGINE_VR

1
dependencies/openvr vendored Submodule

@ -0,0 +1 @@
Subproject commit 08de3821dfd3aa46f778376680c68f33b9fdcb6c

View File

@ -219,17 +219,27 @@ int start() {
LightList *lights = kekData.activeScene->lights;
std::vector<Light *> shaderLights;
std::vector<Light *> shaderLights; // TODO: Maybe don't compute on every frame
for(PointLight *light : lights->point) {
if(glm::abs(light->getPosition() - kekData.activeCamera->getPosition()).length() < 10) {
if(glm::length2(glm::abs(light->getPosition() - kekData.activeCamera->getPosition())) < KEK_LIGHT_MAX_DISTANCE_SQUARED) {
shaderLights.push_back(light);
}
}
glUniform1i(glGetUniformLocation(kekData.shader->id, "numPointLights"), 1);
for(DirectionalLight *light : lights->directional) {
shaderLights.push_back(light);
}
for(SpotLight *light : lights->spot) {
if(glm::length2(glm::abs(light->getPosition() - kekData.activeCamera->getPosition())) < KEK_LIGHT_MAX_DISTANCE_SQUARED) {
shaderLights.push_back(light);
}
}
unsigned int i = 0;
int numPointLights = 0, numDirectionalLights = 0, numSpotLights = 0;
for(Light *light : shaderLights) {
std::string prefix = "lights[" + std::to_string(i) + "].";
@ -237,18 +247,39 @@ int start() {
case LightType::POINT:
{
PointLight *l = (PointLight *) light;
glUniform3fv(glGetUniformLocation(kekData.shader->id, (prefix + "position").c_str()), 1, glm::value_ptr(l->getPosition()));
glUniform3fv(glGetUniformLocation(kekData.shader->id, (prefix + "color").c_str()), 1, glm::value_ptr(l->color));
glUniform3fv(glGetUniformLocation(kekData.shader->id, (prefix + "position").c_str()), 1, glm::value_ptr(l->getPosition()));
glUniform3fv(glGetUniformLocation(kekData.shader->id, (prefix + "attenuation").c_str()), 1, glm::value_ptr(glm::vec3(l->constant, l->linear, l->quadratic)));
numPointLights++;
break;
}
case LightType::DIRECTIONAL:
case LightType::SPOT:
{
DirectionalLight *l = (DirectionalLight *) light;
glUniform3fv(glGetUniformLocation(kekData.shader->id, (prefix + "color").c_str()), 1, glm::value_ptr(l->color));
glUniform3fv(glGetUniformLocation(kekData.shader->id, (prefix + "direction").c_str()), 1, glm::value_ptr(l->direction));
numDirectionalLights++;
break;
}
case LightType::SPOT:
{
SpotLight *l = (SpotLight *) light;
glUniform3fv(glGetUniformLocation(kekData.shader->id, (prefix + "color").c_str()), 1, glm::value_ptr(l->color));
glUniform3fv(glGetUniformLocation(kekData.shader->id, (prefix + "position").c_str()), 1, glm::value_ptr(l->getPosition()));
glUniform3fv(glGetUniformLocation(kekData.shader->id, (prefix + "direction").c_str()), 1, glm::value_ptr(l->direction));
glUniform3fv(glGetUniformLocation(kekData.shader->id, (prefix + "attenuation").c_str()), 1, glm::value_ptr(glm::vec3(l->constant, l->linear, l->quadratic)));
numSpotLights++;
break;
}
}
i++;
}
glUniform1i(glGetUniformLocation(kekData.shader->id, "numPointLights"), numPointLights);
glUniform1i(glGetUniformLocation(kekData.shader->id, "numDirectionalLights"), numDirectionalLights);
glUniform1i(glGetUniformLocation(kekData.shader->id, "numSpotLights"), numSpotLights);
if(kekData.activeScene) kekData.activeScene->draw(kekData.shader);
// Swap buffers and poll window events

View File

@ -13,10 +13,10 @@ Light::~Light() {
}
PointLight::PointLight(glm::vec3 color, float constantFalloff, float linearFalloff, float quadraticFalloff): Light(color) {
this->constant = constantFalloff;
this->linear = linearFalloff;
this->quadratic = quadraticFalloff;
PointLight::PointLight(glm::vec3 color, float constant, float linear, float quadratic): Light(color) {
this->constant = constant;
this->linear = linear;
this->quadratic = quadratic;
}
PointLight::~PointLight() {
@ -27,17 +27,50 @@ LightType PointLight::getType() {
return LightType::POINT;
}
DirectionalLight::DirectionalLight(glm::vec3 color, glm::vec3 direction): Light(color) {
this->direction = direction;
}
DirectionalLight::~DirectionalLight() {
}
LightType DirectionalLight::getType() {
return LightType::DIRECTIONAL;
}
void DirectionalLight::lookAt(glm::vec3 direction){
this->direction = direction;
}
SpotLight::SpotLight(glm::vec3 color, glm::vec3 direction, float constant, float linear, float quadratic): Light(color) {
this->direction = direction;
this->constant = constant;
this->linear = linear;
this->quadratic = quadratic;
}
SpotLight::~SpotLight() {
}
LightType SpotLight::getType() {
return LightType::SPOT;
}
void SpotLight::lookAt(glm::vec3 direction) {
this->direction = direction;
}
LightList::LightList() {
point = std::vector<PointLight *>();
//directional = std::vector<DirectionalLight *>();
//spot = std::vector<SpotLight *>();
}
void LightList::add(Light *light) {
switch(light->getType()) {
case LightType::POINT: point.push_back((PointLight *) light); break;
//case LightType::DIRECTIONAL: directional.push_back((DirectionalLight *) light); break;
//case LightType::SPOT: spot.push_back((SpotLight *) light); break;
case LightType::DIRECTIONAL: directional.push_back((DirectionalLight *) light); break;
case LightType::SPOT: spot.push_back((SpotLight *) light); break;
}
}

View File

@ -14,3 +14,6 @@
#define KEK_LIGHT_DEFAULT_AMBIENT_STRENGTH 0.05f
#define KEK_LIGHT_DEFAULT_SPECULAR_STRENGTH 0.1f
#define KEK_LIGHT_MAX_DISTANCE 30
#define KEK_LIGHT_MAX_DISTANCE_SQUARED (KEK_LIGHT_MAX_DISTANCE * KEK_LIGHT_MAX_DISTANCE)

View File

@ -39,12 +39,43 @@ public:
};
class DirectionalLight: public Light {
public:
glm::vec3 direction;
DirectionalLight(glm::vec3 color, glm::vec3 direction);
~DirectionalLight();
LightType getType();
void lookAt(glm::vec3 direction);
};
class SpotLight: public Light, public DefaultObject {
public:
glm::vec3 direction;
float constant, linear, quadratic;
SpotLight(glm::vec3 color, glm::vec3 direction, float constantFalloff, float linearFalloff, float quadraticFalloff);
~SpotLight();
LightType getType();
void lookAt(glm::vec3 direction);
};
class LightList {
public:
std::vector<PointLight *> point;
//std::vector<DirectionalLight *> directional;
//std::vector<SpotLight *> spot;
std::vector<DirectionalLight *> directional;
std::vector<SpotLight *> spot;
LightList();

View File

@ -23,3 +23,52 @@ vec3 calcPointLight(Light light, vec3 normal, vec3 fragPos, vec3 viewDir, vec2 t
return ambient + (1.0 - shadow) * (diffuse + specular);
}
vec3 calcDirectionalLight(Light light, vec3 normal, vec3 viewDir, vec2 texCoord, float shadow) {
vec3 lightDir = normalize(-light.direction);
vec3 halfwayDir = normalize(lightDir + viewDir);
// Ambient
vec3 ambient = light.color * vec3(texture(material.diffuse, texCoord));
// Diffuse
float diff = max(dot(normal, lightDir), 0.0);
vec3 diffuse = light.color * diff * vec3(texture(material.diffuse, texCoord));
// Specular
float spec = pow(max(dot(normal, halfwayDir), 0.0), material.shininess);
vec3 specular = light.color * spec * vec3(texture(material.specular, texCoord));
return ambient + (1.0 - shadow) * (diffuse + specular);
}
vec3 calcSpotLight(Light light, vec3 normal, vec3 fragPos, vec3 viewDir, vec2 texCoord, float shadow) {
vec3 lightDir = normalize(light.position - fragPos);
vec3 halfwayDir = normalize(lightDir + viewDir);
// Ambient
vec3 ambient = light.color * vec3(texture(material.diffuse, texCoord));
// Diffuse
float diff = max(dot(normal, lightDir), 0.0);
vec3 diffuse = light.color * diff * vec3(texture(material.diffuse, texCoord));
// Specular
float spec = pow(max(dot(normal, halfwayDir), 0.0), material.shininess);
vec3 specular = light.color * spec * vec3(texture(material.specular, texCoord));
// Intensity
float theta = dot(lightDir, normalize(-light.direction));
float epsilon = light.cutoff.x - light.cutoff.y;
float intensity = clamp((theta - light.cutoff.y) / epsilon, 0.0, 1.0);
// Attenuation
float dist = length(light.position - fragPos);
float attenuation = 1.0 / (light.attenuation.x + light.attenuation.y * dist + light.attenuation.z * (dist * dist));
ambient *= intensity * attenuation;
diffuse *= intensity * attenuation;
specular *= intensity * attenuation;
return ambient + (1.0 - shadow) * (diffuse + specular);
}

View File

@ -6,10 +6,10 @@ struct Material {
};
struct Light {
vec3 color;
vec3 position;
vec3 direction;
vec3 color;
vec3 attenuation;
vec2 cutoff;
vec3 attenuation; // constant, linear, quadratic
vec2 cutoff; // inner, outer
mat4 lightSpaceMatrix;
};

View File

@ -10,6 +10,8 @@ in VS_OUT {
uniform Light lights[8];
uniform int numPointLights;
uniform int numDirectionalLights;
uniform int numSpotLights;
uniform Material material;
@ -35,5 +37,13 @@ void main() {
result += calcPointLight(lights[i], normal, fs_in.fragmentPosition, viewDir, fs_in.textureCoordinate, 0.0);
}
for(int i = 0; i < numDirectionalLights; i++) {
result += calcDirectionalLight(lights[numPointLights + i], normal, viewDir, fs_in.textureCoordinate, 0.0);
}
for(int i = 0; i < numSpotLights; i++) {
result += calcSpotLight(lights[numPointLights + numDirectionalLights + i], normal, fs_in.fragmentPosition, viewDir, fs_in.textureCoordinate, 0.0);
}
color = vec4(pow(result, vec3(1.0 / gamma)), 1.0);
}

View File

@ -26,8 +26,11 @@ int main(int argc, char **argv) {
scene->addObject(test2);
}
PointLight *light = new PointLight(glm::vec3(1), 1, 1, 1);
scene->lights->add(light);
//PointLight *light = new PointLight(glm::vec3(1), 1, 1, 1);
//scene->lights->add(light);
DirectionalLight *l = new DirectionalLight(glm::vec3(1), glm::vec3(1, -1, 1));
scene->lights->add(l);
Engine::setActiveScene(scene);

View File

@ -0,0 +1,19 @@
set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
set(CMAKE_C_FLAGS -w)
set(CMAKE_CXX_FLAGS -w)
set(KEKENGINE_TARGET_PLATFORM Windows)
set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32/)
link_directories(windows/lib/)
include_directories(windows/include/)
link_directories(dependencies/openvr/bin/win64)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

1
windows/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
include/

BIN
windows/glew32.dll Normal file

Binary file not shown.

BIN
windows/glfw3.dll Normal file

Binary file not shown.

176
windows/lib/OpenAL32.def Normal file
View File

@ -0,0 +1,176 @@
EXPORTS
alAuxiliaryEffectSlotPlaySOFT
alAuxiliaryEffectSlotPlayvSOFT
alAuxiliaryEffectSlotStopSOFT
alAuxiliaryEffectSlotStopvSOFT
alAuxiliaryEffectSlotf
alAuxiliaryEffectSlotfv
alAuxiliaryEffectSloti
alAuxiliaryEffectSlotiv
alBuffer3f
alBuffer3i
alBufferCallbackSOFT
alBufferData
alBufferSamplesSOFT
alBufferStorageSOFT
alBufferSubDataSOFT
alBufferSubSamplesSOFT
alBufferf
alBufferfv
alBufferi
alBufferiv
alDeferUpdatesSOFT
alDeleteAuxiliaryEffectSlots
alDeleteBuffers
alDeleteEffects
alDeleteFilters
alDeleteSources
alDisable
alDistanceModel
alDopplerFactor
alDopplerVelocity
alEffectf
alEffectfv
alEffecti
alEffectiv
alEnable
alEventCallbackSOFT
alEventControlSOFT
alFilterf
alFilterfv
alFilteri
alFilteriv
alFlushMappedBufferSOFT
alGenAuxiliaryEffectSlots
alGenBuffers
alGenEffects
alGenFilters
alGenSources
alGetAuxiliaryEffectSlotf
alGetAuxiliaryEffectSlotfv
alGetAuxiliaryEffectSloti
alGetAuxiliaryEffectSlotiv
alGetBoolean
alGetBooleanv
alGetBuffer3PtrSOFT
alGetBuffer3f
alGetBuffer3i
alGetBufferPtrSOFT
alGetBufferPtrvSOFT
alGetBufferSamplesSOFT
alGetBufferf
alGetBufferfv
alGetBufferi
alGetBufferiv
alGetDouble
alGetDoublev
alGetEffectf
alGetEffectfv
alGetEffecti
alGetEffectiv
alGetEnumValue
alGetError
alGetFilterf
alGetFilterfv
alGetFilteri
alGetFilteriv
alGetFloat
alGetFloatv
alGetInteger
alGetInteger64SOFT
alGetInteger64vSOFT
alGetIntegerv
alGetListener3f
alGetListener3i
alGetListenerf
alGetListenerfv
alGetListeneri
alGetListeneriv
alGetPointerSOFT
alGetPointervSOFT
alGetProcAddress
alGetSource3dSOFT
alGetSource3f
alGetSource3i
alGetSource3i64SOFT
alGetSourcedSOFT
alGetSourcedvSOFT
alGetSourcef
alGetSourcefv
alGetSourcei
alGetSourcei64SOFT
alGetSourcei64vSOFT
alGetSourceiv
alGetString
alGetStringiSOFT
alIsAuxiliaryEffectSlot
alIsBuffer
alIsBufferFormatSupportedSOFT
alIsEffect
alIsEnabled
alIsExtensionPresent
alIsFilter
alIsSource
alListener3f
alListener3i
alListenerf
alListenerfv
alListeneri
alListeneriv
alMapBufferSOFT
alProcessUpdatesSOFT
alSource3dSOFT
alSource3f
alSource3i
alSource3i64SOFT
alSourcePause
alSourcePausev
alSourcePlay
alSourcePlayv
alSourceQueueBuffers
alSourceRewind
alSourceRewindv
alSourceStop
alSourceStopv
alSourceUnqueueBuffers
alSourcedSOFT
alSourcedvSOFT
alSourcef
alSourcefv
alSourcei
alSourcei64SOFT
alSourcei64vSOFT
alSourceiv
alSpeedOfSound
alUnmapBufferSOFT
alcCaptureCloseDevice
alcCaptureOpenDevice
alcCaptureSamples
alcCaptureStart
alcCaptureStop
alcCloseDevice
alcCreateContext
alcDestroyContext
alcDevicePauseSOFT
alcDeviceResumeSOFT
alcGetContextsDevice
alcGetCurrentContext
alcGetEnumValue
alcGetError
alcGetInteger64vSOFT
alcGetIntegerv
alcGetProcAddress
alcGetString
alcGetStringiSOFT
alcGetThreadContext
alcIsExtensionPresent
alcIsRenderFormatSupportedSOFT
alcLoopbackOpenDeviceSOFT
alcMakeContextCurrent
alcOpenDevice
alcProcessContext
alcRenderSamplesSOFT
alcResetDeviceSOFT
alcSetThreadContext
alcSuspendContext
alsoft_get_version

BIN
windows/lib/OpenAL32.lib Normal file

Binary file not shown.

BIN
windows/lib/glew32.lib Normal file

Binary file not shown.

BIN
windows/lib/glew32s.lib Normal file

Binary file not shown.

BIN
windows/lib/glfw3.dll Normal file

Binary file not shown.

Binary file not shown.

BIN
windows/lib/libgdi32.a Normal file

Binary file not shown.

BIN
windows/lib/libglfw3.a Normal file

Binary file not shown.

BIN
windows/lib/libglfw3dll.a Normal file

Binary file not shown.

3
windows/mingw_linux.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/sh
FILES="../src/cpp/gameobject.cpp ../src/cpp/light.cpp ../src/cpp/material.cpp ../src/cpp/object.cpp ../src/cpp/scene.cpp ../src/cpp/shader.cpp ../src/cpp/texture.cpp ../src/cpp/utils.cpp ../src/cpp/engine.cpp ../src/cpp/input.cpp ../src/cpp/game.cpp"
x86_64-w64-mingw32-g++ -static-libstdc++ -static-libgcc -I../src/headers/ $FILES -lglfw3 -lopengl32 -lglew32 -lgdi32 -Wl,-Bstatic -lstdc++ -lwinpthread -Wl,-Bdynamic -mwindows -I./include/ -L./lib/ -o kek.exe

153
windows/msys-packages.txt Normal file
View File

@ -0,0 +1,153 @@
base 2020.12-1
bash 5.1.008-1
bash-completion 2.11-1
brotli 1.0.9-2
bsdtar 3.5.2-1
bzip2 1.0.8-3
ca-certificates 20210119-3
coreutils 8.32-2
curl 7.80.0-3
dash 0.5.11.5-1
db 5.3.28-3
file 5.41-2
filesystem 2021.11-2
findutils 4.8.0-1
gawk 5.1.0-2
gcc-libs 11.2.0-3
gdbm 1.22-1
getent 2.18.90-3
gettext 0.21-1
glib2 2.68.4-1
gmp 6.2.1-1
gnupg 2.2.32-2
grep 1~3.0-3
gzip 1.11-1
heimdal-libs 7.7.0-3
icu 70.1-1
inetutils 1.9.4-3
info 6.8-3
less 590-1
libargp 20110921-3
libasprintf 0.21-1
libassuan 2.5.5-1
libbz2 1.0.8-3
libcrypt 2.1-3
libcurl 7.80.0-3
libdb 5.3.28-3
libedit 20210910_3.1-1
libexpat 2.4.3-1
libffi 3.3-1
libgcrypt 1.9.4-1
libgdbm 1.22-1
libgettextpo 0.21-1
libgnutls 3.7.2-1
libgpg-error 1.43-1
libgpgme 1.16.0-1
libhogweed 3.7.3-1
libiconv 1.16-2
libidn2 2.3.2-1
libintl 0.21-1
libksba 1.6.0-1
liblz4 1.9.3-1
liblzma 5.2.5-1
libnettle 3.7.3-1
libnghttp2 1.46.0-1
libnpth 1.6-1
libopenssl 1.1.1.m-1
libp11-kit 0.24.0-1
libpcre 8.45-1
libpcre2_8 10.37-1
libpsl 0.21.1-2
libreadline 8.1.001-1
libsqlite 3.36.0-3
libssh2 1.10.0-1
libtasn1 4.18.0-2
libunistring 0.9.10-1
libutil-linux 2.35.2-1
libxml2 2.9.12-3
libxslt 1.1.34-4
libzstd 1.5.1-1
mingw-w64-x86_64-binutils 2.37-4
mingw-w64-x86_64-bzip2 1.0.8-2
mingw-w64-x86_64-ca-certificates 20210119-1
mingw-w64-x86_64-crt-git 9.0.0.6373.5be8fcd83-1
mingw-w64-x86_64-expat 2.4.3-1
mingw-w64-x86_64-gcc 11.2.0-7
mingw-w64-x86_64-gcc-ada 11.2.0-7
mingw-w64-x86_64-gcc-fortran 11.2.0-7
mingw-w64-x86_64-gcc-libgfortran 11.2.0-7
mingw-w64-x86_64-gcc-libs 11.2.0-7
mingw-w64-x86_64-gcc-objc 11.2.0-7
mingw-w64-x86_64-gdb 11.1-2
mingw-w64-x86_64-gdb-multiarch 11.1-2
mingw-w64-x86_64-gettext 0.21-3
mingw-w64-x86_64-glew 2.2.0-2
mingw-w64-x86_64-glfw 3.3.6-1
mingw-w64-x86_64-glm 0.9.9.8-1
mingw-w64-x86_64-gmp 6.2.1-3
mingw-w64-x86_64-headers-git 9.0.0.6373.5be8fcd83-1
mingw-w64-x86_64-isl 0.24-1
mingw-w64-x86_64-libffi 3.3-4
mingw-w64-x86_64-libgccjit 11.2.0-7
mingw-w64-x86_64-libiconv 1.16-2
mingw-w64-x86_64-libmangle-git 9.0.0.6373.5be8fcd83-1
mingw-w64-x86_64-libsystre 1.0.1-4
mingw-w64-x86_64-libtasn1 4.18.0-1
mingw-w64-x86_64-libtre-git r128.6fb7206-2
mingw-w64-x86_64-libwinpthread-git 9.0.0.6373.5be8fcd83-1
mingw-w64-x86_64-libxml2 2.9.12-5
mingw-w64-x86_64-llvm 13.0.0-5
mingw-w64-x86_64-make 4.3-1
mingw-w64-x86_64-mesa 21.3.4-1
mingw-w64-x86_64-mpc 1.2.1-1
mingw-w64-x86_64-mpdecimal 2.5.1-1
mingw-w64-x86_64-mpfr 4.1.0.p13-1
mingw-w64-x86_64-ncurses 6.3-3
mingw-w64-x86_64-openssl 1.1.1.m-1
mingw-w64-x86_64-p11-kit 0.24.1-1
mingw-w64-x86_64-pkgconf 1.8.0-2
mingw-w64-x86_64-python 3.9.7-4
mingw-w64-x86_64-readline 8.1.001-1
mingw-w64-x86_64-sqlite3 3.37.2-1
mingw-w64-x86_64-stb r1943.c9064e3-2
mingw-w64-x86_64-tcl 8.6.11-5
mingw-w64-x86_64-termcap 1.3.1-6
mingw-w64-x86_64-tk 8.6.11.1-2
mingw-w64-x86_64-tools-git 9.0.0.6373.5be8fcd83-1
mingw-w64-x86_64-tzdata 2021e-1
mingw-w64-x86_64-vulkan-headers 1.2.194-1
mingw-w64-x86_64-vulkan-loader 1.2.194-1
mingw-w64-x86_64-windows-default-manifest 6.4-3
mingw-w64-x86_64-winpthreads-git 9.0.0.6373.5be8fcd83-1
mingw-w64-x86_64-winstorecompat-git 9.0.0.6373.5be8fcd83-1
mingw-w64-x86_64-xxhash 0.8.1-1
mingw-w64-x86_64-xz 5.2.5-2
mingw-w64-x86_64-zlib 1.2.11-9
mingw-w64-x86_64-zstd 1.5.2-1
mintty 1~3.5.2-1
mpfr 4.1.0-1
msys2-keyring 1~20211228-1
msys2-launcher 1.4-1
msys2-runtime 3.3.3-7
nano 5.9-1
ncurses 6.2-2
nettle 3.7.3-1
openssl 1.1.1.m-1
p11-kit 0.24.0-1
pacman 6.0.1-9
pacman-contrib 1.4.0-2
pacman-mirrors 20211230-1
perl 5.32.1-2
pinentry 1.2.0-1
rebase 4.5.0-1
sed 4.8-2
tcl 8.6.10-1
tftp-hpa 5.2-4
time 1.9-2
tzcode 2021e-1
util-linux 2.35.2-1
wget 1.21.2-1
which 2.21-3
xz 5.2.5-1
zlib 1.2.11-1
zstd 1.5.1-1

4
windows/msys2_windows.sh Normal file
View File

@ -0,0 +1,4 @@
#!/bin/sh
export PATH=$PATH:/mingw64/bin/
FILES="../src/cpp/gameobject.cpp ../src/cpp/light.cpp ../src/cpp/material.cpp ../src/cpp/object.cpp ../src/cpp/scene.cpp ../src/cpp/shader.cpp ../src/cpp/texture.cpp ../src/cpp/utils.cpp ../src/cpp/engine.cpp ../src/cpp/input.cpp ../src/cpp/game.cpp"
g++ -static-libgcc -static-libstdc++ -I../src/headers/ $FILES -lglfw3 -lopengl32 -lglew32 -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic -mwindows -o kek.exe