根据高度图计算出的法线不平滑

时间:2019-10-12 09:56:10

标签: shader normals heightmap

我有一个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));

这是我在其上使用镜面高光时的结果。

enter image description here

0 个答案:

没有答案