diff --git a/lab2/res/cube.blend b/lab2/res/cube.blend index c6187a9..bb5da9f 100644 Binary files a/lab2/res/cube.blend and b/lab2/res/cube.blend differ diff --git a/lab2/res/cube.mtl b/lab2/res/cube.mtl index 1663250..66caa72 100644 --- a/lab2/res/cube.mtl +++ b/lab2/res/cube.mtl @@ -1,12 +1,12 @@ # Blender MTL File: 'cube.blend' # Material Count: 1 -newmtl Material +newmtl CubeColor Ns 250.000000 Ka 1.000000 1.000000 1.000000 -Kd 0.800000 0.800000 0.800000 +Kd 0.800000 0.447721 0.037177 Ks 0.500000 0.500000 0.500000 Ke 0.000000 0.000000 0.000000 -Ni 1.000000 +Ni 1.450000 d 1.000000 illum 2 diff --git a/lab2/res/cube.obj b/lab2/res/cube.obj index 0c3ba01..ec560d2 100644 --- a/lab2/res/cube.obj +++ b/lab2/res/cube.obj @@ -16,7 +16,7 @@ vn -1.0000 0.0000 0.0000 vn 0.0000 -1.0000 0.0000 vn 1.0000 0.0000 0.0000 vn 0.0000 0.0000 -1.0000 -usemtl Material +usemtl CubeColor s off f 5//1 3//1 1//1 f 3//2 8//2 4//2 diff --git a/lab2/res/main.vsh b/lab2/res/main.vsh index cbc7383..378109b 100644 --- a/lab2/res/main.vsh +++ b/lab2/res/main.vsh @@ -5,10 +5,18 @@ layout (location = 1) in vec3 v_normal; out vec4 a_color; uniform mat4 projview; +uniform mat4 model; void main(){ // gl_Position = vec4(v_position, 1) * projview; - gl_Position = projview * vec4(v_position, 1); - a_color = vec4(0.5, 0, 1, 1); + gl_Position = projview * model * vec4(v_position, 1); + + // dot получается [-1 ... 1] + float l = dot((model * vec4(v_position, 1)).xyz, normalize(vec3(1, 1, 1))); + // сначала делаем диапазон [1 ... 3] + // потом [0.5 ... 1] + l = (l + 2) / 3; + + a_color = vec4(vec3(0.5, 0, 1) * l, 1); } diff --git a/lab2/src/main.cpp b/lab2/src/main.cpp index 793c5cc..a1030f8 100644 --- a/lab2/src/main.cpp +++ b/lab2/src/main.cpp @@ -87,17 +87,18 @@ static void drawWorld(Camera& cam) { // shader->uniformMatrix("pr", cam.getProjection() * cam.getView()); shader->uniformMatrix("projview", projview); + shader->uniformMatrix("model", glm::mat4(1.0f)); world->draw(); auto model_scale = glm::scale(glm::mat4(1.0f), glm::vec3(0.5f, 0.5f, 0.5f)); static float angle = 0.0f; - auto model_translate = glm::translate(glm::mat4(1.0f), glm::vec3(0, 0, -2)); + auto model_translate = glm::translate(glm::mat4(1.0f), glm::vec3(0, 0, -3)); auto model_rotate = glm::rotate(glm::mat4(1.0f), angle, glm::vec3(0, 1, 0)); - angle += 0.001f; + angle += 0.0002f; - shader->uniformMatrix("projview", projview * model_scale * model_translate * model_rotate); + shader->uniformMatrix("model", model_scale * model_translate * model_rotate); // world->draw(); model_mesh->draw(); } @@ -175,7 +176,8 @@ int main() { loadResources(); // glDisable(GL_DEPTH_TEST); - glDisable(GL_CULL_FACE); +// glDisable(GL_CULL_FACE); + glEnable(GL_DEPTH_TEST); Camera cam(glm::vec3(0, 0, 5), glm::radians(90.0f));