Compare commits
16 Commits
Author | SHA1 | Date | |
---|---|---|---|
2373550714 | |||
492db3946f | |||
84061f9577 | |||
9884610edc | |||
3cdac91721 | |||
82a1d0ce8a | |||
904b27ed6a | |||
a2251c0bb8 | |||
33015d4029 | |||
83173bfbdd | |||
476427bce3 | |||
de08ea9744 | |||
612f160429 | |||
584387449c | |||
a865001f9f | |||
c1ab946f11 |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,10 +1,22 @@
|
||||
{
|
||||
"Version": 1,
|
||||
"WorkspaceRootPath": "D:\\STUDIA_sem5\\GRAFIKA-PROJEKT\\grk\\",
|
||||
"WorkspaceRootPath": "D:\\STUDIA_sem5\\GRK_FINAL_PULL\\Grafika_2024\\",
|
||||
"Documents": [
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{F2FC2E8F-CBA6-49D7-8B73-4BFBCB64D310}|projekt_grk\\grk-cw7.vcxproj|D:\\STUDIA_sem5\\GRAFIKA-PROJEKT\\grk\\projekt_grk\\src\\ex_7_1.hpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||
"AbsoluteMoniker": "D:0:0:{F2FC2E8F-CBA6-49D7-8B73-4BFBCB64D310}|projekt_grk\\grk-cw7.vcxproj|D:\\STUDIA_sem5\\GRK_FINAL_PULL\\Grafika_2024\\projekt_grk\\shaders\\shader_5_1_tex_copy.vert||{8B382828-6202-11D1-8870-0000F87579D2}",
|
||||
"RelativeMoniker": "D:0:0:{F2FC2E8F-CBA6-49D7-8B73-4BFBCB64D310}|projekt_grk\\grk-cw7.vcxproj|solutionrelative:projekt_grk\\shaders\\shader_5_1_tex_copy.vert||{8B382828-6202-11D1-8870-0000F87579D2}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{F2FC2E8F-CBA6-49D7-8B73-4BFBCB64D310}|projekt_grk\\grk-cw7.vcxproj|D:\\STUDIA_sem5\\GRK_FINAL_PULL\\Grafika_2024\\projekt_grk\\shaders\\shader_5_1_tex_copy.frag||{8B382828-6202-11D1-8870-0000F87579D2}",
|
||||
"RelativeMoniker": "D:0:0:{F2FC2E8F-CBA6-49D7-8B73-4BFBCB64D310}|projekt_grk\\grk-cw7.vcxproj|solutionrelative:projekt_grk\\shaders\\shader_5_1_tex_copy.frag||{8B382828-6202-11D1-8870-0000F87579D2}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{F2FC2E8F-CBA6-49D7-8B73-4BFBCB64D310}|projekt_grk\\grk-cw7.vcxproj|D:\\STUDIA_sem5\\GRK_FINAL_PULL\\Grafika_2024\\projekt_grk\\src\\ex_7_1.hpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||
"RelativeMoniker": "D:0:0:{F2FC2E8F-CBA6-49D7-8B73-4BFBCB64D310}|projekt_grk\\grk-cw7.vcxproj|solutionrelative:projekt_grk\\src\\ex_7_1.hpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{F2FC2E8F-CBA6-49D7-8B73-4BFBCB64D310}|projekt_grk\\grk-cw7.vcxproj|D:\\STUDIA_sem5\\GRK_FINAL_PULL\\Grafika_2024\\projekt_grk\\shaders\\shader_pbr.frag||{8B382828-6202-11D1-8870-0000F87579D2}",
|
||||
"RelativeMoniker": "D:0:0:{F2FC2E8F-CBA6-49D7-8B73-4BFBCB64D310}|projekt_grk\\grk-cw7.vcxproj|solutionrelative:projekt_grk\\shaders\\shader_pbr.frag||{8B382828-6202-11D1-8870-0000F87579D2}"
|
||||
}
|
||||
],
|
||||
"DocumentGroupContainers": [
|
||||
@ -14,19 +26,62 @@
|
||||
"DocumentGroups": [
|
||||
{
|
||||
"DockedWidth": 200,
|
||||
"SelectedChildIndex": 0,
|
||||
"SelectedChildIndex": 1,
|
||||
"Children": [
|
||||
{
|
||||
"$type": "Bookmark",
|
||||
"Name": "ST:128:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 0,
|
||||
"Title": "shader_5_1_tex_copy.vert",
|
||||
"DocumentMoniker": "D:\\STUDIA_sem5\\GRK_FINAL_PULL\\Grafika_2024\\projekt_grk\\shaders\\shader_5_1_tex_copy.vert",
|
||||
"RelativeDocumentMoniker": "projekt_grk\\shaders\\shader_5_1_tex_copy.vert",
|
||||
"ToolTip": "D:\\STUDIA_sem5\\GRK_FINAL_PULL\\Grafika_2024\\projekt_grk\\shaders\\shader_5_1_tex_copy.vert",
|
||||
"RelativeToolTip": "projekt_grk\\shaders\\shader_5_1_tex_copy.vert",
|
||||
"ViewState": "AQIAAAkAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|",
|
||||
"WhenOpened": "2024-03-01T18:58:34.685Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 1,
|
||||
"Title": "shader_5_1_tex_copy.frag",
|
||||
"DocumentMoniker": "D:\\STUDIA_sem5\\GRK_FINAL_PULL\\Grafika_2024\\projekt_grk\\shaders\\shader_5_1_tex_copy.frag",
|
||||
"RelativeDocumentMoniker": "projekt_grk\\shaders\\shader_5_1_tex_copy.frag",
|
||||
"ToolTip": "D:\\STUDIA_sem5\\GRK_FINAL_PULL\\Grafika_2024\\projekt_grk\\shaders\\shader_5_1_tex_copy.frag",
|
||||
"RelativeToolTip": "projekt_grk\\shaders\\shader_5_1_tex_copy.frag",
|
||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|",
|
||||
"WhenOpened": "2024-03-01T18:58:31.038Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 3,
|
||||
"Title": "shader_pbr.frag",
|
||||
"DocumentMoniker": "D:\\STUDIA_sem5\\GRK_FINAL_PULL\\Grafika_2024\\projekt_grk\\shaders\\shader_pbr.frag",
|
||||
"RelativeDocumentMoniker": "projekt_grk\\shaders\\shader_pbr.frag",
|
||||
"ToolTip": "D:\\STUDIA_sem5\\GRK_FINAL_PULL\\Grafika_2024\\projekt_grk\\shaders\\shader_pbr.frag",
|
||||
"RelativeToolTip": "projekt_grk\\shaders\\shader_pbr.frag",
|
||||
"ViewState": "AQIAABgAAAAAAAAAAAAowC0AAAAfAAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|",
|
||||
"WhenOpened": "2024-03-01T18:45:46.425Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 2,
|
||||
"Title": "ex_7_1.hpp",
|
||||
"DocumentMoniker": "D:\\STUDIA_sem5\\GRAFIKA-PROJEKT\\grk\\projekt_grk\\src\\ex_7_1.hpp",
|
||||
"DocumentMoniker": "D:\\STUDIA_sem5\\GRK_FINAL_PULL\\Grafika_2024\\projekt_grk\\src\\ex_7_1.hpp",
|
||||
"RelativeDocumentMoniker": "projekt_grk\\src\\ex_7_1.hpp",
|
||||
"ToolTip": "D:\\STUDIA_sem5\\GRAFIKA-PROJEKT\\grk\\projekt_grk\\src\\ex_7_1.hpp",
|
||||
"ToolTip": "D:\\STUDIA_sem5\\GRK_FINAL_PULL\\Grafika_2024\\projekt_grk\\src\\ex_7_1.hpp",
|
||||
"RelativeToolTip": "projekt_grk\\src\\ex_7_1.hpp",
|
||||
"ViewState": "AQIAABICAAAAAAAAAAAAAEoCAAAAAAAA",
|
||||
"ViewState": "AQIAAC4BAAAAAAAAAAAgwEMBAAAXAAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||
"WhenOpened": "2024-02-27T10:49:30.827Z",
|
||||
"WhenOpened": "2024-03-01T18:40:57.457Z",
|
||||
"EditorCaption": ""
|
||||
}
|
||||
]
|
||||
|
Binary file not shown.
BIN
.vs/grk-cw/v17/ipch/AutoPCH/28f33419c888e8e5/MAIN.ipch
Normal file
BIN
.vs/grk-cw/v17/ipch/AutoPCH/28f33419c888e8e5/MAIN.ipch
Normal file
Binary file not shown.
BIN
.vs/grk-cw/v17/ipch/AutoPCH/ede51346f7014681/MAIN.ipch
Normal file
BIN
.vs/grk-cw/v17/ipch/AutoPCH/ede51346f7014681/MAIN.ipch
Normal file
Binary file not shown.
BIN
.vs/grk-cw/v17/ipch/AutoPCH/f2de20ee18eb1992/EX_7_1.ipch
Normal file
BIN
.vs/grk-cw/v17/ipch/AutoPCH/f2de20ee18eb1992/EX_7_1.ipch
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
19
README.md
Normal file
19
README.md
Normal file
@ -0,0 +1,19 @@
|
||||
# Projekt z grafika komputerowa
|
||||
|
||||
### Skład zespołu
|
||||
1. Mikołaj Gawor
|
||||
2. Maksymilian Mikołajczak
|
||||
3. Kamil Ryżek
|
||||
|
||||
### Ogólny opis projektu
|
||||
Jest to symulacja lotu statkiem przez układ słoneczny. Gracz ma za zadanie zebrać monety i jednocześnie unikać zderzenie z planetami.
|
||||
|
||||
### Wykorzystane techniki grafikii komputerowej
|
||||
1. Skybox
|
||||
2. Realistyczne tekstury planet dzięki normal mapping
|
||||
3. Cienie planet
|
||||
4. Bloom słońca
|
||||
5. PBR wykorzystany do realistycznego oświetlenia statku kosmicznego.
|
||||
|
||||
### Link do prezentacji
|
||||
https://youtu.be/gSAoen5C_co
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -2,18 +2,24 @@
|
||||
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):
|
||||
D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\dependencies\glfw-3.3.8.bin.WIN32\include\GLFW\glfw3.h(123,1):
|
||||
zobacz poprzednią definicję „APIENTRY”
|
||||
|
||||
D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\src\ex_7_1.hpp(110,10): warning C4305: "inicjowanie": obcięcie z "double" do "float"
|
||||
D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\src\ex_7_1.hpp(162,10): warning C4305: "inicjowanie": obcięcie z "double" do "float"
|
||||
(kompilowanie pliku źródłowego „src/main.cpp”)
|
||||
|
||||
D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\src\ex_7_1.hpp(332,13): warning C4244: "inicjowanie": konwersja z "double" do "float", możliwa utrata danych
|
||||
D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\src\ex_7_1.hpp(293,13): warning C4244: "inicjowanie": konwersja z "double" do "float", możliwa utrata danych
|
||||
(kompilowanie pliku źródłowego „src/main.cpp”)
|
||||
|
||||
D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\src\ex_7_1.hpp(350,29): warning C4305: "inicjowanie": obcięcie z "double" do "float"
|
||||
D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\src\ex_7_1.hpp(474,13): warning C4244: "inicjowanie": konwersja z "double" do "float", możliwa utrata danych
|
||||
(kompilowanie pliku źródłowego „src/main.cpp”)
|
||||
|
||||
D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\src\ex_7_1.hpp(704,25): warning C4244: "inicjowanie": konwersja z "double" do "float", możliwa utrata danych
|
||||
(kompilowanie pliku źródłowego „src/main.cpp”)
|
||||
|
||||
D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\src\ex_7_1.hpp(744,34): warning C4244: "=": konwersja z "double" do "float", możliwa utrata danych
|
||||
(kompilowanie pliku źródłowego „src/main.cpp”)
|
||||
|
||||
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 -> D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\Debug\projekt_grk.exe
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -2,7 +2,7 @@
|
||||
<Project>
|
||||
<ProjectOutputs>
|
||||
<ProjectOutput>
|
||||
<FullPath>D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\Debug\projekt_grk.exe</FullPath>
|
||||
<FullPath>D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\Debug\projekt_grk.exe</FullPath>
|
||||
</ProjectOutput>
|
||||
</ProjectOutputs>
|
||||
<ContentFiles />
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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
|
||||
D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\src\Box.cpp;D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\Debug\Box.obj
|
||||
D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\src\Camera.cpp;D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\Debug\Camera.obj
|
||||
D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\src\main.cpp;D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\Debug\main.obj
|
||||
D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\src\Render_Utils.cpp;D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\Debug\Render_Utils.obj
|
||||
D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\src\Shader_Loader.cpp;D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\Debug\Shader_Loader.obj
|
||||
D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\src\SOIL\image_DXT.c;D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\Debug\image_DXT.obj
|
||||
D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\src\SOIL\image_helper.c;D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\Debug\image_helper.obj
|
||||
D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\src\SOIL\SOIL.c;D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\Debug\SOIL.obj
|
||||
D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\src\SOIL\stb_image_aug.c;D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\Debug\stb_image_aug.obj
|
||||
D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\src\Texture.cpp;D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\projekt_grk\Debug\Texture.obj
|
||||
|
Binary file not shown.
Binary file not shown.
@ -1 +1 @@
|
||||
^D:\STUDIA_SEM5\GRAFIKA-PROJEKT\GRK\PROJEKT_GRK\DEBUG\BOX.OBJ|D:\STUDIA_SEM5\GRAFIKA-PROJEKT\GRK\PROJEKT_GRK\DEBUG\CAMERA.OBJ|D:\STUDIA_SEM5\GRAFIKA-PROJEKT\GRK\PROJEKT_GRK\DEBUG\IMAGE_DXT.OBJ|D:\STUDIA_SEM5\GRAFIKA-PROJEKT\GRK\PROJEKT_GRK\DEBUG\IMAGE_HELPER.OBJ|D:\STUDIA_SEM5\GRAFIKA-PROJEKT\GRK\PROJEKT_GRK\DEBUG\MAIN.OBJ|D:\STUDIA_SEM5\GRAFIKA-PROJEKT\GRK\PROJEKT_GRK\DEBUG\RENDER_UTILS.OBJ|D:\STUDIA_SEM5\GRAFIKA-PROJEKT\GRK\PROJEKT_GRK\DEBUG\SHADER_LOADER.OBJ|D:\STUDIA_SEM5\GRAFIKA-PROJEKT\GRK\PROJEKT_GRK\DEBUG\SOIL.OBJ|D:\STUDIA_SEM5\GRAFIKA-PROJEKT\GRK\PROJEKT_GRK\DEBUG\STB_IMAGE_AUG.OBJ|D:\STUDIA_SEM5\GRAFIKA-PROJEKT\GRK\PROJEKT_GRK\DEBUG\TEXTURE.OBJ
|
||||
^D:\STUDIA_SEM5\GRK_FINAL_PULL\GRAFIKA_2024\PROJEKT_GRK\DEBUG\BOX.OBJ|D:\STUDIA_SEM5\GRK_FINAL_PULL\GRAFIKA_2024\PROJEKT_GRK\DEBUG\CAMERA.OBJ|D:\STUDIA_SEM5\GRK_FINAL_PULL\GRAFIKA_2024\PROJEKT_GRK\DEBUG\IMAGE_DXT.OBJ|D:\STUDIA_SEM5\GRK_FINAL_PULL\GRAFIKA_2024\PROJEKT_GRK\DEBUG\IMAGE_HELPER.OBJ|D:\STUDIA_SEM5\GRK_FINAL_PULL\GRAFIKA_2024\PROJEKT_GRK\DEBUG\MAIN.OBJ|D:\STUDIA_SEM5\GRK_FINAL_PULL\GRAFIKA_2024\PROJEKT_GRK\DEBUG\RENDER_UTILS.OBJ|D:\STUDIA_SEM5\GRK_FINAL_PULL\GRAFIKA_2024\PROJEKT_GRK\DEBUG\SHADER_LOADER.OBJ|D:\STUDIA_SEM5\GRK_FINAL_PULL\GRAFIKA_2024\PROJEKT_GRK\DEBUG\SOIL.OBJ|D:\STUDIA_SEM5\GRK_FINAL_PULL\GRAFIKA_2024\PROJEKT_GRK\DEBUG\STB_IMAGE_AUG.OBJ|D:\STUDIA_SEM5\GRK_FINAL_PULL\GRAFIKA_2024\PROJEKT_GRK\DEBUG\TEXTURE.OBJ
|
||||
|
Binary file not shown.
@ -1,2 +1,2 @@
|
||||
PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.39.33519:TargetPlatformVersion=10.0.22000.0:
|
||||
Debug|Win32|D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\|
|
||||
Debug|Win32|D:\STUDIA_sem5\GRK_FINAL_PULL\Grafika_2024\|
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -51,6 +51,8 @@
|
||||
<None Include="shaders\shader_pbr.vert" />
|
||||
<None Include="shaders\shader_skybox.frag" />
|
||||
<None Include="shaders\shader_skybox.vert" />
|
||||
<None Include="shader_coin.frag" />
|
||||
<None Include="shader_coin.vert" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{F2FC2E8F-CBA6-49D7-8B73-4BFBCB64D310}</ProjectGuid>
|
||||
|
@ -133,5 +133,11 @@
|
||||
<None Include="shaders\shader_blur.vert">
|
||||
<Filter>Shader Files</Filter>
|
||||
</None>
|
||||
<None Include="shader_coin.vert">
|
||||
<Filter>Shader Files</Filter>
|
||||
</None>
|
||||
<None Include="shader_coin.frag">
|
||||
<Filter>Shader Files</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -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>true</ShowAllFiles>
|
||||
</PropertyGroup>
|
||||
</Project>
|
2
projekt_grk/models/cylinder.mtl
Normal file
2
projekt_grk/models/cylinder.mtl
Normal file
@ -0,0 +1,2 @@
|
||||
# Blender 4.0.2 MTL File: 'None'
|
||||
# www.blender.org
|
1611
projekt_grk/models/cylinder.obj
Normal file
1611
projekt_grk/models/cylinder.obj
Normal file
File diff suppressed because it is too large
Load Diff
18
projekt_grk/shaders/shader_coin.frag
Normal file
18
projekt_grk/shaders/shader_coin.frag
Normal 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);
|
||||
}
|
17
projekt_grk/shaders/shader_coin.vert
Normal file
17
projekt_grk/shaders/shader_coin.vert
Normal 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);
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
#version 430 core
|
||||
|
||||
const float DIFFUSE_INTENSITY = 0.6;
|
||||
const float MAX_RENDER_DISTANCE = 16.0;
|
||||
|
||||
float surfaceRoughness;
|
||||
float metalnessValue;
|
||||
@ -64,10 +63,6 @@ void main() {
|
||||
vec3 diffuseReflectance = vec3(1.0) - fresnelTerm;
|
||||
vec3 BRDF = diffuseReflectance * (textureColor / 3.1458493) + specular;
|
||||
|
||||
if (distanceToCamera > MAX_RENDER_DISTANCE) {
|
||||
discard;
|
||||
}
|
||||
|
||||
float diffuse = max(0.0001, dot(normal, lightDir));
|
||||
|
||||
fragmentColor = vec4(BRDF * (DIFFUSE_INTENSITY + diffuse) * 1.5, 1.0);
|
||||
|
@ -16,7 +16,6 @@
|
||||
#include <string>
|
||||
#include "SOIL/SOIL.h"
|
||||
|
||||
|
||||
namespace texture {
|
||||
GLuint mercury;
|
||||
GLuint venus;
|
||||
@ -47,6 +46,8 @@ namespace texture {
|
||||
|
||||
GLuint grid;
|
||||
|
||||
GLuint gameOverSprite;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -54,6 +55,7 @@ GLuint program;
|
||||
GLuint programSun;
|
||||
GLuint programTex;
|
||||
GLuint programSkyBox;
|
||||
GLuint programCoin;
|
||||
GLuint programSpaceShip;
|
||||
GLuint programBlur;
|
||||
GLuint programBloom;
|
||||
@ -62,18 +64,68 @@ 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);
|
||||
glm::vec3 cameraDir = glm::vec3(1.f, 0, 0.f);
|
||||
|
||||
glm::vec3 spaceshipPos = glm::vec3(-4.f, 0, 0);
|
||||
glm::vec3 spaceshipPos = glm::vec3(-22.f, 0, 0);
|
||||
glm::vec3 spaceshipDir = glm::vec3(1.f, 0.f, 0.f);
|
||||
GLuint VAO,VBO;
|
||||
GLuint VAO, VBO;
|
||||
|
||||
float aspectRatio = 1.f;
|
||||
unsigned int textureID;
|
||||
|
||||
bool gameOver = false;
|
||||
bool gameWon = false;
|
||||
|
||||
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] = {};
|
||||
|
||||
float angleSpeed = 0.01f;
|
||||
float moveSpeed = 0.009f;
|
||||
|
||||
struct Planet {
|
||||
glm::vec3 currentPos;
|
||||
glm::vec3 modelScale;
|
||||
float rotationSpeed; // ruch obrotowy
|
||||
float orbitSpeed; // ruch obiegowy
|
||||
float orbitRadius;
|
||||
GLuint texture;
|
||||
GLuint normalTexture;
|
||||
};
|
||||
|
||||
struct Satellite {
|
||||
glm::vec3 currentPos;
|
||||
glm::vec3 modelScale;
|
||||
float rotationSpeed; // ruch obrotowy
|
||||
float orbitSpeed; // ruch obiegowy
|
||||
float orbitRadius;
|
||||
GLuint texture;
|
||||
GLuint normalTexture;
|
||||
Planet parentPlanet;
|
||||
};
|
||||
|
||||
std::vector<Planet> planets;
|
||||
std::vector<Satellite> satellites;
|
||||
|
||||
|
||||
|
||||
unsigned int hdrFBO;
|
||||
unsigned int colorBuffers[2];
|
||||
unsigned int pingpongFBO[2];
|
||||
@ -89,8 +141,8 @@ bool bloom = true;
|
||||
|
||||
glm::mat4 createCameraMatrix()
|
||||
{
|
||||
glm::vec3 cameraSide = glm::normalize(glm::cross(cameraDir,glm::vec3(0.f,1.f,0.f)));
|
||||
glm::vec3 cameraUp = glm::normalize(glm::cross(cameraSide,cameraDir));
|
||||
glm::vec3 cameraSide = glm::normalize(glm::cross(cameraDir, glm::vec3(0.f, 1.f, 0.f)));
|
||||
glm::vec3 cameraUp = glm::normalize(glm::cross(cameraSide, cameraDir));
|
||||
glm::mat4 cameraRotrationMatrix = glm::mat4({
|
||||
cameraSide.x,cameraSide.y,cameraSide.z,0,
|
||||
cameraUp.x,cameraUp.y,cameraUp.z ,0,
|
||||
@ -114,12 +166,12 @@ glm::mat4 createPerspectiveMatrix()
|
||||
perspectiveMatrix = glm::mat4({
|
||||
1,0.,0.,0.,
|
||||
0.,aspectRatio,0.,0.,
|
||||
0.,0.,(f+n) / (n - f),2*f * n / (n - f),
|
||||
0.,0.,(f + n) / (n - f),2 * f * n / (n - f),
|
||||
0.,0.,-1.,0.,
|
||||
});
|
||||
|
||||
|
||||
perspectiveMatrix=glm::transpose(perspectiveMatrix);
|
||||
perspectiveMatrix = glm::transpose(perspectiveMatrix);
|
||||
|
||||
return perspectiveMatrix;
|
||||
}
|
||||
@ -144,7 +196,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<62>o kolizii z shaderem statku
|
||||
glEnableVertexAttribArray(7);
|
||||
glVertexAttribPointer(7, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void*)0);
|
||||
glEnableVertexAttribArray(8);
|
||||
@ -217,7 +269,7 @@ void drawObjectColor(Core::RenderContext& context, glm::mat4 modelMatrix, glm::v
|
||||
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);
|
||||
glUniform3f(glGetUniformLocation(prog, "lightPos"), 0, 0, 0);
|
||||
Core::DrawContext(context);
|
||||
|
||||
}
|
||||
@ -235,6 +287,70 @@ 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)
|
||||
{
|
||||
@ -319,79 +435,43 @@ 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::scale(glm::vec3(scale)); //skalowanie planety
|
||||
|
||||
drawObjectTexture(sphereContext, planetTransform, planetTexture, normalTexture);
|
||||
void initializePlanets() {
|
||||
planets.push_back(Planet{ glm::vec3(2.0f, 0, 0), glm::vec3(0.11f), 1 / 59.0f, 1.0f / 2, 2.0f, texture::mercury, texture::mercuryNormal });
|
||||
planets.push_back(Planet{ glm::vec3(3.5f, 0, 0), glm::vec3(0.29f), 1 / 243.0f, 1.0f / 5, 3.5f, texture::venus, texture::venusNormal });
|
||||
planets.push_back(Planet{ glm::vec3(5.0f, 0, 0), glm::vec3(0.3f), 1.f, 1.0f / 6, 5.0f, texture::earth, texture::earthNormal });
|
||||
planets.push_back(Planet{ glm::vec3(7.5f, 0, 0), glm::vec3(0.2f), 1.f, 1.0f / 7, 7.5f, texture::mars, texture::marsNormal });
|
||||
planets.push_back(Planet{ glm::vec3(10.f, 0, 0), glm::vec3(1.f), 2.4f, 1.0f / 9, 10.f, texture::jupiter, texture::jupiterNormal });
|
||||
planets.push_back(Planet{ glm::vec3(12.5f, 0, 0), glm::vec3(0.7f), 2.4f, 1.0f / 10, 12.5f, texture::saturn, texture::saturnNormal });
|
||||
planets.push_back(Planet{ glm::vec3(15.f, 0, 0), glm::vec3(1.f), 1.7f, 1.0f / 15, 15.f, texture::uranus, texture::uranusNormal });
|
||||
planets.push_back(Planet{ glm::vec3(20.f, 0, 0), glm::vec3(1.f), 1.2f, 1.0f / 24, 20.f, texture::neptune, texture::neptuneNormal });
|
||||
planets.push_back(Planet{ glm::vec3(0, 0, 0), glm::vec3(1.f), 0.f, 0.f, 0.f, texture::sun, texture::sun });
|
||||
satellites.push_back(Satellite{ glm::vec3(5.0f, 0, 0), glm::vec3(0.055f), 1.f / 2, 1.0f / 2, 0.8f, texture::moon, texture::asteroidNormal, planets[2] });
|
||||
}
|
||||
|
||||
void renderPlanets() {
|
||||
float time = glfwGetTime();
|
||||
|
||||
float mercuryOrbitRadius = 1.3f;
|
||||
float venusOrbitRadius = 2.0f;
|
||||
float earthOrbitRadius = 5.0f;
|
||||
float moonOrbitRadius = 0.8f;
|
||||
float marsOrbitRadius = 8.0f;
|
||||
float jupiterOrbitRadius = 10.0f;
|
||||
float saturnOrbitRadius = 11.0f;
|
||||
float uranusOrbitRadius = 12.5f;
|
||||
float neptuneOrbitRadius = 13.0f;
|
||||
|
||||
// im mniejsze tym szybciej
|
||||
float mercuryRotationSpeed = 1.0f / 10;
|
||||
float venusRotationSpeed = 1.0f / 7;
|
||||
float earthRotationSpeed = 1.0f / 6;
|
||||
float moonRotationSpeed = 1.0f / 2;
|
||||
float marsRotationSpeed = 1.0f / 5;
|
||||
float jupiterRotationSpeed = 1.0f / 8.5;
|
||||
float saturnRotationSpeed = 1.0f / 5;
|
||||
float uranusRotationSpeed = 1.0f / 9;
|
||||
float neptuneRotationSpeed = 1.0f / 10;
|
||||
|
||||
float mercurySelfRotationSpeed = 1.0f;
|
||||
float venusSelfRotationSpeed = 1.0f;
|
||||
float earthSelfRotationSpeed = 1.0f;
|
||||
float moonSelfRotationSpeed = 1.0f / 2;
|
||||
float marsSelfRotationSpeed = 1.0f;
|
||||
float jupiterSelfRotationSpeed = 1.0f;
|
||||
float saturnSelfRotationSpeed = 1.0f;
|
||||
float uranusSelfRotationSpeed = 1.0f / 2;
|
||||
float neptuneSelfRotationSpeed = 1.0f;
|
||||
|
||||
float mercuryScale = 0.11f;
|
||||
float venusScale = 0.14f;
|
||||
float earthScale = 0.3f;
|
||||
float moonScale = 0.055f;
|
||||
float marsScale = 0.2f;
|
||||
float jupiterScale = 0.7f;
|
||||
float saturnScale = 0.5f;
|
||||
float uranusScale = 0.3f;
|
||||
float neptuneScale = 0.32f;
|
||||
|
||||
renderPlanet(time, mercuryOrbitRadius, mercuryRotationSpeed, mercurySelfRotationSpeed, mercuryScale, texture::mercury, texture::mercuryNormal);
|
||||
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æ.
|
||||
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,
|
||||
texture::asteroidNormal);
|
||||
|
||||
renderPlanet(time, marsOrbitRadius, marsRotationSpeed, marsSelfRotationSpeed, marsScale, texture::mars, texture::marsNormal);
|
||||
renderPlanet(time, jupiterOrbitRadius, jupiterRotationSpeed, jupiterSelfRotationSpeed, jupiterScale, texture::jupiter, texture::jupiterNormal);
|
||||
renderPlanet(time, saturnOrbitRadius, saturnRotationSpeed, saturnSelfRotationSpeed, saturnScale, texture::saturn, texture::saturnNormal);
|
||||
renderPlanet(time, uranusOrbitRadius, uranusRotationSpeed, uranusSelfRotationSpeed, uranusScale, texture::uranus, texture::uranusNormal);
|
||||
renderPlanet(time, neptuneOrbitRadius, neptuneRotationSpeed, neptuneSelfRotationSpeed, neptuneScale, texture::neptune, texture::neptuneNormal);
|
||||
|
||||
void printPlanetPos() {
|
||||
int index = 0;
|
||||
for (auto& planet : planets) {
|
||||
std::cout << index << " " << glm::to_string(planet.currentPos) << std::endl;
|
||||
++index;
|
||||
}
|
||||
}
|
||||
|
||||
bool checkCollision(glm::vec3 spaceshipPos, glm::vec3 planetPos, glm::vec3 planetScale) {
|
||||
|
||||
float planetRadius = planetScale.x;
|
||||
float shipSize = 0.5f;
|
||||
|
||||
float distanceSquared = glm::distance2(spaceshipPos, planetPos);
|
||||
float distance = glm::length(planetPos - spaceshipPos);
|
||||
|
||||
float minDistance = planetRadius + shipSize;
|
||||
return distanceSquared <= (planetRadius + shipSize) * (planetRadius + shipSize);
|
||||
}
|
||||
void renderScene(GLFWwindow* window)
|
||||
{
|
||||
//float time = 0;
|
||||
float time = glfwGetTime();
|
||||
glClearColor(0.0f, 0.3f, 0.3f, 1.0f);
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
@ -402,11 +482,34 @@ void renderScene(GLFWwindow* window)
|
||||
drawObjectSkyBox(cubeContext, glm::translate(cameraPos));
|
||||
|
||||
//sun
|
||||
|
||||
drawSun(sphereContext, glm::mat4(), texture::sun);
|
||||
|
||||
//rendering all the planets
|
||||
renderPlanets();
|
||||
|
||||
|
||||
for (auto& planet : planets) {
|
||||
|
||||
glm::mat4 modelMatrix = glm::rotate(glm::mat4(1.0f), time * planet.orbitSpeed, glm::vec3(0, 1, 0)) // orbitowanie dooko³a s³oñca
|
||||
* glm::translate(glm::vec3(planet.orbitRadius, 0, 0)) // translacja na odp. odleg³oœæ
|
||||
* glm::rotate(glm::mat4(1.0f), time * planet.rotationSpeed, glm::vec3(0, 1, 0)) //obrót planety wokó³ w³asnej osi
|
||||
* glm::scale(glm::vec3(planet.modelScale)); //skalowanie planety
|
||||
drawObjectTexture(sphereContext, modelMatrix, planet.texture, planet.normalTexture);
|
||||
planet.currentPos = glm::vec3(modelMatrix * glm::vec4(0, 0, 0, 1.0f));
|
||||
|
||||
|
||||
}
|
||||
|
||||
for (auto& satellite : satellites) {
|
||||
glm::mat4 modelMatrix = glm::eulerAngleY(2*time * satellite.parentPlanet.orbitSpeed)
|
||||
* glm::translate(glm::vec3(satellite.parentPlanet.orbitRadius, 0, 0))
|
||||
* glm::eulerAngleY(time * satellite.rotationSpeed)
|
||||
* glm::translate(glm::vec3(satellite.orbitRadius, 0, 0))
|
||||
* glm::scale(glm::vec3(satellite.modelScale));
|
||||
drawObjectTexture(sphereContext, modelMatrix, satellite.texture, satellite.normalTexture);
|
||||
satellite.currentPos = glm::vec3(modelMatrix * glm::vec4(0, 0, 0, 1.0f));
|
||||
}
|
||||
|
||||
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));
|
||||
@ -432,6 +535,8 @@ void renderScene(GLFWwindow* window)
|
||||
|
||||
|
||||
glUseProgram(0);
|
||||
|
||||
|
||||
glfwSwapBuffers(window);
|
||||
}
|
||||
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
|
||||
@ -444,7 +549,7 @@ void framebuffer_size_callback(GLFWwindow* window, int width, int height)
|
||||
void loadModelToContext(std::string path, Core::RenderContext& context)
|
||||
{
|
||||
Assimp::Importer import;
|
||||
const aiScene* scene = import.ReadFile(path, aiProcess_Triangulate | aiProcess_CalcTangentSpace);
|
||||
const aiScene * scene = import.ReadFile(path, aiProcess_Triangulate | aiProcess_CalcTangentSpace);
|
||||
|
||||
if (!scene || scene->mFlags & AI_SCENE_FLAGS_INCOMPLETE || !scene->mRootNode)
|
||||
{
|
||||
@ -464,6 +569,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 +578,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");
|
||||
@ -538,6 +645,21 @@ void init(GLFWwindow* window)
|
||||
glUseProgram(programBloom);
|
||||
glUniform1i(glGetUniformLocation(programBloom, "scene"), 0);
|
||||
glUniform1i(glGetUniformLocation(programBloom, "bloomBlur"), 1);
|
||||
initializePlanets();
|
||||
|
||||
}
|
||||
|
||||
|
||||
void gameOverScreen(GLFWwindow* window) {
|
||||
if (gameWon) {
|
||||
std::cout << "Congratulations!" << std::endl;
|
||||
}
|
||||
else if (gameOver) {
|
||||
std::cout << "GAME OVER. Number of collected coins: " << numberOfCollectedCoins << std::endl;
|
||||
}
|
||||
glfwSetWindowShouldClose(window, GLFW_TRUE);
|
||||
moveSpeed = 0;
|
||||
angleSpeed = 0;
|
||||
}
|
||||
|
||||
void shutdown(GLFWwindow* window)
|
||||
@ -550,8 +672,6 @@ void processInput(GLFWwindow* window)
|
||||
glm::vec3 spaceshipSide = glm::normalize(glm::cross(spaceshipDir, glm::vec3(0.f, 1.f, 0.f)));
|
||||
glm::vec3 spaceshipUp = glm::vec3(0.f, 1.f, 0.f);
|
||||
|
||||
float angleSpeed = 0.005f;
|
||||
float moveSpeed = 0.0025f;
|
||||
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) {
|
||||
glfwSetWindowShouldClose(window, true);
|
||||
}
|
||||
@ -571,16 +691,63 @@ void processInput(GLFWwindow* window)
|
||||
spaceshipDir = glm::vec3(glm::eulerAngleY(angleSpeed) * glm::vec4(spaceshipDir, 0));
|
||||
if (glfwGetKey(window, GLFW_KEY_D) == GLFW_PRESS)
|
||||
spaceshipDir = glm::vec3(glm::eulerAngleY(-angleSpeed) * glm::vec4(spaceshipDir, 0));
|
||||
if (glfwGetKey(window, GLFW_KEY_SPACE) == GLFW_PRESS)
|
||||
spaceshipPos += spaceshipDir * 5*moveSpeed;
|
||||
|
||||
|
||||
cameraPos = spaceshipPos - 1.5 * spaceshipDir + glm::vec3(0, 1, 0) * 0.5f;
|
||||
cameraDir = spaceshipDir;
|
||||
}
|
||||
|
||||
void renderLoop(GLFWwindow* window) {
|
||||
|
||||
float timeOfLastUpdate = glfwGetTime();
|
||||
int loopCount = 0;
|
||||
int interval = 2500;
|
||||
|
||||
while (!glfwWindowShouldClose(window))
|
||||
{
|
||||
processInput(window);
|
||||
renderScene(window);
|
||||
|
||||
int index = 0;
|
||||
|
||||
if (numberOfCollectedCoins == 30) {
|
||||
gameWon = true;
|
||||
}
|
||||
|
||||
for (auto& planet : planets) {
|
||||
|
||||
if (checkCollision(spaceshipPos, planet.currentPos, planet.modelScale)) {
|
||||
gameOver = true;
|
||||
//std::cout << "Kolizja statku z planeta " << index << std::endl;
|
||||
}
|
||||
++index;
|
||||
}
|
||||
for (auto& satellite : satellites) {
|
||||
|
||||
if (checkCollision(spaceshipPos, satellite.currentPos, satellite.modelScale)) {
|
||||
gameOver = true;
|
||||
//std::cout << "Kolizja statku z satelita " << index << std::endl;
|
||||
}
|
||||
++index;
|
||||
}
|
||||
|
||||
|
||||
loopCount++;
|
||||
|
||||
if (loopCount >= interval) {
|
||||
//printPlanetPos();
|
||||
//std::cout << "Pozycja statku " << glm::to_string(spaceshipPos) << std::endl;
|
||||
std::cout << "Coins collected " << numberOfCollectedCoins << std::endl;
|
||||
loopCount = 0;
|
||||
timeOfLastUpdate = glfwGetTime();
|
||||
}
|
||||
|
||||
if (gameOver || gameWon) {
|
||||
gameOverScreen(window);
|
||||
}
|
||||
|
||||
glfwPollEvents();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user