monety #5

Closed
s473595 wants to merge 7 commits from monety into master
29 changed files with 1828 additions and 33 deletions
Showing only changes of commit 95cca1c2c2 - Show all commits

Binary file not shown.

View File

@ -1,5 +1,22 @@
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppBuild.targets(531,5): warning MSB8028: Katalog pośredni (Debug\) zawiera pliki udostępnione z innego projektu (grk-cw3.vcxproj, grk-cw4.vcxproj, grk-cw5.vcxproj, grk-cw6.vcxproj, grk-cw7.vcxproj). Może to spowodować niepoprawne zachowanie podczas oczyszczania i ponownej kompilacji.
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppBuild.targets(531,5): warning MSB8028: Katalog pośredni (Debug\) zawiera pliki udostępnione z innego projektu (grk-cw3.vcxproj, grk-cw4.vcxproj, grk-cw5.vcxproj, grk-cw6.vcxproj, grk-cw7.vcxproj). Może to spowodować niepoprawne zachowanie podczas oczyszczania i ponownej kompilacji.
main.cpp
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\shared\minwindef.h(130,1): warning C4005: "APIENTRY": ponowna definicja makra
(kompilowanie pliku źródłowego „src/main.cpp”)
C:\Users\maksg\Documents\Grafika_2024\dependencies\glfw-3.3.8.bin.WIN32\include\GLFW\glfw3.h(123,1):
zobacz poprzednią definicję „APIENTRY”
C:\Users\maksg\Documents\Grafika_2024\projekt_grk\src\ex_7_1.hpp(109,10): warning C4305: "inicjowanie": obcięcie z "double" do "float"
(kompilowanie pliku źródłowego „src/main.cpp”)
C:\Users\maksg\Documents\Grafika_2024\projekt_grk\src\ex_7_1.hpp(155,13): warning C4244: "inicjowanie": konwersja z "double" do "float", możliwa utrata danych
(kompilowanie pliku źródłowego „src/main.cpp”)
C:\Users\maksg\Documents\Grafika_2024\projekt_grk\src\ex_7_1.hpp(255,13): warning C4244: "inicjowanie": konwersja z "double" do "float", możliwa utrata danych
(kompilowanie pliku źródłowego „src/main.cpp”)
C:\Users\maksg\Documents\Grafika_2024\projekt_grk\src\ex_7_1.hpp(273,29): warning C4305: "inicjowanie": obcięcie z "double" do "float"
(kompilowanie pliku źródłowego „src/main.cpp”)
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\minwindef.h(130,1): warning C4005: "APIENTRY": ponowna definicja makra
(kompilowanie pliku źródłowego „src/main.cpp”)
D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\dependencies\glfw-3.3.8.bin.WIN32\include\GLFW\glfw3.h(123,1):
@ -16,4 +33,4 @@ D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\src\ex_7_1.hpp(350,29): warning C
Box.obj : warning LNK4075: zignorowano opcję „/EDITANDCONTINUE” z powodu określenia opcji „/INCREMENTAL:NO”
LINK : warning LNK4098: domyślna biblioteka „MSVCRT” powoduje konflikt z innymi bibliotekami; użyj opcji /NODEFAULTLIB:biblioteka
grk-cw7.vcxproj -> D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\Debug\projekt_grk.exe
grk-cw7.vcxproj -> C:\Users\maksg\Documents\Grafika_2024\Debug\projekt_grk.exe

View File

@ -2,7 +2,7 @@
<Project>
<ProjectOutputs>
<ProjectOutput>
<FullPath>D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\Debug\projekt_grk.exe</FullPath>
<FullPath>C:\Users\maksg\Documents\Grafika_2024\Debug\projekt_grk.exe</FullPath>
</ProjectOutput>
</ProjectOutputs>
<ContentFiles />

View File

@ -1,10 +1,10 @@
D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\src\Box.cpp;D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\Debug\Box.obj
D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\src\Camera.cpp;D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\Debug\Camera.obj
D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\src\main.cpp;D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\Debug\main.obj
D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\src\Render_Utils.cpp;D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\Debug\Render_Utils.obj
D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\src\Shader_Loader.cpp;D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\Debug\Shader_Loader.obj
D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\src\SOIL\image_DXT.c;D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\Debug\image_DXT.obj
D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\src\SOIL\image_helper.c;D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\Debug\image_helper.obj
D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\src\SOIL\SOIL.c;D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\Debug\SOIL.obj
D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\src\SOIL\stb_image_aug.c;D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\Debug\stb_image_aug.obj
D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\src\Texture.cpp;D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\Debug\Texture.obj
C:\Users\maksg\Documents\Grafika_2024\projekt_grk\src\Box.cpp;C:\Users\maksg\Documents\Grafika_2024\projekt_grk\Debug\Box.obj
C:\Users\maksg\Documents\Grafika_2024\projekt_grk\src\Camera.cpp;C:\Users\maksg\Documents\Grafika_2024\projekt_grk\Debug\Camera.obj
C:\Users\maksg\Documents\Grafika_2024\projekt_grk\src\main.cpp;C:\Users\maksg\Documents\Grafika_2024\projekt_grk\Debug\main.obj
C:\Users\maksg\Documents\Grafika_2024\projekt_grk\src\Render_Utils.cpp;C:\Users\maksg\Documents\Grafika_2024\projekt_grk\Debug\Render_Utils.obj
C:\Users\maksg\Documents\Grafika_2024\projekt_grk\src\Shader_Loader.cpp;C:\Users\maksg\Documents\Grafika_2024\projekt_grk\Debug\Shader_Loader.obj
C:\Users\maksg\Documents\Grafika_2024\projekt_grk\src\SOIL\image_DXT.c;C:\Users\maksg\Documents\Grafika_2024\projekt_grk\Debug\image_DXT.obj
C:\Users\maksg\Documents\Grafika_2024\projekt_grk\src\SOIL\image_helper.c;C:\Users\maksg\Documents\Grafika_2024\projekt_grk\Debug\image_helper.obj
C:\Users\maksg\Documents\Grafika_2024\projekt_grk\src\SOIL\SOIL.c;C:\Users\maksg\Documents\Grafika_2024\projekt_grk\Debug\SOIL.obj
C:\Users\maksg\Documents\Grafika_2024\projekt_grk\src\SOIL\stb_image_aug.c;C:\Users\maksg\Documents\Grafika_2024\projekt_grk\Debug\stb_image_aug.obj
C:\Users\maksg\Documents\Grafika_2024\projekt_grk\src\Texture.cpp;C:\Users\maksg\Documents\Grafika_2024\projekt_grk\Debug\Texture.obj

View File

@ -41,6 +41,8 @@
<None Include="shaders\shader_5_1.vert" />
<None Include="shaders\shader_5_1_tex_copy.frag" />
<None Include="shaders\shader_5_1_tex_copy.vert" />
<None Include="shaders\shader_coin.frag" />
<None Include="shaders\shader_coin.vert" />
<None Include="shaders\shader_bloom.frag" />
<None Include="shaders\shader_bloom.vert" />
<None Include="shaders\shader_blur.frag" />
@ -56,7 +58,7 @@
<ProjectGuid>{F2FC2E8F-CBA6-49D7-8B73-4BFBCB64D310}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>grk-cw7</RootNamespace>
<WindowsTargetPlatformVersion>10.0.22000.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<ProjectName>projekt_grk</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

View File

@ -115,6 +115,12 @@
<None Include="shaders\shader_skybox.vert">
<Filter>Shader Files</Filter>
</None>
<None Include="shaders\shader_coin.frag">
<Filter>Shader Files</Filter>
</None>
<None Include="shaders\shader_coin.vert">
<Filter>Shader Files</Filter>
</None>
<None Include="shaders\shader_pbr.frag">
<Filter>Shader Files</Filter>
</None>

View File

@ -1,4 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
<PropertyGroup>
<ShowAllFiles>false</ShowAllFiles>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,3 @@
{
"CurrentProjectSetting": null
}

View File

@ -0,0 +1,6 @@
{
"ExpandedNodes": [
""
],
"PreviewInSolutionExplorer": false
}

Binary file not shown.

View File

@ -0,0 +1,23 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\maksg\\Documents\\Grafika_2024\\projekt_grk\\models\\",
"Documents": [],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": -1,
"Children": [
{
"$type": "Bookmark",
"Name": "ST:128:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
}
]
}
]
}
]
}

Binary file not shown.

View File

@ -0,0 +1,2 @@
# Blender 4.0.2 MTL File: 'None'
# www.blender.org

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,2 @@
# Blender 4.0.2 MTL File: 'None'
# www.blender.org

View File

@ -0,0 +1,18 @@
#version 430 core
float AMBIENT = 0.1;
uniform vec3 color;
uniform vec3 lightPos;
in vec3 vecNormal;
in vec3 worldPos;
out vec4 finalColor;
void main()
{
vec3 lightDir = normalize(lightPos-worldPos);
vec3 normal = normalize(vecNormal);
float diffuse=max(0,dot(normal,lightDir));
finalColor = vec4(color*min(1,AMBIENT+diffuse), 1.0);
}

View File

@ -0,0 +1,17 @@
#version 430 core
layout(location = 0) in vec3 vertexPosition;
layout(location = 1) in vec3 vertexNormal;
uniform mat4 transformation;
uniform mat4 modelMatrix;
out vec3 vecNormal;
out vec3 worldPos;
void main()
{
worldPos = (modelMatrix* vec4(vertexPosition,1)).xyz;
vecNormal = (modelMatrix* vec4(vertexNormal,0)).xyz;
gl_Position = transformation * vec4(vertexPosition, 1.0);
}

View File

@ -16,7 +16,6 @@
#include <string>
#include "SOIL/SOIL.h"
namespace texture {
GLuint mercury;
GLuint venus;
@ -54,6 +53,7 @@ GLuint program;
GLuint programSun;
GLuint programTex;
GLuint programSkyBox;
GLuint programCoin;
GLuint programSpaceShip;
GLuint programBlur;
GLuint programBloom;
@ -62,6 +62,7 @@ Core::Shader_Loader shaderLoader;
Core::RenderContext shipContext;
Core::RenderContext sphereContext;
Core::RenderContext cubeContext;
Core::RenderContext cylinderContext;
glm::vec3 cameraPos = glm::vec3(-4.f, 0, 0);
@ -74,6 +75,23 @@ GLuint VAO,VBO;
float aspectRatio = 1.f;
unsigned int textureID;
const int maxSize = 30;
int numberOfCollectedCoins = 0;
float xCordinatesOfCoin[maxSize] = {
5.3f, 10.0f, -4.7f, 9.2f, 3.5f, -7.5f, 1.8f, 2.5f, 11.8f, -10.2f,
-4.5f, 6.7f, -6.7f, 5.5f, -0.1f, -9.2f, -6.8f, -9.7f, -12.9f, 5.0f,
12.2f, -7.4f, 2.4f, 12.3f, -4.1f, -5.7f, -5.5f, -3.6f, -2.5f, -7.6f
};
float zCordinatesOfCoin[maxSize] = {
2.6f, 1.5f, 4.8f, 2.2f, -11.8f, 3.3f, 9.1f, -6.0f, -12.0f, 11.1f,
11.9f, 2.5f, 5.2f, 1.1f, -2.0f, -8.2f, -2.9f, -9.4f, 0.5f, -2.3f,
-1.0f, 1.0f, -4.2f, 7.3f, 10.0f, -12.6f, -5.9f, -2.7f, 12.8f, 2.3f
};
float xCordinatesOfCollectedCoin[maxSize] = {};
float zCordinatesOfCollectedCoin[maxSize] = {};
unsigned int hdrFBO;
unsigned int colorBuffers[2];
unsigned int pingpongFBO[2];
@ -144,7 +162,7 @@ void renderQuad()
glBindBuffer(GL_ARRAY_BUFFER, quadVBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(quadVertices), &quadVertices, GL_STATIC_DRAW);
// locations 7 i 8 aby nie by³o kolizii z shaderem statku
// locations 7 i 8 aby nie by<EFBFBD>o kolizii z shaderem statku
glEnableVertexAttribArray(7);
glVertexAttribPointer(7, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void*)0);
glEnableVertexAttribArray(8);
@ -235,6 +253,69 @@ void drawObjectTexture(Core::RenderContext& context, glm::mat4 modelMatrix, GLui
Core::DrawContext(context);
}
void drawCylinder(Core::RenderContext& context, glm::mat4 modelMatrix, glm::vec3 color) {
GLuint prog = programCoin;
glUseProgram(prog);
float time = glfwGetTime();
glm::mat4 modelMatrixForMultiplications = modelMatrix * glm::rotate(glm::mat4(1.0f), time * 1.0f, glm::vec3(0, 1, 0))
* glm::scale(glm::vec3(0.3f));
modelMatrix = modelMatrixForMultiplications;
glm::mat4 viewProjectionMatrix = createPerspectiveMatrix() * createCameraMatrix();
glm::mat4 transformation = viewProjectionMatrix * modelMatrix;
glUniformMatrix4fv(glGetUniformLocation(prog, "transformation"), 1, GL_FALSE, (float*)&transformation);
glUniformMatrix4fv(glGetUniformLocation(prog, "modelMatrix"), 1, GL_FALSE, (float*)&modelMatrix);
glUniform3f(glGetUniformLocation(prog, "color"), color.x, color.y, color.z);
glUniform3f(glGetUniformLocation(prog, "lightPos"), 0, 0, 0);
Core::DrawContext(context);
}
bool checkCoinCollection(glm::vec3 spaceshipPos, glm::vec3 coinPos) {
float collectionDistance = 0.8f;
float distance = glm::length(spaceshipPos - coinPos);
if (distance < collectionDistance) {
return true;
}
return false;
}
void renderCoins() {
for (int i = 0;i < maxSize;i++) {
bool found = false;
if (checkCoinCollection(spaceshipPos, glm::vec3(xCordinatesOfCoin[i], 0.0f, zCordinatesOfCoin[i]))) {
for (int y = 0; y < numberOfCollectedCoins; y++) {
if (xCordinatesOfCollectedCoin[y] == xCordinatesOfCoin[i] &&
zCordinatesOfCollectedCoin[y] == zCordinatesOfCoin[i]) {
found = true;
break;
}
}
if (!found) {
xCordinatesOfCollectedCoin[numberOfCollectedCoins] = xCordinatesOfCoin[i];
zCordinatesOfCollectedCoin[numberOfCollectedCoins] = zCordinatesOfCoin[i];
numberOfCollectedCoins++;
}
}else{
for (int y = 0; y < numberOfCollectedCoins; y++) {
if (xCordinatesOfCollectedCoin[y] == xCordinatesOfCoin[i] &&
zCordinatesOfCollectedCoin[y] == zCordinatesOfCoin[i]) {
found = true;
break;
}
}
if (!found) {
drawCylinder(cylinderContext, glm::translate(glm::vec3(xCordinatesOfCoin[i], 0.0f, zCordinatesOfCoin[i])), glm::vec3(1.0f, 1.0f, 0.0f));
}
}
}
}
void drawSun(Core::RenderContext& context, glm::mat4 modelMatrix, GLuint textureID)
{
@ -320,9 +401,9 @@ void drawSpaceShip(Core::RenderContext& context, glm::mat4 modelMatrix, GLuint t
}
void renderPlanet(float time, float orbitRadius, float orbitRotationSpeed, float selfRotationSpeed, float scale, GLuint planetTexture, GLuint normalTexture) {
glm::mat4 planetTransform = glm::rotate(glm::mat4(1.0f), time * orbitRotationSpeed, glm::vec3(0, 1, 0)) // orbitowanie dooko³a s³oñca
* glm::translate(glm::vec3(orbitRadius, 0, 0)) // translacja na odp. odleg³oœæ
* glm::rotate(glm::mat4(1.0f), time * selfRotationSpeed, glm::vec3(0, 1, 0)) //obrót planety wokó³ w³asnej osi
glm::mat4 planetTransform = glm::rotate(glm::mat4(1.0f), time * orbitRotationSpeed, glm::vec3(0, 1, 0)) // orbitowanie dooko<EFBFBD>a s<>o<EFBFBD>ca
* glm::translate(glm::vec3(orbitRadius, 0, 0)) // translacja na odp. odleg<EFBFBD>o<EFBFBD><EFBFBD>
* glm::rotate(glm::mat4(1.0f), time * selfRotationSpeed, glm::vec3(0, 1, 0)) //obr<EFBFBD>t planety wok<6F> w<>asnej osi
* glm::scale(glm::vec3(scale)); //skalowanie planety
drawObjectTexture(sphereContext, planetTransform, planetTexture, normalTexture);
@ -376,7 +457,7 @@ void renderPlanets() {
renderPlanet(time, venusOrbitRadius, venusRotationSpeed, venusSelfRotationSpeed, venusScale, texture::venus, texture::venusNormal);
renderPlanet(time, earthOrbitRadius, earthRotationSpeed, earthSelfRotationSpeed, earthScale, texture::earth, texture::earthNormal);
//earths moon, musi byæ inaczej renderowany bo on nie orbituje wokó³ s³oñca tylko ziemi. PóŸniej to mo¿na jakoœ lepiej rozwi¹zaæ.
//earths moon, musi by<EFBFBD> inaczej renderowany bo on nie orbituje wok<6F> s<>o<EFBFBD>ca tylko ziemi. P<>niej to mo<6D>na jako<6B> lepiej rozwi<77>za<7A>.
drawObjectTexture(sphereContext,
glm::eulerAngleY(time * earthRotationSpeed) * glm::translate(glm::vec3(earthOrbitRadius, 0, 0)) * glm::eulerAngleY(time * moonRotationSpeed) * glm::translate(glm::vec3(moonOrbitRadius, 0, 0)) * glm::scale(glm::vec3(moonScale)),
texture::moon,
@ -402,11 +483,14 @@ void renderScene(GLFWwindow* window)
drawObjectSkyBox(cubeContext, glm::translate(cameraPos));
//sun
drawSun(sphereContext, glm::mat4(), texture::sun);
//rendering all the planets
renderPlanets();
renderCoins();
// obliczanie orientacji statku
glm::vec3 spaceshipSide = glm::normalize(glm::cross(spaceshipDir, glm::vec3(0.f, 1.f, 0.f)));
glm::vec3 spaceshipUp = glm::normalize(glm::cross(spaceshipSide, spaceshipDir));
@ -464,6 +548,7 @@ void init(GLFWwindow* window)
programTex = shaderLoader.CreateProgram("shaders/shader_5_1_tex_copy.vert", "shaders/shader_5_1_tex_copy.frag");
programSun = shaderLoader.CreateProgram("shaders/shader_sun.vert", "shaders/shader_sun.frag");
programSkyBox = shaderLoader.CreateProgram("shaders/shader_skybox.vert", "shaders/shader_skybox.frag");
programCoin = shaderLoader.CreateProgram("shaders/shader_coin.vert", "shaders/shader_coin.frag");
programSpaceShip = shaderLoader.CreateProgram("shaders/shader_pbr.vert", "shaders/shader_pbr.frag");
programBlur = shaderLoader.CreateProgram("shaders/shader_blur.vert", "shaders/shader_blur.frag");
programBloom = shaderLoader.CreateProgram("shaders/shader_bloom.vert", "shaders/shader_bloom.frag");
@ -472,6 +557,7 @@ void init(GLFWwindow* window)
loadModelToContext("./models/sphere.obj", sphereContext);
loadModelToContext("./models/new_spaceship.obj", shipContext);
loadModelToContext("./models/cube.obj", cubeContext);
loadModelToContext("./models/cylinder.obj", cylinderContext);
texture::mercury = Core::LoadTexture("textures/mercury/mercury.jpg");
texture::venus = Core::LoadTexture("textures/venus/venus.jpg");