Исправление шейдера для работы с нормалями
This commit is contained in:
parent
bd12a62be1
commit
e7e4852756
Binary file not shown.
@ -1,12 +1,12 @@
|
|||||||
# Blender MTL File: 'cube.blend'
|
# Blender MTL File: 'cube.blend'
|
||||||
# Material Count: 1
|
# Material Count: 1
|
||||||
|
|
||||||
newmtl Material
|
newmtl CubeColor
|
||||||
Ns 250.000000
|
Ns 250.000000
|
||||||
Ka 1.000000 1.000000 1.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
|
Ks 0.500000 0.500000 0.500000
|
||||||
Ke 0.000000 0.000000 0.000000
|
Ke 0.000000 0.000000 0.000000
|
||||||
Ni 1.000000
|
Ni 1.450000
|
||||||
d 1.000000
|
d 1.000000
|
||||||
illum 2
|
illum 2
|
||||||
|
@ -16,7 +16,7 @@ vn -1.0000 0.0000 0.0000
|
|||||||
vn 0.0000 -1.0000 0.0000
|
vn 0.0000 -1.0000 0.0000
|
||||||
vn 1.0000 0.0000 0.0000
|
vn 1.0000 0.0000 0.0000
|
||||||
vn 0.0000 0.0000 -1.0000
|
vn 0.0000 0.0000 -1.0000
|
||||||
usemtl Material
|
usemtl CubeColor
|
||||||
s off
|
s off
|
||||||
f 5//1 3//1 1//1
|
f 5//1 3//1 1//1
|
||||||
f 3//2 8//2 4//2
|
f 3//2 8//2 4//2
|
||||||
|
@ -5,10 +5,18 @@ layout (location = 1) in vec3 v_normal;
|
|||||||
|
|
||||||
out vec4 a_color;
|
out vec4 a_color;
|
||||||
uniform mat4 projview;
|
uniform mat4 projview;
|
||||||
|
uniform mat4 model;
|
||||||
|
|
||||||
void main(){
|
void main(){
|
||||||
// gl_Position = vec4(v_position, 1) * projview;
|
// gl_Position = vec4(v_position, 1) * projview;
|
||||||
gl_Position = projview * vec4(v_position, 1);
|
gl_Position = projview * model * vec4(v_position, 1);
|
||||||
a_color = vec4(0.5, 0, 1, 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,17 +87,18 @@ static void drawWorld(Camera& cam) {
|
|||||||
|
|
||||||
// shader->uniformMatrix("pr", cam.getProjection() * cam.getView());
|
// shader->uniformMatrix("pr", cam.getProjection() * cam.getView());
|
||||||
shader->uniformMatrix("projview", projview);
|
shader->uniformMatrix("projview", projview);
|
||||||
|
shader->uniformMatrix("model", glm::mat4(1.0f));
|
||||||
world->draw();
|
world->draw();
|
||||||
|
|
||||||
auto model_scale = glm::scale(glm::mat4(1.0f), glm::vec3(0.5f, 0.5f, 0.5f));
|
auto model_scale = glm::scale(glm::mat4(1.0f), glm::vec3(0.5f, 0.5f, 0.5f));
|
||||||
|
|
||||||
static float angle = 0.0f;
|
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));
|
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();
|
// world->draw();
|
||||||
model_mesh->draw();
|
model_mesh->draw();
|
||||||
}
|
}
|
||||||
@ -175,7 +176,8 @@ int main() {
|
|||||||
loadResources();
|
loadResources();
|
||||||
|
|
||||||
// glDisable(GL_DEPTH_TEST);
|
// 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));
|
Camera cam(glm::vec3(0, 0, 5), glm::radians(90.0f));
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user