我有一个2D高度图,我想从中生成法线贴图。
我使用了Vec3 normal = Vec3(2*(R-L), 2*(B-T), -4).Normalize();
,并且尝试使用相邻像素的叉积,但是仍然无法获得平滑的结果。
照明是使用blinn-phong模型计算的:
vec3 norm = texture(NORMAL_TEXTURE, UV).xyz;
norm = norm * 2.0 -1.0;
vec3 diff = max(dot(norm, normalize(lightDir)) ,0.0) * lightColor * lightPower / (length(lightDir) * length(lightDir));
vec3 ambient = 0.2 * vec3(1,1,1);
vec3 h = normalize(lightDir + viewDir);
float NdotH = dot(norm, h);
float intensity = clamp(pow(NdotH, 200), 0, 1.0);
vec3 specular = lightColor * intensity * lightPower / (length(lightDir) * length(lightDir));
这是我在其上使用镜面高光时的结果。