specular OK in BlinnPhongDirectionLight sample. but direction error.

This commit is contained in:
2024-03-10 22:45:38 +08:00
parent f56928d734
commit 5347ac7091
2 changed files with 24 additions and 15 deletions

View File

@@ -23,7 +23,8 @@ Length 16
Stage Fragment
Code
{
vec4 Color;
vec3 Color;
float Gloss;
}
#VertexInput
@@ -32,6 +33,7 @@ vec3 Normal
#Vertex
Output
{
vec4 Position;
vec3 Normal;
}
@@ -42,7 +44,8 @@ Code
HandoverMI();
Output.Normal=Normal;
gl_Position=GetPosition3D();
Output.Position=GetPosition3D();
gl_Position=Output.Position;
}
}
@@ -71,18 +74,18 @@ Code
vec3 direct_color =diffuse*sun.color.rgb*mi.Color.rgb;
// #ifndef HAVE_SPECULAR
FragColor=vec4(direct_color,1.0);
// FragColor=vec4(direct_color,1.0);
// #else
// //归一代视角方向
// vec3 view_direction =normalize(camera.pos-world_position);
//
// //世界坐标下的反射光方向
// vec3 reflect_direction =normalize(reflect(-world_light_direction,world_normal));
//
// //高光
// vec3 specular =sun.specular*pow(saturate(dot(reflect_direction,view_direction)),gloss);
//
// FragColor=vec4(direct_color+specular,1.0);
//归一代视角方向
vec3 view_direction =normalize(camera.pos-Input.Position.xyz);
//世界坐标下的反射光方向
vec3 reflect_direction =normalize(reflect(-world_light_direction,world_normal));
//高光
float specular =pow(clamp(dot(reflect_direction,view_direction),0.0,1.0),mi.Gloss);
FragColor =vec4(direct_color+vec3(specular),1.0);
// #endif//HAVE_SPECULAR
}
}