我正在使用简单着色(环境+漫反射)实现基本高度图。着色在片段着色器上实现,如下所示。
#version 330
in vec3 fragNormal;
out vec4 outColor;
uniform vec3 lightDirection;
uniform vec3 lightColor;
uniform vec3 objectColor;
void main()
{
float ambientStrength = 0.1f;
vec3 ambientColor = ambientStrength * lightColor;
vec3 norm = normalize(fragNormal);
float diff = max(dot(norm, -normalize(lightDirection)), 0.0f);
vec3 diffuseColor = diff * lightColor;
outColor = vec4((ambientColor + diffuseColor) * objectColor, 1);
}
我所做的是根据普通的fragNormal计算一个简单的漫反射组件。此变量直接从顶点着色器传递。
以下是我目前所拥有的截图:
这是带有像素着色的高度图的预期结果吗? 我对表面不是很光滑的事实感到有些恼火。
但是,如果这是预期的,那么任何技术都可以改善我现在拥有的东西吗?
为了计算法线,我使用了以下算法: Finite difference method (Stack Overflow)