PBR statku, czyszczenie kodu
This commit is contained in:
parent
b3e7db568d
commit
04dedc2dfd
.vs/grk-cw
FileContentIndex
132527c8-18c8-4c52-aff0-d61f6ba50201.vsidx7c37bfc2-c6fe-4cf8-af20-6f46691dbf60.vsidx7fe70d9f-6a71-4960-b1f9-3296c9b8081d.vsidx961ba04d-7509-4dfd-80b3-d183c6ccdfe0.vsidx
v17
Debug
projekt_grk
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.
BIN
.vs/grk-cw/v17/ipch/AutoPCH/fb10e04556d1f6f7/CAMERA.ipch
Normal file
BIN
.vs/grk-cw/v17/ipch/AutoPCH/fb10e04556d1f6f7/CAMERA.ipch
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -2,9 +2,9 @@
|
||||
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
|
||||
D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\dependencies\glfw-3.3.8.bin.WIN32\include\GLFW\glfw3.h(123,1): message : zobacz poprzednią definicję „APIENTRY”
|
||||
D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\src\ex_7_1.hpp(91,10): warning C4305: "inicjowanie": obcięcie z "double" do "float"
|
||||
D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\src\ex_7_1.hpp(174,13): warning C4244: "inicjowanie": konwersja z "double" do "float", możliwa utrata danych
|
||||
D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\src\ex_7_1.hpp(192,29): warning C4305: "inicjowanie": obcięcie z "double" do "float"
|
||||
D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\src\ex_7_1.hpp(96,10): warning C4305: "inicjowanie": obcięcie z "double" do "float"
|
||||
D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\src\ex_7_1.hpp(204,13): warning C4244: "inicjowanie": konwersja z "double" do "float", możliwa utrata danych
|
||||
D:\STUDIA_sem5\GRAFIKA-PROJEKT\grk\projekt_grk\src\ex_7_1.hpp(222,29): warning C4305: "inicjowanie": obcięcie z "double" do "float"
|
||||
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
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -39,12 +39,12 @@
|
||||
<ItemGroup>
|
||||
<None Include="shaders\shader_5_1.frag" />
|
||||
<None Include="shaders\shader_5_1.vert" />
|
||||
<None Include="shaders\shader_5_1_tex.frag" />
|
||||
<None Include="shaders\shader_5_1_tex.vert" />
|
||||
<None Include="shaders\shader_5_1_tex_copy.frag" />
|
||||
<None Include="shaders\shader_5_1_tex_copy.vert" />
|
||||
<None Include="shaders\shader_5_sun.frag" />
|
||||
<None Include="shaders\shader_5_sun.vert" />
|
||||
<None Include="shaders\shader_sun.frag" />
|
||||
<None Include="shaders\shader_sun.vert" />
|
||||
<None Include="shaders\shader_pbr.frag" />
|
||||
<None Include="shaders\shader_pbr.vert" />
|
||||
<None Include="shaders\shader_skybox.frag" />
|
||||
<None Include="shaders\shader_skybox.vert" />
|
||||
</ItemGroup>
|
||||
|
@ -91,10 +91,10 @@
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="shaders\shader_5_sun.frag">
|
||||
<None Include="shaders\shader_sun.frag">
|
||||
<Filter>Shader Files</Filter>
|
||||
</None>
|
||||
<None Include="shaders\shader_5_sun.vert">
|
||||
<None Include="shaders\shader_sun.vert">
|
||||
<Filter>Shader Files</Filter>
|
||||
</None>
|
||||
<None Include="shaders\shader_5_1.frag">
|
||||
@ -103,12 +103,6 @@
|
||||
<None Include="shaders\shader_5_1.vert">
|
||||
<Filter>Shader Files</Filter>
|
||||
</None>
|
||||
<None Include="shaders\shader_5_1_tex.vert">
|
||||
<Filter>Shader Files</Filter>
|
||||
</None>
|
||||
<None Include="shaders\shader_5_1_tex.frag">
|
||||
<Filter>Shader Files</Filter>
|
||||
</None>
|
||||
<None Include="shaders\shader_5_1_tex_copy.frag">
|
||||
<Filter>Shader Files</Filter>
|
||||
</None>
|
||||
@ -121,5 +115,11 @@
|
||||
<None Include="shaders\shader_skybox.vert">
|
||||
<Filter>Shader Files</Filter>
|
||||
</None>
|
||||
<None Include="shaders\shader_pbr.frag">
|
||||
<Filter>Shader Files</Filter>
|
||||
</None>
|
||||
<None Include="shaders\shader_pbr.vert">
|
||||
<Filter>Shader Files</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
61172
projekt_grk/models/new_spaceship.obj
Normal file
61172
projekt_grk/models/new_spaceship.obj
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,21 +0,0 @@
|
||||
#version 430 core
|
||||
|
||||
float AMBIENT = 0.1;
|
||||
|
||||
uniform vec3 color;
|
||||
uniform vec3 lightPos;
|
||||
uniform sampler2D colorTexture;
|
||||
|
||||
in vec3 vecNormal;
|
||||
in vec3 worldPos;
|
||||
in vec2 vecTex;
|
||||
|
||||
out vec4 outColor;
|
||||
void main()
|
||||
{
|
||||
vec3 lightDir = normalize(lightPos-worldPos);
|
||||
vec3 normal = normalize(vecNormal);
|
||||
vec3 textureColor = texture2D(colorTexture, vecTex).xyz;
|
||||
float diffuse=max(0,dot(normal,lightDir));
|
||||
outColor = vec4(textureColor*min(1,AMBIENT+diffuse), 1.0);
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
#version 430 core
|
||||
|
||||
layout(location = 0) in vec3 vertexPosition;
|
||||
layout(location = 1) in vec3 vertexNormal;
|
||||
layout(location = 2) in vec2 vertexTexCoord;
|
||||
layout(location = 3) in vec3 vertexTangent;
|
||||
layout(location = 4) in vec3 vertexBitangent;
|
||||
|
||||
uniform mat4 transformation;
|
||||
uniform mat4 modelMatrix;
|
||||
|
||||
out vec3 vecNormal;
|
||||
out vec3 worldPos;
|
||||
out vec2 vecTex;
|
||||
|
||||
void main()
|
||||
{
|
||||
worldPos = (modelMatrix* vec4(vertexPosition,1)).xyz;
|
||||
vecNormal = (modelMatrix* vec4(vertexNormal,0)).xyz;
|
||||
vecTex = vertexTexCoord;
|
||||
vecTex.y = 1.0 - vecTex.y;
|
||||
gl_Position = transformation * vec4(vertexPosition, 1.0);
|
||||
}
|
74
projekt_grk/shaders/shader_pbr.frag
Normal file
74
projekt_grk/shaders/shader_pbr.frag
Normal file
@ -0,0 +1,74 @@
|
||||
#version 430 core
|
||||
|
||||
const float DIFFUSE_INTENSITY = 0.6;
|
||||
const float MAX_RENDER_DISTANCE = 16.0;
|
||||
|
||||
float surfaceRoughness;
|
||||
float metalnessValue;
|
||||
|
||||
uniform vec3 primaryColor;
|
||||
uniform sampler2D colorTexture;
|
||||
uniform sampler2D normalMap;
|
||||
|
||||
uniform sampler2D metalnessMap;
|
||||
uniform sampler2D roughnessMap;
|
||||
|
||||
in vec3 worldPos;
|
||||
in vec2 vecTex;
|
||||
|
||||
in vec3 viewDirTS;
|
||||
in vec3 lightDirTS;
|
||||
in float distanceToCamera;
|
||||
out vec4 fragmentColor;
|
||||
|
||||
|
||||
float calculateMicrofacetDistribution(float roughness, vec3 normal, vec3 halfVector) {
|
||||
float NdotH = max(0.0, dot(normal, halfVector));
|
||||
float roughnessSq = roughness * roughness;
|
||||
float denom = 3.14159 * pow(NdotH * NdotH * (roughnessSq - 1.0) + 1.0, 2.0);
|
||||
return roughnessSq / denom;
|
||||
}
|
||||
|
||||
float calculateGeometryTerm(float roughness, float NdotV, float NdotL) {
|
||||
float k = pow(roughness + 1.0, 2.0) / 8.0;
|
||||
return NdotV / (NdotV * (1.0 - k) + k) * NdotL / (NdotL * (1.0 - k) + k);
|
||||
}
|
||||
|
||||
vec3 calculateFresnelTerm(float metallic, vec3 F0, float VdotH) {
|
||||
return F0 + (1.0 - F0) * pow(1.0 - VdotH, 5.0);
|
||||
}
|
||||
|
||||
void main() {
|
||||
vec3 textureColor = texture(colorTexture, vecTex).xyz;
|
||||
metalnessValue = texture(metalnessMap, vecTex).r;
|
||||
surfaceRoughness = texture(roughnessMap, vecTex).r;
|
||||
|
||||
vec3 normal = texture(normalMap, vecTex).xyz;
|
||||
normal = normalize(normal);
|
||||
|
||||
vec3 viewDir = normalize(viewDirTS);
|
||||
vec3 lightDir = normalize(lightDirTS);
|
||||
vec3 halfVector = normalize(lightDir + viewDir);
|
||||
|
||||
float microfacetDistribution = calculateMicrofacetDistribution(surfaceRoughness, normal, halfVector);
|
||||
|
||||
float NdotV = max(0.0, dot(normal, viewDir));
|
||||
float NdotL = max(dot(normal, lightDir), 0.0000001);
|
||||
float geometryTerm = calculateGeometryTerm(surfaceRoughness, NdotV, NdotL);
|
||||
|
||||
vec3 F0 = mix(vec3(0.04), vec3(1.0), vec3(metalnessValue));
|
||||
float VdotH = max(0.00001, dot(viewDir, halfVector));
|
||||
|
||||
vec3 fresnelTerm = calculateFresnelTerm(metalnessValue, F0, VdotH);
|
||||
vec3 specular = (microfacetDistribution * geometryTerm * fresnelTerm) / (4.0 * NdotL * NdotV + 0.00001);
|
||||
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);
|
||||
}
|
45
projekt_grk/shaders/shader_pbr.vert
Normal file
45
projekt_grk/shaders/shader_pbr.vert
Normal file
@ -0,0 +1,45 @@
|
||||
#version 430 core
|
||||
|
||||
layout(location = 0) in vec3 vertexPosition;
|
||||
layout(location = 1) in vec3 vertexNormal;
|
||||
layout(location = 2) in vec2 vertexTexCoord;
|
||||
layout(location = 3) in vec3 vertexTangent;
|
||||
layout(location = 4) in vec3 vertexBitangent;
|
||||
|
||||
uniform mat4 transformation;
|
||||
uniform mat4 modelMatrix;
|
||||
|
||||
out vec3 worldPos;
|
||||
out vec2 vecTex;
|
||||
|
||||
uniform vec3 lightPos;
|
||||
uniform vec3 cameraPos;
|
||||
|
||||
out vec3 viewDirTS;
|
||||
out vec3 lightDirTS;
|
||||
out float distanceToCamera;
|
||||
mat3 TBN;
|
||||
|
||||
|
||||
void main()
|
||||
{
|
||||
|
||||
vec3 tangent = normalize(mat3(modelMatrix) * vertexTangent);
|
||||
vec3 bitangent = normalize(mat3(modelMatrix) * vertexBitangent);
|
||||
vec3 normal = normalize(mat3(modelMatrix) * vertexNormal);
|
||||
|
||||
TBN = transpose(mat3(tangent, bitangent, normal));
|
||||
|
||||
vec3 worldPos = (modelMatrix * vec4(vertexPosition, 1)).xyz;
|
||||
|
||||
vec3 viewDir = normalize(cameraPos - worldPos);
|
||||
vec3 lightDir = normalize(lightPos - worldPos);
|
||||
|
||||
viewDirTS = vec3(TBN * viewDir);
|
||||
lightDirTS = vec3(TBN * lightDir);
|
||||
|
||||
vecTex = vertexTexCoord;
|
||||
vecTex.y = 1.0 - vecTex.y;
|
||||
distanceToCamera = length(worldPos - cameraPos);
|
||||
gl_Position = transformation * vec4(vertexPosition, 1.0);
|
||||
}
|
@ -22,7 +22,6 @@ namespace texture {
|
||||
GLuint venus;
|
||||
GLuint earth;
|
||||
GLuint moon;
|
||||
GLuint ship;
|
||||
GLuint sun;
|
||||
GLuint mars;
|
||||
GLuint jupiter;
|
||||
@ -34,31 +33,37 @@ namespace texture {
|
||||
GLuint venusNormal;
|
||||
GLuint earthNormal;
|
||||
GLuint asteroidNormal;
|
||||
GLuint shipNormal;
|
||||
GLuint marsNormal;
|
||||
GLuint jupiterNormal;
|
||||
GLuint saturnNormal;
|
||||
GLuint uranusNormal;
|
||||
GLuint neptuneNormal;
|
||||
|
||||
|
||||
GLuint ship;
|
||||
GLuint shipNormal;
|
||||
GLuint shipMetalness;
|
||||
GLuint shipRoughness;
|
||||
|
||||
GLuint grid;
|
||||
|
||||
}
|
||||
|
||||
|
||||
GLuint program;
|
||||
GLuint programSun;
|
||||
GLuint programTex;
|
||||
GLuint programEarth;
|
||||
GLuint programProcTex;
|
||||
GLuint programSkyBox;
|
||||
GLuint programSpaceShip;
|
||||
Core::Shader_Loader shaderLoader;
|
||||
|
||||
Core::RenderContext shipContext;
|
||||
Core::RenderContext sphereContext;
|
||||
Core::RenderContext cubeContext;
|
||||
|
||||
|
||||
glm::vec3 cameraPos = glm::vec3(-4.f, 0, 0);
|
||||
glm::vec3 cameraDir = glm::vec3(1.f, 0.f, 0.f);
|
||||
glm::vec3 cameraDir = glm::vec3(1.f, 0, 0.f);
|
||||
|
||||
glm::vec3 spaceshipPos = glm::vec3(-4.f, 0, 0);
|
||||
glm::vec3 spaceshipDir = glm::vec3(1.f, 0.f, 0.f);
|
||||
@ -157,6 +162,31 @@ void drawObjectSkyBox(Core::RenderContext& context, glm::mat4 modelMatrix) {
|
||||
glBindTexture(GL_TEXTURE_CUBE_MAP, textureID);
|
||||
Core::DrawContext(context);
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
}
|
||||
|
||||
void drawSpaceShip(Core::RenderContext& context, glm::mat4 modelMatrix, GLuint textureID, GLuint normalMapId, GLuint metalnessTexture, GLuint roughnessTexture) {
|
||||
glUseProgram(programSpaceShip);
|
||||
glm::mat4 viewProjectionMatrix = createPerspectiveMatrix() * createCameraMatrix();
|
||||
glm::mat4 transformation = viewProjectionMatrix * modelMatrix;
|
||||
|
||||
glUniformMatrix4fv(glGetUniformLocation(programSpaceShip, "transformation"), 1, GL_FALSE, (float*)&transformation);
|
||||
glUniformMatrix4fv(glGetUniformLocation(programSpaceShip, "modelMatrix"), 1, GL_FALSE, (float*)&modelMatrix);
|
||||
glUniform3f(glGetUniformLocation(programSpaceShip, "lightPos"), 0, 0, 0);
|
||||
|
||||
Core::SetActiveTexture(normalMapId, "normalSampler", programSpaceShip, 1);
|
||||
Core::SetActiveTexture(textureID, "colorTexture", programSpaceShip, 0);
|
||||
|
||||
glUniform1i(glGetUniformLocation(programSpaceShip, "metalnessTexture"), 2);
|
||||
glUniform1i(glGetUniformLocation(programSpaceShip, "roughnessTexture"), 3);
|
||||
|
||||
glActiveTexture(GL_TEXTURE2);
|
||||
glBindTexture(GL_TEXTURE_2D, metalnessTexture);
|
||||
|
||||
glActiveTexture(GL_TEXTURE3);
|
||||
glBindTexture(GL_TEXTURE_2D, roughnessTexture);
|
||||
|
||||
glUniform3f(glGetUniformLocation(programSpaceShip, "cameraPos"), cameraPos.x, cameraPos.y, cameraPos.z);
|
||||
Core::DrawContext(context);
|
||||
|
||||
}
|
||||
|
||||
@ -237,7 +267,6 @@ void renderScene(GLFWwindow* window)
|
||||
glClearColor(0.0f, 0.3f, 0.3f, 1.0f);
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
|
||||
//skybox
|
||||
drawObjectSkyBox(cubeContext, glm::translate(cameraPos));
|
||||
|
||||
@ -248,8 +277,10 @@ void renderScene(GLFWwindow* window)
|
||||
renderPlanets();
|
||||
|
||||
|
||||
// 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));
|
||||
|
||||
glm::mat4 specshipCameraRotrationMatrix = glm::mat4({
|
||||
spaceshipSide.x,spaceshipSide.y,spaceshipSide.z,0,
|
||||
spaceshipUp.x,spaceshipUp.y,spaceshipUp.z ,0,
|
||||
@ -257,10 +288,13 @@ void renderScene(GLFWwindow* window)
|
||||
0.,0.,0.,1.,
|
||||
});
|
||||
|
||||
//spaceship drawing
|
||||
drawObjectTexture(shipContext,
|
||||
glm::translate(spaceshipPos) * specshipCameraRotrationMatrix * glm::eulerAngleY(glm::pi<float>()),
|
||||
texture::ship, texture::shipNormal
|
||||
|
||||
drawSpaceShip(shipContext,
|
||||
glm::translate(spaceshipPos) *
|
||||
specshipCameraRotrationMatrix *
|
||||
glm::eulerAngleY(glm::pi<float>()) *
|
||||
glm::scale(glm::vec3(0.04f)), //pomniejszenie statku
|
||||
texture::ship, texture::shipNormal, texture::shipMetalness, texture::shipRoughness
|
||||
);
|
||||
|
||||
glUseProgram(0);
|
||||
@ -290,21 +324,19 @@ void init(GLFWwindow* window)
|
||||
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
program = shaderLoader.CreateProgram("shaders/shader_5_1.vert", "shaders/shader_5_1.frag");
|
||||
//programTex = shaderLoader.CreateProgram("shaders/shader_5_1_tex.vert", "shaders/shader_5_1_tex.frag");
|
||||
programTex = shaderLoader.CreateProgram("shaders/shader_5_1_tex_copy.vert", "shaders/shader_5_1_tex_copy.frag");
|
||||
programEarth = shaderLoader.CreateProgram("shaders/shader_5_1_tex.vert", "shaders/shader_5_1_tex.frag");
|
||||
programProcTex = shaderLoader.CreateProgram("shaders/shader_5_1_tex.vert", "shaders/shader_5_1_tex.frag");
|
||||
programSun = shaderLoader.CreateProgram("shaders/shader_5_sun.vert", "shaders/shader_5_sun.frag");
|
||||
programSun = shaderLoader.CreateProgram("shaders/shader_sun.vert", "shaders/shader_sun.frag");
|
||||
programSkyBox = shaderLoader.CreateProgram("shaders/shader_skybox.vert", "shaders/shader_skybox.frag");
|
||||
programSpaceShip = shaderLoader.CreateProgram("shaders/shader_pbr.vert", "shaders/shader_pbr.frag");
|
||||
|
||||
|
||||
loadModelToContext("./models/sphere.obj", sphereContext);
|
||||
loadModelToContext("./models/spaceship.obj", shipContext);
|
||||
loadModelToContext("./models/new_spaceship.obj", shipContext);
|
||||
loadModelToContext("./models/cube.obj", cubeContext);
|
||||
|
||||
texture::mercury = Core::LoadTexture("textures/mercury/mercury.jpg");
|
||||
texture::venus = Core::LoadTexture("textures/venus/venus.jpg");
|
||||
texture::earth = Core::LoadTexture("textures/earth/earth.png");
|
||||
texture::ship = Core::LoadTexture("textures/spaceship/spaceship.jpg");
|
||||
texture::moon = Core::LoadTexture("textures/earths_moon/moon.jpg");
|
||||
texture::sun = Core::LoadTexture("textures/sun/sun.jpg");
|
||||
texture::mars = Core::LoadTexture("textures/mars/mars.jpg");
|
||||
@ -316,7 +348,6 @@ void init(GLFWwindow* window)
|
||||
texture::mercuryNormal = Core::LoadTexture("textures/mercury/mercury_normal.png");
|
||||
texture::venusNormal = Core::LoadTexture("textures/venus/venus_normal.png");
|
||||
texture::earthNormal = Core::LoadTexture("textures/earth/earth_normal.png");
|
||||
texture::shipNormal = Core::LoadTexture("textures/spaceship/spaceship_normal.jpg");
|
||||
texture::asteroidNormal = Core::LoadTexture("textures/earths_moon/moon_normal.jpg");
|
||||
texture::marsNormal = Core::LoadTexture("textures/mars/mars_normal.jpg");
|
||||
texture::jupiterNormal = Core::LoadTexture("textures/jupiter/jupiter_normal.png");
|
||||
@ -324,8 +355,13 @@ void init(GLFWwindow* window)
|
||||
texture::uranusNormal = Core::LoadTexture("textures/uranus/uranus_normal.png");
|
||||
texture::neptuneNormal = Core::LoadTexture("textures/neptune/neptune_normal.png");
|
||||
|
||||
texture::ship = Core::LoadTexture("textures/new_spaceship/black_and_blue/ship_texture.jpg");
|
||||
texture::shipNormal = Core::LoadTexture("textures/new_spaceship/ship_normal.jpg");
|
||||
texture::shipMetalness = Core::LoadTexture("textures/new_spaceship/ship_metalic.jpg");
|
||||
texture::shipRoughness = Core::LoadTexture("textures/new_spaceship/ship_roughness.jpg");
|
||||
|
||||
//tutaj skybox start
|
||||
|
||||
//skybox
|
||||
glGenTextures(1, &textureID);
|
||||
glBindTexture(GL_TEXTURE_CUBE_MAP, textureID);
|
||||
|
||||
@ -369,6 +405,7 @@ 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) {
|
||||
@ -393,15 +430,13 @@ void processInput(GLFWwindow* window)
|
||||
|
||||
cameraPos = spaceshipPos - 1.5 * spaceshipDir + glm::vec3(0, 1, 0) * 0.5f;
|
||||
cameraDir = spaceshipDir;
|
||||
|
||||
//cameraDir = glm::normalize(-cameraPos);
|
||||
|
||||
}
|
||||
|
||||
// funkcja jest glowna petla
|
||||
|
||||
void renderLoop(GLFWwindow* window) {
|
||||
while (!glfwWindowShouldClose(window))
|
||||
{
|
||||
|
||||
processInput(window);
|
||||
|
||||
renderScene(window);
|
||||
|
BIN
projekt_grk/textures/new_spaceship/Material.001_Emissive.jpg
Normal file
BIN
projekt_grk/textures/new_spaceship/Material.001_Emissive.jpg
Normal file
Binary file not shown.
After ![]() (image error) Size: 309 KiB |
BIN
projekt_grk/textures/new_spaceship/Material.001_Mixed_AO.jpg
Normal file
BIN
projekt_grk/textures/new_spaceship/Material.001_Mixed_AO.jpg
Normal file
Binary file not shown.
After ![]() (image error) Size: 2.9 MiB |
Binary file not shown.
After ![]() (image error) Size: 312 KiB |
Binary file not shown.
After ![]() (image error) Size: 2.4 MiB |
Binary file not shown.
After ![]() (image error) Size: 2.4 MiB |
Binary file not shown.
After ![]() (image error) Size: 307 KiB |
BIN
projekt_grk/textures/new_spaceship/ship_metalic.jpg
Normal file
BIN
projekt_grk/textures/new_spaceship/ship_metalic.jpg
Normal file
Binary file not shown.
After ![]() (image error) Size: 3.1 MiB |
BIN
projekt_grk/textures/new_spaceship/ship_normal.jpg
Normal file
BIN
projekt_grk/textures/new_spaceship/ship_normal.jpg
Normal file
Binary file not shown.
After ![]() (image error) Size: 2.9 MiB |
BIN
projekt_grk/textures/new_spaceship/ship_roughness.jpg
Normal file
BIN
projekt_grk/textures/new_spaceship/ship_roughness.jpg
Normal file
Binary file not shown.
After ![]() (image error) Size: 1.3 MiB |
BIN
projekt_grk/textures/new_spaceship/ship_texture.jpg
Normal file
BIN
projekt_grk/textures/new_spaceship/ship_texture.jpg
Normal file
Binary file not shown.
After ![]() (image error) Size: 2.5 MiB |
Loading…
Reference in New Issue
Block a user