我有一个基本的着色器,它只根据采样的顶点属性颜色渲染一个片段。但是,即使打开了gl_Smooth,阴影仍会显示为块状/平坦。我理解gourad和phong它与眼睛的位置和光线有关,但我试图通过仅有环境光线来获得平滑的漫反射阴影&#39 ;;相反,光值作为用真实世界相机数据采样的颜色的一部分。我的世界是通过rgbd输入构建的,并使用采样颜色创建非常多边形的网格(行进立方体)。我的问题是关于在没有直接光方向时如何平滑每个片段的阴影的方法?我的着色器设置使得颜色,位置和法线是顶点属性。
我当前的着色器:
VERT:
#version 330
uniform mat4 ProjectionModelView;
layout(location = 0) in vec3 Position;
layout(location = 1) in vec3 Color;
layout(location = 1) in vec3 Normal;
out vec3 VertexPosition;
out vec3 VertexColor;
out vec3 VertexNormal;
void main(void)
{
VertexColor = Color;
VertexPosition = Position;
VertexNormal = Normal;
gl_Position = ProjectionModelView*vec4(Position, 1.0);
}
片段
#version 330
in vec3 VertexPosition;
in vec3 VertexColor;
in vec3 VertexNormal;
out vec4 FinalColor;
void main(void)
{
float intensity = dot(VertexPosition, VertexNormal);
FinalColor = vec4(VertexColor.x, VertexColor.y, VertexColor.z, 1)*intensity;
}
作为参考,三角形相当高的线框数:
渲染法线: