diff --git a/GrafikaProjekt/Debug/grk-cw6.exe b/GrafikaProjekt/Debug/grk-cw6.exe index cc86234..eff09e7 100644 Binary files a/GrafikaProjekt/Debug/grk-cw6.exe and b/GrafikaProjekt/Debug/grk-cw6.exe differ diff --git a/GrafikaProjekt/Debug/grk-cw6.pdb b/GrafikaProjekt/Debug/grk-cw6.pdb index 068efc6..3a6b4e2 100644 Binary files a/GrafikaProjekt/Debug/grk-cw6.pdb and b/GrafikaProjekt/Debug/grk-cw6.pdb differ diff --git a/GrafikaProjekt/pliki/Debug/main.obj b/GrafikaProjekt/pliki/Debug/main.obj index 25973d5..21880b7 100644 Binary files a/GrafikaProjekt/pliki/Debug/main.obj and b/GrafikaProjekt/pliki/Debug/main.obj differ diff --git a/GrafikaProjekt/pliki/Debug/vc142.idb b/GrafikaProjekt/pliki/Debug/vc142.idb index 20224ee..ae89600 100644 Binary files a/GrafikaProjekt/pliki/Debug/vc142.idb and b/GrafikaProjekt/pliki/Debug/vc142.idb differ diff --git a/GrafikaProjekt/pliki/Debug/vc142.pdb b/GrafikaProjekt/pliki/Debug/vc142.pdb index 4c5a19a..133ee46 100644 Binary files a/GrafikaProjekt/pliki/Debug/vc142.pdb and b/GrafikaProjekt/pliki/Debug/vc142.pdb differ diff --git a/GrafikaProjekt/pliki/shaders/shader_tex.frag b/GrafikaProjekt/pliki/shaders/shader_tex.frag index 08c1ade..e9b2e42 100644 --- a/GrafikaProjekt/pliki/shaders/shader_tex.frag +++ b/GrafikaProjekt/pliki/shaders/shader_tex.frag @@ -5,6 +5,7 @@ uniform vec3 lightDir; in vec3 interpNormal; in vec2 interpTexCoord; +in float visibility; void main() { @@ -12,5 +13,5 @@ void main() vec3 color = texture2D(textureSampler, modifiedTexCoord).rgb; vec3 normal = normalize(interpNormal); float diffuse = max(dot(normal, -lightDir), 0.0); - gl_FragColor = vec4(color * diffuse, 1.0); + gl_FragColor = mix(vec4(0.0f, 0.2f, 0.5f, 1.0f), vec4(color * diffuse, 1.0), visibility); } diff --git a/GrafikaProjekt/pliki/shaders/shader_tex.vert b/GrafikaProjekt/pliki/shaders/shader_tex.vert index c0e1d86..e35b48d 100644 --- a/GrafikaProjekt/pliki/shaders/shader_tex.vert +++ b/GrafikaProjekt/pliki/shaders/shader_tex.vert @@ -9,10 +9,18 @@ uniform mat4 modelMatrix; out vec3 interpNormal; out vec2 interpTexCoord; +out float visibility; + +const float density = 0.15; +const float gradient = 1.5; void main() { gl_Position = modelViewProjectionMatrix * vec4(vertexPosition, 1.0); interpNormal = (modelMatrix * vec4(vertexNormal, 0.0)).xyz; interpTexCoord = vertexTexCoord; + + float distance = length(gl_Position.xyz); + visibility = exp(-pow((distance*density),gradient)); + visibility = clamp(visibility, 0.0, 1.0); } diff --git a/GrafikaProjekt/pliki/src/main.cpp b/GrafikaProjekt/pliki/src/main.cpp index 142e491..6343d53 100644 --- a/GrafikaProjekt/pliki/src/main.cpp +++ b/GrafikaProjekt/pliki/src/main.cpp @@ -111,7 +111,7 @@ void renderScene() perspectiveMatrix = Core::createPerspectiveMatrix(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glClearColor(0.0f, 0.1f, 0.3f, 1.0f); + glClearColor(0.0f, 0.2f, 0.5f, 1.0f); glm::mat4 shipInitialTransformation = glm::translate(glm::vec3(0,-0.25f,0)) * glm::rotate(glm::radians(180.0f), glm::vec3(0,1,0)) * glm::scale(glm::vec3(0.25f)); glm::mat4 shipModelMatrix = glm::translate(cameraPos + cameraDir * 0.5f) * glm::mat4_cast(glm::inverse(rotation)) * shipInitialTransformation;