Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2.lighting/2.4.basic_lighting_exercise2 /basic_lighting_exercise2.cpp Phong shading in view space #394

Open
caiyingchun opened this issue May 11, 2024 · 0 comments

Comments

@caiyingchun
Copy link

// Vertex shader:
// ================
#version 330 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aNormal;

out vec3 FragPos;
out vec3 Normal;
out vec3 LightPos;

uniform vec3 lightPos; // we now define the uniform in the vertex shader and pass the 'view space' lightpos to the fragment shader. lightPos is currently in world space.

uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;

void main()
{
    gl_Position = projection * view * model * vec4(aPos, 1.0);
    FragPos = vec3(view * model * vec4(aPos, 1.0));
    Normal = mat3(transpose(inverse(view * model))) * aNormal;
    LightPos = vec3(view * vec4(lightPos, 1.0)); // Transform world-space light position to view-space light position
}

Here is the solution the tutitual supplied.
LightPos = vec3(view * vec4(lightPos, 1.0)); // Transform world-space light position to view-space light position Here why didn't lightPos multiply model matrix? Is the lightPos already in world space, so lightPos didn't need multiply model matrix? Shouldn't it be LightPos = vec3(view * model * vec4(lightPos, 1.0))?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant