mirror of
https://gitcode.com/gh_mirrors/le/LearnOpenGLProject.git
synced 2025-05-17 06:56:49 +08:00
修复注释
This commit is contained in:
@ -13,13 +13,13 @@ void main()
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
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>
|
||||
vec3 norm = normalize(Normal);
|
||||
vec3 lightDir = normalize(lightPos - FragPos);
|
||||
float diff = max(dot(norm, lightDir), 0.0);
|
||||
vec3 diffuse = diff * lightColor;
|
||||
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;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
vec3 result = (ambient + diffuse) * objectColor;
|
||||
|
@ -20,16 +20,16 @@ void main()
|
||||
vec3 norm = normalize(Normal);
|
||||
vec3 lightDir = normalize(lightPos - FragPos);
|
||||
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;
|
||||
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);
|
||||
|
||||
float spec = pow(max(dot(viewDir, reflectDir), 0.0), 32);
|
||||
vec3 specular = specularStrength * spec * lightColor;
|
||||
|
||||
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;// <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;
|
||||
FragColor = vec4(result, 1.0);
|
||||
// FragColor = vec4(1.0);
|
||||
|
@ -20,30 +20,29 @@ uniform Material material;
|
||||
|
||||
void main()
|
||||
{
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float ambientStrength = 0.1;
|
||||
// float ambientStrength = 0.1;
|
||||
//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>
|
||||
vec3 norm = normalize(Normal);
|
||||
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 = 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>
|
||||
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);
|
||||
|
||||
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 = 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) ;
|
||||
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);
|
||||
}
|
||||
|
@ -32,28 +32,28 @@ void main()
|
||||
float ambientStrength = 0.1;
|
||||
//vec3 ambient = ambientStrength * lightColor;
|
||||
//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>
|
||||
vec3 norm = normalize(Normal);
|
||||
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 = 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>
|
||||
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);
|
||||
|
||||
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 = 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) ;
|
||||
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);
|
||||
}
|
@ -9,7 +9,7 @@ uniform vec3 viewPos;
|
||||
|
||||
struct Material {
|
||||
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;
|
||||
};
|
||||
uniform Material material;
|
||||
@ -26,24 +26,24 @@ struct Light {
|
||||
uniform Light light;
|
||||
void main()
|
||||
{
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
|
||||
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));
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
|
||||
vec3 norm = normalize(Normal);
|
||||
vec3 lightDir = normalize(light.position - FragPos);
|
||||
float diff = max(dot(norm, lightDir), 0.0);
|
||||
vec3 diffuse = light.diffuse * diff * vec3(texture(material.diffuse, TexCoords));// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>vec3ǿ<EFBFBD><EFBFBD>
|
||||
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><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<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;
|
||||
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);
|
||||
|
||||
float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess);
|
||||
vec3 specular = light.specular * (spec * material.specular);
|
||||
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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
vec3 result = (ambient + diffuse + specular) ;
|
||||
|
||||
|
@ -9,8 +9,8 @@ uniform vec3 viewPos;
|
||||
|
||||
struct Material {
|
||||
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>
|
||||
sampler2D 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><EFBFBD><EFBFBD><EFBFBD>
|
||||
float shininess;
|
||||
};
|
||||
uniform Material material;
|
||||
@ -27,25 +27,25 @@ struct Light {
|
||||
uniform Light light;
|
||||
void main()
|
||||
{
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
|
||||
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));
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
|
||||
vec3 norm = normalize(Normal);
|
||||
vec3 lightDir = normalize(light.position - FragPos);
|
||||
float diff = max(dot(norm, lightDir), 0.0);
|
||||
vec3 diffuse = light.diffuse * diff * vec3(texture(material.diffuse, TexCoords));// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>vec3ǿ<EFBFBD><EFBFBD>
|
||||
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><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<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;
|
||||
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);
|
||||
|
||||
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>
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD>
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><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 result = (ambient + diffuse + specular) ;
|
||||
|
@ -8,15 +8,15 @@ in vec2 TexCoords;//
|
||||
uniform vec3 viewPos;
|
||||
|
||||
struct Material {
|
||||
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 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><EFBFBD><EFBFBD><EFBFBD>
|
||||
float shininess;
|
||||
};
|
||||
uniform Material material;
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD>
|
||||
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 ambient;
|
||||
@ -27,27 +27,27 @@ struct Light {
|
||||
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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>Դ<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><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);
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
|
||||
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));
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>
|
||||
vec3 norm = normalize(Normal);
|
||||
// vec3 lightDir = normalize(light.position - FragPos);
|
||||
float diff = max(dot(norm, lightDir), 0.0);
|
||||
vec3 diffuse = light.diffuse * diff * vec3(texture(material.diffuse, TexCoords));// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>vec3ǿ<EFBFBD><EFBFBD>
|
||||
// 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); // <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><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<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;
|
||||
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);
|
||||
|
||||
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>
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD>
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><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 result = (ambient + diffuse + specular) ;
|
||||
|
@ -1,15 +1,15 @@
|
||||
#version 330 core
|
||||
out vec4 FragColor;
|
||||
struct Material {
|
||||
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 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><EFBFBD><EFBFBD><EFBFBD>
|
||||
float shininess;
|
||||
};
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
|
||||
struct Light {
|
||||
vec3 position;
|
||||
vec3 position; // <EFBFBD><EFBFBD>Ҫλ<EFBFBD><EFBFBD>
|
||||
|
||||
vec3 ambient;
|
||||
vec3 ambient;
|
||||
vec3 diffuse;
|
||||
vec3 specular;
|
||||
|
||||
@ -27,30 +27,30 @@ uniform Material material;
|
||||
uniform Light light;
|
||||
void main()
|
||||
{
|
||||
// <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><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><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>vec3ǿ<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); // <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><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>
|
||||
//vec3 specular = light.specular * spec * vec3(texture(material.specular, TexCoords));
|
||||
// <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);
|
||||
float attenuation = 1.0 / (light.constant + light.linear * distance
|
||||
// <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>˥<EFBFBD><EFBFBD>
|
||||
// <EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˥<EFBFBD><EFBFBD>
|
||||
ambient *= attenuation;
|
||||
diffuse *= attenuation;
|
||||
specular *= attenuation;
|
||||
|
@ -14,7 +14,7 @@ void main()
|
||||
{
|
||||
gl_Position = projection * view * 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;
|
||||
TexCoords = aTexCoords;
|
||||
}
|
||||
|
@ -1,22 +1,22 @@
|
||||
#version 330 core
|
||||
out vec4 FragColor;
|
||||
struct Material {
|
||||
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 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;
|
||||
vec3 direction;
|
||||
vec3 position; // <EFBFBD><EFBFBD>Ҫλ<EFBFBD><EFBFBD>
|
||||
vec3 direction;// <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>䷽<EFBFBD><EFBFBD>
|
||||
float cutOff;
|
||||
|
||||
vec3 ambient;
|
||||
vec3 diffuse;
|
||||
vec3 specular;
|
||||
float constant;
|
||||
float linear;
|
||||
float quadratic;
|
||||
float constant; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float linear; // һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float quadratic;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
in vec3 FragPos;
|
||||
@ -28,35 +28,37 @@ 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>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD>Դָ<EFBFBD><EFBFBD><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);
|
||||
// <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>
|
||||
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>)
|
||||
// ִ<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><
|
||||
// <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));
|
||||
// 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){
|
||||
// <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));
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <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>vec3ǿ<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); // <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><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>
|
||||
//vec3 specular = light.specular * spec * vec3(texture(material.specular, TexCoords));
|
||||
// <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);
|
||||
float attenuation = 1.0 / (light.constant + light.linear * distance
|
||||
// <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>˥<EFBFBD><EFBFBD>
|
||||
// <EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˥<EFBFBD><EFBFBD>
|
||||
ambient *= attenuation;
|
||||
diffuse *= attenuation;
|
||||
specular *= attenuation;
|
||||
@ -65,8 +67,7 @@ void main()
|
||||
|
||||
FragColor = vec4(result, 1.0);
|
||||
}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) ;
|
||||
}
|
||||
|
||||
}
|
77
LearnOpenGL/assest/shader/2光照/2.5.3.2投光物-聚光灯-平滑的过渡 - 副本.fs
Normal file
77
LearnOpenGL/assest/shader/2光照/2.5.3.2投光物-聚光灯-平滑的过渡 - 副本.fs
Normal 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);
|
||||
}
|
@ -1,74 +1,75 @@
|
||||
#version 330 core
|
||||
#version 330 core
|
||||
out vec4 FragColor;
|
||||
struct Material {
|
||||
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 diffuse; // 漫反射颜色分量从纹理采样
|
||||
sampler2D specular;// 镜面光照颜色分量从纹理采样
|
||||
float shininess;
|
||||
};
|
||||
// <EFBFBD>۹<EFBFBD><EFBFBD><EFBFBD>
|
||||
// 聚光灯
|
||||
struct Light {
|
||||
vec3 position;
|
||||
vec3 direction;
|
||||
float cutOff;
|
||||
float outerCutOff;
|
||||
vec3 position; // 需要位置
|
||||
vec3 direction;// 需要照射方向
|
||||
float cutOff;// ϕ(内光切)
|
||||
float outerCutOff;// γ(外光切)
|
||||
|
||||
vec3 ambient;
|
||||
vec3 diffuse;
|
||||
vec3 specular;
|
||||
float constant;
|
||||
float linear;
|
||||
float quadratic;
|
||||
float constant; // 常数
|
||||
float linear; // 一次项
|
||||
float quadratic;// 二次项
|
||||
};
|
||||
|
||||
in vec3 FragPos;
|
||||
in vec3 Normal;
|
||||
in vec2 TexCoords;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
in vec2 TexCoords;// 纹理坐标
|
||||
|
||||
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>Դ<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<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Դ<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ָ<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>)
|
||||
// ִ<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><
|
||||
// 算出theta,dot(像素点指向光源,光源照射的方向取反)
|
||||
float theta = dot(lightDir, normalize(-light.direction));
|
||||
// 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));
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 漫反射光照分量
|
||||
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);
|
||||
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 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>
|
||||
//vec3 specular = light.specular * spec * vec3(texture(material.specular, TexCoords));
|
||||
// 镜面光照分量
|
||||
vec3 viewDir = normalize(viewPos - FragPos); // 是观察者方向,不是观察者看向的方向
|
||||
vec3 reflectDir = reflect(-lightDir, norm); // reflect要求第一个参数是光源指向像素点的向量
|
||||
float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess);// 光源对当前片段的镜面光影响
|
||||
// 采样镜面光纹理颜色作为镜面光照颜色分量
|
||||
//vec3 specular = light.specular * spec * vec3(texture(material.specular, TexCoords)); // 这句也行
|
||||
vec3 specular = light.specular * spec * texture(material.specular, TexCoords).rgb;
|
||||
|
||||
// <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float distance = length(light.position - FragPos);
|
||||
float attenuation = 1.0 / (light.constant + light.linear * distance
|
||||
// 计算衰减
|
||||
float distance = length(light.position - FragPos); // 得到光源到片段长度
|
||||
float attenuation = 1.0 / (light.constant + light.linear * distance // 根据公式
|
||||
+ light.quadratic * distance * distance);
|
||||
|
||||
// <EFBFBD><EFBFBD><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><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;
|
||||
specular *= intensity;// <EFBFBD>ܾ۹<EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>
|
||||
specular *= intensity;// 聚光灯受影响
|
||||
|
||||
vec3 result = (ambient + diffuse + specular) ;
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
#include <glm/gtc/type_ptr.hpp>
|
||||
|
||||
//#include <learnopengl/shader_s.h>
|
||||
#include "Shader/Shader.h"
|
||||
#include "Core/Shader/Shader.h"
|
||||
|
||||
#include <iostream>
|
||||
#include "MyFileSystem.h"
|
||||
@ -59,7 +59,7 @@ int main()
|
||||
// build and compile our shader zprogram
|
||||
// ------------------------------------
|
||||
//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
|
||||
// ------------------------------------------------------------------
|
||||
|
@ -5,6 +5,8 @@
|
||||
#include <glm/glm.hpp>
|
||||
#include <glm/gtc/matrix_transform.hpp>
|
||||
#include <glm/gtc/type_ptr.hpp>
|
||||
//#define GLM_ENABLE_EXPERIMENTAL
|
||||
#include <glm/gtx/quaternion.hpp>
|
||||
|
||||
//#include <learnopengl/shader_s.h>
|
||||
#include "Core/Shader/Shader.h"
|
||||
@ -82,7 +84,7 @@ int main()
|
||||
// build and compile our shader zprogram
|
||||
// ------------------------------------
|
||||
//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
|
||||
// ------------------------------------------------------------------
|
||||
@ -254,6 +256,11 @@ int main()
|
||||
// camera/view transformation
|
||||
glm::mat4 view = glm::lookAt(cameraPos, cameraPos + cameraFront, cameraUp);
|
||||
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
|
||||
glBindVertexArray(VAO);
|
||||
|
@ -79,7 +79,7 @@ int main()
|
||||
// build and compile our shader zprogram
|
||||
// ------------------------------------
|
||||
//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
|
||||
// ------------------------------------------------------------------
|
||||
|
@ -5,8 +5,6 @@
|
||||
#include <glm/gtc/matrix_transform.hpp>
|
||||
#include <glm/gtc/type_ptr.hpp>
|
||||
|
||||
//#include <learnopengl/camera.h>
|
||||
//#include <learnopengl/shader_s.h>
|
||||
#include "Core/Shader/Shader.h"
|
||||
#include "Core/Camera/Camera.h"
|
||||
#include <iostream>
|
||||
@ -77,10 +75,8 @@ int main()
|
||||
|
||||
// build and compile our shader zprogram
|
||||
// ------------------------------------
|
||||
//Shader lightingShader("1.colors.vs", "1.colors.fs");
|
||||
// <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 lightCubeShader("1.light_cube.vs", "1.light_cube.fs");
|
||||
// <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");
|
||||
|
||||
@ -129,28 +125,24 @@ int main()
|
||||
-0.5f, 0.5f, 0.5f,
|
||||
-0.5f, 0.5f, -0.5f,
|
||||
};
|
||||
// first, configure the cube's VAO (and VBO)
|
||||
unsigned int VBO, cubeVAO;
|
||||
glGenVertexArrays(1, &cubeVAO);
|
||||
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);
|
||||
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
|
||||
|
||||
glBindVertexArray(cubeVAO);
|
||||
|
||||
// position attribute
|
||||
// 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>
|
||||
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)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;
|
||||
glGenVertexArrays(1, &lightCubeVAO);
|
||||
glBindVertexArray(lightCubeVAO);
|
||||
|
||||
// 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)
|
||||
// <20>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>㻺<EFBFBD><E3BBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
glBindBuffer(GL_ARRAY_BUFFER, VBO);// <20><EFBFBD><F3B6A8B5><EFBFBD>vbo
|
||||
|
||||
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
|
||||
glEnableVertexAttribArray(0);
|
||||
|
||||
@ -179,22 +171,26 @@ int main()
|
||||
lightingShader.setVec3("objectColor", 1.0f, 0.5f, 0.31f);
|
||||
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 view = camera.GetViewMatrix();
|
||||
lightingShader.setMat4("projection", projection);
|
||||
lightingShader.setMat4("view", view);
|
||||
|
||||
// world transformation
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>任
|
||||
glm::mat4 model = glm::mat4(1.0f);
|
||||
lightingShader.setMat4("model", model);
|
||||
|
||||
// render the cube
|
||||
// <EFBFBD><EFBFBD>Ⱦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>cube
|
||||
glBindVertexArray(cubeVAO);
|
||||
glDrawArrays(GL_TRIANGLES, 0, 36);
|
||||
|
||||
|
||||
// also draw the lamp object
|
||||
// ͬ<><CDAC><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE>ɫ<EFBFBD><C9AB>cube<62><65><EFBFBD><EFBFBD>̫<EFBFBD><CCAB>
|
||||
lightCubeShader.use();
|
||||
lightCubeShader.setMat4("projection", projection);
|
||||
lightCubeShader.setMat4("view", view);
|
||||
|
@ -202,7 +202,7 @@ int main()
|
||||
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>
|
||||
|
||||
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.specular", 1.0f, 1.0f, 1.0f);
|
||||
|
||||
|
@ -178,7 +178,7 @@ int main()
|
||||
//lightingShader.setVec3("material.ambient", 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.setFloat("material.shininess", 32.0f);
|
||||
lightingShader.setFloat("material.shininess", 100.0f);
|
||||
|
||||
lightingShader.setVec3("light.ambient", 0.2f, 0.2f, 0.2f);
|
||||
lightingShader.setVec3("light.diffuse", 0.5f, 0.5f, 0.5f); // 将光照调暗了一些以搭配场景
|
@ -177,7 +177,7 @@ int main()
|
||||
//lightingShader.setVec3("material.ambient", 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.setFloat("material.shininess", 32.0f);
|
||||
lightingShader.setFloat("material.shininess", 100.0f);
|
||||
|
||||
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>
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user