修复注释

This commit is contained in:
liujianjie
2023-03-09 14:51:18 +08:00
parent 915d8a604c
commit 40b8129669
29 changed files with 250 additions and 169 deletions

View File

@ -13,13 +13,13 @@ void main()
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float ambientStrength = 0.1; float ambientStrength = 0.1;
vec3 ambient = ambientStrength * lightColor; vec3 ambient = ambientStrength * lightColor;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD><D5A3><EFBFBD>ɫ
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vec3 norm = normalize(Normal); vec3 norm = normalize(Normal);
vec3 lightDir = normalize(lightPos - FragPos); vec3 lightDir = normalize(lightPos - FragPos);
float diff = max(dot(norm, lightDir), 0.0); float diff = max(dot(norm, lightDir), 0.0);// <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>Ե<EFBFBD>ǰƬ<EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD>**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>**
vec3 diffuse = diff * lightColor; vec3 diffuse = diff * lightColor;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vec3 result = (ambient + diffuse) * objectColor; vec3 result = (ambient + diffuse) * objectColor;

View File

@ -20,16 +20,16 @@ void main()
vec3 norm = normalize(Normal); vec3 norm = normalize(Normal);
vec3 lightDir = normalize(lightPos - FragPos); vec3 lightDir = normalize(lightPos - FragPos);
float diff = max(dot(norm, lightDir), 0.0); float diff = max(dot(norm, lightDir), 0.0);
vec3 diffuse = diff * lightColor; vec3 diffuse = diff * lightColor;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float specularStrength = 0.5; float specularStrength = 0.5;
vec3 viewDir = normalize(viewPos - FragPos); // <EFBFBD>ǹ۲<EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD>򣬲<EFBFBD><EFBFBD>ǹ۲<EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD> vec3 viewDir = normalize(viewPos - FragPos); // <EFBFBD>ǹ۲<EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD>򣬲<EFBFBD><EFBFBD>ǹ۲<EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>
vec3 reflectDir = reflect(-lightDir, norm); vec3 reflectDir = reflect(-lightDir, norm);
float spec = pow(max(dot(viewDir, reflectDir), 0.0), 32); float spec = pow(max(dot(viewDir, reflectDir), 0.0), 256);// <EFBFBD><EFBFBD>Դ<EFBFBD>Ե<EFBFBD>ǰƬ<EFBFBD>εľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD>졣32<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vec3 specular = specularStrength * spec * lightColor; vec3 specular = specularStrength * spec * lightColor;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD> = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD>*<2A><>Դ<EFBFBD>Ե<EFBFBD>ǰƬ<C7B0>εľ<CEB5><C4BE><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>*<2A><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ɫ
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>2.1<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
vec3 result = (ambient + diffuse + specular) * objectColor; vec3 result = (ambient + diffuse + specular) * objectColor;
FragColor = vec4(result, 1.0); FragColor = vec4(result, 1.0);
// FragColor = vec4(1.0); // FragColor = vec4(1.0);

View File

@ -20,30 +20,29 @@ uniform Material material;
void main() void main()
{ {
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float ambientStrength = 0.1; // float ambientStrength = 0.1;
//vec3 ambient = ambientStrength * lightColor; //vec3 ambient = ambientStrength * lightColor;
vec3 ambient = lightColor * material.ambient; vec3 ambient = lightColor * material.ambient; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vec3 norm = normalize(Normal); vec3 norm = normalize(Normal);
vec3 lightDir = normalize(lightPos - FragPos); vec3 lightDir = normalize(lightPos - FragPos);
float diff = max(dot(norm, lightDir), 0.0); float diff = max(dot(norm, lightDir), 0.0);// <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>Ե<EFBFBD>ǰƬ<EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>
// vec3 diffuse = diff * lightColor; // vec3 diffuse = diff * lightColor;
vec3 diffuse = lightColor * diff * material.diffuse; vec3 diffuse = lightColor * diff * material.diffuse; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float specularStrength = 0.5; float specularStrength = 0.5;
vec3 viewDir = normalize(viewPos - FragPos); // <EFBFBD>ǹ۲<EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD>򣬲<EFBFBD><EFBFBD>ǹ۲<EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD> vec3 viewDir = normalize(viewPos - FragPos); // <EFBFBD>ǹ۲<EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD>򣬲<EFBFBD><EFBFBD>ǹ۲<EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>
vec3 reflectDir = reflect(-lightDir, norm); vec3 reflectDir = reflect(-lightDir, norm);
float spec = pow(max(dot(viewDir, reflectDir), 0.0), 32); float spec = pow(max(dot(viewDir, reflectDir), 0.0), 32);// <EFBFBD><EFBFBD>Դ<EFBFBD>Ե<EFBFBD>ǰƬ<EFBFBD>εľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>
//vec3 specular = specularStrength * spec * lightColor; //vec3 specular = specularStrength * spec * lightColor;
vec3 specular = lightColor * (spec * material.specular); vec3 specular = lightColor * (spec * material.specular);// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
//vec3 result = (ambient + diffuse + specular) * objectColor; //vec3 result = (ambient + diffuse + specular) * objectColor;
vec3 result = (ambient + diffuse + specular) ; vec3 result = (ambient + diffuse + specular) ; // <EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
FragColor = vec4(result, 1.0); FragColor = vec4(result, 1.0);
} }

View File

@ -32,28 +32,28 @@ void main()
float ambientStrength = 0.1; float ambientStrength = 0.1;
//vec3 ambient = ambientStrength * lightColor; //vec3 ambient = ambientStrength * lightColor;
//vec3 ambient = lightColor * material.ambient; //vec3 ambient = lightColor * material.ambient;
vec3 ambient = light.ambient * material.ambient; vec3 ambient = light.ambient * material.ambient; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vec3 norm = normalize(Normal); vec3 norm = normalize(Normal);
vec3 lightDir = normalize(light.position - FragPos); vec3 lightDir = normalize(light.position - FragPos);
float diff = max(dot(norm, lightDir), 0.0); float diff = max(dot(norm, lightDir), 0.0); // <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>Ե<EFBFBD>ǰƬ<EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>
// vec3 diffuse = diff * lightColor; // vec3 diffuse = diff * lightColor;
// vec3 diffuse = lightColor * diff * material.diffuse; // vec3 diffuse = lightColor * diff * material.diffuse;
vec3 diffuse = light.diffuse * diff * material.diffuse; vec3 diffuse = light.diffuse * diff * material.diffuse; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float specularStrength = 0.5; float specularStrength = 0.5;
vec3 viewDir = normalize(viewPos - FragPos); // <EFBFBD>ǹ۲<EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD>򣬲<EFBFBD><EFBFBD>ǹ۲<EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD> vec3 viewDir = normalize(viewPos - FragPos); // <EFBFBD>ǹ۲<EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD>򣬲<EFBFBD><EFBFBD>ǹ۲<EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>
vec3 reflectDir = reflect(-lightDir, norm); vec3 reflectDir = reflect(-lightDir, norm);
float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess); float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess);// <EFBFBD><EFBFBD>Դ<EFBFBD>Ե<EFBFBD>ǰƬ<EFBFBD>εľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>
//vec3 specular = specularStrength * spec * lightColor; //vec3 specular = specularStrength * spec * lightColor;
//vec3 specular = lightColor * (spec * material.specular); //vec3 specular = lightColor * (spec * material.specular);
vec3 specular = light.specular * (spec * material.specular); vec3 specular = light.specular * (spec * material.specular);// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
//vec3 result = (ambient + diffuse + specular) * objectColor; //vec3 result = (ambient + diffuse + specular) * objectColor;
vec3 result = (ambient + diffuse + specular) ; vec3 result = (ambient + diffuse + specular); // <EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
FragColor = vec4(result, 1.0); FragColor = vec4(result, 1.0);
} }

View File

@ -9,7 +9,7 @@ uniform vec3 viewPos;
struct Material { struct Material {
sampler2D diffuse;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ sampler2D diffuse;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ
vec3 specular;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> vec3 specular;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float shininess; float shininess;
}; };
uniform Material material; uniform Material material;
@ -26,24 +26,24 @@ struct Light {
uniform Light light; uniform Light light;
void main() void main()
{ {
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
float ambientStrength = 0.1; float ambientStrength = 0.1;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vec3 ambient = light.ambient * vec3(texture(material.diffuse, TexCoords)); vec3 ambient = light.ambient * vec3(texture(material.diffuse, TexCoords));
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
vec3 norm = normalize(Normal); vec3 norm = normalize(Normal);
vec3 lightDir = normalize(light.position - FragPos); vec3 lightDir = normalize(light.position - FragPos);
float diff = max(dot(norm, lightDir), 0.0); float diff = max(dot(norm, lightDir), 0.0); // <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>Ե<EFBFBD>ǰƬ<EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>
vec3 diffuse = light.diffuse * diff * vec3(texture(material.diffuse, TexCoords));// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>vec3ǿ<EFBFBD><EFBFBD> vec3 diffuse = light.diffuse * diff * vec3(texture(material.diffuse, TexCoords));// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
float specularStrength = 0.5; float specularStrength = 0.5;
vec3 viewDir = normalize(viewPos - FragPos); // <EFBFBD>ǹ۲<EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD>򣬲<EFBFBD><EFBFBD>ǹ۲<EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD> vec3 viewDir = normalize(viewPos - FragPos); // <EFBFBD>ǹ۲<EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD>򣬲<EFBFBD><EFBFBD>ǹ۲<EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>
vec3 reflectDir = reflect(-lightDir, norm); vec3 reflectDir = reflect(-lightDir, norm);
float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess); float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess);// <EFBFBD><EFBFBD>Դ<EFBFBD>Ե<EFBFBD>ǰƬ<EFBFBD>εľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>
vec3 specular = light.specular * (spec * material.specular); vec3 specular = light.specular * (spec * material.specular); // <EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>õľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vec3 result = (ambient + diffuse + specular) ; vec3 result = (ambient + diffuse + specular) ;

View File

@ -9,8 +9,8 @@ uniform vec3 viewPos;
struct Material { struct Material {
sampler2D diffuse;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ sampler2D diffuse;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ
//vec3 specular;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //vec3 specular; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
sampler2D specular;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD> sampler2D specular;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float shininess; float shininess;
}; };
uniform Material material; uniform Material material;
@ -27,25 +27,25 @@ struct Light {
uniform Light light; uniform Light light;
void main() void main()
{ {
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
float ambientStrength = 0.1; float ambientStrength = 0.1;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vec3 ambient = light.ambient * vec3(texture(material.diffuse, TexCoords)); vec3 ambient = light.ambient * vec3(texture(material.diffuse, TexCoords));
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
vec3 norm = normalize(Normal); vec3 norm = normalize(Normal);
vec3 lightDir = normalize(light.position - FragPos); vec3 lightDir = normalize(light.position - FragPos);
float diff = max(dot(norm, lightDir), 0.0); float diff = max(dot(norm, lightDir), 0.0); // <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>Ե<EFBFBD>ǰƬ<EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>
vec3 diffuse = light.diffuse * diff * vec3(texture(material.diffuse, TexCoords));// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>vec3ǿ<EFBFBD><EFBFBD> vec3 diffuse = light.diffuse * diff * vec3(texture(material.diffuse, TexCoords));// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
float specularStrength = 0.5; float specularStrength = 0.5;
vec3 viewDir = normalize(viewPos - FragPos); // <EFBFBD>ǹ۲<EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD>򣬲<EFBFBD><EFBFBD>ǹ۲<EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD> vec3 viewDir = normalize(viewPos - FragPos); // <EFBFBD>ǹ۲<EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD>򣬲<EFBFBD><EFBFBD>ǹ۲<EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>
vec3 reflectDir = reflect(-lightDir, norm); vec3 reflectDir = reflect(-lightDir, norm);
float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess); float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess);// <EFBFBD><EFBFBD>Դ<EFBFBD>Ե<EFBFBD>ǰƬ<EFBFBD>εľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>
// vec3 specular = light.specular * (spec * material.specular); // <EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // vec3 specular = light.specular * (spec * material.specular); // <EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vec3 specular = light.specular * spec * vec3(texture(material.specular, TexCoords)); vec3 specular = light.specular * spec * vec3(texture(material.specular, TexCoords));
vec3 result = (ambient + diffuse + specular) ; vec3 result = (ambient + diffuse + specular) ;

View File

@ -8,15 +8,15 @@ in vec2 TexCoords;//
uniform vec3 viewPos; uniform vec3 viewPos;
struct Material { struct Material {
sampler2D diffuse;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ sampler2D diffuse; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ
sampler2D specular;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD> sampler2D specular;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float shininess; float shininess;
}; };
uniform Material material; uniform Material material;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD>
struct Light { struct Light {
// vec3 position; // ʹ<EFBFBD>ö<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD> // vec3 position; // ʹ<EFBFBD><EFBFBD>ƽ<EFBFBD>й<EFBFBD><EFBFBD>Ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫλ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vec3 direction; // <EFBFBD>ӹ<EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ֵķ<EFBFBD><EFBFBD><EFBFBD> vec3 direction; // <EFBFBD>ӹ<EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ֵķ<EFBFBD><EFBFBD><EFBFBD>
vec3 ambient; vec3 ambient;
@ -27,27 +27,27 @@ struct Light {
uniform Light light; uniform Light light;
void main() void main()
{ {
// ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>Դ<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
vec3 lightDir = normalize(-light.direction); vec3 lightDir = normalize(-light.direction);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
float ambientStrength = 0.1; float ambientStrength = 0.1;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vec3 ambient = light.ambient * vec3(texture(material.diffuse, TexCoords)); vec3 ambient = light.ambient * vec3(texture(material.diffuse, TexCoords));
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
vec3 norm = normalize(Normal); vec3 norm = normalize(Normal);
// vec3 lightDir = normalize(light.position - FragPos); // vec3 lightDir = normalize(light.position - FragPos); // һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float diff = max(dot(norm, lightDir), 0.0); float diff = max(dot(norm, lightDir), 0.0); // <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>Ե<EFBFBD>ǰƬ<EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>
vec3 diffuse = light.diffuse * diff * vec3(texture(material.diffuse, TexCoords));// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>vec3ǿ<EFBFBD><EFBFBD> vec3 diffuse = light.diffuse * diff * vec3(texture(material.diffuse, TexCoords));// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
float specularStrength = 0.5; float specularStrength = 0.5;
vec3 viewDir = normalize(viewPos - FragPos); // <EFBFBD>ǹ۲<EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD>򣬲<EFBFBD><EFBFBD>ǹ۲<EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD> vec3 viewDir = normalize(viewPos - FragPos); // <EFBFBD>ǹ۲<EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD>򣬲<EFBFBD><EFBFBD>ǹ۲<EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>
vec3 reflectDir = reflect(-lightDir, norm); vec3 reflectDir = reflect(-lightDir, norm);
float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess); float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess);// <EFBFBD><EFBFBD>Դ<EFBFBD>Ե<EFBFBD>ǰƬ<EFBFBD>εľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>
// vec3 specular = light.specular * (spec * material.specular); // <EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // vec3 specular = light.specular * (spec * material.specular); // <EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vec3 specular = light.specular * spec * vec3(texture(material.specular, TexCoords)); vec3 specular = light.specular * spec * vec3(texture(material.specular, TexCoords));
vec3 result = (ambient + diffuse + specular) ; vec3 result = (ambient + diffuse + specular) ;

View File

@ -1,15 +1,15 @@
#version 330 core #version 330 core
out vec4 FragColor; out vec4 FragColor;
struct Material { struct Material {
sampler2D diffuse;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ sampler2D diffuse; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ
sampler2D specular;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD> sampler2D specular;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float shininess; float shininess;
}; };
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
struct Light { struct Light {
vec3 position; vec3 position; // <EFBFBD><EFBFBD>Ҫλ<EFBFBD><EFBFBD>
vec3 ambient; vec3 ambient;
vec3 diffuse; vec3 diffuse;
vec3 specular; vec3 specular;
@ -27,30 +27,30 @@ uniform Material material;
uniform Light light; uniform Light light;
void main() void main()
{ {
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vec3 ambient = light.ambient * vec3(texture(material.diffuse, TexCoords)); vec3 ambient = light.ambient * vec3(texture(material.diffuse, TexCoords));
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
vec3 norm = normalize(Normal); vec3 norm = normalize(Normal);
vec3 lightDir = normalize(light.position - FragPos); // <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD> vec3 lightDir = normalize(light.position - FragPos); // <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>,<2C><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դһ<D4B4><D2BB>
float diff = max(dot(norm, lightDir), 0.0); float diff = max(dot(norm, lightDir), 0.0); // <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>Ե<EFBFBD>ǰƬ<EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>
vec3 diffuse = light.diffuse * diff * texture(material.diffuse, TexCoords).rgb;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>vec3ǿ<EFBFBD><EFBFBD> vec3 diffuse = light.diffuse * diff * texture(material.diffuse, TexCoords).rgb;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
vec3 viewDir = normalize(viewPos - FragPos); // <EFBFBD>ǹ۲<EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD>򣬲<EFBFBD><EFBFBD>ǹ۲<EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD> vec3 viewDir = normalize(viewPos - FragPos); // <EFBFBD>ǹ۲<EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD>򣬲<EFBFBD><EFBFBD>ǹ۲<EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>
vec3 reflectDir = reflect(-lightDir, norm);// reflectҪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD>Դָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> vec3 reflectDir = reflect(-lightDir, norm); // reflectҪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD>Դָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess); float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess);// <EFBFBD><EFBFBD>Դ<EFBFBD>Ե<EFBFBD>ǰƬ<EFBFBD>εľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//vec3 specular = light.specular * spec * vec3(texture(material.specular, TexCoords)); //vec3 specular = light.specular * spec * vec3(texture(material.specular, TexCoords)); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD>
vec3 specular = light.specular * spec * texture(material.specular, TexCoords).rgb; vec3 specular = light.specular * spec * texture(material.specular, TexCoords).rgb;
// <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˥<EFBFBD><EFBFBD>
float distance = length(light.position - FragPos); float distance = length(light.position - FragPos); // <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>Ƭ<EFBFBD>γ<EFBFBD><EFBFBD><EFBFBD>
float attenuation = 1.0 / (light.constant + light.linear * distance float attenuation = 1.0 / (light.constant + light.linear * distance // <EFBFBD><EFBFBD><EFBFBD>ݹ<EFBFBD>ʽ
+ light.quadratic * distance * distance); + light.quadratic * distance * distance);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˥<EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˥<EFBFBD><EFBFBD>
ambient *= attenuation; ambient *= attenuation;
diffuse *= attenuation; diffuse *= attenuation;
specular *= attenuation; specular *= attenuation;

View File

@ -14,7 +14,7 @@ void main()
{ {
gl_Position = projection * view * model * vec4(aPos, 1.0); gl_Position = projection * view * model * vec4(aPos, 1.0);
FragPos = vec3(model * vec4(aPos, 1.0)); FragPos = vec3(model * vec4(aPos, 1.0));
// Normal = aNormal;// ֻ<>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>ſ<EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD> // Normal = aNormal;// ֻ<>ж<EFBFBD><D0B6><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ʱ<EFBFBD>ſ<EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD>
Normal = mat3(transpose(inverse(model))) * aNormal; Normal = mat3(transpose(inverse(model))) * aNormal;
TexCoords = aTexCoords; TexCoords = aTexCoords;
} }

View File

@ -1,22 +1,22 @@
#version 330 core #version 330 core
out vec4 FragColor; out vec4 FragColor;
struct Material { struct Material {
sampler2D diffuse;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ sampler2D diffuse; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
sampler2D specular;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD> sampler2D specular;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float shininess; float shininess;
}; };
// <EFBFBD>۹<EFBFBD><EFBFBD><EFBFBD> // <EFBFBD>۹<EFBFBD><EFBFBD><EFBFBD>
struct Light { struct Light {
vec3 position; vec3 position; // <EFBFBD><EFBFBD>Ҫλ<EFBFBD><EFBFBD>
vec3 direction; vec3 direction;// <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float cutOff; float cutOff;
vec3 ambient; vec3 ambient;
vec3 diffuse; vec3 diffuse;
vec3 specular; vec3 specular;
float constant; float constant; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float linear; float linear; // һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float quadratic; float quadratic;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}; };
in vec3 FragPos; in vec3 FragPos;
@ -28,35 +28,37 @@ uniform Material material;
uniform Light light; uniform Light light;
void main() void main()
{ {
// <EFBFBD><EFBFBD>Դ<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD>Դָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD> // <EFBFBD><EFBFBD>Դ<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
vec3 lightDir = normalize(light.position - FragPos); vec3 lightDir = normalize(light.position - FragPos);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>theta<EFBFBD><EFBFBD>dot<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Դ<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص㣩<EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>theta<EFBFBD><EFBFBD>dot(<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float theta = dot(lightDir, normalize(-light.direction)); // = dot(-lightDir, normalize(light.direction));// ע<EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD> dot(<28><>Դָ<D4B4><D6B8><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>) float theta = dot(lightDir, normalize(-light.direction));
// ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>theta<EFBFBD><EFBFBD>cosֵ<EFBFBD><EFBFBD>cutoofҲ<EFBFBD><EFBFBD>cosֵ<EFBFBD><EFBFBD>cos(0-90)<29>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>theta><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>< // float theta=dot(-lightDir, normalize(light.direction));// dot(<28><>Դָ<D4B4><D6B8><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>, <EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>)
// ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>theta<EFBFBD><EFBFBD>cosֵ<EFBFBD><EFBFBD>cutOffҲ<EFBFBD><EFBFBD>cosֵ<EFBFBD><EFBFBD>cos(0-90)<29>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>theta><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><
if(theta > light.cutOff){ if(theta > light.cutOff){
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD> // Ƭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vec3 ambient = light.ambient * vec3(texture(material.diffuse, TexCoords)); vec3 ambient = light.ambient * vec3(texture(material.diffuse, TexCoords));
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
vec3 norm = normalize(Normal); vec3 norm = normalize(Normal);
vec3 lightDir = normalize(light.position - FragPos); // <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD> vec3 lightDir = normalize(light.position - FragPos); // <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>,<2C><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դһ<D4B4><D2BB>
float diff = max(dot(norm, lightDir), 0.0); float diff = max(dot(norm, lightDir), 0.0); // <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>Ե<EFBFBD>ǰƬ<EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>
vec3 diffuse = light.diffuse * diff * texture(material.diffuse, TexCoords).rgb;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>vec3ǿ<EFBFBD><EFBFBD> vec3 diffuse = light.diffuse * diff * texture(material.diffuse, TexCoords).rgb;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
vec3 viewDir = normalize(viewPos - FragPos); // <EFBFBD>ǹ۲<EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD>򣬲<EFBFBD><EFBFBD>ǹ۲<EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD> vec3 viewDir = normalize(viewPos - FragPos); // <EFBFBD>ǹ۲<EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD>򣬲<EFBFBD><EFBFBD>ǹ۲<EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>
vec3 reflectDir = reflect(-lightDir, norm);// reflectҪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD>Դָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> vec3 reflectDir = reflect(-lightDir, norm); // reflectҪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD>Դָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess); float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess);// <EFBFBD><EFBFBD>Դ<EFBFBD>Ե<EFBFBD>ǰƬ<EFBFBD>εľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//vec3 specular = light.specular * spec * vec3(texture(material.specular, TexCoords)); //vec3 specular = light.specular * spec * vec3(texture(material.specular, TexCoords)); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD>
vec3 specular = light.specular * spec * texture(material.specular, TexCoords).rgb; vec3 specular = light.specular * spec * texture(material.specular, TexCoords).rgb;
// <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˥<EFBFBD><EFBFBD>
float distance = length(light.position - FragPos); float distance = length(light.position - FragPos); // <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>Ƭ<EFBFBD>γ<EFBFBD><EFBFBD><EFBFBD>
float attenuation = 1.0 / (light.constant + light.linear * distance float attenuation = 1.0 / (light.constant + light.linear * distance // <EFBFBD><EFBFBD><EFBFBD>ݹ<EFBFBD>ʽ
+ light.quadratic * distance * distance); + light.quadratic * distance * distance);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˥<EFBFBD><EFBFBD> // <EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˥<EFBFBD><EFBFBD>
ambient *= attenuation; ambient *= attenuation;
diffuse *= attenuation; diffuse *= attenuation;
specular *= attenuation; specular *= attenuation;
@ -65,8 +67,7 @@ void main()
FragColor = vec4(result, 1.0); FragColor = vec4(result, 1.0);
}else{ }else{
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD> // Ƭ<EFBFBD>β<EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD>
FragColor = vec4(light.ambient * vec3(texture(material.diffuse, TexCoords)), 1.0) ; FragColor = vec4(light.ambient * vec3(texture(material.diffuse, TexCoords)), 1.0) ;
} }
} }

View File

@ -0,0 +1,77 @@
#version 330 core
out vec4 FragColor;
struct Material {
sampler2D diffuse; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
sampler2D specular;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float shininess;
};
// <EFBFBD>۹<EFBFBD><EFBFBD><EFBFBD>
struct Light {
vec3 position; // <EFBFBD><EFBFBD>Ҫλ<EFBFBD><EFBFBD>
vec3 direction;// <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float cutOff;
float outerCutOff;// <EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>
vec3 ambient;
vec3 diffuse;
vec3 specular;
float constant; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float linear; // һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float quadratic;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
in vec3 FragPos;
in vec3 Normal;
in vec2 TexCoords;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uniform vec3 viewPos;
uniform Material material;
uniform Light light;
void main()
{
// <EFBFBD><EFBFBD>Դ<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
vec3 lightDir = normalize(light.position - FragPos);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>theta<EFBFBD><EFBFBD>dot(<28><><EFBFBD>ص<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
float theta = dot(lightDir, normalize(-light.direction));
// float theta=dot(-lightDir, normalize(light.direction));// dot(<28><>Դָ<D4B4><D6B8><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>, <EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>)
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vec3 ambient = light.ambient * vec3(texture(material.diffuse, TexCoords));
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
vec3 norm = normalize(Normal);
// vec3 lightDir = normalize(light.position - FragPos); // <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>
float diff = max(dot(norm, lightDir), 0.0);
vec3 diffuse = light.diffuse * diff * texture(material.diffuse, TexCoords).rgb;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
vec3 viewDir = normalize(viewPos - FragPos); // <EFBFBD>ǹ۲<EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD>򣬲<EFBFBD><EFBFBD>ǹ۲<EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>
vec3 reflectDir = reflect(-lightDir, norm); // reflectҪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD>Դָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess);// <EFBFBD><EFBFBD>Դ<EFBFBD>Ե<EFBFBD>ǰƬ<EFBFBD>εľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//vec3 specular = light.specular * spec * vec3(texture(material.specular, TexCoords)); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD>
vec3 specular = light.specular * spec * texture(material.specular, TexCoords).rgb;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˥<EFBFBD><EFBFBD>
float distance = length(light.position - FragPos); // <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>Ƭ<EFBFBD>γ<EFBFBD><EFBFBD><EFBFBD>
float attenuation = 1.0 / (light.constant + light.linear * distance // <EFBFBD><EFBFBD><EFBFBD>ݹ<EFBFBD>ʽ
+ light.quadratic * distance * distance);
// <EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˥<EFBFBD><EFBFBD>
ambient *= attenuation;
diffuse *= attenuation;
specular *= attenuation;
// Ϊ<EFBFBD>˱<EFBFBD>Եƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ׶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float epsilon = light.cutOff - light.outerCutOff;
float intensity = clamp((theta - light.outerCutOff) / epsilon, 0.0, 1.0);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
diffuse *= intensity;
specular *= intensity;// <EFBFBD>۹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>
vec3 result = (ambient + diffuse + specular) ;
FragColor = vec4(result, 1.0);
}

View File

@ -1,74 +1,75 @@
#version 330 core #version 330 core
out vec4 FragColor; out vec4 FragColor;
struct Material { struct Material {
sampler2D diffuse;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ sampler2D diffuse; // 漫反射颜色分量从纹理采样
sampler2D specular;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD> sampler2D specular;// 镜面光照颜色分量从纹理采样
float shininess; float shininess;
}; };
// <EFBFBD>۹<EFBFBD><EFBFBD><EFBFBD> // 聚光灯
struct Light { struct Light {
vec3 position; vec3 position; // 需要位置
vec3 direction; vec3 direction;// 需要照射方向
float cutOff; float cutOff;// ϕ(内光切)
float outerCutOff; float outerCutOff;// γ(外光切)
vec3 ambient; vec3 ambient;
vec3 diffuse; vec3 diffuse;
vec3 specular; vec3 specular;
float constant; float constant; // 常数
float linear; float linear; // 一次项
float quadratic; float quadratic;// 二次项
}; };
in vec3 FragPos; in vec3 FragPos;
in vec3 Normal; in vec3 Normal;
in vec2 TexCoords;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> in vec2 TexCoords;// 纹理坐标
uniform vec3 viewPos; uniform vec3 viewPos;
uniform Material material; uniform Material material;
uniform Light light; uniform Light light;
void main() void main()
{ {
// <EFBFBD><EFBFBD>Դ<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD>Դָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD> // 光源的方向向量:像素点指向光源
vec3 lightDir = normalize(light.position - FragPos); vec3 lightDir = normalize(light.position - FragPos);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>theta<EFBFBD><EFBFBD>dot<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Դ<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص㣩<EFBFBD><EFBFBD> // 算出thetadot(像素点指向光源,光源照射的方向取反)
float theta = dot(lightDir, normalize(-light.direction)); // = dot(-lightDir, normalize(light.direction));// ע<EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD> dot(<28><>Դָ<D4B4><D6B8><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>) float theta = dot(lightDir, normalize(-light.direction));
// ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>theta<EFBFBD><EFBFBD>cosֵ<EFBFBD><EFBFBD>cutoofҲ<EFBFBD><EFBFBD>cosֵ<EFBFBD><EFBFBD>cos(0-90)<29>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>theta><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>< // float theta=dot(-lightDir, normalize(light.direction));// dot(光源指向像素点, 光源照射的方向)
// Ϊ<EFBFBD>˱<EFBFBD>Եƽ<EFBFBD><EFBFBD>
float epsilon = light.cutOff - light.outerCutOff;
float intensity = clamp((theta - light.outerCutOff) / epsilon, 0.0, 1.0);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD> // 从漫反射纹理读取颜色分量
vec3 ambient = light.ambient * vec3(texture(material.diffuse, TexCoords)); vec3 ambient = light.ambient * vec3(texture(material.diffuse, TexCoords));
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // 漫反射光照分量
vec3 norm = normalize(Normal); vec3 norm = normalize(Normal);
// vec3 lightDir = normalize(light.position - FragPos); // <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD> // vec3 lightDir = normalize(light.position - FragPos); // 得到光源的方向
float diff = max(dot(norm, lightDir), 0.0); float diff = max(dot(norm, lightDir), 0.0);
vec3 diffuse = light.diffuse * diff * texture(material.diffuse, TexCoords).rgb;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>vec3ǿ<EFBFBD><EFBFBD> vec3 diffuse = light.diffuse * diff * texture(material.diffuse, TexCoords).rgb;// 从漫反射纹理读取颜色分量
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // 镜面光照分量
vec3 viewDir = normalize(viewPos - FragPos); // <EFBFBD>ǹ۲<EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD>򣬲<EFBFBD><EFBFBD>ǹ۲<EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD> vec3 viewDir = normalize(viewPos - FragPos); // 是观察者方向,不是观察者看向的方向
vec3 reflectDir = reflect(-lightDir, norm);// reflectҪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD>Դָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> vec3 reflectDir = reflect(-lightDir, norm); // reflect要求第一个参数是光源指向像素点的向量
float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess); float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess);// 光源对当前片段的镜面光影响
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD> // 采样镜面光纹理颜色作为镜面光照颜色分量
//vec3 specular = light.specular * spec * vec3(texture(material.specular, TexCoords)); //vec3 specular = light.specular * spec * vec3(texture(material.specular, TexCoords)); // 这句也行
vec3 specular = light.specular * spec * texture(material.specular, TexCoords).rgb; vec3 specular = light.specular * spec * texture(material.specular, TexCoords).rgb;
// <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // 计算衰减
float distance = length(light.position - FragPos); float distance = length(light.position - FragPos); // 得到光源到片段长度
float attenuation = 1.0 / (light.constant + light.linear * distance float attenuation = 1.0 / (light.constant + light.linear * distance // 根据公式
+ light.quadratic * distance * distance); + light.quadratic * distance * distance);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˥<EFBFBD><EFBFBD> // 光照分量随距离衰减
ambient *= attenuation; ambient *= attenuation;
diffuse *= attenuation; diffuse *= attenuation;
specular *= attenuation; specular *= attenuation;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> // 为了边缘平滑且圆锥内正常
float epsilon = light.cutOff - light.outerCutOff;
float intensity = clamp((theta - light.outerCutOff) / epsilon, 0.0, 1.0);
// 将不对环境光做出影响,让它总是能有一点光
diffuse *= intensity; diffuse *= intensity;
specular *= intensity;// <EFBFBD>ܾ۹<EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD> specular *= intensity;// 聚光灯受影响
vec3 result = (ambient + diffuse + specular) ; vec3 result = (ambient + diffuse + specular) ;

View File

@ -7,7 +7,7 @@
#include <glm/gtc/type_ptr.hpp> #include <glm/gtc/type_ptr.hpp>
//#include <learnopengl/shader_s.h> //#include <learnopengl/shader_s.h>
#include "Shader/Shader.h" #include "Core/Shader/Shader.h"
#include <iostream> #include <iostream>
#include "MyFileSystem.h" #include "MyFileSystem.h"
@ -59,7 +59,7 @@ int main()
// build and compile our shader zprogram // build and compile our shader zprogram
// ------------------------------------ // ------------------------------------
//Shader ourShader("7.1.camera.vs", "7.1.camera.fs"); //Shader ourShader("7.1.camera.vs", "7.1.camera.fs");
Shader ourShader("assest/shader/1.9.camera.vs", "assest/shader/1.9.camera.fs"); Shader ourShader("assest/shader/1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/1.9.camera.vs", "assest/shader/1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/1.9.camera.fs");
// set up vertex data (and buffer(s)) and configure vertex attributes // set up vertex data (and buffer(s)) and configure vertex attributes
// ------------------------------------------------------------------ // ------------------------------------------------------------------

View File

@ -5,6 +5,8 @@
#include <glm/glm.hpp> #include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp> #include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp> #include <glm/gtc/type_ptr.hpp>
//#define GLM_ENABLE_EXPERIMENTAL
#include <glm/gtx/quaternion.hpp>
//#include <learnopengl/shader_s.h> //#include <learnopengl/shader_s.h>
#include "Core/Shader/Shader.h" #include "Core/Shader/Shader.h"
@ -82,7 +84,7 @@ int main()
// build and compile our shader zprogram // build and compile our shader zprogram
// ------------------------------------ // ------------------------------------
//Shader ourShader("7.1.camera.vs", "7.1.camera.fs"); //Shader ourShader("7.1.camera.vs", "7.1.camera.fs");
Shader ourShader("assest/shader/1.9.camera.vs", "assest/shader/1.9.camera.fs"); Shader ourShader("assest/shader/1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/1.9.camera.vs", "assest/shader/1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/1.9.camera.fs");
// set up vertex data (and buffer(s)) and configure vertex attributes // set up vertex data (and buffer(s)) and configure vertex attributes
// ------------------------------------------------------------------ // ------------------------------------------------------------------
@ -254,6 +256,11 @@ int main()
// camera/view transformation // camera/view transformation
glm::mat4 view = glm::lookAt(cameraPos, cameraPos + cameraFront, cameraUp); glm::mat4 view = glm::lookAt(cameraPos, cameraPos + cameraFront, cameraUp);
ourShader.setMat4("view", view); ourShader.setMat4("view", view);
// <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
//glm::quat orientation = glm::quat(glm::vec3(pitch * 0.1, yaw * 0.1, 0.0f));
//glm::mat4 m_ViewMatrix = glm::translate(glm::mat4(1.0f), cameraPos) * glm::toMat4(orientation); // <20><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD> = λ<>þ<EFBFBD><C3BE><EFBFBD> * <20><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
//m_ViewMatrix = glm::inverse(m_ViewMatrix);// ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
//ourShader.setMat4("view", m_ViewMatrix);
// render boxes // render boxes
glBindVertexArray(VAO); glBindVertexArray(VAO);

View File

@ -79,7 +79,7 @@ int main()
// build and compile our shader zprogram // build and compile our shader zprogram
// ------------------------------------ // ------------------------------------
//Shader ourShader("7.4.camera.vs", "7.4.camera.fs"); //Shader ourShader("7.4.camera.vs", "7.4.camera.fs");
Shader ourShader("assest/shader/1.9.camera.vs", "assest/shader/1.9.camera.fs"); Shader ourShader("assest/shader/1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/1.9.camera.vs", "assest/shader/1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/1.9.camera.fs");
// set up vertex data (and buffer(s)) and configure vertex attributes // set up vertex data (and buffer(s)) and configure vertex attributes
// ------------------------------------------------------------------ // ------------------------------------------------------------------

View File

@ -5,8 +5,6 @@
#include <glm/gtc/matrix_transform.hpp> #include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp> #include <glm/gtc/type_ptr.hpp>
//#include <learnopengl/camera.h>
//#include <learnopengl/shader_s.h>
#include "Core/Shader/Shader.h" #include "Core/Shader/Shader.h"
#include "Core/Camera/Camera.h" #include "Core/Camera/Camera.h"
#include <iostream> #include <iostream>
@ -77,10 +75,8 @@ int main()
// build and compile our shader zprogram // build and compile our shader zprogram
// ------------------------------------ // ------------------------------------
//Shader lightingShader("1.colors.vs", "1.colors.fs");
// <20><><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>shader // <20><><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>shader
Shader lightingShader("assest/shader/2<><32><EFBFBD><EFBFBD>/2.1.1.color.vs", "assest/shader/2<><32><EFBFBD><EFBFBD>/2.1.1.color.fs"); Shader lightingShader("assest/shader/2<><32><EFBFBD><EFBFBD>/2.1.1.color.vs", "assest/shader/2<><32><EFBFBD><EFBFBD>/2.1.1.color.fs");
//Shader lightCubeShader("1.light_cube.vs", "1.light_cube.fs");
// <20><>Դshader // <20><>Դshader
Shader lightCubeShader("assest/shader/2<><32><EFBFBD><EFBFBD>/2.1.2.light_cube.vs", "assest/shader/2<><32><EFBFBD><EFBFBD>/2.1.2.light_cube.fs"); Shader lightCubeShader("assest/shader/2<><32><EFBFBD><EFBFBD>/2.1.2.light_cube.vs", "assest/shader/2<><32><EFBFBD><EFBFBD>/2.1.2.light_cube.fs");
@ -129,28 +125,24 @@ int main()
-0.5f, 0.5f, 0.5f, -0.5f, 0.5f, 0.5f,
-0.5f, 0.5f, -0.5f, -0.5f, 0.5f, -0.5f,
}; };
// first, configure the cube's VAO (and VBO)
unsigned int VBO, cubeVAO; unsigned int VBO, cubeVAO;
glGenVertexArrays(1, &cubeVAO); glGenVertexArrays(1, &cubeVAO);
glGenBuffers(1, &VBO); glGenBuffers(1, &VBO);
// 1. <20>󶨶<EFBFBD><F3B6A8B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
glBindVertexArray(cubeVAO);
// 2. <20><><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>CPU<50>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8>Ƶ<EFBFBD>GPU<50><55><EFBFBD><EFBFBD><E3BBBA><EFBFBD>У<EFBFBD><D0A3><EFBFBD>OpenGLʹ<4C><CAB9>
glBindBuffer(GL_ARRAY_BUFFER, VBO); glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
// 3. <20><EFBFBD><E8B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD><E3BBBA><EFBFBD>еĶ<D0B5><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>
glBindVertexArray(cubeVAO);
// position attribute
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
glEnableVertexAttribArray(0); glEnableVertexAttribArray(0);
// second, configure the light's VAO (VBO stays the same; the vertices are the same for the light object which is also a 3D cube) // <EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬ͬ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>VBO
unsigned int lightCubeVAO; unsigned int lightCubeVAO;
glGenVertexArrays(1, &lightCubeVAO); glGenVertexArrays(1, &lightCubeVAO);
glBindVertexArray(lightCubeVAO); glBindVertexArray(lightCubeVAO);
// <20>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><E3BBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// we only need to bind to the VBO (to link it with glVertexAttribPointer), no need to fill it; the VBO's data already contains all we need (it's already bound, but we do it again for educational purposes)
glBindBuffer(GL_ARRAY_BUFFER, VBO);// <20>󶨵<EFBFBD><F3B6A8B5><EFBFBD>vbo glBindBuffer(GL_ARRAY_BUFFER, VBO);// <20>󶨵<EFBFBD><F3B6A8B5><EFBFBD>vbo
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
glEnableVertexAttribArray(0); glEnableVertexAttribArray(0);
@ -179,22 +171,26 @@ int main()
lightingShader.setVec3("objectColor", 1.0f, 0.5f, 0.31f); lightingShader.setVec3("objectColor", 1.0f, 0.5f, 0.31f);
lightingShader.setVec3("lightColor", 1.0f, 1.0f, 1.0f); lightingShader.setVec3("lightColor", 1.0f, 1.0f, 1.0f);
// view/projection transformations // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>
lightingShader.use();
lightingShader.setVec3("objectColor", 1.0f, 0.5f, 0.31f);
lightingShader.setVec3("lightColor", 1.0f, 1.0f, 1.0f);
// <20>۲<EFBFBD>/ͶӰ<CDB6>
glm::mat4 projection = glm::perspective(glm::radians(camera.Zoom), (float)SCR_WIDTH / (float)SCR_HEIGHT, 0.1f, 100.0f); glm::mat4 projection = glm::perspective(glm::radians(camera.Zoom), (float)SCR_WIDTH / (float)SCR_HEIGHT, 0.1f, 100.0f);
glm::mat4 view = camera.GetViewMatrix(); glm::mat4 view = camera.GetViewMatrix();
lightingShader.setMat4("projection", projection); lightingShader.setMat4("projection", projection);
lightingShader.setMat4("view", view); lightingShader.setMat4("view", view);
// world transformation // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
glm::mat4 model = glm::mat4(1.0f); glm::mat4 model = glm::mat4(1.0f);
lightingShader.setMat4("model", model); lightingShader.setMat4("model", model);
// render the cube // <EFBFBD><EFBFBD>Ⱦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>cube
glBindVertexArray(cubeVAO); glBindVertexArray(cubeVAO);
glDrawArrays(GL_TRIANGLES, 0, 36); glDrawArrays(GL_TRIANGLES, 0, 36);
// ͬ<><CDAC><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE>ɫ<EFBFBD><C9AB>cube<62><65><EFBFBD><EFBFBD>̫<EFBFBD><CCAB>
// also draw the lamp object
lightCubeShader.use(); lightCubeShader.use();
lightCubeShader.setMat4("projection", projection); lightCubeShader.setMat4("projection", projection);
lightCubeShader.setMat4("view", view); lightCubeShader.setMat4("view", view);

View File

@ -202,7 +202,7 @@ int main()
glm::vec3 diffuseColor = lightColor * glm::vec3(0.5f);// <20><><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0> glm::vec3 diffuseColor = lightColor * glm::vec3(0.5f);// <20><><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>
glm::vec3 ambientColor = diffuseColor * glm::vec3(0.2f);// <20>ܵ͵<DCB5>Ӱ<EFBFBD><D3B0> glm::vec3 ambientColor = diffuseColor * glm::vec3(0.2f);// <20>ܵ͵<DCB5>Ӱ<EFBFBD><D3B0>
lightingShader.setVec3("light.ambient", diffuseColor); lightingShader.setVec3("light.ambient", ambientColor);
lightingShader.setVec3("light.diffuse", diffuseColor); // <20><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>һЩ<D2BB>Դ<EFBFBD><D4B4><EFBFBD><E4B3A1> lightingShader.setVec3("light.diffuse", diffuseColor); // <20><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>һЩ<D2BB>Դ<EFBFBD><D4B4><EFBFBD><E4B3A1>
lightingShader.setVec3("light.specular", 1.0f, 1.0f, 1.0f); lightingShader.setVec3("light.specular", 1.0f, 1.0f, 1.0f);

View File

@ -178,7 +178,7 @@ int main()
//lightingShader.setVec3("material.ambient", 1.0f, 0.5f, 0.31f); //lightingShader.setVec3("material.ambient", 1.0f, 0.5f, 0.31f);
//lightingShader.setVec3("material.diffuse", 1.0f, 0.5f, 0.31f); //lightingShader.setVec3("material.diffuse", 1.0f, 0.5f, 0.31f);
lightingShader.setVec3("material.specular", 0.5f, 0.5f, 0.5f); lightingShader.setVec3("material.specular", 0.5f, 0.5f, 0.5f);
lightingShader.setFloat("material.shininess", 32.0f); lightingShader.setFloat("material.shininess", 100.0f);
lightingShader.setVec3("light.ambient", 0.2f, 0.2f, 0.2f); lightingShader.setVec3("light.ambient", 0.2f, 0.2f, 0.2f);
lightingShader.setVec3("light.diffuse", 0.5f, 0.5f, 0.5f); // 将光照调暗了一些以搭配场景 lightingShader.setVec3("light.diffuse", 0.5f, 0.5f, 0.5f); // 将光照调暗了一些以搭配场景

View File

@ -177,7 +177,7 @@ int main()
//lightingShader.setVec3("material.ambient", 1.0f, 0.5f, 0.31f); //lightingShader.setVec3("material.ambient", 1.0f, 0.5f, 0.31f);
//lightingShader.setVec3("material.diffuse", 1.0f, 0.5f, 0.31f); //lightingShader.setVec3("material.diffuse", 1.0f, 0.5f, 0.31f);
//lightingShader.setVec3("material.specular", 0.5f, 0.5f, 0.5f); //lightingShader.setVec3("material.specular", 0.5f, 0.5f, 0.5f);
lightingShader.setFloat("material.shininess", 32.0f); lightingShader.setFloat("material.shininess", 100.0f);
lightingShader.setVec3("light.ambient", 0.2f, 0.2f, 0.2f); lightingShader.setVec3("light.ambient", 0.2f, 0.2f, 0.2f);
lightingShader.setVec3("light.diffuse", 0.5f, 0.5f, 0.5f); // <20><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>һЩ<D2BB>Դ<EFBFBD><D4B4><EFBFBD><E4B3A1> lightingShader.setVec3("light.diffuse", 0.5f, 0.5f, 0.5f); // <20><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>һЩ<D2BB>Դ<EFBFBD><D4B4><EFBFBD><E4B3A1>

Binary file not shown.

Binary file not shown.

Binary file not shown.